前端能像移动端一样被反编译吗?求大佬解答 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
hhvv23911k
V2EX    程序员

前端能像移动端一样被反编译吗?求大佬解答

  •  
  •   hhvv23911k 2019-07-20 16:03:37 +08:00 6245 次点击
    这是一个创建于 2284 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是做移动端的,最近在学习安全方面的东西,发现不管是 iOS、安卓,都有被反编译的风险,无论我使用 AES、RSA、MD5 怎么翻来覆去的让数据在传输过程中密文化,通过反编译都能够分析出加密流程,自己在网上搜索了一下前端,有人说前端等于裸奔,加密没意义,我自己用 vue 随便写了个页面做测试,当打包发布后,在控制台里我确实能看到加密后的密文传输数据,但是好像没找到可以看加密流程的 js,好像是被 webpack 压缩还是怎么了,我想知道前端有办法像移动端那样被反编译查看出我的加密流程吗?对前端不太懂,希望大佬帮忙解答一下。谢谢。

    24 条回复    2019-07-23 09:41:54 +08:00
    BCy66drFCvk1Ou87
        1
    BCy66drFCvk1Ou87  
       2019-07-20 16:12:26 +08:00 via Android
    前端代码都是暴露的,加密意义不大。js 可以压缩混淆,但是也有很多格式化的工具。请求后端加密接口更安全。
    LLaMA2
        2
    LLaMA2  
       2019-07-20 16:17:20 +08:00
    F12 打开控制台,找到指定的 html 元素,右键 Break On. 就是下个断点啦,一点点的定位到他最后到底调用了哪个 JS,再断点再 DEBUG,你懂我意思把
    hugee
        3
    hugee  
       2019-07-20 16:18:35 +08:00
    甚至不用反编译
    LLaMA2
        4
    LLaMA2  
       2019-07-20 16:26:07 +08:00   3
    加密的意义是在于不让第三方知道二者之间的通信内容,如果坏人直接用的 APP 或者网页攻击,那他根本就不是第三方,而是通信之间的两点的其中一点,这是没法防止的。
    推荐你把你的问题补充一下,说下你具体要防止什么操作,例如别人攻破你的访问鉴权然后爬虫,又或者他伪造金额发送请求买东西之类的。这样大家伙有更好的讨论方向。
    seeker
        5
    seeker  
       2019-07-20 16:29:56 +08:00
    通常不说叫编译。从一个语言到另一个语言称为编译。
    abcbuzhiming
        6
    abcbuzhiming  
       2019-07-20 16:37:49 +08:00
    都一样,核心关键在于你的产品能被对方直接拿到手进行调试。那么被破解只是一个成本问题,服务器为什么相对安全就是因为一般无法被直接调试。一旦能直接调试程序,那程序被破解只是时间和成本的问题
    jydeng
        7
    jydeng  
       2019-07-20 16:48:16 +08:00
    前端代码完全属于你,只是被压缩混淆了。
    duan602728596
        8
    duan602728596  
       2019-07-20 16:50:16 +08:00 via iPhone
    其实 js 代码先算是先编译,然后混淆,通过美化格式,拿到的变量也是 abcdefg 这样,而且我还发现,用 chrome 或者 Firefox 断点调试 webpack 打包的文件的时候,会造成开发者工具栏卡死的情况
    guyeu
        9
    guyeu  
       2019-07-20 17:48:12 +08:00
    拿到加密流程并不代表可以破解你的加密。。。无论如何,只要有编译产物,就可以反编译,加密混淆加壳这些操作只是在增加反编译的成本(加密也只是增加破解的成本)。

    当反编译或者破解的成本大于破解你的系统带来的收益时,就够了。
    youngluo
        10
    youngluo  
       2019-07-20 18:20:57 +08:00 via iPhone
    前端和原生开发不一样,不存在你想的编译问题,最多就是压缩混淆罢了,这种操作都是为了减小体积而已
    kimown
        11
    kimown  
       2019-07-20 19:05:16 +08:00 via Android
    我们解决反调试的方法很简单,就是加体积,开发者工具直接假死
    maplerecall
        12
    maplerecall  
       2019-07-20 19:25:27 +08:00 via Android
    前端加密的意义只是为了防止被轻易窃取数据而已,本质上只是障眼法,只要有心想反编译,难度元比原生 app 小得多,说裸奔并不算特别不对。

    至于增加体积多重混淆之类的,讲道理在一般场景下属于歪门邪道,因为这会同时影响浏览器正常解析的性能,大多数场景下并不值得。而且要反编译并不一定要浏览器,卡死 devtools 之类的也可以通过提高硬件轻易解决。
    broadliyn
        13
    broadliyn  
       2019-07-20 19:41:52 +08:00
    前端无法保证 100%的安全,你能做的,也只有提高破解 /反编译成本。
    简单点,代码混淆。
    复杂点,核心加密模块用 c/c++。
    再复杂点,服务端一起配合加入风控模型。
    但是不管怎么搞,对于服务端来说,数据逻辑的正确性要由服务端校验,以要保证业务的正确性。
    wolfie
        14
    wolfie  
       2019-07-20 20:31:39 +08:00
    代码写恶心点就行。
    加体积 +1。
    2kCS5c0b0ITXE5k2
        15
    2kCS5c0b0ITXE5k2  
       2019-07-20 22:18:16 +08:00
    前端不能保证 100%的安全 只要服务不是跑在你自己的机器上就不能保证用户怎么做 So 服务端再做下校验
    loginbygoogle
        16
    loginbygoogle  
       2019-07-20 22:27:00 +08:00
    前端需要反编译吗
    gzxu
        17
    gzxu  
       2019-07-20 23:13:32 +08:00 via Android   1
    关键部分用 WebAssembly 处理一下,基本上很难反编译
    gzxu
        18
    gzxu  
       2019-07-20 23:14:55 +08:00 via Android   2
    据说 Google 的验证码服务 reCAPTCHA 是用 JS 实现了一个 bytecode 虚拟机,然后在虚拟机里面跑逻辑
    weixiangzhe
        19
    weixiangzhe  
       2019-07-21 00:57:30 +08:00 via iPhone
    变量改成 abc 而已,es6 babel 编译为 es5,想要看是用看懂的,写的恶心也木用。
    fenghuang
        20
    fenghuang  
       2019-07-21 08:44:46 +08:00
    @gzxu #18 reCAPTCHA 是真的狠
    persistz
        21
    persistz  
       2019-07-21 10:06:24 +08:00 via Android
    密码学的安全不在于加密算法的不可见,而在于其安全性和秘钥的不可见。
    awpshoot
        22
    awpshoot  
       2019-07-21 14:54:19 +08:00
    @persistz 楼上正解
    sxlzll
        23
    sxlzll  
       2019-07-21 15:22:37 +08:00
    两种思路,一种是用 JS 实现虚拟机,将源码编译为字节码,跑在虚拟机,但是性能和体积会损失一个数量级
    另一种还是混淆代码,但是加大难度,人力阅读很困难,可能有工具可以反混淆?
    nnnToTnnn
        24
    nnnToTnnn  
       2019-07-23 09:41:54 +08:00
    @kimown 开发工具还能假死? 估计你遇到的也就是前端调试能力不强的人
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5368 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 05:55 PVG 13:55 LAX 22:55 JFK 01:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86