Просто скромне завершення:
Питання: Чи застосовується однакова політика щодо оригіналу (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.