无法应用内容安全策略而不包括脚本和样式的不安全内联。NuxtJS在构建时生成内联样式和脚本。
由于我的应用程序是静态,因此NuxtJS默认配置无法工作,因为它需要服务器端呈现才能实现这一点。我还没有找到一种方法来向构建过程中注入一个nonce来解决这个问题。
我目前的设置是将Security报头应用于域,使用的是不接触应用程序的cloudflare工作人员。因此,我正在寻找如何在应用程序和边缘工作者https://scotthelme.co.uk/csp-nonces-the-easy-way-with-cloudflare-workers/之间集成这一点的选项。
在浏览nuxtjs、github时,遇到了几种使用中间件的注入方法,我无法处理这些问题。
是否有人找到了用于生成不包括不安全内联的策略的解决方案,无论是在应用程序中还是在外部?
发布于 2020-10-24 12:36:05
NuxtJS在构建时生成内联样式和脚本。..。我还没有找到一种方法来向构建过程中注入一个时间来解决这个问题。
从CSP的角度来看
.setAttribute()
函数的JS调用--是的,它也要求样式为“不安全-内联”--src),其中只有1可以使用“nonce value”。因此,在抽象的形式中,您的任务是不可解决的,您需要具体的说明。
假设您只使用<script>...</script>
和<style>...</style>
结构(可能允许使用“nonce value”),那么您有三个选项:
在使用Document.createElement(“风格”)的情况下,选择1最好只是设置style.nonce = 'generated_base64_value'
属性。因为在这种情况下计算‘散列值’并不容易。
在使用<script>...</script>
和<style>...</style>
的情况下,计算散列或将其全部移动到外部文件(opts 2、3)要容易得多。在这种情况下,使用cloudflare工作人员会不必要地使代码复杂化。
一些中间件产生了许多独立的<style>.red {color:red;}</style>
、<style>.r_padd {padding-right:20px;}</style>
等。对于opts 1、2来说,这是一个令人头疼的问题,但通过opts 3很容易解决。
如果您使用第三方脚本,例如Google标记管理器,就无法摆脱“不安全-内联”脚本,在某些情况下也无法摆脱“不安全-eval”脚本。
PS:没有通用的方法。而且不知道什么是在你的汽车引擎盖下,这是很难给建议如何加力它。
https://stackoverflow.com/questions/64510933
复制相似问题