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