上下文描述--我正在使用AWS扩容来部署我的静态网页。
自定义安全头是通过配置文件customHttp.yml (https://docs.aws.amazon.com/amplify/latest/userguide/custom-headers.htm)在部署中应用的。
我将customHttp.yml文件包含在.nuxtignore文件中,以防止只更改自定义标题时触发webpack文件的重新生成。但是,这只在本地工作,而不是在部署过程中的服务器端。
问题描述AWS扩容在部署过程中不使用.nuxtignore文件。因此,webpack文件每次都会重新生成,从而产生一个不同的散列值,我需要在CSP头字段中包含脚本-src和style-src。但是,由于触发重新构建以应用对customHttp.yml的修改,会为jetpack文件生成一个新的file值,因此我们无法预先知道正确的值。
关于解决问题的建议(如果是静态的)将解决我的用例。例如,通过在nuxt.config.js文件中定义当前值。通过在webpack重建中包含nonce,我将能够引用CSP头字段中的静态当前值,因为值不会更改。
例如- nuxt.config.js:
生成:{script:'nonce- 457bb2Bb06E44Ab5a99a9996Ed1a34b26F‘,样式-nonce:’nonce-在这里添加A值‘}
我意识到,当服务器每次发送CSP-策略时,规范都会要求一个唯一的当前值,但是对于这个用例,静态nonce将是我的首选建议。
发布于 2021-01-18 05:51:52
使用“静态”与使用'unsafe-inline'
是一样的。您只能愚弄一些在线CSP测试工具,使他们不认识到您的'nonce-value'
是静态的。
经典的XSS是可以插入和执行像<script>alert('XSS')</script>
这样的代码的时候。如果没有'unsafe-inline'
,这种内联脚本将被阻塞。
但是使用“静态当前”攻击者只是注入了<script nonce="static_nonce">alert('XSS')</script>
,所以您有与允许'unsafe-inline'
完全相同的漏洞。
而与动态的现在攻击者可以看到现在,但不能预测下一个。因此,他不知道哪个值现在使用,因为他的XSS只会在页面重新加载后才被注入。
请参阅启用CSP后,vis amplify.yml将导致错误#612,也许您可以在那里找到一些线索(链接到Lambda@Edge函数和底部的CloudFront )。
https://stackoverflow.com/questions/65763416
复制相似问题