Я розробляю веб-API JSON / REST, для якого я спеціально хочу, щоб веб-сайти сторонніх розробників могли телефонувати до моєї служби через AJAX. Отже, моя служба надсилає відомий заголовок CORS:
Access-Control-Allow-Origin: *
Що дозволяє стороннім сайтам телефонувати до моєї служби через AJAX. Поки що все добре.
Однак підрозділ мого веб-API не є загальнодоступним і вимагає автентифікації (досить стандартні матеріали з OAuth та файлом cookie access_token). Чи безпечно вмикати CORS і на цій частині мого сайту?
З одного боку, було б круто, якби сторонні веб-сайти могли мати клієнтів ajax, які також взаємодіють з цією частиною мого сервісу. Однак причиною того, що існує однакова політика походження, є те, що це може бути ризиковано. Ви не хочете, щоб будь-який веб-сайт, який ви відвідаєте згодом, міг мати доступ до вашого приватного вмісту.
Сценарій, якого я боюся, полягає в тому, що користувач входить до мого веб-API, або на веб-сайті, або через веб-сайт, якому він довіряє, і він забуває вийти. Чи дозволить це кожному другому веб-сайту, який він відвідає згодом, отримати доступ до його приватного вмісту за допомогою існуючого сеансу?
Тож мої запитання:
- Чи безпечно вмикати CORS на непублічному вмісті?
- Якщо сервер із підтримкою CORS встановлює session_token через файл cookie, чи буде цей файл cookie збережений у домені сервера CORS або основного сервера веб-сторінок?