有没有轮子可以加密前端请求后解密数据后传给后端? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Baloneo
V2EX    编程

有没有轮子可以加密前端请求后解密数据后传给后端?

  •  
  •   Baloneo 2023-07-10 16:31:58 +08:00 3017 次点击
    这是一个创建于 889 天前的主题,其中的信息可能已经有所发展或是发生改变。

    加密后的前端数据->?解密数据,映射接口地址->后端明文->?加密数据->前端解密

    要求前端 F12 看到的请求数据是加密的

    第 1 条附言    2023-07-10 17:07:36 +08:00
    需要的是现有的可以拿来用的一个类似 Nginx+接口映射+数据解密转发给后端 的轮子
    27 条回复    2023-10-07 15:49:51 +08:00
    noe132
        1
    noe132  
       2023-07-10 16:37:15 +08:00 via Android
    前端加密最多就是个混淆的效果。最简单的把请求体用 aes 过一遍就行
    Baloneo
        2
    Baloneo  
    OP
       2023-07-10 16:40:27 +08:00
    @noe132 就是这种混淆就可以了 只是需要做接口名称映射+解密成明文给后端服务
    tool2d
        3
    tool2d  
       2023-07-10 16:40:56 +08:00
    前端不用 json 就行了.

    我前端都是 gRPC 之类的二进制数据,F12 要处理还挺麻烦的。
    tool2d
        4
    tool2d  
       2023-07-10 16:43:03 +08:00   1
    99%的前端应该不会花大力气去写代码处理二进制数据。

    托了 wasm 福气,我就是那个 1%的少数人群。
    u20237
        5
    u20237  
       2023-07-10 16:51:57 +08:00
    我懂一点点后端相关的技术,但我不太懂前端,我讲出来了 过了一段时间就被破解了。。。

    加密/混淆方法是有时间限制的,不太可能做一个长时间都不会被破解的方法
    xiangyuecn
        6
    xiangyuecn  
       2023-07-10 17:00:49 +08:00
    RSA 加密,公钥可以放前端。不用去考虑什么二进制不二进制的 还有 性能不性能的。不用考虑 AES 。
    xiangyuecn
        7
    xiangyuecn  
       2023-07-10 17:02:49 +08:00
    漏了,服务器端数据还要加密,那还是 AES 吧
    linauror
        8
    linauror  
       2023-07-10 17:58:10 +08:00
    要想做靠谱点,就使用非对称加密,比如 RSA ,对称加密在前端加密,还是会被搞出来
    mdn
        9
    mdn  
       2023-07-10 18:31:58 +08:00
    AES + RSA

    1. 前端 js 随机生成 AES key
    2. AES 加密 data ,RSA 公钥加密 AES key
    3. {key:..., data: ...} 传给后端( AES key 是 js 随机生成在内存中,前端代码中也没有 RSA 私钥,理论上是 key 保密的,用户自己也无法拿到)
    4. 后端收到数据 RSA 私钥解密 key ,在用 AES key 解密 data
    5. 接口返回数据 RSA 私钥加密 key ,key 加密返回数据,回传给前端(因为公钥是存在前端代码中,所以无法完全保密)
    Jirajine
        10
    Jirajine  
       2023-07-10 18:39:56 +08:00
    @mdn 前段整非对称加密没有意义,因为不需要解密,只需要找到你加密前的数据就行了。
    客户端是客户的客户端。
    KagurazakaNyaa
        11
    KagurazakaNyaa  
       2023-07-10 18:41:28 +08:00
    试试 ECDHE 握手+AES 加密,参考 tls 的四次握手做法就好了
    lianyue
        12
    lianyue  
       2023-07-10 18:44:56 +08:00
    body 数据带 gzip,br 压缩?? Content-Encoding gzip
    Content-Encoding br ???
    me1onsoda
        13
    me1onsoda  
       2023-07-10 18:51:18 +08:00
    @tool2d grpc 前后端对接的时候头不炸吗?
    tool2d
        14
    tool2d  
       2023-07-10 18:53:41 +08:00 via Android
    @me1onsoda 第一次比较炸,调通过一次后,用起来和 json 没啥区别的。都是底层封装。
    walpurgis
        15
    walpurgis  
       2023-07-10 19:00:30 +08:00 via iPhone
    这种都是伪需求,如果都能开 f12 了,无论什么加密方式,直接在前端加密函数上打个断点,所有数据都出来了
    fzls
        16
    fzls  
       2023-07-10 19:06:13 +08:00
    你的数据在客户端使用的时候不是明文的吗-。-难道全程都是加密状态吗
    liantian
        17
    liantian  
       2023-07-10 19:08:17 +08:00 via iPhone
    其实站在安全的角度,这样不好…

    你的加解密对于 waf 那是天书,对于有些模拟操作的渗透工具是儿戏…

    除非后端是输入输出验证全部都自己做的很好…
    KagurazakaNyaa
        18
    KagurazakaNyaa  
       2023-07-10 19:11:43 +08:00
    @walpurgis 可以用 wasm 写,这样要打断点就相当麻烦了
    zsj1029
        19
    zsj1029  
       2023-07-10 19:19:03 +08:00
    https 不用担心中间人
    如果为了防止重放攻击,客户端调试破解请求,才考虑上加密
    js 的普通混淆加密,可被解读,所以除了 wasm 没有真的好办法
    Cosmic4764
        20
    Cosmic4764  
       2023-07-10 19:42:49 +08:00
    还是二进制好一些把,不论什么是传参还是 file 文件,都转成二进制发送。
    walpurgis
        21
    walpurgis  
       2023-07-10 20:35:31 +08:00
    @XiLingHost wasm 内的数据最终还是要从 js 进出的,对于 js 来说 wasm 就是一个黑盒函数而已,我想拿数据并不需要了解它的实现,我可以在它外面打断点直接调用它
    amlee
        22
    amlee  
       2023-07-11 00:18:19 +08:00
    我感觉是伪需求,前端只要能开 f12 ,无论如何都能拿到数据。只要在前端加密前,解密后,打上断点就行
    KagurazakaNyaa
        23
    KagurazakaNyaa  
       2023-07-11 08:14:46 +08:00
    @walpurgis https://www.egui.rs/ 参考这个,你觉得该怎么打断点
    dengshen
        24
    dengshen  
       2023-07-11 10:03:48 +08:00 via iPhone
    看看谷歌的接口吧。数据看起来全是乱码
    mdn
        25
    mdn  
       2023-07-11 10:53:44 +08:00
    @Jirajine 混淆之后的代码,找起来也不容易

    前端做的只能提高逆向成本,代码都是公开的,无法做到完全保密,而且就算是以二进制分发的客户端,也会被逆向
    mdn
        26
    mdn  
       2023-07-11 10:58:08 +08:00
    二进制只是一种编码形式,没有加密,直接解码就能得到内容
    jianyang
        27
    jianyang  
       2023-10-07 15:49:51 +08:00
    我认为前端最大的加密就是混淆
    不管你用什么加密方式你重要写在 JS 中吧、前端逆向最麻烦的点应该在于处理各种混淆
    至于数据加密时间戳什么的、只要你对你的混淆有足够的信心、随便写个位移算法就够了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5236 人在线   最高记录 679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 45ms UTC 01:28 PVG 09:28 LAX 17:28 JFK 20:28
    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