如何在ASP.NET WebForms中阻止 CSRF (跨站点请求伪造)攻击?
ASP.NET MVC中是否有类似[ValidateAntiForgeryToken]
的内容?
答案 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。