《Web前端黑客技术揭秘》Reading Note #3

顺便也把CSRF已经看了的写一下。。。

CSRF简介: 

CSRF(Cross Site Request Forgery)即跨站点请求伪造, 关键点在于:跨站点的请求请求是伪造的

书中的“大多数场景”的例子

目标网站:www.a.com

恶意网站:www.b.com

目标网站A有一个删除文章的功能,在用户登录的前提下访问http://www.a.com/del?id=1即可删除id为1的文章。在这里删除文章就是发送了一个GET请求。

在恶意网站B上的csrf.html文件中插入代码:

<img src='http://www.a.com/del?id=1' />

然后诱骗已经登录目标网站A的用户去访问http://www.b.com/csrf.html,则发生CSRF攻击。

跨域发生了一个GET请求:由客户端HTML标签等发出的跨域GET请求被认为是合法的,不在同源策略的限制中,但是这些请求发出后并没有能力得到目标页面响应的数据内容。

请求是身份认证后的:这一点十分关键,因为用户自己在A站发出的请求与跨域的恶意请求除了请求来源Referer不一样外,其它都是一样的。关键就在于请求所带的Cookie值,用户在登录成功的情况下触发这两个请求,都会带上验证后的A站Cookie,所以攻击才会成功。

需要注意的是,本地cookie和内容cookie在CSRF的过程中会有一些差异,IE浏览器默认不允许目标网站A的本地cookie在这样的跨域请求中带上。除非在HTTP响应头中设置了P3P(Platform for Privacy Preferences),它告诉浏览器与在跨域请求站点A的资源时带上站点A的本地cookie。

CSRF类型:

按照请求类型区分:GET型和POST型

按照攻击方式区分:HTML CSRF攻击、JSON Hijacking攻击和FLASH CSRF攻击

HTML CSRF攻击:基本上HTML中能够设置src/href等链接地址的标签都可以发起一个GET请求,还有通过JS动态生成的标签对象或CSS对象发起的GET请求。而发出POST请求只能通过from表单提交方式。

JSON Hijacking攻击:攻击过程是CSRF,不过是对AJAX响应中最常见的JSON数据类型进行的劫持攻击。

FLASH CSRF攻击:通过ActionScript脚本来发起CSRF攻击,虽然Flash世界也遵循同源策略,但也可以跨域发起GET和POST两种请求。

CSRF的危害:

篡改目标网站上的用户数据

盗取用户隐私数据

作为其它攻击向量的辅助攻击手法

传播CSRF蠕虫

……

« 返回