首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在第三方代码的脚本标记中添加“nonce”,以破坏“不安全-eval”。

在第三方代码的脚本标记中添加“nonce”,以破坏“不安全-eval”。
EN

Stack Overflow用户
提问于 2021-12-02 14:43:52
回答 1查看 1K关注 0票数 1

我们使用的是netlify-cms,不幸的是它会释放破坏内容安全策略'unsafe-eval'的代码。

我尝试过使用nginx nonce向所有脚本标记添加sub_filter属性。

代码语言:javascript
复制
server {
  listen       80;
  set_secure_random_alphanum $cspNonce 32;
  sub_filter_once off;
  sub_filter_types *;
  sub_filter *CSP_NONCE* $cspNonce;
  sub_filter '<script' '<script nonce=\'$cspNonce\' ';
  sub_filter '<link' '<link nonce="$cspNonce" ';

然后,我还将这个名添加到标题中。

代码语言:javascript
复制
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'nonce-$cspNonce' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' petstore.swagger.io;connect-src 'self' petstore.swagger.io";

我可以看到,脚本标记和标题中的非see都匹配:

代码语言:javascript
复制
<script nonce='72UTQMpuXxfwcevvTydWt8XvOSzKhhjM' >

标题

代码语言:javascript
复制
Content-Security-Policy default-src 'self'; script-src 'self' 'nonce-77Fdz6e1aBiGr5b8qcReeUgkO2NtJnSm'

但我仍然收到错误信息:

EvalError:拒绝将字符串计算为JavaScript,因为在以下内容安全策略指令中,‘不安全-eval’是不允许的脚本来源:" script -src 'self‘nonce-77Fdz6e1aBiGr5b8qReeUgO2NtJnSm’

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-02 20:48:58

通过使用'nonce-value',您只可以摆脱'unsafe-inline',但不能摆脱'unsafe-eval'

Netlify中的'unsafe-eval'需要将JSON编译成JS代码,但是您也可以去掉'unsafe-eval'。只需更新ajv-json-loader使用AJV 7和独立模式,并配置webpack配置使用更新的加载程序。见nitty-gritty 这里.

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

https://stackoverflow.com/questions/70201515

复制
相关文章

相似问题

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