我需要在我的代码(asp.net)中实现CSRF(Cross Site Request Forgery)Guard。 虽然我从OWASP获得了一个库,但实现它是一件痛苦的事情,因为没有给出任何文档。有人能给我一个更简单的方法来在.net中实现csrf guard,或者正确配置OWASP库吗?
由于
-Chandan
答案 0 :(得分:0)
ASP.NET MVC
如果您使用的是asp.net mvc,则可以使用防伪令牌。基本上在您的视图中,您将放置以下代码:
@Html.AntiForgeryToken()
在控制器上,您可以将此属性放在控制器的顶部:
[ValidateAntiForgeryToken]
public ActionResult Foo()
{
// Foo code
}
这样做可确保用户无法从远程站点提交表单,因为他们无法生成令牌。您还可以使用salt创建令牌。
ASP.NET WebForms
对于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;
}
}