Эффективна ли эта контрмера CSRF? - PullRequest
4 голосов
/ 31 июля 2011

Пожалуйста, дайте мне знать, эффективен ли следующий подход к защите от CSRF.

  1. Создание токена и сохранение на сервере
  2. Отправка токена клиенту с помощью cookie
  3. Javascript на клиенте читает куки и добавляет токен в форму перед отправкой
  4. Сервер сравнивает токен в форме с сохраненным токеном.

Может кто-нибудь увидеть какие-либо уязвимости при отправке токена через куки ичитать его с помощью JavaScript вместо того, чтобы помещать его в HTML?

Ответы [ 3 ]

2 голосов
/ 31 июля 2011

Шаблон токена синхронизатора основан на сравнении случайных данных, известных клиенту, с данными, опубликованными в форме.Хотя вы обычно получаете последнее из скрытой формы, заполненной токеном во время рендеринга страницы, я не вижу никаких явных векторов атаки, используя JavaScript для его заполнения.Атакующий сайт должен был бы иметь возможность прочитать файл cookie, чтобы восстановить запрос на публикацию, который он явно не может выполнить из-за междоменных ограничений на файлы cookie.

Вы можете найти OWASP Top 10 для .NETчасть 5 для разработчиков: Подделка межсайтовых запросов (CSRF) полезна (много общей информации о CSRF), особенно раздел по совместному использованию ресурсов из разных источников.

0 голосов
/ 01 августа 2011

Этот вопрос окончен на Биржа безопасности содержит несколько полезных обсуждений на эту тему.

Мне особенно нравится ответ @ AviD:

Don't.
-
Most common frameworks have this protection already built in (ASP.NET, Struts, Ruby I think), or there are existing libraries that have already been vetted. (e.g. OWASP's CSRFGuard). 
0 голосов
/ 31 июля 2011

Если отслеживается трафик людей, хакер, вероятно, также получит токен.Но это звучит как отличный план.Я бы попробовал добавить honeypot.Попробуйте замаскировать токен как что-то еще, так что это не очевидно.Если это сработало, отправьте плохого пользователя в honeypot, чтобы он не знал, что его получили.

Моя философия безопасности проста и лучше всего проиллюстрирована историей.
Двое мужчин идут по лесу.Они видят медведя, волнуются и начинают бежать.Когда медведь догоняет их и получает одного из них, говорит другому: «мы никогда не опередим этого медведя».другой парень отвечает: «Мне не нужно опережать медведя, мне нужно только опередить вас!»

Все, что вы можете добавить на свой сайт, чтобы сделать его более безопасным, тем лучше вы будете.Используйте фреймворк, проверьте все входные данные (в том числе все в любом публичном методе), и все должно быть в порядке.

Если вы храните конфиденциальные данные, я бы настроил второй сервер sql без доступа к Интернету.Ваш внутренний сервер должен постоянно получать доступ к вашему внешнему серверу, извлекать и заменять конфиденциальные данные поддельными данными.Если ваш интерфейсный сервер нуждается в этих конфиденциальных данных, что, вероятно, использует специальный метод, который использует другого пользователя базы данных (у которого есть доступ), чтобы получить его с внутреннего сервера.Кто-то должен был бы полностью владеть вашей машиной, чтобы понять это ... и все равно потребуется достаточно времени, чтобы вы смогли выдернуть вилку.Скорее всего, они извлекут все ваши данные, прежде чем поймут, что они фальшивые ... ха-ха.

Хотелось бы, чтобы у меня было хорошее решение о том, как лучше защитить ваших клиентов, чтобы избежать КСО.Но то, что у вас есть, выглядит довольно хорошим сдерживающим фактором.

...