如何在asp.net webform中防止CSRF攻击?

时间:2010-07-06 04:31:57

标签: webforms

如何在ASP.NET WebForms中阻止 CSRF 跨站点请求伪造)攻击?

ASP.NET MVC中是否有类似[ValidateAntiForgeryToken]的内容?

1 个答案:

答案 0 :(得分:0)

在谈论保护ViewState时,可以使用“ ViewStateUserKey”。

基本上,您需要为每个用户使用一个特定的密钥,该密钥是从ASP.NET会话派生的。这是一个示例:

/// <summary>
///     Raises the <see cref="E:System.Web.UI.Control.Init" /> event to initialize the page.
/// </summary>
/// <param name="e">
///     An <see cref="T:System.EventArgs" /> that contains the event data.
/// </param>
protected override void OnInit(EventArgs e) {
    base.OnInit(e);

    // Validate whether ViewState contains the MAC fingerprint
    // Without a fingerprint, it's impossible to prevent CSRF.
    if (!Page.EnableViewStateMac) {
        throw new InvalidOperationException("The page does NOT have the MAC enabled and the view state is therefore vulnerable to tampering.");
    }

    ViewStateUserKey = Session.SessionID;
}

您可以了解更多信息,例如from the Microsoft Docs