1

我需要在我的代码 (asp.net) 中实现 CSRF(Cross Site Request Forgery) Guard。虽然我从 OWASP 获得了一个库,但由于没有提供任何文档,因此实施它很痛苦。有人可以为我提供一种在.net 中实现 csrf 保护或正确配置 OWASP 库的更简单方法吗?

谢谢

-Chandan

4

1 回答 1

1

ASP.NET MVC

如果您使用的是 asp.net mvc,则可以使用防伪令牌。基本上,在您看来,您将放置以下代码:

@Html.AntiForgeryToken()

在您的控制器上,您可以将此属性放在控制器的顶部:

[ValidateAntiForgeryToken]
public ActionResult Foo()
{
   // Foo code
}

这样做是为了确保用户无法从远程站点提交表单,因为他们无法生成令牌。您还可以使用盐创建令牌。

ASP.NET Web 窗体

对于 asp.net Webforms,您可以覆盖 OnInit 方法并将 ViewStateUserKey 设置为会话 ID。Web 表单将通过 MAC 检查验证视图状态,从而起到防伪令牌的作用。因为攻击者无法生成有效的视图状态(因为他们无法生成有效的 MAC,因为他们无法将会话 ID 放入视图状态),所以 MAC 将失败。您必须在每个页面上执行此操作,或者创建一个已经覆盖 oninit 的基类并执行此操作。

public partial class Default : System.Web.UI.Page
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        this.ViewStateUserKey = Session.SessionID;
    }
}
于 2012-10-17T23:52:05.037 回答