Просто скромное завершение:
В: Применяется ли политика одинакового происхождения (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.