V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
fengpan567
V2EX  ›  程序员

求前端大佬指导一下!

  •  
  •   fengpan567 · Oct 21, 2020 · 2567 views
    This topic created in 2021 days ago, the information mentioned may be changed or developed.

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

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

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

    需要找到报错的地方,然后改掉代码。
    dany813
        8
    dany813  
       Oct 22, 2020
    vendor.js 是所有依赖库打包的 js ,应该是某个库处理问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   754 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 21:10 · PVG 05:10 · LAX 14:10 · JFK 17:10
    ♥ Do have faith in what you're doing.