ASP.NET MVC
Если вы используете ASP.NET MVC, вы можете использовать анти-подделки маркера. В принципе, на ваш взгляд вы бы поместить следующий код:
@Html.AntiForgeryToken()
А на контроллере вы бы поставить этот атрибут в верхней части контроллера:
[ValidateAntiForgeryToken]
public ActionResult Foo()
{
// Foo code
}
Что это делает гарантирует, что пользователь не может отправьте форму с удаленного сайта, потому что они не могут создать токен. Вы также можете создать токен с солью.
ASP.NET WebForms
Для ASP.NET WebForms вы можете переопределить метод 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;
}
}
Вы изучили возможность использования встроенной защиты ASP.NET CSRF? Вы можете использовать ViewStateUserKey для предотвращения атак CSRF, если ваше приложение НЕ обрабатывает входные данные с помощью querystrings. Для запросов HTTP POST защита ViewStateUserKey работает нормально. – gauravphoenix