web安全之csrf攻击
csrf攻击的全称是Cross-Site Request Forgery攻击,简单来说是利用当前用户的登录态冒充该用户去做一些对受害者不利的事情。
简单的例子
假设Alice想通过ban.com网站给bob转100块钱,当然了,bank.com是有安全漏洞的,不能防止csrf攻击。Maria,一个攻击者,想通过一些不正当手段让Alice转账给她,下面是她的一些做法:
- 构造攻击的链接或脚本
- 通过社交网站诱骗Alice去点击伪造链接或执行脚本
如果bank.com银行应用是通过GET加传参的方式进行转账,如下所示
GET http://bank.com/transfer.do?acct=BOB&amount=100 HTTP/1.1
那么Maria现在决定让Alice成为受害者,她开始伪造url,让Alice从账户中转10000块钱到自己账户。她通过替换链接中参数的方式来达到这一目的。
http://bank.com/transfer.do?acct=MARIA&amount=100000
现在就到了诱导受害者去点击或执行上面这个链接的时候了,一般来说有下面一些方法
- 自动发送包含html内容的垃圾邮件
- 在Alice浏览银行站点时经常会访问的页面上构造恶意的链接或放置恶意脚本
比如伪装成一个普通链接,鼓励被害者去点击
<a href="http://bank.com/transfer.do?acct=MARIA&amount=100000">看我的照片!</a>
又或者构造一个0x0大小的图片
<img src="http://bank.com/transfer.do?acct=MARIA&amount=100000" width="0" height="0" border="0">
把上面这个图片放到emial中,Alice收到email之后,该链接会自动被访问。
如果Alice在点击上面的链接或打开email时正好登录了bank.com,那么上面的请求也会获得bank.com的登录态,从而发生转账行为。