Генератор Content Security Policy
Створіть заголовок Content-Security-Policy, тег meta і версію Report-Only із шаблонами, nonce та хешами SHA-256, а також перевірте наявну політику.
Почати з шаблону
Хости Google наведено як приклади з рекомендацій Google щодо CSP для тегу Google. Google час від часу їх змінює: перевірте актуальну документацію й приберіть зайве.
У тезі <meta> браузери ігнорують frame-ancestors, report-uri, report-to і sandbox, а Report-Only не підтримується. Розмістіть тег на початку <head>: він діє лише на вміст, що йде після нього.
Огляд цієї політики
Ці перевірки не виявили слабких місць.
Оцінити наявну політику
Як створити політику
- Виберіть відправну точку в розділі Почати з шаблону: Суворий (nonce + strict-dynamic), Максимально закритий статичний сайт, Типовий вебсайт або Типовий + Google Analytics / Ads. Редактор відкривається із шаблоном типового вебсайту.
- Налаштуйте Директиви. У кожному полі джерела вказують через пробіл; порожнє поле означає, що директиву буде пропущено.
- За допомогою Швидке додавання додайте ключове слово до вибраної Директива:
'self','none','unsafe-inline','strict-dynamic',https:,data:тощо. Кнопка Додати nonce вставляє випадковий 128-бітний nonce. - Щоб дозволити конкретний вбудований скрипт без
'unsafe-inline', вставте його (або HTML навколо нього) в розділ Хеш вбудованого скрипту або стилю й натисніть Обчислити SHA-256 і додати. - Позначте upgrade-insecure-requests (завантажувати ресурси http:// через https://), якщо деякі старі URL досі використовують
http://, і за бажанням вкажіть URL кінцевої точки для звітів (необов’язково). - Скопіюйте HTTP-заголовок, Заголовок Report-Only (перевірка без блокування) або HTML-тег . Огляд цієї політики оновлюється під час введення.
Щоб перевірити політику, яка у вас уже є, вставте її в розділі Оцінити наявну політику й натисніть Оцінити політику; кнопка Завантажити в редактор скопіює її в поля.
Усе працює у вашому браузері: політики, які ви вставляєте, не надсилаються на сервер.
Що робить Content Security Policy
CSP повідомляє браузеру, з яких джерел сторінка може завантажувати скрипти, стилі, зображення, шрифти, фрейми та з’єднання. Її головне завдання – обмежити міжсайтовий скриптинг (XSS): навіть якщо зловмисник упровадить розмітку на вашу сторінку, добра політика не дасть вставленому скрипту виконатися. Вона також визначає, хто може вбудовувати вашу сторінку у фрейм (frame-ancestors), куди можуть надсилатися форми (form-action) і на що може вказувати <base> (base-uri).
Директиви завантаження ресурсів, як-от img-src чи font-src, переходять на default-src, якщо їх не задано. А base-uri, form-action і frame-ancestors на нього не переходять, тому огляд політики вимагає їх явно.
Nonce, хеші та strict-dynamic
Дозвіл за хостами (script-src https://cdn.example.com) здається безпечним, але його часто можна обійти: на великих доменах розміщені кінцеві точки JSONP і старі бібліотеки, які зловмисник може використати. Підхід, який радять команди з безпеки браузерів, – сувора CSP: кожен законний <script> має nonce, що його сервер генерує для кожної відповіді, або дозволений за своїм хешем, а 'strict-dynamic' дає цим довіреним скриптам змогу завантажувати потрібні їм скрипти. У такій схемі https: та 'unsafe-inline' – лише запасні варіанти для дуже старих браузерів; сучасні їх ігнорують.
Nonce працює, лише якщо він змінюється в кожній відповіді й непередбачуваний. Значення, яке вставляє кнопка Додати nonce, – лише приклад: ваш сервер чи фреймворк має генерувати власне. Хеш охоплює точні байти вбудованого коду, тож після переформатування скрипту потрібен новий хеш.
Заголовок, Report-Only і тег meta
Надсилайте політику як HTTP-заголовок відповіді, коли це можливо. Спершу розгорніть її як Content-Security-Policy-Report-Only: браузери повідомлятимуть про порушення (у консоль і на вашу кінцеву точку, якщо ви її вказали), нічого не блокуючи, тож ви зможете виправити сторінки до запровадження обмежень. Налаштування звітів додають report-uri для старіших браузерів і report-to із заголовком Reporting-Endpoints.
Версія <meta http-equiv> зручна для статичного хостингу, але браузери ігнорують у ній frame-ancestors, report-uri, report-to і sandbox, а тега meta для Report-Only не існує. Інструмент вилучає ці директиви з тега й повідомляє про це.
Поширені запитання
Чи є проблемою 'unsafe-inline' у style-src?
Це менш небезпечно, ніж у script-src, і трапляється дуже часто, бо багато бібліотек задають вбудовані стилі. Упроваджений CSS усе ж може спотворити сторінку чи витягти дані, тому огляд позначає це як низький рівень ризику.
Чи повні хости Google Analytics?
Це приклади з рекомендацій Google щодо CSP для тегу Google. Google з часом їх змінює, а регіональні домени можуть знадобитися додатково; перевірте актуальну документацію Google і приберіть зайве. Вбудованому фрагменту gtag.js також потрібен nonce або хеш.
Чому моя політика блокує мої власні вбудовані скрипти?
Щойно задано script-src без 'unsafe-inline', блокується кожен вбудований <script> і атрибут onclick=. Перенесіть код у файл або додайте nonce чи хеш.
Чи замінює CSP екранування користувацьких даних?
Ні. CSP – це друга лінія захисту. Далі екрануйте вихідні дані й перевіряйте вхідні; політика лише зменшує шкоду, коли щось проскочило.
Чи можна мати кілька політик?
Так: якщо сторінка отримує кілька заголовків CSP, ресурс має відповідати всім. В оцінювач вставляйте по одній політиці.
Схожі інструменти
- Генератор редиректів .htaccess Створіть редиректи 301 і 302 для .htaccess або Nginx, примусовий HTTPS і www, перенесення домену й кінцевий слеш із перевіркою циклів і ланцюжків.
- Генератор мета-тегів Безкоштовний генератор мета-тегів: заголовок, мета-опис, канонічний URL, robots і viewport із перевіркою довжини та правильно екранованим HTML.
- Генератор хешів: MD5, SHA-256, SHA-512 Створюйте хеші MD5, SHA-1, SHA-256 та SHA-512 для тексту чи файлів будь-якого розміру й перевіряйте контрольні суми. Усе працює у вашому браузері.
- Генератор robots.txt Створіть коректний файл robots.txt із групами user-agent, правилами Allow і Disallow, картами сайту й crawl-delay та перевіркою типових помилок.