tgoop.com/prog_way_blog/361
Last Update:
Content Security Policy CSP
— механизм защиты веб-приложений в браузере, который регулирует из каких источников браузер может загружать ресурсы и выполнять их (скрипты, стили, шрифты, картинки и т.д.)
Основная задача CSP
— защитить пользователя от инъекционных атак, типа XSS
, блокируя любые недоверенные ресурсыCSP
можно задавать через HTTP
заголовок или через meta
тег. И, если честно, с CSP
в мета тегах я никогда не сталкивался, поэтому осознанно опущу эту часть, такой способ задания наименее гибкий и полезный и подходит только для статики
Обычно политику можно задать в конфиге Nginx
, условного Express
или даже в докере через заголовок: Content-Security-Policy
. Выглядеть это в упрощённом случае может примерно так:
Content-Security-Policy: default-src 'self' https://trusted.ru;
Эта запись означает, что ресурсы можно загружать только с домена приложения либо с trusted.ru
Если на сайте настроена
CSP
без разрешения на инлайн-скрипты 'unsafe-inline'
и без сторонних доменов, код злоумышленника просто не выполнится: браузер заблокирует <script>
вне белого списка. Это эффективно снижает риск XSS
unsafe-inline — это директива CSP, которая позволяет браузеру выполнять инлайн-скрипты, вставленные в дом на лету. Это может быть удобно, но сильно ослабляет защиту сайта в целом.
Вот так это может выглядеть:
Content-Security-Policy:
default-src 'self';
script-src 'self' 'unsafe-inline';
В целом, если не заниматься какой-то откровенной порнографией, то современные инструменты разработки типа
Nuxt
/Next
из коробки несут в себе очень много минорных и не очень фичей для безопасности ваших пользователей, не отключайте их, если не знаете, что делаетеНу и так же помните, что фреймворки не защищают вас полностью
А
CSP
— не панацея, но очень мощный инструмент “защиты в глубину”.Настройте хотя бы простое правило
(default-src 'self')
, а дальше постепенно добавляйте всё, что вам будет нужно. Это всё равно лучше, чем ничегоСпасибо за прочтение, это важно для меня
@prog_way_blog — чат — #theory #useful #web