在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:

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

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

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

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

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

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

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

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

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

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

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

希望对你有所帮助。

ASP.NET WebForm中异步请求防止XSRF攻击的方法的更多相关文章

  1. ASP.NET WebForm 之 Ajax 请求后端处理

    概述 ASP.NET MVC中的异步用途非常广泛,操作起来也非常简单.前台请求异步请求 Controller下的Action 方法,后端返回ActionResult 即可.但是在ASP.NET Web ...

  2. 在内核中异步请求设备固件firmware的测试代码

    在内核中异步请求设备固件firmware的测试代码 static void ghost_load_firmware_callback(const struct firmware *fw, void * ...

  3. 【Ext.Net学习笔记】01:在ASP.NET WebForm中使用Ext.Net

    Ext.NET是基于跨浏览器的ExtJS库和.NET Framework的一套支持ASP.NET AJAX的开源Web控件,包含有丰富的Ajax运用,其前身是Coolite. 下载地址:http:// ...

  4. SpringBoot中异步请求和异步调用(看这一篇就够了)

    原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10661591.html,否则将追究法律责任!!! 一.SpringBoot中异步请求的使用 ...

  5. Laravel5中防止XSS跨站攻击的方法

    本文实例讲述了Laravel5中防止XSS跨站攻击的方法.分享给大家供大家参考,具体如下: Laravel 5本身没有这个能力来防止xss跨站攻击了,但是这它可以使用Purifier 扩展包集成 HT ...

  6. Ext.Net学习笔记01:在ASP.NET WebForm中使用Ext.Net

    Ext.Net是一个对ExtJS进行封装了的.net控件库,可以在ASP.NET WebForm和MVC中使用.从今天开始记录我的学习笔记,这是第一篇,今天学习了如何在WebForm中使用Ext.Ne ...

  7. System.web.optimization 在 Asp.Net WebForm 中应用得注意了

    我们也可以在Asp.Net WebForm项目中去使用Optimization,去处理我们的资源文件,从而起到优化网站性能的效果,前端知识得从小事做起.但是在使用过程中我却发现了下面的问题. 第一步: ...

  8. ASP.NET WebForm中前台代码如何绑定后台变量

    转载自 http://www.cnblogs.com/lerit/archive/2010/10/22/1858007.html 经常会碰到在前台代码中要使用(或绑定)后台代码中变量值的问题.一般有& ...

  9. JavaScrpit中异步请求Ajax实现

    在前端页面开发的过程中,经常使用到Ajax请求,异步提交表单数据,或者异步刷新页面. 一般来说,使用Jquery中的$.ajax,$.post,$.getJSON,非常方便,但是有的时候,我们只因为需 ...

随机推荐

  1. SharePoint 2013 页面访问,Url中间多一段"_layouts/15/start.aspx#"

    问题描述: 我想访问如下页面 http://Host/_layouts/15/ManageFeatures.aspx 点击以后页面地址没有错,但是中间多了一段“_layouts/15/start.as ...

  2. Android M Permission 运行时权限 学习笔记

    Android M Permission 运行时权限 学习笔记 从Android 6.0开始, 用户需要在运行时请求权限, 本文对运行时权限的申请和处理进行介绍, 并讨论了使用运行时权限时新老版本的一 ...

  3. Android编码规范02

    同一项目开发过程中需要所有开发人员都有一种风格,做Android项目就要统一遵从Android代码风格: 要想了解Android的代码风格,最好的方式就是查看Android源代码: 下载Android ...

  4. 通知、block

    =================================== 通知 =================================== 一.通知(NSNotification) // N ...

  5. border 外边框

    语法: border:<line-width> || <line-style> || <color> <line-width> = <length ...

  6. [css]我要用css画幅画(三)

    接着之前的[css]我要用css画幅画(二), 今天,我画了一个小人,他的名字暂时叫作小明. 以下只列出本次修改增加的内容 html如下: <div class="human left ...

  7. 机器学习实战笔记(Python实现)-02-决策树

    --------------------------------------------------------------------------------------- 本系列文章为<机器 ...

  8. Shelve Instance 操作详解 - 每天5分钟玩转 OpenStack(38)

    Instance 被 Suspend 后虽然处于 Shut Down 状态,但 Hypervisor 依然在宿主机上为其预留了资源,以便在以后能够成功 Resume. 如果希望释放这些预留资源,可以使 ...

  9. DMZ区

    DMZ是英文“Demilitarized Zone”的缩写,它是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区,这个缓冲区位于企业内部网络和外部 ...

  10. Java中的集合排序

    1. 定义排序 class ComparatorDefault implements Comparator { public int compare(Object arg0, Object arg1) ...