Как вы предотвращаете CSRF-атаки от клиентов без файлов cookie в ASP.NET Web API?
Я делаю сервис ASP.NET Web API 2 в качестве RESTful API для поддержки мобильных приложений.
Проблема заключается во всех статьях в Интернете о CSRF, включая:
- Предотвращение взлома CSRF в ASP.NET Web API
- Предотвращение подделки межсайтовых запросов с помощью ASP.NET MVC AntiForgeryToken() Helper
- Предотвращение атак подделки межсайтовых запросов (CSRF)
Все говорят о проверке анти-CSRF на основе файлов cookie.
Мне нужно поместить такой файл cookie в мое мобильное приложение, и не только, оно должно быть предварительно загружено, чтобы приложение сразу заработало. Есть ли способ использовать такие методы защиты от CSRF без установки файлов cookie? Или, может быть, есть способ предварительно загрузить файл cookie безопасности в мобильное приложение, чтобы мы могли немедленно использовать его без шага настройки файла cookie?
1 ответ
Ответ: Вам не нужно.
Вам нужно будет защитить свой веб-API с помощью какого-то механизма аутентификации (предположительно), и я рекомендую сделать ваш API доступным только через HTTPS. Реализация HSTS также рекомендуется.
CSRF-атака может произойти только тогда, когда cookie-файлы передаются клиенту. Под этим я подразумеваю, что клиент имеет доступ к файлам cookie из нескольких доменов (например, веб-браузер, хранящий файлы cookie для каждого посещаемого вами сайта). Однако клиент API веб-приложения обычно связывается только с одним доменом (доменом вашего API). Любая межсайтовая атака не может использовать куки в вашем API, так как клиент не является общим (HTTP-клиент в веб-приложении отделен от HTTP-клиента в мобильном браузере - или должен быть). Поэтому API вашего веб-приложения уже должен быть защищен от CSRF, если API предназначен только для вашего мобильного приложения.
Обратите внимание, что согласно комментарию Jaxidian вышеизложенное предполагает, что куки используются как механизм управления сеансом, а не как HTTP-ориентированный (например, базовая аутентификация, NTLM или Kerberos).