我想发布一个具有严格内容安全策略的 Web 应用程序。最后剩下的问题是:style-src 'self';
我在浏览器控制台中收到错误消息,指出根据 CSP 中的 style-src 指令阻止加载资源。该错误引用了从 生成的 main..js 文件中的代码ng build --prod
。
如果我添加'unsafe-inline'
到style-src
CSP 中的指令,一切都会正常,但我不想这样做。
我可以在代码或构建选项中做些什么来使 Web 应用程序与更严格的 CSP 配合使用吗?
我使用的是 Angular 11,刚刚升级到 12,但出现了同样的错误。
谢谢!
当我尝试删除CSPunsafe-inline
源时script-src
,我的 Angular Web 应用程序不再工作。
在 Angular@12+ 中使用 SCSS 时,Angularonload
在index.html
<link rel="stylesheet" href="styles.672c1ac3d6da8cc311a2.css" media="print" onload="this.media='all'">
这会导致头违反 CSPunsafe-inline
源script-src
。
如何解决此问题并消除我的 Angular Web 应用程序上的此“安全漏洞”?
styles content-security-policy angular unsafe-inline script-src
我正在学习 javascript 并尝试运行一些内联 javascript 代码。我正在使用电子快速入门指南,并且在尝试添加一些内联 JavaScript 之前代码运行良好。这是我的index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<title>Hello World!</title>
</head>
<body>
<script>
console.log("Hello World"); // <-- this is the line causing problems
</script>
<h1>Hello World!</h1>
We are using Node.js <span id="node-version"></span>,
Chromium <span id="chrome-version"></span>,
and Electron <span id="electron-version"></span>.
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当我尝试加载添加了console.log("Hello World")的网页时,出现错误:
拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self'”。启用内联执行需要“unsafe-inline”关键字、哈希值(“sha256-m/hGOmrcpR2CLf5ZFUFQux1kBtD2znXvM4R5xVpagmI=”)或随机数(“nonce-...”)。
错误消息告诉我可以添加“不安全内联关键字”。我到底该怎么做呢?
我尝试过搜索示例,例如SO 上的示例或content-security-policy.com 上的指南。但所有示例都只是告诉我将“不安全内联”添加到内容安全策略中,而没有实际显示这是如何完成的。