繁体   English   中英

在普通 html 文件中对 script-src 和 style-src 使用 CSP 元标记

[英]Using CSP meta tag for script-src and style-src in normal html file

这是我的 demo.html 文件,其中我使用 CSP 元标记和外部 js 以及 css 文件。

演示.html

 <;DOCTYPE html> <html> <head> <meta http-equiv="Content-Security-Policy" content="default-src 'self'; object-src 'none'; style-src 'self'; script-src 'sha256-Ql3n7tC/2D6wSTlQY8RcOKXhq02zfdaSDviOhpvbYWw='. " > <script src="scripts.js"></script> </head> <body> <p>Hello World</p> <h2>JavaScript Alert</h2> <button>Try it</button> </body> </html>

这是我的js文件

 console.log("Hello");

现在我使用了 CSP 元标记,它接受 sha256 哈希码来传递 js 文件,即 script-src,我已经计算了 sha256 哈希码,即我在 script-src 中编写的 'sha256-Ql3n7tC/2D6wSTlQY8RcOKXhq02zfdaSDviOhpvbYWw=' 但是控制台仍然不接受它。 可能是什么问题?

SHA 是为特定脚本计算的校验和,应与它一起加载。 看看它是如何在知名库中使用的。 例如引导

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

您尝试的是随机数(128 位),看起来像这样:

// Content-Security-Policy: script-src 'dsd14e314df23e2d32r' 

<script nonce="dsd14e314df23e2d32r" src="https://app.domain.com/app.js"></script>

有3个问题:

  1. 右边 hash 为console.log("Hello"); 'sha256-efGKf8oWIWhXl5BsggWDZ+M7Bf5AirxrKOCBujdLAWg='

  2. 您需要添加integrity=属性以通过'hash-value'允许外部脚本:
    <script src="script.js" integrity='sha256-efGKf8oWIWhXl5BsggWDZ+M7Bf5AirxrKOCBujdLAWg='></script>

  3. Firefox 浏览器仍然不支持'hash-value'以允许外部脚本(Safari 也是如此)。 因此使用 Chrome 来观察结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM