【问题标题】:How to enable webpack Content Security Policy in React?如何在 React 中启用 webpack 内容安全策略?
【发布时间】:2019-02-06 05:22:54
【问题描述】:

Webpack 具有将nonce 添加到它加载的所有脚本的功能。

要激活功能集,需要在入口脚本中包含一个 __webpack_nonce__ 变量。

create react app 生成的 react 应用中的入口文件默认为index.js。所以我需要做的就是添加入口文件

 // ...
__webpack_nonce__ = 'c29tZSBjb29sIHN0cmluZyB3aWxsIHBvcCB1cCAxMjM=';
// ...

最后一件事是启用 webpack CSP。

请注意,默认情况下不启用 CSP。需要与文档一起发送相应的标头 Content-Security-Policy 或元标记,以指示浏览器启用 CSP。以下是包含 CDN 白名单 URL 的 CSP 标头的示例:Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com;

但是,我得到了错误

'__webpack_nonce__' is not defined

我试图声明 nonce。还是不行。

webpack_nonce 是在入口文件中指定的,而不是在配置中。

那么,我做错了什么?也许文档缺少有关该主题的一些关键信息?如何在 webpack 中为 React 应用启用 CSP 功能?

【问题讨论】:

  • 那么你已经在你的 html 文件中添加了 CSP 元标记?
  • 检查这是真正的入口点,而不是使用它的其他入口点(在 cra 中)的某个文件。
  • 在 Twitter 上的 webpack 中将其标记为 Sean Larkin,希望他能看看。
  • @leepowell nope
  • 我也在尝试关注webpack.js.org/guides/csp 的文章,它似乎缺少详细的实现细节,“进一步阅读”部分内容冗长,stackoverflow 链接显示了不同的 nonce 实现方法,我尝试过但不起作用。 The source list for Content Security Policy directive 'script-src' contains an invalid source: ''******''. It will be ignored. 并且它也拒绝加载 webpack 输出的 bundle.js (它应该包含随机数,因为它包含在入口文件中:__webpack_nonce__ = '******')

标签: reactjs webpack create-react-app content-security-policy


【解决方案1】:

如果您使用的是 create-react-app,则可能是 ESLint 报告了错误。

尝试为线路禁用它:

__webpack_nonce__ = 'c29tZSBjb29sIHN0cmluZyB3aWxsIHBvcCB1cCAxMjM='; // eslint-disable-line no-undef

【讨论】:

    猜你喜欢
    • 2021-09-01
    • 2022-01-26
    • 2021-10-12
    • 2017-09-07
    • 2016-06-22
    • 2022-07-20
    • 2020-01-25
    • 2015-04-27
    • 1970-01-01
    相关资源
    最近更新 更多