Как реализовать CSRF Guard в ASP.Net - PullRequest
1 голос
/ 14 декабря 2011

Мне нужно реализовать CSRF (межсайтовая подделка запросов) Guard в моем коде (asp.net).Несмотря на то, что я получил библиотеку от OWASP, ее реализация - это боль, так как никакой документации не дается.Может кто-нибудь предоставить мне более простой способ реализовать csrf guard в .net или правильно настроить библиотеку OWASP?

Спасибо

-Chandan

1 Ответ

0 голосов
/ 18 октября 2012

ASP.NET MVC

Если вы используете asp.net mvc, вы можете использовать маркер защиты от подделки.По сути, на ваш взгляд, вы должны поместить следующий код:

@Html.AntiForgeryToken()

И на вашем контроллере вы поместите этот атрибут в верхнюю часть контроллера:

[ValidateAntiForgeryToken]
public ActionResult Foo()
{
   // Foo code
}

Это гарантируетчто пользователь не может отправить форму с удаленного сайта, потому что он не может сгенерировать токен.Вы также можете создать токен с солью.

Веб-формы ASP.NET

Для веб-форм asp.net вы можете переопределить метод OnInit и установить ViewStateUserKey наидентификатор сессии.Веб-формы будут проверять состояние с проверкой MAC, действуя как токен защиты от подделки.Поскольку злоумышленник не может сгенерировать действительное состояние просмотра (поскольку у него нет возможности сгенерировать действительный MAC-адрес, поскольку он не может поместить идентификатор сеанса в состояние просмотра), MAC-адрес завершится ошибкой.Вам придется делать это на каждой странице или создавать базовый класс, который уже переопределяет oninit и делает это.

public partial class Default : System.Web.UI.Page
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        this.ViewStateUserKey = Session.SessionID;
    }
}
...