asp.net - 防止ASP.NET Web表单中的跨站点请求伪造(CSRF)攻击

标签 asp.net webforms csrf .net-framework-version

我已经使用Visual Studio 2013创建了ASP.Net Web窗体应用程序,并且正在使用.NET Framework 4.5。我想确保我的网站不受跨站请求伪造(CSRF)的影响,我发现有很多文章都在谈论如何在MVC应用程序上实现此功能,但是很少有文章谈论Web表单。关于this StackOverflow question,有一条评论指出

"This is an old question, but the latest Visual Studio 2012 ASP.NET template for web forms includes anti-CSRF code baked into the master page. If you don't have the templates, here's the code it generates:..."



我的母版页不包含该答案中提到的代码。它真的包含在新应用程序中吗?如果没有,添加它的最佳方法是什么?

最佳答案

您可以尝试以下方法。在Web窗体中添加:

<%= System.Web.Helpers.AntiForgery.GetHtml() %>

这将添加一个隐藏字段和一个cookie。因此,如果您填写一些表单数据并将其发布回服务器,则需要简单检查一下:
protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
        AntiForgery.Validate(); // throws an exception if anti XSFR check fails.
}

如果反XSFR检查失败,则AntiForgery.Validate();引发异常。

关于asp.net - 防止ASP.NET Web表单中的跨站点请求伪造(CSRF)攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29939566/

相关文章:

c# - 如何使用 requireSSL ="true"修复 CSRF 和 [加密 session (SSL) Cookie 中缺少安全属性] 问题?

javascript - 如何将 JS 数据从脚本文件传递到 C# 方法

asp.net - ASP :repeater - headers at section change

c# - 如何使用 C# 从 mpg 视频创建缩略图?

asp.net - VS2012 - Web 表单 - 捆绑困惑

asp.net-mvc-3 - 为 Telerik 上传控制实现防伪造

Laravel “CSRF token mismatch” 用于带有 Laravel-cors 和 axios 的 POST

javascript - 使用 __doPostBack 函数分析带有分页的 .aspx 站点

c# - 在 ASP.NET Webforms 应用程序的 web.config 中加载多个用户控件应用程序是个坏主意

c# - 德国文化中的 XML 解析问题 - ASP.NET