2016-07-19 5 views
0

Я чувствую, что в любое время, когда я вижу документацию по CORS, она рекомендует только иметь конфигурацию по умолчанию Access-Control-Allow-Origin: *. Мне кажется, это отличный способ сделать ваш API теперь уязвимым для атак CSRF. Объяснение заключается в том, что одна и та же политика происхождения - это единственное, что останавливает запросы XHR в браузере от того, что конечные точки API полностью уязвимы для CSRF и что CORS по сути является обходом для SOP.Может ли чрезмерно разрешающая настройка CORS привести к CSRF?

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

ответ

0

Разрешить все происхождение, безусловно, не рекомендуется, но это не обязательно относится к CSRF, если вы не разрешаете куки-файлы на входящие запросы. Для смягчения CSRF вы хотите:

  1. Подтвердите происхождение. Как правило, вы определяете белый список кода или конфигурации. Если входящий источник не находится в белом списке, отклоните запрос с кодом статуса 403.
  2. Добавить поддержку анти-CSRF с помощью токенов. У Microsoft есть хорошие article на их использование в ASP.NET MVC и веб-API. В основном токен - это просто случайная строка, которая изменяется при каждом запросе.

Также рассмотрите возможность использования чего-либо, кроме файлов cookie, для аутентификации запроса/пользователя. Например, рассмотрите использование токенов аутентификации, представленных через заголовок авторизации.

Один ресурс Я настоятельно рекомендую узнать больше о CORS и смягчении CSRF - это книга CORS In Action от Monsur Hossain. Автор также создал хороший сайт-компаньон (enable-cors.org) с образцами и ссылками на дополнительные ресурсы.