求前端大佬指导一下!

2020-10-21 19:14:57 +08:00
 fengpan567

header 里的 Content Security Policy 去掉'unsafe-inline'和'unsafe-eval' 两个参数后导致 js 报错,那个 js 叫 vendor.js 看起来是压缩后自动生成的,因为里面有一段“new Function(.......)”的代码现在被 blocked 不让运行,导致 js 执行异常了。 因为安全问题,这两个参数必须去掉。我自己是搞后端的,有没有什么办法在打包是不生成这种不符合安全标准的语句? ball ball 大佬了。

2120 次点击
所在节点    程序员
8 条回复
ruoxie
2020-10-21 19:53:18 +08:00
ruoxie
2020-10-21 19:54:22 +08:00
尬,回错贴了
begoingtodo
2020-10-21 22:42:55 +08:00
不知道你的项目是干什么的,unsafe-eval 去掉,连 setTimeout 都不能用了;new Function 应该是构建工具生成的,这个貌似不好处理吧
begoingtodo
2020-10-21 22:50:05 +08:00
好像记错了,setTimeout 好像是字符的内容不能使用
hronro
2020-10-22 01:51:27 +08:00
通常情况下,vendor.js 里面都是你项目的使用的库( dependency )。你需要做的,就是找到你的依赖里面是哪个依赖使用了 new Function,然后使用其他安全的库代替即可。当时这个说起来简单,做起来可不简单,如果是你项目直接的依赖还稍微好一点,如果是某个依赖的依赖,可能意味着你需要替换一大堆东西。
Austaras
2020-10-22 04:21:00 +08:00
ls 说的是对的, 最坏情况的处理方式是自己 fork 一份, 然后用 yarn resolution 覆盖掉原来的
eudore
2020-10-22 08:42:46 +08:00
web csp

unsafe-inline 是的 htm 里面写了 js 内联这样的,要把 js 只有内联移到独立的文件里面,unsafe-eval 是说你使用了 eval 函数,类似反射这样的操作,可以执行任意字符串代码,不可控不安全。

需要找到报错的地方,然后改掉代码。
dany813
2020-10-22 09:53:31 +08:00
vendor.js 是所有依赖库打包的 js ,应该是某个库处理问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/717217

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX