Есть один недостаток в добавлении этих заголовков на уровне бека. Если запрос завершится ошибкой на уровне nginx, заголовков не будет. Это можно использовать для xss атаки через размещение на странице фрейма.
Допустим мы уже имеем внедрённый xss, который выполняется при открытии страницы. Добавить скрипт cross origin не получится, не позволяет csp, но мы можем размещать всё что угодно из same origin: 1. Размещаем фрейм с запросом same origin, но с ошибкой в url (/..% к примеру) 2. Этот фрейм загрузится, т.к. это same origin и не конфликтует с csp. Однако внутри фрейма уже нет заголовков csp, т.к. до бэка запрос не дошёл. 3. Добавляем нужный скрипт во фрейм
Есть один недостаток в добавлении этих заголовков на уровне бека. Если запрос завершится ошибкой на уровне nginx, заголовков не будет. Это можно использовать для xss атаки через размещение на странице фрейма.
Допустим мы уже имеем внедрённый xss, который выполняется при открытии страницы. Добавить скрипт cross origin не получится, не позволяет csp, но мы можем размещать всё что угодно из same origin:
1. Размещаем фрейм с запросом same origin, но с ошибкой в url (
/..%
к примеру)2. Этот фрейм загрузится, т.к. это same origin и не конфликтует с csp. Однако внутри фрейма уже нет заголовков csp, т.к. до бэка запрос не дошёл.
3. Добавляем нужный скрипт во фрейм
Подробнее: https://xakep.ru/2018/10/01/xss-csp-bypass/