Baloneo
V2EX  ›  编程

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

  •  
  •   Baloneo · Jul 10, 2023 · 3900 views
    This topic created in 1212 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
    noe132
    Jul 10, 2023 via Android
    1
    前端加密最多就是个混淆的效果。最简单的把请求体用 aes 过一遍就行
    Baloneo
    Baloneo
    OP
    Jul 10, 2023
    2
    @noe132 就是这种混淆就可以了 只是需要做接口名称映射+解密成明文给后端服务
    tool2d
    tool2d
    Jul 10, 2023
    3
    前端不用 json 就行了.

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

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

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

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

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

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