header 里的 Content Security Policy 去掉'unsafe-inline'和'unsafe-eval' 两个参数后导致 js 报错,那个 js 叫 vendor.js 看起来是压缩后自动生成的,因为里面有一段“new Function(.......)”的代码现在被 blocked 不让运行,导致 js 执行异常了。 因为安全问题,这两个参数必须去掉。我自己是搞后端的,有没有什么办法在打包是不生成这种不符合安全标准的语句? ball ball 大佬了。
1
ruoxie 2020-10-21 19:53:18 +08:00
[url=https://imgchr.com/i/BPuujJ][img]https://s1.ax1x.com/2020/10/21/BPuujJ.png[/img][/url]
|
2
ruoxie 2020-10-21 19:54:22 +08:00
尬,回错贴了
|
3
begoingtodo 2020-10-21 22:42:55 +08:00
不知道你的项目是干什么的,unsafe-eval 去掉,连 setTimeout 都不能用了;new Function 应该是构建工具生成的,这个貌似不好处理吧
|
4
begoingtodo 2020-10-21 22:50:05 +08:00
好像记错了,setTimeout 好像是字符的内容不能使用
|
5
hronro 2020-10-22 01:51:27 +08:00 via iPhone
通常情况下,vendor.js 里面都是你项目的使用的库( dependency )。你需要做的,就是找到你的依赖里面是哪个依赖使用了 new Function,然后使用其他安全的库代替即可。当时这个说起来简单,做起来可不简单,如果是你项目直接的依赖还稍微好一点,如果是某个依赖的依赖,可能意味着你需要替换一大堆东西。
|
6
Austaras 2020-10-22 04:21:00 +08:00
ls 说的是对的, 最坏情况的处理方式是自己 fork 一份, 然后用 yarn resolution 覆盖掉原来的
|
7
eudore 2020-10-22 08:42:46 +08:00
web csp
unsafe-inline 是的 htm 里面写了 js 内联这样的,要把 js 只有内联移到独立的文件里面,unsafe-eval 是说你使用了 eval 函数,类似反射这样的操作,可以执行任意字符串代码,不可控不安全。 需要找到报错的地方,然后改掉代码。 |
8
dany813 2020-10-22 09:53:31 +08:00
vendor.js 是所有依赖库打包的 js ,应该是某个库处理问题
|