我正在开发一个httphandler来处理Web表单中的某些请求(在MVC中不是)。
如何实现反跨站点脚本(如MVC中的防伪)?
我想知道有关MVC中防伪机制的信息。
最佳答案
如果可以访问该页面,则可以使用该页面的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非常安全,但还是有一些不足之处。您可以阅读有关here的更多信息。