• 关于最近的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跨站脚本攻击,否则上面所做的一切都白做了。

  • 相关阅读:
    ThreadPoolExecutor详解
    java concurrent 之 SynchronousQueue
    最简单例子图解JVM内存分配和回收
    Jvm垃圾回收堆内存变化过程
    CentOS 7下OpenLDAP编译安装及配置
    Mysql+ODBC+OpenLDAP
    ffmpeg在 centos下的安装
    利用SQL SERVER对比两张表的数据一致性
    Python3通过汉字输出拼音
    SQL Server 用链接服务器 同步SqlServer与MySQL
  • 原文地址:https://www.cnblogs.com/quan2005/p/4350442.html
Copyright © 2020-2023  润新知