Asp.net Forms中的AntiForgery实现

时间:2010-07-20 15:08:32

标签: asp.net forms httphandler antiforgerytoken

我正在开发一个httphandler来处理Web窗体中的一些请求(不是在MVC中) 我怎样才能实现反跨站点脚本(如MVC中的防伪)? 我想知道MVC中的防伪机制。

1 个答案:

答案 0 :(得分:1)

如果您可以访问该页面,则可以使用该页面的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的更多信息。