Перейти до вмісту

Парсер звітів про порушення CSP

Перетворіть вставлені звіти про порушення CSP у зручний для читання підсумок: які директиви та джерела блокуються.

Введення
Вихід

Парсер звітів про порушення CSP

Вставте JSON звітів від endpoint'а report-uri вашої CSP-політики або від Reporting API, і цей інструмент перетворить гору звітів про порушення на зрозумілий підсумок: які директиви блокуються та які джерела їх викликають. Він створений для розробників, які впроваджують або посилюють Content-Security-Policy і потребують побачити закономірність серед десятків або сотень звітів замість того, щоб читати кожен окремо.

Групуйте за директивою, щоб побачити, які розділи політики спрацьовують найчастіше, або групуйте за заблокованим джерелом, щоб знайти один скрипт чи таблицю стилів, що викликає більшість шуму. Приховайте звіти від розширень браузера — Chrome і Firefox відправляють тіла csp-report із blocked-uri, що починаються з chrome-extension: або moz-extension:, кожного разу, коли встановлене розширення порушує політику сторінки, що не пов'язано з вашим кодом. Включіть показ уражених сторінок, щоб побачити кожен URL документа, на якому було виявлено порушення. Перейдіть на рекомендовані правила, і інструмент запропонує доповнення до source-list — джерела, 'unsafe-inline', data: — які дозволили б кожній заблокованій директиві пройти, як вихідну точку для розширення політики.

Парсер приймає JSON-масив, один об'єкт звіту або один звіт на рядок і розуміє як класичне тіло POST з {"csp-report": {...}}, так і новий конверт Reporting API з {"type", "body"}, тому необроблені журнали сервера вставляються без переформатування. Звіти, які не парсяться, пропускаються замість відмови пакета, а лічильник показує, скільки звітів надійшло, на скільки груп вони звернулися та скільки звітів від розширень було відфільтровано.

Усе працює у вашому браузері. Вставлені звіти ніколи не завантажуються куди-небудь, що важливо, оскільки вони можуть містити внутрішні URL та структуру сторінки. Скопіюйте підсумок, завантажте його як файл .txt або відправте на введення іншого інструмента для подальшої роботи.

FAQ

Які формати звітів він розуміє?
Обидва формати, які відправляють браузери: класичне тіло POST report-uri, обернуте в "csp-report", і новий конверт Reporting API з полем "body". Він також приймає голий об'єкт звіту без обгортки та JSON-масив або один звіт на рядок.
Яка різниця між групуванням за директивами та за джерелами?
Групування за директивою показує, які розділи політики (script-src, style-src…) спрацьовують найчастіше; групування за заблокованим джерелом показує, який скрипт, таблиця стилей або інший ресурс викликає найбільше порушень по всіх директивах.
Чому деякі звіти приховані за замовчуванням?
Звіти, у яких blocked-uri починаються з chrome-extension: або moz-extension:, надходять від розширення браузера, яке порушує політику сторінки, а не від вашого власного коду. Приховування включено за замовчуванням; вимкніть його, щоб побачити все.
Як розраховуються рекомендовані правила?
Для кожної директиви інструмент збирає кожне окреме заблоковане джерело і скорочує його до виразу source-list CSP — джерело для URL, 'unsafe-inline' для вбудованих скриптів або стилів, 'unsafe-eval' для eval, data: для data-URI — потім виводить їх як вихідну точку, не як політику для вставки без перевірки.
Мої дані звітів завантажуються де-небудь?
Ні. Парсинг відбувається повністю у вашому браузері — вставлені звіти ніколи не покидають ваш пристрій.