【问题标题】:Prevent CSRF attack in ASP.NET MVC防止 ASP.NET MVC 中的 CSRF 攻击
【发布时间】:2015-11-04 21:44:41
【问题描述】:

我有 2 个应用程序。一个应用程序向其他应用程序执行表单提交(http post)(两者都是分别托管在同一站点下的 mvc 应用程序)。表单提交是旧版 javascript 提交。在控制器中准备隐藏变量作为 htmlstring 并通过 Response.write 从控制器发布。现在,我如何为这种情况实现防伪令牌逻辑。是否可以在控制器中调用 antiforgerytoken()。请建议。

【问题讨论】:

标签: antiforgerytoken


【解决方案1】:

我假设“mvc 应用程序”是指 ASP.NET MVC 应用程序。

有很多不同的 CSRF 预防方法,例如通过表单正文、自定义标头或 cookie。在您的情况下,使用 Cookie 将解决您的问题,但您需要弄清楚两个 ASP.NET 应用程序之间的 cookie 共享。 ASP.NET通过一些配置支持cookie共享,详情看这里http://docs.asp.net/en/latest/security/data-protection/compatibility/cookie-sharing.html

基础知识;

  1. 生成 CSRF 令牌。
  2. 将此标记设置为 cookie 以及具有隐藏值的表单正文。
  3. 客户端提交表单。
  4. 由于两个应用程序在同一个域下,我们的 csrf 令牌 cookie 将到达第二个应用程序。
  5. 检查 cookie 和表单正文具有相同的令牌。如果没有 CSRF 攻击,这些值应该是相同的。

【讨论】:

  • 对于前两个步骤,是否可以在控制器中使用内置方法防伪令牌。或者我应该用一些散列算法手动编写编码
猜你喜欢
  • 2011-03-12
  • 1970-01-01
  • 2010-12-20
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
  • 2021-06-26
  • 2015-01-15
  • 1970-01-01
相关资源
最近更新 更多