如何在不使用不安全的内联JavaScript/CSS代码的情况下使用React?

15 浏览
0 Comments

如何在不使用不安全的内联JavaScript/CSS代码的情况下使用React?

背景

我需要在一个React应用中使用内容安全策略(Content Security Policy)

这里的原因并不重要,主要是因为我正在创建一个Web扩展程序/Browser扩展程序/插件,而这些程序需要使用内容安全策略(content security policy),其中像'unsafe-eval''unsafe-inline'这样的内容是被严格禁止的

在addons.mozilla.org上列出的扩展程序中,使用'unsafe-eval'、'unsafe-inline'、远程脚本、blob或远程源的CSP是不被允许的,因为存在严重的安全问题。

我是根据这个指南使用create-react-app创建的应用程序。

目标是能够在那里使用React的默认CSP,或者至少只需进行一些小的调整。

然而请注意,出于安全原因,(如此严格的)CSP实际上也应该用于"普通"网站,所以这个问题不仅仅是针对插件制的。

问题

但是当我运行npm run build时,生成的index.html中包含了足够多的内联JS代码。

问题

那么我该如何配置/使用React来解决这个问题,并且...

  1. 要么将所有JS/CSS代码放入单独的文件中?
  2. 要么添加CSP允许的随机值或其他内容?
  3. 要么用类似的方式解决这个问题?

编辑

实际上,似乎开发版本(在运行npm start时创建)并没有这样的代码压缩。所以我另外提了一个问题,询问如何从那里获取文件:如何构建非压缩版的React生产版本?

0