Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В этой статье мы расскажем, как работает технология SOP, которая защищает твой браузер от вредоносных скриптов. Разберем основные виды мисконфигов и составим шпаргалки с разными случаями поведения CORS. В конце разберем пример и проверим работоспособность PoC.
SOP (Same Origin Policy) — это политика безопасности браузера, которая контролирует взаимодействие между сайтами. Она нужна для предотвращения кражи данных пользователя вредоносным скриптом.
До внедрения SOP, данные крали так:
Проблема в том, что когда браузер отправляет HTTP-запрос из одного источника в другой, cookie-файлы, относящиеся к другому домену, тоже отправляются в запросе. Это значит, что ответ будет сгенерирован в рамках сеанса пользователя и будет включать в себя доступные только ему данные. Чтобы предотвратить такое поведение и существует SOP.
Межсайтовые взаимодействия обычно делят на три категории:
img
, video
, frame
и аналогичные им. В качестве иллюстрации отправим несколько запросов со страницы http://discovery-lab.su/index.html
. Реакция SOP приведена в таблице ниже.
А вот схема, показывающая, из чего состоит заголовок Origin
.
Раньше сайтам требовалось взаимодействовать друг с другом, но SOP блокировала множество таких запросов. Тогда люди придумали механизм CORS (Cross-Origin Resource Sharing), который предназначался для смягчения политики SOP.
Вот чуть более подробное описание из справки Mozilla:
Теперь давай разберемся с двумя заголовками, на которые предстоит чаще всего обращать внимание: Access-Control-Allow-Origin
и Access-Control-Allow-Credentials
.
Заголовок ответа Access-Control-Allow-Origin
показывает, с какого источника может быть доступен ответ сервера.
Возможные значения:
<domain>
— указывает одно происхождение, с которого можно получать ответ сервера. null
— указывает «нулевое» происхождение. Никогда не добавляй его в белый список! Происхождение для некоторых схем (data:
, file:
) и документы, доступные через песочницу, определяются как «нулевые».
В зависимости от заголовков, межсайтовые запросы могут быть переданы без куки или заголовка авторизации. Впрочем, если задана настройка CORS Access-Control-Allow-Credentials: true
, то сервер может разрешить чтение ответа, когда передаются куки или заголовок авторизации.
Источник: xakep.ru