![Page 1: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/1.jpg)
Яндекс
![Page 2: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/2.jpg)
Я
Content Security Policy:защити своих пользователей
Андросов Алексей Старший разработчик интерфейсовЯ.Субботник, Киев, 22.11.2014
ндекс Почта
![Page 3: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/3.jpg)
Я расскажу про…
1. Какие проблемы безопасности есть
2. Что такое CSP и как он работает
3. CSP1, CSP2 и их отличия
4. Полезные советы
5. Как внедрить CSP на свой сайт
3
![Page 4: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/4.jpg)
Безопасность персональных данных
1. Имидж и престиж компании
2. Счастье пользователей
4
![Page 5: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/5.jpg)
XSS?
![Page 6: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/6.jpg)
XSS
Сross Site Sсriрting - исполнение вредноносного кода в браузере пользователя.
6
![Page 7: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/7.jpg)
XSS
7
![Page 8: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/8.jpg)
Защита от XSS
Экранирование ввода. Ничего кроме простого текста, вставитьнельзя :(
HttpOnly куки. Авторизацию не украсть, но можно все другиеданные.
Ограничение ввода через bbcode , markdown и т.п. Но имеетограниченное применение
В IE и Chrome есть встроенная защита ( X-XSS-Protection: 1 )
8
![Page 9: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/9.jpg)
![Page 10: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/10.jpg)
Санитайзер!
Санитайзер – умный парсер, который оставляет в сообщении только безопасные
элементы.
Но остается проблема, что санитайзер можно “пробить”
10
![Page 11: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/11.jpg)
Но это мелочи…
![Page 12: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/12.jpg)
Браузер – окружение,которое вы не
контроллируете!
![Page 13: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/13.jpg)
![Page 14: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/14.jpg)
![Page 15: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/15.jpg)
![Page 16: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/16.jpg)
Не все плагины одинаково полезны
Могут бесконтрольно менять окружение
Исполнять на вашем сайте любой код
Воровать любые данные
bit.ly/yasb-kiev-csp-plugins
16
![Page 17: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/17.jpg)
CSP!
![Page 18: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/18.jpg)
Content Security Policy
Это не панацея и не 100%-защита.
Это еще один мощный уровень защиты.
Есть хитрые способы его обойти bit.ly/yasb-kiev-csp-hack
18
![Page 19: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/19.jpg)
История
Придумала Mozilla. Первая реализация появилась в Firefox 4 (2011 год).
В 2012 году стал стандартом W3C w3.org/TR/CSP
Уже есть CSP2 в статусе Last Call w3.org/TR/CSP2
19
![Page 20: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/20.jpg)
CSP
С помощью HTTP-заголовка определяет белый список источников , откуда браузер
может загружать ресурсы.
Content-Security-Policy: <политика>
Content-Security-Policy-Report-Only: <политика>
Источник: [протокол://]домен[:порт]
20
![Page 21: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/21.jpg)
Можно использовать сейчас!
Поддержка в 80% браузеров!
Android 4.4+
Chrome 25+
Firefox 23+
IE/IE Mobile 10+ заголовок X-Content-Security-Policy, почтистандартный
iOS/Safari 7+
21
![Page 22: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/22.jpg)
Маленький заголовок – большая защита!
Content-Security-Policy :
default-src 'none';
frame-src awaps.yandex.ru;
img-src 'self' yastatic.net *.yandex.net;
script-src 'unsafe-eval' 'unsafe-inline' yastatic.net;
style-src 'unsafe-inline' yastatic.net;
report-uri /csp-report?from=mail
01.
02.
03.
04.
05.
06.
07.
22
![Page 23: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/23.jpg)
Маленький заголовок – большая защита!
Content-Security-Policy:
default-src 'none';
frame-src awaps.yandex.ru;
img-src 'self' yastatic.net *.yandex.net;
script-src 'unsafe-eval' 'unsafe-inline' yastatic.net;
style-src 'unsafe-inline' yastatic.net;
report-uri /csp-report?from=mail
01.
02.
03.
04.
05.
06.
07.
23
![Page 24: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/24.jpg)
Маленький заголовок – большая защита!
Content-Security-Policy:
default-src 'none' ;
frame-src awaps.yandex.ru;
img-src 'self' yastatic.net *.yandex.net;
script-src 'unsafe-eval' 'unsafe-inline' yastatic.net;
style-src 'unsafe-inline' yastatic.net;
report-uri /csp-report?from=mail
01.
02.
03.
04.
05.
06.
07.
24
![Page 25: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/25.jpg)
Маленький заголовок – большая защита!
Content-Security-Policy:
default-src 'none';
frame-src awaps.yandex.ru;
img-src 'self' yastatic.net *.yandex.net;
script-src 'unsafe-eval' 'unsafe-inline' yastatic.net;
style-src 'unsafe-inline' yastatic.net;
report-uri /csp-report?from=mail
01.
02.
03.
04.
05.
06.
07.
25
![Page 26: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/26.jpg)
Как это работает
<script src="//evil.com/give-me-your-money.js"></script>
Content-Security-Policy:
default-src 'none';
img-src 'self' yastatic.net *.yandex.net;
script-src 'unsafe-eval' 'unsafe-inline' yastatic.net;
style-src 'unsafe-inline' yastatic.net;
report-uri /csp-report?from=mail
01.
02.
03.
04.
05.
06.
26
![Page 27: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/27.jpg)
Как это работает
< script src="//evil.com/give-me-your-money.js"></script>
Content-Security-Policy:
default-src 'none';
img-src 'self' yastatic.net *.yandex.net;
script-src 'unsafe-eval' 'unsafe-inline' yastatic.net;
style-src 'unsafe-inline' yastatic.net;
report-uri /csp-report?from=mail
01.
02.
03.
04.
05.
06.
27
![Page 28: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/28.jpg)
Как это работает
<script src="// evil.com /give-me-your-money.js"></script>
Content-Security-Policy:
default-src 'none';
img-src 'self' yastatic.net *.yandex.net;
script-src 'unsafe-eval' 'unsafe-inline' yastatic.net ;
style-src 'unsafe-inline' yastatic.net;
report-uri /csp-report?from=mail
01.
02.
03.
04.
05.
06.
28
![Page 29: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/29.jpg)
Как это работает
<script src="// evil.com /give-me-your-money.js"></script>
Content-Security-Policy:
default-src 'none';
img-src 'self' yastatic.net *.yandex.net;
script-src 'unsafe-eval' 'unsafe-inline' yastatic.net ;
style-src 'unsafe-inline' yastatic.net;
report-uri /csp-report?from=mail
Совпадения нет – безусловная блокировка!
01.
02.
03.
04.
05.
06.
29
![Page 30: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/30.jpg)
Политика
Политика состоит из директив.
Директива определяет источники для каждого типа содержимого.
img-src 'self' yastatic.net *.yandex.net
30
![Page 31: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/31.jpg)
Директивы
connect-src для XMLHttpRequest, WebSocket, EventSource
font-src
frame-src
img-src
media-src для <audio>, <video>
object-src , например Flash
script-srс
style-src31
![Page 32: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/32.jpg)
Директивы
default-src – список источников по умолчанию
report-uri – URL, куда который будут отправляться JSON-отчеты о нарушениях.
32
![Page 33: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/33.jpg)
Ключевые слова
В директивах можно использовать как хосты, так и ключевые слова
'self' – текущий хост
'none' – ничего нельзя
'unsafe-inline' для script-src и style-src .
'unsafe-eval' для script-src .
33
![Page 34: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/34.jpg)
‘unsafe-inline’ для script-src
<script>
alert('Look at me!')
</script>
<a onclick="alert('Look at me!')" >link</a>
Старайтесь его избегать. Напрямую разрешает XSS!
CSP1 – разрешает все или ничего, CSP2 – можно разрешать отдельные скрипты
01.
02.
03.
04.
34
![Page 35: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/35.jpg)
‘unsafe-inline’ для style-src
<style>
.body {color: #000}
</style>
Придется разрешить, если вы используете фреймворки с feature detection. Например,
jQuery или Modernizr.
01.
02.
03.
35
![Page 36: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/36.jpg)
‘unsafe-eval’ для script-src
Разрешает кодогенерацию: eval , new Function() ,
setTimeout('var a = 1', 10)
Придется разрешить, если вы используете фреймворки с кодогенерацией. Например,
Lo-Dash.
36
![Page 37: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/37.jpg)
Пример
Content-Security-Policy:
default-src 'none';
frame-src awaps.yandex.ru;
img-src 'self' yastatic.net *.yandex.net;
script-src 'unsafe-eval' 'unsafe-inline' yastatic.net;
style-src 'unsafe-inline' yastatic.net;
report-uri /csp-report?from=mail
01.
02.
03.
04.
05.
06.
07.
37
![Page 38: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/38.jpg)
Отчет о нарушениях
{
"csp-report": {
"document-uri": "https://mail.yandex.ru/neo2/",
"referrer": "http://www.yandex.ru/",
"violated-directive": "script-src ...",
"original-policy": "...вся политика...",
"blocked-uri": "...заблокированный ресурс..."
}
}
01.
02.
03.
04.
05.
06.
07.
08.
09. 38
![Page 39: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/39.jpg)
Отчет о нарушениях
{
"csp-report": {
"document-uri": "https://mail.yandex.ru/neo2/",
"referrer": "http://www.yandex.ru/",
"violated-directive": "script-src ...",
"original-policy": "...вся политика...",
"blocked-uri": "...заблокированный ресурс..."
}
}
01.
02.
03.
04.
05.
06.
07.
08.
09. 39
![Page 40: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/40.jpg)
Отчет о нарушениях
{
"csp-report": {
"document-uri": "https://mail.yandex.ru/neo2/",
"referrer": "http://www.yandex.ru/",
"violated-directive": "script-src ...",
"original-policy": "...вся политика...",
"blocked-uri": "...заблокированный ресурс..."
}
}
01.
02.
03.
04.
05.
06.
07.
08.
09. 40
![Page 41: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/41.jpg)
Отчет о нарушениях
{
"csp-report": {
"document-uri": "https://mail.yandex.ru/neo2/",
"referrer": "http://www.yandex.ru/",
"violated-directive": "script-src ...",
"original-policy": "...вся политика...",
"blocked-uri": "...заблокированный ресурс..."
}
}
01.
02.
03.
04.
05.
06.
07.
08.
09. 41
![Page 42: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/42.jpg)
CSP2
![Page 43: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/43.jpg)
CSP2
Развитие стандарта с обратной совместимостью.
Последние Chrome (36+) и Firefox (31+) частично его поддерживают.
Использует тот же заголовок, поэтому CSP2 уже с нами ツ
43
![Page 44: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/44.jpg)
Что нового в CSP2?
Можно указывать не только домены, но и пути
Больше директив. Например, form-action ,frame-ancestors , plugin-types
Разрешение инлайн-скриптов через nonce- или hash-
Политику можно указывать в <meta>
unsafe-eval для style-src
JS-событие о нарушении
Более детальный отчет о нарушении44
![Page 45: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/45.jpg)
script-src и nonсe
nonce – решение неудобства unsafe-inline .
nonce — случайная последовательность символов
`nonce` выключает `unsafe-inline`
выполняются только те скрипты, которые подписаны правильныматрибутом nonce.
45
![Page 46: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/46.jpg)
script-src и nonсe
Content-Security-Policy:
default-src 'self';
script-src 'unsafe-inline' 'nonce-ccc5b86a' yastatic.net
<!-- Заблокирован , отсутствует атрибут nonce -->
<script>
alert("Мені не подобається Київ")
</script>
01.
02.
03.
04.
05.
06.
07.
08.
46
![Page 47: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/47.jpg)
script-src и nonсe
Content-Security-Policy:
default-src 'self';
script-src 'nonce-ccc5b86a' yastatic.net
<!-- Заблокирован , атрибут nonce не совпадает -->
<script nonce="42" >
alert("Мені не подобається Київ")
</script>
01.
02.
03.
04.
05.
06.
07.
08.
47
![Page 48: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/48.jpg)
script-src и nonсe
Content-Security-Policy:
default-src 'self';
script-src 'nonce-ccc5b86a' yastatic.net
<!-- Выполнен , атрибут nonce валиден -->
<script nonce="ccc5b86a" >
alert("Мені подобається Київ")
</script>
01.
02.
03.
04.
05.
06.
07.
08.
48
![Page 49: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/49.jpg)
script-src и nonсe
Content-Security-Policy:
default-src 'self';
script-src 'nonce-ccc5b86a' yastatic.net
<!-- Выполнен , src валиден -->
<script src=" //yastatic.net/page.js "></script>
01.
02.
03.
04.
05.
06.
49
![Page 50: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/50.jpg)
script-src и nonсe
Content-Security-Policy:
default-src 'self';
script-src 'nonce-ccc5b86a' yastatic.net
<!-- Выполнен , nonce валиден -->
<script nonce="ccc5b86a" src=" //yandex.net/page.js "></script>
01.
02.
03.
04.
05.
06.
50
![Page 51: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/51.jpg)
script-src и hash
Content-Security-Policy:
default-src 'self';
script-src 'self' yastatic.net 'sha256-YWIzOWNiNzJjNDR='
<!-- Выполнен , если
'sha256-base64 encoded hash' от содержимого совпадает
-->
<script> alert("Мені подобається Київ") </script>
01.
02.
03.
04.
05.
06.
07.
08.
51
![Page 52: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/52.jpg)
style-src и unsafe-eval
Контроллирует CSS-генерацию:
node.style.top = '10px'
node.style.cssText = 'top: 10px'
style.insertRule()
52
![Page 53: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/53.jpg)
Полезные советы
![Page 54: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/54.jpg)
Полезные советы
default-src 'none' . По умолчанию ничего нельзя!
Укажите все директивы, иначе в отчете они придут какdefault-src
CSP не распространяется на дочерние фреймы
Можно одновременно указывать Content-Security-Policy иContent-Security-Policy-Report-Only
Комментируйте политику!
54
![Page 55: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/55.jpg)
Полезные советы
Используйте только стандартный заголовок
X-Content-Security-Policy отдавайте только для IE, потомучто у Firefox 22- синтаксис отличается от стандартного
Cтарайтесь не использовать * , а указывайте точный списокдоменов
Скорее всего вам придется указатьstyle-src 'unsafe-eval' , даже если вам не нужен CSP2
55
![Page 56: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/56.jpg)
Запускаем
![Page 57: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/57.jpg)
Запускаем
Для прототипирования можно использовать расширение CSP Tester для chromium-
based браузеров.
bit.ly/yasb-kiev-csp-tester
57
![Page 58: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/58.jpg)
Запускаем
1. Пишем политку
2. Не забываем указать report-uri
3. Добавляем к ответу “index.html” заголовок
Content-Security-Policy-Report-Only
4. Собираем отчеты
5. См. пункт 158
![Page 59: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/59.jpg)
Пример для nginx
location / {
add_header Content-Security-Policy-Report-Only "...."
}
01.
02.
03.
59
![Page 60: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/60.jpg)
Пример для node.js
response.setHeader(
"Content-Security-Policy-Report-Only",
"..."
);
01.
02.
03.
04.
60
![Page 61: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/61.jpg)
Запуск
Тестируем политику в реальном окружении, потом заменяем
Content-Security-Policy-Report-Only на
Content-Security-Policy .
Обязательно организуйте постоянный мониторинг!
61
![Page 62: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/62.jpg)
Анализ логов
В реальном времени мы смотрим только на количество нарушений.
Периодически собираем статистику с помощью CSP Reporter
bit.ly/yasb-kiev-csp-reporter
62
![Page 63: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/63.jpg)
Неожиданные бонусы
![Page 64: CSP: как защитить своих пользователей — Алексей Андросов](https://reader034.vdocuments.net/reader034/viewer/2022042521/55937ce81a28abd1588b46a5/html5/thumbnails/64.jpg)
Бонусы
Читайте отчеты о нарушения, там много интересного ツНа HTTPS-сайтах CSP помогает найти mixed content
CSP – распределенная система тестирования безопасности. Резкоувеличось количество отчетов? Поздравляю, у вас проблемы!
64