zoukankan      html  css  js  c++  java
  • ASP.NET WebForm中异步请求防止XSRF攻击的方法

    在ASP.NET MVC中微软已经提供了如何防止跨域攻击的方法。对于传统Webfrom中使用Handler来接受ajax的Post请求数据,如何来防止XSRF攻击呢。这里给大家提供一个简单地方法,和MVC中类似。

     

    1.首先需要在你的站点中安装如下的nuget包。可以手动复制dll。

    Install-Package Microsoft.AspNet.WebPages -Version 2.0.20710

    最新版本的Razor是3.0的,安装WebPages的时候,它依赖于Razor,所以对于framework4.0的项目来说,无法安装WebPages最新版本。需要安装2.0版本。

    安装完成后,增加了如下几个dll:

    image

    2.配置web.config,生成隐藏的token。

    需要在system.web节点下增加如下配置:

    <machineKey decryption="AES" validation="SHA1" decryptionKey="435D9CC99471D1E7C70FFEBA5EC71F28048BF9016605B82CC69B091FD317B294" validationKey="25C5D98CE093E77C2F886A6D8C6DA8FBC77CD764A1BF49E5D30CD123C5E19553"/>

    配置好节点后,需要在.aspx页面的后台代码中增加一个Token生成字段,如果有基类,那么就可以把该部分添加到基类中。

    image

    我们增加了属性Token,然后使用AntiForgery.GetHtml()来生成一个隐藏的token。然后在页面中绑定该Token。

    <form id="form1" runat="server">
      <%=Token %>
      <div>
      
      </div>
      </form>

    3.创建一个接收ajax请求的Handler,加入防止伪造页面提交的代码。

    image

     

    4.创建一个带有Token的Ajax请求。

    image

     

    这样就可以防止你的异步请求被XSRF攻击了。

    PS:对于很多站点,会有子域名之类的,或者是一个Cookie多个站点共用,就容易出现懂点技术的用户跨站点去伪造请求。

    微软开源了.net的很多代码,如果你想看上面的实现原理,那么可以去下载 代码查看。

    image

     

    希望对你有所帮助。

  • 相关阅读:
    Entity SQL 初入
    ObjectQuery查询及方法
    Entity Framework 的事务 DbTransaction
    Construct Binary Tree from Preorder and Inorder Traversal
    Reverse Linked List
    Best Time to Buy and Sell Stock
    Remove Duplicates from Sorted Array II
    Reverse Integer
    Implement Stack using Queues
    C++中const限定符的应用
  • 原文地址:https://www.cnblogs.com/n-pei/p/3682665.html
Copyright © 2011-2022 走看看