说一说CSRF漏洞

社区广播:运维派(Yunweipai.com)是国内最早成立的IT运维社区,欢迎大家投稿,让运维人不再孤寂的成长!

CSRF漏洞(Cross-Site Request Forgery),是Web应用中常见的一种攻击方法,存在被CSRF攻击可能的站点,就存在CSRF漏洞。

先举例说明


在一个论坛上,Alice发了一个帖子,Eve回复了她的帖子,以下面的方式上传了一张图片:
Eve: Hello Alice! Look here:
<a href=“http://bank.example.com/withdraw?account=Alice&amount=1000000&for=Eve”><image src=“beauty”/></a>

我们看链接的地址,是将1000000 USD从Alice的帐户转到Eve的帐户。
如果Alice点了上面图片的链接,那么链接的地址会被在浏览器中执行,如果浏览器中保存了用户登录的cookie且未过期,那么链接就会被执行成功,结果就是Alice的1000000 USD被转给Eve了。


当然,实际上银行的网站不会这么傻,这里只是一个例子。

从例子中我们可以看出CSRF攻击的主要特征:

  1. 网站提供了有“副作用”的URL,所谓的“副作用”,是指会对用户的利益,隐私造成影响的URL,比如例子中转帐的URL。
  2. 浏览器的cookie保存了用户登录鉴权信息。

所以,知道了CSRF的特征之后,我们也可以知道如何防御CSRF攻击了,主要有下面几个手段:

  1. 不提供有“副作用”的URL。
  2. 如果URL是通过表单(form)提交的,那么在服务器生成form时候,增加一个随即数作为隐藏属性,让form提交的时候,检查客户端发送的随机数与服务器的随机数是否一致,如果不一致,那么就拒绝请求。
  3. 检查HTTP请求中的referrer header属性,(referrer header是表示请求来源地址的,比如image请求的referrer header一般是HTML页面),通过白名单的方式,检查特定的referrer header地址才允许访问。但是referrer header属性涉及到用户隐私问题,一般浏览器都提供了禁用referrer header属性的功能。所以不推荐使用。

网友评论comments

发表评论

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

暂无评论

Copyright © 2012-2017 YUNWEIPAI.COM - 运维派 - 粤ICP备14090526号-3
扫二维码
扫二维码
返回顶部