我正在开发一个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的更多信息。

09-30 12:59