Cross-site scripting XSS 攻击 防范及对策

XSS 百度百科的定义:

恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。

XSS工作流程

1)恶意用户,在一些公共区域(例如,建议提交表单或消息公共板的输入表单)输入一些文本,这些文本被其它用户看到,但这些文本不仅仅是他们要输入的文本,同时还包括一些可以在客户端执行的脚本。如:
<script>
this.document = “*********”;
</script>
2)恶意提交这个表单
3)其他用户看到这个包括恶意脚本的页面并执行,获取用户的cookie等敏感信息。
XSS的主要目的是注入脚本 ,也称跨站脚本攻击。
只要能在目的网页能注入脚本就能做很多事情,
  • 执行 location.href=’http://www.kimnote.com’; 就能调到我的主页
  • 用ajax请求把你的cookie都提交到我的主页的特定页面来收集你的cookie,那我就可以用这个cookie做很多事情。
  • blablabla~~

居然有这么多不好的事情,肯定有防范措施,下面列举一些。

  • 把每个参数都进行检查,并进行转义,特别是 ‘ ,” 等符号,还有一些诸如<script>,</script>,onclick等一些事件,碰到了就要转义。
  • 通过添加content-security-policy-header-field来防止跨站攻击,详细资料查看w3org的这个页
  • 添加X-XSS-Protection 头,可以在java代码里添加这个头,也可以在apache或者ngix等web服务器添加。
  • 升级浏览器,IE9,chrome等默认开启这些保护功能,以防客户被攻击。
  • 其他方法正在查找中。。。

apache的设置如下:Header set X-XSS-Protection  1
X-XSS-Protection: 1; mode=block
除了紧接X-XSS-Protection后面的1指示IE浏览器打开XSS筛选器外,后面那个mode=block是什么意思呢?其实这段Header的意思是当检测到XSS Attack时,Internet Explorer将停止渲染页面,相比较之前的修改XSS部分代码继续展现内容而言,这里直接发送一个字符#,也就是说整个页面的内容就一个“#”号。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>