关于最近的CSRF攻击

时间:2023-12-27 16:59:31

摘要

最近公司内部爆出一大波页面没有加token校验,然后各路大神就开始进行CSRF攻击了。CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。

什么是CSRF攻击?

CSRF(Cross-site request forgery),中文名称:跨站请求伪造。没什么高大上的,按字面上这么理解可以了。别的网站往你网站里发一个操作请求,然后,你的网站也不加校验一下是不是用户从你点击发送过来的操作,就直接处理了。

然后坏人随便做个网站,里面就一个静态页,包含一段自动发送操作请求的代码

<!-- 神奇的网页,点开就会偷钱的 -->
<form action="Transfer.php" method="POST">
    <p>ToBankId: <input type="text" name="toBankId" value="xxx" /></p>
    <p>Money: <input type="text" name="money" value="1000" /></p>
    <p><input type="submit" value="Transfer" /></p>
</form>

就这么简单的一个静态页,然后就可以实现CSRF攻击了。比如把这个网站发到我们论坛上,www.woshihuairen.com 点开有美女裸照哟。然后你点了,然后你悲剧了。

如何防止CSRF攻击

校验来源,跨站的请求不接受即可。

参考文献

浅谈CSRF攻击方式

简要说一下我们如何使用token来防御CSRF

  1. 前台from表单里面加入Token字符串

     @Html.AntiForgeryToken()
    //如果是ajax提交,提交参数还要加入:__RequestVerificationToken: $("input[name=__RequestVerificationToken]").val()
  2. 后台Action上面加入token验证的Attribute

     [HttpPost,ValidateAntiForgeryToken]
    public ActionResult xxx()
    {
    }

Oh yeah,每次请求都有一段奇怪的验证码,再也不怕跨站请求了,可以高枕无忧咯

...

无忧个蛋蛋啊,摔。

还有提防这货 ---- XSS跨站脚本攻击,否则上面所做的一切都白做了。