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