V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fengpan567
V2EX  ›  程序员

求前端大佬指导一下!

  •  
  •   fengpan567 · 2020-10-21 19:14:57 +08:00 · 1908 次点击
    这是一个创建于 1254 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    需要找到报错的地方,然后改掉代码。
    dany813
        8
    dany813  
       2020-10-22 09:53:31 +08:00
    vendor.js 是所有依赖库打包的 js ,应该是某个库处理问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3176 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 10:54 · PVG 18:54 · LAX 03:54 · JFK 06:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.