Pull to refresh

Comments 4

А почему бы с бека не слать эти хедеры?

Можно и с бека слать, в моем случае пример с использованием nginx. Но думаю в случае бека будет загвоздка, так как в моем примере используется request_id, это "внутренняя" переменная nginx, за счет нее создается динамический хеш, а далее с помощью sub_filter мы находим внутри нашей статики строку CSP_NONCE и заменяем ее на request_id. Если на беке повторить эту логику то думаю можно получить нужный результат)

Есть один недостаток в добавлении этих заголовков на уровне бека. Если запрос завершится ошибкой на уровне 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/

Статья очень полезная, вместе с тремя верхними комментариями.
Благодарю за труды

Sign up to leave a comment.

Articles