Реализация AntiForgery в Asp.net Forms

Я разрабатываю httphandler для обработки некоторых запросов в веб-формах (НЕ в MVC).
Как я могу реализовать анти-межсайтовый скриптинг (например, защиту от подделки в MVC)?
Я хочу больше узнать о механизме защиты от подделки в MVC. .


person Amir Pournasserian    schedule 20.07.2010    source источник
comment
Все полезные классы/методы являются закрытыми, защищенными или внутренними, поэтому они не используются вне приложения ASP.NET MVC.   -  person Darin Dimitrov    schedule 20.07.2010
comment
anticsrf.codeplex.com   -  person Steven    schedule 11.01.2011


Ответы (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 довольно безопасен, с ним есть некоторые недостатки. Подробнее об этом можно прочитать здесь.

person Steven    schedule 20.07.2010
comment
Спасибо, я также реализовал эти разделы: 1- Проверка метода http на POST. 2- Проверка того, что UrlRefferrer является тем же доменным именем. 3- я добавлю ваше решение. Если хакер изменит свой DNS во время просмотра веб-приложения, может ли это быть опасным или нет? - person Amir Pournasserian; 20.07.2010