Cross-Origin Resource Sharing (CORS)
CORS — Сервер указывает, кто (какие критерии) имеет права на доступ к его ресурсу.
Если cors настроен не правильно, или не проверяется, то с домена злоумышленника (встроив соотв код и убедив пользователя перейти на него) можно будет осуществлять запросы к веб-приложению от имени пользователя (Произвести CSRF-атаку).
Как проверить
Отсылаем запрос с Origin
:
Если в ответ придет Access-Control-Allow-Origin
с нашим доменом или вообще с *
— то этот ресурс можно запросить с нашего домена (и да, куки или TLS-сертификат подставятся из браузера, если сервер вернет заголовок Access-Control-Allow-Credentials: true
). Пример ответа:
Пример эсплуатации
Иногда допускает Origin: null
. Как добиться такого origin (из portswigger):
Замечание
Если указан Access-Control-Allow-Credentials: true, то в CORS wildcard (*) не будут работать
Настройка
Как подрубить корсы на разных серверах: https://enable-cors.org/server.html
Nginx: (обрати внимание на комменты) https://gist.github.com/Stanback/7145487 https://medium.com/@hariomvashisth/cors-on-nginx-be38dd0e19df
Last updated