简介
跨站请求伪造(csrf)攻击发生在恶意的网站,邮件,短信,应用等当中。csrf 攻击会使得一个已经认证过或者登录过的用户的浏览器执行其他网站的操作,通常用户不会意识到发生了什么。
csrf 攻击的影响取决于在有漏洞的目标网站可执行的操作。例如:
- Bob 登录了银行账户,执行了一些操作,但是并没有退出。
- Bob 点击了一封邮件中的链接,访问了一个陌生网站。
- 陌生网站使用 Bob 在 step 1 中会话中的 cookie ,在 Bob 的网银中发出转账请求
- Bob 的网银从陌生(恶意)网站收到了请求,该银行没有 csrf token 验证,转账成功。
有意思的是访问恶意网站的操作被包含在一个并不需要 Bob 点击的 html 标签中,如 <img src="www.malicious_site.com"> 。当 Bob 的设备(如浏览器)打开试并试图渲染这个图片时候,Bob 的设备将会对 maliciou_site.com 网站发出请求,就有可能遭受 csrf 攻击。
csrf 攻击可通过多种方式防范。最常用的就是在请求中提交 csrf token 。在这里,web 应用产生一个 token 的分成两个部分,一个返回给 Bob ,另一个自己保存。
当 Bob 发出转账的请求的时候,需要提交 token,web 应用会自己保留的 token 校验 Bob 发送来的 token。
考虑到 csrf 攻击和 csrf token ,跨域资源共享(cors)变得十分普遍