Просто скромное завершение:
В: Применяется ли политика одинакового происхождения (SOP) только в браузерах?
A: Да. Для всех вызовов, которые вы делаете внутри браузера, браузер определенно применяет СОП. Сервер может или не может проверить источник запроса.
В: Если запрос не соответствует SOP, блокирует ли его браузер?
О: Нет, это вне компетенции браузеров. Браузеры просто отправляют запросы с перекрестным происхождением и ждут ответа, чтобы убедиться, что сервер сообщает о правомерности вызова через Access-Control
заголовки - *. Если сервер не отправляет обратно Access-Control-Allow-Origin
заголовок, не отображает происхождение вызывающего абонента или не отправляет обратно *
в заголовке, то все, что будет делать браузер, - это воздерживаться от предоставления ответа вызывающему.
В: Означает ли это, что я не могу обманывать Origin
?
О: В браузере и с использованием сценариев вы не можете переопределить, так Origin
как это находится под контролем браузера. Однако, если вы хотите взломать себя, вы можете вмешаться в звонки, исходящие из ВАШЕГО браузера, с помощью расширений браузера или других инструментов, установленных на вашем компьютере. Вы также можете оформить HTTP
звонки , используя curl
, Python
, C#
и т.д. , и изменить Origin
заголовок трюк серверов.
В: Значит, если я могу обмануть сервер, изменив Origin
его, значит ли это, что он CORS
небезопасен?
A: CORS
по сути ничего не говорит о безопасности - т.е. аутентификации и авторизации запросов. Серверы должны проверять запросы и аутентифицировать / авторизовать их с помощью любого механизма, с которым они работают, например файлов cookie и заголовков. Сказав это, он может защитить нас немного больше в случае атак типа XSS:
Пример.
Допустим, вы вошли на свой веб-сайт, и вредоносный скрипт пытается отправить запрос на веб-сайт вашего банка, чтобы узнать ваш баланс: отраженная XSS- атака. Веб-сайт вашего банка доверяет учетным данным, исходящим (здесь от имени) вашего веб-сайта, поэтому запрос проходит проверку подлинности и HTTP
выдается ответ, нацеленный на вредоносный код. Если веб-сайт вашего банка не заботится о том, чтобы делиться своими конечными точками с другими источниками, он не включаетAccess-Control-Allow-Origin
заголовок в ответе. Теперь, по прибытии запроса, браузер понимает, что запрос был запросом Cross Origins, но ответ не показывает, что сервер был счастлив поделиться ресурсом (здесь конечная точка запроса баланса) с вашим веб-сайтом. Таким образом, он прерывает поток, поэтому возвращаемый результат никогда не дойдет до вредоносного кода.
foo.com
), должен предоставлятьAccess-Control-Allow-Origin
заголовок, иначе браузер не разрешит запросbar.com
.