【问题标题】:Are ASP.NET MVC 4 Beta editor templates safe against CSRF?ASP.NET MVC 4 Beta 编辑器模板对 CSRF 安全吗?
【发布时间】:2012-04-01 15:03:48
【问题描述】:

由 ASP.NET MVC 4 Beta 模板生成的页面对跨站点请求伪造安全吗?

具体来说,“具有读/写操作和视图的控制器,使用 EntityFramework”生成的“编辑”视图和控制器操作是否受到 CSRF 的保护?

检查编辑表单生成的 HTML 代码,我看不到隐藏字段或其他实现防伪令牌的方式。

是我遗漏了什么还是默认示例不安全?

【问题讨论】:

  • 我的理解是,生成易受攻击代码的模板是一个安全漏洞;我在Microsoft Connect 上提交了一份错误报告。
  • 我会从你的标题中删除 4,也是控制器,它们是编辑器模板,而不是控制器模板。这是 MVC 2 的新功能,但不是 MVC 3 或 MVC 4。
  • 我明白,但我想知道的是当前的 Beta 版本是否在其默认模板或配方中实施了针对 CSRF 的保护。我已经知道旧版本没有。
  • Beta 版与 MVC 3 RTW 相比没有变化。

标签: c# asp.net-mvc csrf asp.net-mvc-4


【解决方案1】:

您需要显式实现防伪令牌。

在视图中:

@using (Html.BeginForm(...
{
    @Html.AntiForgeryToken()
    ...
}

在控制器中

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult MyAction(MyViewModel model)
{
    ...

您始终可以创建自定义 T4 模板来为您生成此内容,但不可以,默认情况下开箱即用的模板不会执行此操作。

【讨论】:

  • 感谢您确认提供的 ASP.NET MVC 模板生成的代码易受 CSRF 攻击,并提供有关如何纠正此问题的示例代码。
  • 这不适用于 IE。 :(你能帮我用IE吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2012-01-06
相关资源
最近更新 更多