我正在使用Angular应用程序作为前端应用程序的Spring Boot应用程序。从背面,我按照上面的说明发送CSP策略
.and()
.headers()
.contentSecurityPolicy(default-src 'self'; frame-src 'self'; script-src 'self' 'unsafe-inline' https://storage.googleapis.com; style-src 'self' 'unsafe-inline'; img-src 'self'; font-src 'self' object-src; require-trusted-types-for 'script')
当我在开发人员上运行该应用程序,并且更改了CSP策略时,在Angular前端的控制台上收到错误是很正常的事情。当我在产品上运行应用程序时,甚至我都使用
更改了CSP策略。default-src'self'
应用程序继续运行,这很奇怪。
所以我的问题是:
PS:我正在使用Angular版本8.2.4
Angular在哪里获得有关代码的CSP策略?
正确的答案是-没有。 Angular代码对Content-Security-Policy标头不做任何事情(也不应该知道)。 CSP标头是browser的哪些资源以及可以使用的地方的说明。
简单示例:
Content-Security-Policy: default-src https:
当浏览器看到此指令时,它将拒绝从HTTP加载任何内容。如果您尝试从HTTP获取脚本,由于没有可用的脚本,角度甚至都不会启动。
在生产模式下,我们可以有CSP政策吗?
是。 CSP是非常有用的工具,可以大大提高应用程序的安全性。因此,如果您关心客户,则应考虑CSP(以及功能策略)。
但是进行设置非常耗时。我花了一两天为自己找到最佳组合。
尝试一下(不要忘了用google.api进行调整):
default-src 'none'; img-src 'self' data:; font-src 'self'; connect-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; object-src 'none'
希望这会有所帮助!
upd
Here,您可以找到有关CSP的更多信息(并且以更好的方式编写)