XSS (Cross-Site Scripting) – одна из самых распространенных и опасных веб-уязвимостей. Она позволяет злоумышленникам внедрять вредоносный код (обычно JavaScript) на страницы доверенных сайтов, что может привести к краже данных пользователей, перенаправлению на фишинговые сайты и другим негативным последствиям. Content Security Policy (CSP) – это мощный механизм безопасности, который помогает значительно снизить риск XSS-атак.
Что такое Content Security Policy?
CSP – это HTTP-заголовок, который позволяет веб-разработчикам контролировать ресурсы, которые браузер может загружать для данной страницы. По сути, CSP создает «белый список» источников, которым браузер разрешено доверять. Если ресурс не соответствует политике, браузер его блокирует. Это значительно усложняет злоумышленникам внедрение и выполнение вредоносного кода.
Как работает CSP?
CSP работает путем указания директив в HTTP-заголовке Content-Security-Policy. Эти директивы определяют, какие типы ресурсов (скрипты, стили, изображения, шрифты и т.д.) и из каких источников разрешено загружать. Например:
Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com; img-src 'self' data:; font-src 'self';
Разберем эту политику:
- default-src ‘self’: Разрешает загружать ресурсы только с того же домена, что и сама страница.
 - script-src ‘self’ https://example.com: Разрешает загружать скрипты с того же домена и с домена 
https://example.com. - style-src ‘self’ https://example.com: Разрешает загружать стили с того же домена и с домена 
https://example.com. - img-src ‘self’ data:: Разрешает загружать изображения с того же домена и встроенные изображения (data URI).
 - font-src ‘self’: Разрешает загружать шрифты с того же домена.
 
Основные директивы CSP
Существует множество директив CSP, вот некоторые из наиболее важных:
- default-src: Устанавливает политику по умолчанию для всех типов ресурсов.
 - script-src: Определяет разрешенные источники для JavaScript.
 - style-src: Определяет разрешенные источники для CSS.
 - img-src: Определяет разрешенные источники для изображений.
 - font-src: Определяет разрешенные источники для шрифтов.
 - connect-src: Определяет разрешенные источники для запросов AJAX и WebSocket.
 - media-src: Определяет разрешенные источники для аудио и видео.
 - object-src: Определяет разрешенные источники для плагинов (например, Flash).
 - frame-src: Определяет разрешенные источники для iframe.
 
Реализация CSP
CSP можно реализовать двумя способами:
- HTTP-заголовок: Рекомендуемый способ. Настраивается на стороне сервера.
 
Инструменты для тестирования CSP
Существует множество инструментов, которые помогут вам протестировать вашу CSP-политику:
- CSP Evaluator: https://csp-evaluator.withgoogle.com/
 - SecurityHeaders.com: https://securityheaders.com/
 
Content Security Policy – это важный инструмент для защиты вашего веб-приложения от XSS-атак. Правильно настроенная CSP может значительно повысить безопасность вашего сайта и защитить ваших пользователей. Начните с базовой политики и постепенно ужесточайте ее, тестируя на каждом этапе, чтобы избежать поломки функциональности сайта.