跨站点请求伪造(CSRF)

全名:cross site request forgery

  1. 用户先访问一个页面。
  2. 然后再访问一个自己域下构造的一个页面。其中有一个img标签,标签中,有用于删除的链接。
  3. 成功了。

攻击者诱使用户访问了一个页面,然后以些用户身份在第三方站点里执行一个操作。因为cookie会携带。

 

浏览器的cookie策略

浏览器的cookie分为两种

  1. Session Cookie也称为临时cookie
  2. Third-party Cookie,也称为为本地cookie

两者的区别在于,Third-party cookie是服务器在set-cookie里指定了expire时间,只有到了exire时间后,才会失效。

如果浏览器从一个域的页面中,要加载另一个域的资源,由于安全原因,某些浏览器会阻止Third-party的发送

但是目前有些浏览器是允许发送的。如Firefox opera chrome android.

P3P头的作用

P3P Header 是w3c制定的一项关于隐私的标准,全称是The platform for privacy preference.如果网站返回给浏览器的HTTP头中包含有P3P3头,则在某种程度上来说,允许浏览器发送第三方cookie.P3P主要用于类似广告等需要跨域访问的页面。

 

CSRF的防御

验证码

验证码确实能很好地遏制CSRF,但是对用户体验的伤害是非常大的。所以只作为一种辅助的手段,而不能作为最主要的解决方案。

Referer Check

最常见的就是:防止图片盗链。

最大的缺陷:服务器并非什么时候都能取到Referer.

其中flash的一些版本,可以允许自己设定referer。 

所以不能依赖referer来做防御手段。但是作为监控手段,还是可行的。

anti csrf token

使用一个token来防御,目前是最安全的。

注:如果有XSS,那么CSRF的防御就没有意义了。

 

分类:

技术点:

相关文章: