作为一个前端工程师,XSS漏洞不应该只是安全部门的工作。在项目上马的时候就应该对可能涉及的安全问题有所预防才是有一个好前端。- -
 
什么是XSS
•跨站脚本攻击(Cross-site scripting, XSS)
• 是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。
 
XSS分类
• 反射型
• 存储型
• DOM型
 
防治XSS,个人觉得核心内容就是不能相信任何用户输入的数据。
所以凡是前端要操作用户数据的地方,全部要转义。
 
当然。简单一句话,当然不容易处理这样的情况。因为如果每一个方法都要去做一个encode那真是程序员的灾难。
 
那就分情况讨论下。
 
我们会在什么地方碰到XSS:
凡是数据可以被用户构造的位置。
1.用户输入数据,然后被输出。
如果用户输入<script>location.href='www.cnblog.com/bugluo'</script>,被转发围脖,嗯嗯。用户全跑我这来了。
所以我们可以怎么做?
若,我们使用smarty这样的后端模板。我们可以在编译平台做类似上线前自动加encode方法的功能。
若,我们使用前端直接生成html,拼接html时,注意用$.text()方法,而不要使用$.html(''),或者使用cratedom的方式。
 
2.富文本编辑器。
富文本编辑器非常容易出现一个问题,就是dom被构造,例如:
<a onclick="location.href='你懂的'"></a>
事件中:eval  setTimeout/setInterval    document.write   new Function()   String.fromCharCode   前端模板
 

有这么多xss攻击的漏洞地方,我们该怎么防范呢?

1.不要相信用户的任何输入
2.过滤
3.转义
 
不要相信用户的任何输入:白名单机制,只有被允许的事件才能够去执行,只有被允许的内容才能够显示
过滤掉任何可能造成xss的内容。
将特殊的字符转义:$^*()+={}[]|/:<>.?'" 
 
文本过滤,由于XSS漏洞会慢慢被挖掘出来,绵绵不绝。所以白名单机制能够更好的满足防XSS的需求,但是会造成可配置性大大降低。
转义:
function smarty_modifier(str){
     $str = strval(str);
   return str_replace(array('\\','&',……,array('\\\\','$amp;',……),str)
}
直接上代码通俗易懂。

随便讲讲XSS攻击的更多相关文章

  1. Spring MVC里面xss攻击的预防

    关于xss的介绍可以看 Asp.net安全架构之1:xss(跨站脚本)和 腾讯微博的XSS攻击漏洞 网页, 具体我就讲讲Spring MVC里面的预防: 第一种方法,使用Spring MVC web. ...

  2. 防御XSS攻击-encode用户输入内容的重要性

    一.开场先科普下XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶 ...

  3. 防止XSS攻击的方法

    什么是XSS? 使用Jsoup来防止XSS攻击 Jsoup官网 Jsoup中文 maven包引入 <dependency> <groupId>org.jsoup</gro ...

  4. PHP通用的XSS攻击过滤函数,Discuz系统中 防止XSS漏洞攻击,过滤HTML危险标签属性的PHP函数

    XSS攻击在最近很是流行,往往在某段代码里一不小心就会被人放上XSS攻击的代码,看到国外有人写上了函数,咱也偷偷懒,悄悄的贴上来... 原文如下: The goal of this function ...

  5. 前端XSS攻击和防御

    xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会 ...

  6. XSS攻击及防御

    XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性.其原理是攻击者向有XSS漏洞的网站中输入 ...

  7. XSS攻击

    什么是XSS? http://www.cnblogs.com/bangerlee/archive/2013/04/06/3002142.html XSS攻击及防御? http://blog.csdn. ...

  8. 文本XSS攻击过滤

    在FCK或百度编辑器等常用富文本编辑器中,通常是会被XSS攻击 处理方法: 文本框模拟输入了以下文本 <span style="dispaly:none" onclick=& ...

  9. XSS攻击的解决方法

    在我上一篇<前端安全之XSS攻击>文中,并没有把XSS攻击的解决办法说完整,而XSS的攻击又那么五花八门,有没有一招“独孤九剑”能够抗衡,毕竟那么多情况场景,开发人员无法一一照顾过来,而今 ...

随机推荐

  1. stl之map容器的原理及应用

    容器的数据结构同样是采用红黑树进行管理,插入的元素健位不允许重复,所使用的节点元素的比较函数,只对元素的健值进行比较,元素的各项数据可通过健值检索出来.map容器是一种关联容器,实现了SortedAs ...

  2. javascript 中的location.pathname

    1 location.pathname; 这在之前我没怎么注意过,所以研究研究.location.pathname:返回URL的域名(域名IP)后的部分.例如 http://www.joymood.c ...

  3. 【MongoDB数据库】Java MongoDB CRUD Example

    上一页告诉我们MongoDB 命令入门初探,本篇blog将基于上一篇blog所建立的数据库和表完毕一个简单的Java MongoDB CRUD Example.利用Java连接MongoDB数据库,并 ...

  4. 【百度地图API】建立全国银行位置查询系统(三)——如何在地图上添加银行标注

    原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo, ...

  5. Cocos2d-x数据持久-变更数据

    当数据变化,参与SQL报表insert.update和delete声明.这项3个月SQL语句可以带参数. 详细过程的数据,例如,下面的变化看出.(1) 采用sqlite3_open开放式数据库功能.( ...

  6. 使用SignalR打造消息总线

    使用SignalR为FineUI/Webform打造消息总线 第一次写博客,语言组织能力不好,请大家多多包涵! 效果图如下: 图片的右下角即为SignalR消息总线的消息框. 一.建立SignalR服 ...

  7. Thrift官方安装手冊(译)

    本篇是Thrift官网安装文档的翻译,原地址点击这里.Thrift之前是不支持Windows的.可是似乎0.9版本号以后已经支持Window了.介绍了Thrift安装的环境要求以及在centos,De ...

  8. php rsa 加密、解密、签名、验签

    由于对接第三方机构使用的是Java版本的rsa加解密方法,所有刚开始在网上搜到很多PHP版本的rsa加解密,但是对接java大多都不适用. 以下php版本是适用于对接java接口,java适用密钥再p ...

  9. IT行业新名词--透明手机/OCR(光学字符识别)/夹背电池

    透明手机 机身设计的一大关键部分是可替换玻璃的使用,利用导电技术,在看不到线路的环境下,让LED发光. 这样的玻璃内含液晶分子,对于内容的显示则是通过电流对分子的刺激来实现.当手机断电后,分子位置会随 ...

  10. 数据访问层的改进以及测试DOM的发布

    数据访问层的改进以及测试DOM的发布 在上一篇我们在宏观概要上对DAL层进行了封装与抽象.我们的目的主要有两个:第一,解除BLL层对DAL层的依赖,这一点我们通过定义接口做到了:第二,使我们的DAL层 ...