V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
acbot
V2EX  ›  前端开发

前端应用后期维护问题!

  •  
  •   acbot · 2023-02-13 09:56:54 +08:00 · 2221 次点击
    这是一个创建于 410 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个在线的运行项目由于漏洞等原因想升级一下基础框架版本,由于手上只有打包发布后的文件,这种文件代码的 JS 可读性很差,加之自己对前端也不是很熟悉,一些问题请教一下各位前端大佬:

    1. 如何知道该 app.js 使用了的什么基础框架,或者说能反编译这个文件吗
    2. 如果该框架版本有漏洞,或者是该框架应用的第三方 JS 库有漏洞,如何在只有 app.js 的情况下能简单的升级版本(比如:像 HTML 代码种修改一下版本)
    36 条回复    2023-02-13 19:57:49 +08:00
    mclxly
        1
    mclxly  
       2023-02-13 10:19:09 +08:00
    1. 得看 app.js 内容
    2. 没源代码很难升级的
    estk
        2
    estk  
       2023-02-13 10:50:26 +08:00 via iPhone
    让我想起之前一个小公司老板说的,招个前端,做好了就实习期内就裁员。。
    acbot
        3
    acbot  
    OP
       2023-02-13 11:04:28 +08:00
    @estk 到第二跳就要歪了吗? 该应用比较老了现有的功能本身能满足需求仅仅是应用的一些基础框架版本有点漏洞,之前软件厂家已不复存在所以不可能再找对方维护,只能自己想办法了。
    ChefIsAwesome
        4
    ChefIsAwesome  
       2023-02-13 11:10:32 +08:00
    不可能
    fzls
        5
    fzls  
       2023-02-13 11:33:33 +08:00
    如果是以前那种直接写 js ,发布时跟写的时候长一样的,可以修改
    但看你的描述,应该是用打包工具进行各种预处理后的文件,没有打包前的文件,建议还是别想了
    zenxds
        6
    zenxds  
       2023-02-13 11:44:51 +08:00
    没有源码只能找到对应的代码段替换,看看代码里有没有完全删除注释,一般三方库的注释可能会保留的,如果注释都没有,只能格式化之后自己去匹配了
    yuuko
        7
    yuuko  
       2023-02-13 11:50:18 +08:00
    如果是使用框架打包后的 js ,升级希望为 0
    arnosolo
        8
    arnosolo  
       2023-02-13 11:50:49 +08:00
    没源码没法改.
    akira
        9
    akira  
       2023-02-13 12:53:59 +08:00
    可以改。 但是成本很高。比你重新写一个还贵
    GreatAuk
        10
    GreatAuk  
       2023-02-13 13:01:57 +08:00
    不太可能吧,现在前端代码都是压缩过的
    8520ccc
        11
    8520ccc  
       2023-02-13 13:03:48 +08:00
    替换一下字符串什么的应该没问题 但是你想改逻辑什么的估计不大可能,或者成本过高了
    Pastsong
        12
    Pastsong  
       2023-02-13 13:08:35 +08:00
    压缩过的不仅是 app 代码,还有框架代码,升级框架把 function 都编译成什么样了不可能都分析出来
    Pionxzh
        13
    Pionxzh  
       2023-02-13 13:09:43 +08:00 via Android
    理论上可以,但成本肯定不是你可以接受的,别想了
    westoy
        14
    westoy  
       2023-02-13 13:09:50 +08:00
    你后端写的稳的话, 前端能有什么漏洞, 无非就是一些页面 bug.....

    前端能跑就不要动它,npm install 一下, 别说改了, 可能都跑不起来了
    kidult
        15
    kidult  
       2023-02-13 13:20:53 +08:00
    跑个题,就算有源码的话,上了年头的前端项目要升级一下都是伤筋动骨,别说没源码了
    tkHello
        16
    tkHello  
       2023-02-13 13:37:01 +08:00
    好弄得 实习生可以搞定
    loading
        17
    loading  
       2023-02-13 13:43:00 +08:00 via Android   ❤️ 2
    你这说的是竞争对手的代码一样。
    建议重写。
    lueluev
        18
    lueluev  
       2023-02-13 13:54:16 +08:00
    @loading 给你点了
    otakustay
        19
    otakustay  
       2023-02-13 14:19:14 +08:00
    只要知道框架用 Chrome 的 Wappalyzer 看一下就行,但升级框架啥的,我觉得还是别想了,升不动的
    ZoeeoZ
        20
    ZoeeoZ  
       2023-02-13 15:49:20 +08:00
    别做梦了
    Tdy95
        21
    Tdy95  
       2023-02-13 15:53:42 +08:00 via Android
    曾经修改过几个编译后的 SDK 文件,靠着断点,执行栈信息,修改了功能。但是也仅限于一些局部功能点逻辑了。大改的成本是无法接受的。
    wunonglin
        22
    wunonglin  
       2023-02-13 15:55:39 +08:00 via iPhone
    梦里啥都有
    acbot
        23
    acbot  
    OP
       2023-02-13 16:17:31 +08:00
    @fzls 我的认知也就是停留在那个时候, 所以才有这个问题! :-)
    acbot
        24
    acbot  
    OP
       2023-02-13 16:18:40 +08:00
    @zenxds 之前我的思路也就是这样,并且已经找到相应的关键字了。只是我觉得可能不一定是所以问问
    acbot
        25
    acbot  
    OP
       2023-02-13 16:20:48 +08:00
    @westoy 需求提上来之后我就是这样回复的 但是难免有完美主义的人要试试, 没办法!
    acbot
        26
    acbot  
    OP
       2023-02-13 16:21:56 +08:00
    @loading 不是, 背景在#3 我已经详细说了!
    chjieza
        27
    chjieza  
       2023-02-13 16:35:41 +08:00
    成本很高。看漏洞是什么类型如果是可以全局监听并处理的话,写一个外链 JS ,在 index.html 插入进去,作为一个保底的方案。但是直接复原源码或者修改源码就别想了。有这功夫能重新写一个了。
    acbot
        28
    acbot  
    OP
       2023-02-13 17:00:00 +08:00
    @chjieza 这个方法值得参考!
    IceBay
        29
    IceBay  
       2023-02-13 17:18:55 +08:00
    找找看有没有 map 文件?早期部分网站都有保留,有的话可以直接看到源代码

    至于框架,用 Wappalyzer 浏览器扩展试试
    TomVista
        30
    TomVista  
       2023-02-13 17:28:23 +08:00
    看看项目下 有没有 sourcemap
    leaveeel
        31
    leaveeel  
       2023-02-13 17:43:27 +08:00
    1. 看资源加载的是 el 还是 ant ,el 大概率是 vue ,ant 大概率是 react
    2. 如果是 cdn 引用的可以改 html 里的版本号升级,不保内容证兼容性
    v135ex
        32
    v135ex  
       2023-02-13 17:45:53 +08:00
    为什么没有源码呢,难道是你在网上扒的别人的吗
    Al0rid4l
        33
    Al0rid4l  
       2023-02-13 19:07:50 +08:00
    不是不能改, 但非常恶心需要很大毅力以及很多时间
    折中的可能是, 如果运气够好, 需要升级的部分模块化比较好被依赖比较少无副作用且没有什么 breaking change 的话, 找到几个被依赖的位置把它替换掉, 其他部分就可以不用管了
    acbot
        34
    acbot  
    OP
       2023-02-13 19:39:56 +08:00
    @IceBay
    @TomVista 好的 我试试!
    acbot
        35
    acbot  
    OP
       2023-02-13 19:40:46 +08:00
    @v135ex 不是, 背景在#3 我已经详细说了!
    IvanLi127
        36
    IvanLi127  
       2023-02-13 19:57:49 +08:00 via Android
    没源码就不要想了。
    人家公司倒闭导致没人维护,你们公司也有责任,而且说实话,你们也不一定有资格去改人家的代码,所以重写吧。。。。
    升级基础框架版本,升上去了其他代码可能也需要调整的。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2905 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:58 · PVG 21:58 · LAX 06:58 · JFK 09:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.