• 关于最近的CSRF攻击


    摘要

    最近公司内部爆出一大波页面没有加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跨站脚本攻击,否则上面所做的一切都白做了。

  • 相关阅读:
    virtualenv与virtualenvwrapper
    数据类型、变量定义、数据类型转换
    计算机存储单元、标识符
    html单页面中用angular js
    svn客户端访问失败,错误“请求的名称有效,但是找不到请求的类型”的解决
    php 获取某数组中出现次数最多的值(重复最多的值)与出现的次数
    数据库导入时出现“2006
    phpstorm 激活
    取消本地SVN文件夹与服务器的关联
    js实现倒计时函数
  • 原文地址:https://www.cnblogs.com/quan2005/p/4350442.html
Copyright © 2020-2023  润新知