在ASP.NET MVC中微软已经提供了如何防止跨域攻击的方法。对于传统Webfrom中使用Handler来接受ajax的Post请求数据,如何来防止XSRF攻击呢。这里给你们提供一个简单地方法,和MVC中相似。git
1.首先须要在你的站点中安装以下的nuget包。能够手动复制dll。github
Install-Package Microsoft.AspNet.WebPages -Version 2.0.20710web
最新版本的Razor是3.0的,安装WebPages的时候,它依赖于Razor,因此对于framework4.0的项目来讲,没法安装WebPages最新版本。须要安装2.0版本。ajax
安装完成后,增长了以下几个dll:跨域
2.配置web.config,生成隐藏的token。异步
须要在system.web节点下增长以下配置:spa
<machineKey decryption="AES" validation="SHA1" decryptionKey="435D9CC99471D1E7C70FFEBA5EC71F28048BF9016605B82CC69B091FD317B294" validationKey="25C5D98CE093E77C2F886A6D8C6DA8FBC77CD764A1BF49E5D30CD123C5E19553"/>.net
配置好节点后,须要在.aspx页面的后台代码中增长一个Token生成字段,若是有基类,那么就能够把该部分添加到基类中。orm
咱们增长了属性Token,而后使用AntiForgery.GetHtml()来生成一个隐藏的token。而后在页面中绑定该Token。server
<form id="form1" runat="server">
<%=Token %>
<div>
</div>
</form>
3.建立一个接收ajax请求的Handler,加入防止伪造页面提交的代码。
4.建立一个带有Token的Ajax请求。
这样就能够防止你的异步请求被XSRF攻击了。
PS:对于不少站点,会有子域名之类的,或者是一个Cookie多个站点共用,就容易出现懂点技术的用户跨站点去伪造请求。
微软开源了.net的不少代码,若是你想看上面的实现原理,那么能够去下载 代码查看。
但愿对你有所帮助。