首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为脚本和样式标记添加一个nonce,以避免“不安全的内联”CSP头字段?

如何为脚本和样式标记添加一个nonce,以避免“不安全的内联”CSP头字段?
EN

Stack Overflow用户
提问于 2021-01-17 16:54:33
回答 1查看 2.3K关注 0票数 0

上下文描述--我正在使用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将是我的首选建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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 )。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65763416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档