"Content Security Policy" — Алексей Андросов, MoscowJS 18

55
MoscowJS

Transcript of "Content Security Policy" — Алексей Андросов, MoscowJS 18

MoscowJS

Яндекс

 

 

Content-Security-Policy: <политика>

Content-Security-Policy-Report-Only: <политика>

[протокол://]домен[:порт]

 

 

 

 

 

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.

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.

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.

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.

<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.

< 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.

<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.

<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.

img-src 'self' yastatic.net *.yandex.net

 connect-src

 font-src

 frame-src

 img-src

 media-src

 object-src

 script-srс

 style-src

 default-src

 report-uri

 'self'

 'none'

 'unsafe-inline' script-src style-src

 'unsafe-eval' script-src style-src

<script>

alert('Look at me!')

</script>

<a onclick="alert('Look at me!')" >link</a>

01.

02.

03.

04.

<style>

.body {color: #000}

</style>

01.

02.

03.

eval new Function()

setTimeout('var a = 1', 10)

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.

{

"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.

{

"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.

{

"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.

{

"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.

 

  form-actionframe-ancestors plugin-types

  nonce- hash-

  <meta>

 unsafe-eval style-src

 

 

nonce unsafe-inline

 nonce

 

 

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.

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.

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.

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.

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.

 default-src 'none'

 default-src

 

  Content-Security-Policy

Content-Security-Policy-Report-Only

 

 

 X-Content-Security-Policy

  *

 style-src 'unsafe-eval'

report-uri

Content-Security-Policy-Report-Only

location / {

add_header Content-Security-Policy-Report-Only "...."

}

01.

02.

03.

response.setHeader(

"Content-Security-Policy-Report-Only",

"..."

);

01.

02.

03.

04.

Content-Security-Policy-Report-Only

Content-Security-Policy

  솒