我正在开发一个 httphandler 来处理 Web 表单中的一些请求(不在 MVC 中)。
我如何实现反跨站点脚本(如 MVC 中的防伪)?
我想了解 MVC 中的防伪机制。
问问题
4592 次
1 回答
1
如果可以访问 Page,则可以使用 Page 的ViewStateUserKey属性。这是一个如何在页面内执行此操作的示例,但您会明白的:
protected void Page_Init(object sender, EventArgs e)
{
// Validate whether ViewState contains the MAC fingerprint
// Without a fingerprint, it's impossible to prevent CSRF.
if (!this.Page.EnableViewStateMac)
{
throw new InvalidOperationException(
"The page does NOT have the MAC enabled and the view" +
"state is therefore vulnerable to tampering.");
}
this.ViewStateUserKey = this.Session.SessionID;
}
虽然 ViewStateUserKey 非常安全,但也有一些缺点。您可以在此处阅读更多相关信息。
于 2010-07-20T15:36:33.177 回答