Как написать модульный тест для тестирования приложения веб-форм ASP.NET на уязвимость CSRF? - PullRequest
4 голосов
/ 17 апреля 2009

У нас есть приложение веб-форм ASP.NET, которое, вероятно, уязвимо для атаки подделки межсайтовых запросов (CSRF). Как начать писать модульный тест, который предупредит нас об этом? Использование NUnit. Несколько советов или указателей было бы замечательно.

Ответы [ 2 ]

1 голос
/ 25 апреля 2009

CSRF - это атака, при которой пользователя (например, по ссылке в электронном письме) обманывают для совершения действия от имени злоумышленника, когда он уже аутентифицирован на вашем веб-сайте.

Есть несколько способов снизить риск, который вы должны проверить -

  • GET-запросы не должны иметь побочных эффектов - все действия должны выполняться только с помощью POST-запросов. Злоумышленнику сложнее сгенерировать POST-запрос, исходящий от пользователя.
  • Вы хотите, чтобы случайная уникальная постраничная строка отправлялась пользователю и проверялась при возврате на сервер. Файл cookie пользователя будет отправлен в запросе, вызванном злоумышленником, но злоумышленник не узнает строку, сохраненную в форме. В .NET я думаю, что вы можете использовать Viewstate для этого.
  • Для особо чувствительных (или подверженных атакам) действий или после некоторого периода бездействия вы можете запросить повторную аутентификацию пользователя

OWASP (связан с Торбьёрном) действительно отличный ресурс, содержащий гораздо более подробные объяснения и советы.

0 голосов
/ 23 апреля 2009

Вы должны понимать, как делается CSRF. Займитесь хакерским мышлением. Затем вам нужно создать автоматизированные тесты, выполняющие CSRF. Вероятно, это будет не модульное тестирование (тестирование одного модуля), а скорее интеграционное тестирование. Когда вам удастся выполнить атаку CSRF - когда у вас красные тесты - вы сможете решить проблему.

Ознакомьтесь с CSRF FAQ для получения дополнительной информации о том, как выполнить атаку. И вот хорошая статья вики о Тестировании на CSRF , которую вы должны проверить.

...