2011-12-14 4 views
1

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

Благодаря

-Chandan

+1

Вы изучили возможность использования встроенной защиты ASP.NET CSRF? Вы можете использовать ViewStateUserKey для предотвращения атак CSRF, если ваше приложение НЕ обрабатывает входные данные с помощью querystrings. Для запросов HTTP POST защита ViewStateUserKey работает нормально. – gauravphoenix

ответ

0

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; 
    } 
} 
+0

, и если я не использую MVC, как мне предотвратить CSRF? – user1663380

+0

@ user1663380 Я обновил код, чтобы включить пример webforms. – nerdybeardo

+0

Кажется, что первоначальный квест заключался в том, как реализовать CSRFGuard (https://www.owasp.org/index.php/CSRFGuard_3_User_Manual) специально в реализации ASP.Net. Вы предложили несколько предложений относительно того, как защитить от атак CSRF в .Net, но совсем не обращались к исходному вопросу о внедрении CSRFGuard в .Net. Вот ссылка на страницу GitHub с кодом CSRF (https://github.com/aramrami/OWASP-CSRFGuard). Кто-нибудь еще имеет полезные советы о том, как реализовать CSRFGuard в .NET? Спасибо. – Bryan

Смежные вопросы