白帽子讲web安全-跨站脚本攻击(2)

一 XSS攻击进阶

1 XSS攻击平台

攻击平台的主要目的就是为了演示xss的危害,以及方便测试使用,常见的有attack API,BeFF,XSS-Proxy

2终极武器:XSSWorm

(以往的蠕虫都是利用服务器端软件漏洞进行传播的)

像有名的samy worm和百度空间蠕虫

xss worm攻击是有一定条件的:一般来说,用户之间发生交互行为的页面,如果存在存储型XSS,则比较容易发起XSS worm攻击。

3xss构造技巧

比如利用字符编码,

      绕过长度限制(某些环境下可以用注释符绕过长度限制),

      使用标签,

      Window.name的妙用(window对象是浏览器的窗体,而并非document对象,因此很多时候window对象不受同源策略的限制)

4容易被忽略的角落:Flash XSS

前面的XSS攻击都是基于HTML的,其实在flash中同样也会造成xss攻击。

限制flash动态脚本的最重要的参数:allowscriptaccess

控制flash与外部网络进行通信:allowNetworking

5javascript开发框架真的高枕无忧吗

目前最为流行的jQuery,框架只是对JavaScript语言本身的封装,并不能解决代码逻辑上产生的问题。在jQuery中有一个html()方法,这个方法如果没有参数,就是读取一个DOM节点的innerHTML,如果有参数,则会把参数值写入该节点的DOM节点的innerHTML中,这个过程会产生dom based xss.

二xss的防御

1httponly

严格的说:httponly并非为了对抗XSS-httponly解决的是xss后的cookie劫持攻击,httponly是在set-cookie时标记的。

但是xss攻击带来的不光是cookie劫持问题,还有窃取用户信息,模拟用户身份执行操作等诸多严重后果。

2输入检查

检查逻辑必须放在服务器代码中实现,如果只在客户端中,很容易被绕过。

现在普遍做法,是在客户端JavaScript和服务器端同时检测,客户端的检测可以阻断大部分攻击,从而节约服务器资源。

3输出检查

htmlencode ,javascriptencode,xmleccode......(安全编码函数)

xss攻击主要发生在MVC架构中的view层。

导致xss攻击发生的原因,并不是使用auto-escape就万事大吉了,xss的防御要区分情况对待。

4正确地防御XSS

xss产生的本质原因:
xss的本质还是一种HTML注入,用户的数据被当成了HTML代码一部分执行,从而混淆了原本的语义,产生了新的语义。

如果网站使用了MVC架构,那么xss就发生在view层,在应用拼接变量到HTML页面时产生。那么用户提交数据进行输入检查的方案,其实并不是在真正发生攻击的地方做防御。

在HTML标签中输出,在HTML属性中输出,在

你可能感兴趣的:(白帽子讲web安全-跨站脚本攻击(2))