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

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

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

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

    要求前端 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 前段整非对称加密没有意义,因为不需要解密,只需要找到你加密前的数据就行了。
    客户端是客户的客户端。
    XiLingHost
        11
    XiLingHost  
       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 那是天书,对于有些模拟操作的渗透工具是儿戏…

    除非后端是输入输出验证全部都自己做的很好…
    XiLingHost
        18
    XiLingHost  
       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 ,无论如何都能拿到数据。只要在前端加密前,解密后,打上断点就行
    XiLingHost
        23
    XiLingHost  
       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   ·   实用小工具   ·   1040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 19:34 · PVG 03:34 · LAX 11:34 · JFK 14:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.