Baloneo
V2EX  ›  编程

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

  •  
  •   Baloneo · Jul 10, 2023 · 3323 views
    This topic created in 1054 days ago, the information mentioned may be changed or developed.

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

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

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

    我前端都是 gRPC 之类的二进制数据,F12 要处理还挺麻烦的。
    tool2d
        4
    tool2d  
       Jul 10, 2023   ❤️ 1
    99%的前端应该不会花大力气去写代码处理二进制数据。

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

    加密/混淆方法是有时间限制的,不太可能做一个长时间都不会被破解的方法
    xiangyuecn
        6
    xiangyuecn  
       Jul 10, 2023
    RSA 加密,公钥可以放前端。不用去考虑什么二进制不二进制的 还有 性能不性能的。不用考虑 AES 。
    xiangyuecn
        7
    xiangyuecn  
       Jul 10, 2023
    😂漏了,服务器端数据还要加密,那还是 AES 吧
    linauror
        8
    linauror  
       Jul 10, 2023
    要想做靠谱点,就使用非对称加密,比如 RSA ,对称加密在前端加密,还是会被搞出来
    mdn
        9
    mdn  
       Jul 10, 2023
    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  
       Jul 10, 2023
    @mdn 前段整非对称加密没有意义,因为不需要解密,只需要找到你加密前的数据就行了。
    客户端是客户的客户端。
    KagurazakaNyaa
        11
    KagurazakaNyaa  
       Jul 10, 2023
    试试 ECDHE 握手+AES 加密,参考 tls 的四次握手做法就好了
    lianyue
        12
    lianyue  
       Jul 10, 2023
    body 数据带 gzip,br 压缩?? Content-Encoding gzip
    Content-Encoding br ???
    me1onsoda
        13
    me1onsoda  
       Jul 10, 2023
    @tool2d grpc 前后端对接的时候头不炸吗?
    tool2d
        14
    tool2d  
       Jul 10, 2023 via Android
    @me1onsoda 第一次比较炸,调通过一次后,用起来和 json 没啥区别的。都是底层封装。
    walpurgis
        15
    walpurgis  
       Jul 10, 2023 via iPhone
    这种都是伪需求,如果都能开 f12 了,无论什么加密方式,直接在前端加密函数上打个断点,所有数据都出来了
    fzls
        16
    fzls  
       Jul 10, 2023
    你的数据在客户端使用的时候不是明文的吗-。-难道全程都是加密状态吗
    liantian
        17
    liantian  
       Jul 10, 2023 via iPhone
    其实站在安全的角度,这样不好…

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

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

    前端做的只能提高逆向成本,代码都是公开的,无法做到完全保密,而且就算是以二进制分发的客户端,也会被逆向
    mdn
        26
    mdn  
       Jul 11, 2023
    二进制只是一种编码形式,没有加密,直接解码就能得到内容
    jianyang
        27
    jianyang  
       Oct 7, 2023
    我认为前端最大的加密就是混淆
    不管你用什么加密方式你重要写在 JS 中吧、前端逆向最麻烦的点应该在于处理各种混淆
    至于数据加密时间戳什么的、只要你对你的混淆有足够的信心、随便写个位移算法就够了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   868 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 87ms · UTC 20:19 · PVG 04:19 · LAX 13:19 · JFK 16:19
    ♥ Do have faith in what you're doing.