Выбор ответа Middle CORS обновлено
Опасная настройка CORS
Вопрос
Что опасного в такой настройке?
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', req.headers.origin);
res.setHeader('Access-Control-Allow-Credentials', 'true');
next();
});
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Любой сайт отправит запрос с куками пользователя и прочитает ответ: защиты нет. Сервер разрешает любой origin, который пришёл, и вместе с credentials.
Варианты ответа
- Ничего: origin берётся из самого запроса, значит он всегда правильный и безопасный
- Браузер не примет отражённый origin вместе с credentials, там нужна звёздочка
* - Не хватает
Access-Control-Max-Age, из-за этого preflight будет на каждый запрос - Любой сайт отправит запрос с куками пользователя и прочитает ответ: защиты нетправильный ответ
Разбор
Сервер разрешает любой origin, который пришёл, и вместе с credentials. Злой сайт сделает fetch с куками жертвы и прочитает её данные. Правильно сверять origin со списком разрешённых и ставить Vary: Origin. Отражённый origin браузер примет, в этом и проблема. Звёздочка с credentials вообще запрещена. Max-Age влияет только на кеш preflight, к безопасности отношения не имеет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.