由一次恶意日志分享看人人的CSRF漏洞
Posted on 2011-05-14
前几天在人人上看到同学发的一条包含链接的状态,我随手点开这个链接,发现跳转到了人人上的一篇日志。当时没多想就关掉了,过一会儿再看自己的人人主页发现多了一条和同学一样内容的状态。我马上意识到与刚才日志有关,于是查看那篇日志的源代码,发现如下代码:
<img src="http://rrurl.cn/{……}/" height="0" />
意识到src中的网址可能有问题,于是wget了一下,发现该网址会跳转到http://status.renren.com/doing/updateNew.do?content={……}。也就是说浏览器为了下载这幅”图像“,访问了updateNew.do,这样如果你已经登录了人人,就会自动发出状态。这就是一次典型的CSRF攻击。
什么是CSRF攻击?
CSRF – Cross-site Request Forgery 字面意思指跨站点请求伪造,也就是跨站漏洞攻击,通常用来指 WEB 网站的这一类漏洞,即在某个恶意站点的页面上,促使访问者请求你的网站的某个 URL(通常会用 POST 数据方式),从而达到改变服务器端数据的目的。这一类攻击依赖于你的网页中的表单,脆弱的表单很容易受到攻击。
解决方案
CSRF攻击相对来说比较容易让人忽视且难以防范。简单来讲可以采用以下方案尝试解决:
- 不允许通过GET方式提交数据
- 可以采用生成临时"session_key"来做单次验证,验证后即重置