http body 是否可以整体加密 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
MrdotX
V2EX    程序员

http body 是否可以整体加密

  •  
  •   MrdotX 2022-02-14 10:33:04 +08:00 4744 次点击
    这是一个创建于 1340 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大佬们,http 怎么做可以提升安全性? 一:参数加密 二:增加签名 三:公钥校验 防止中间人攻击

    除了这三种,还有靠谱的方式吗?

    httpbody 可以整体加密进行和服务端交互吗?

    fgwmlhdkkkw
        1
    fgwmlhdkkkw  
       2022-02-14 10:34:16 +08:00
    额,你搜一下 https 就可以了……
    zmxnv123
        2
    zmxnv123  
       2022-02-14 10:34:29 +08:00
    你以为 https 是做什么的
    MrdotX
        3
    MrdotX  
    OP
       2022-02-14 10:36:22 +08:00
    加一句哈,加入不采用公钥校验,被中间人攻击了,这个时候我们可以自己对 body 进行加密什么的吗?
    cmdOptionKana
        4
    cmdOptionKana  
       2022-02-14 10:38:40 +08:00
    目前业界共识是 https 足够安全,而且如果自己另外搞一套加密,极大可能相当于重新发明 https 。对于 https 防不住的情况,可能需要网络以外的手段去辅助,不能依靠 http 本身了。
    Goooler
        5
    Goooler  
       2022-02-14 10:39:38 +08:00
    网易云的接口不就是加密的嘛
    Bromine0x23
        6
    Bromine0x23  
       2022-02-14 10:41:34 +08:00
    可以加密啊,为什么不可以?只不过双方需要协商并实现加解密处理罢了。
    janxin
        7
    janxin  
       2022-02-14 10:43:27 +08:00
    可以
    llsquaer
        8
    llsquaer  
       2022-02-14 10:44:44 +08:00
    如果没猜错, 目的是防止中间人...
    我觉得就算用 js 加密了原始数据..关键解密的还是需要 JS 在浏览器运行..
    破解了 JS.加密在牛也就那样了....
    安全是相对的.. 要么自己改一下浏览器.
    Chinsung
        9
    Chinsung  
       2022-02-14 10:45:03 +08:00
    加密和你说的无关。
    http 一般就 https+报文加签
    银行系统的对外通信,一般都是通过包体加签的方式来保障安全的,报文除了入参之外,额外有个签名字段。
    https 本身不出问题的话,其实 https 就够了
    0zero0
        10
    0zero0  
       2022-02-14 10:45:34 +08:00   1
    想要安全就应该采用业界安全的最佳实践,而不是自己突发奇想搞一套,你自己搞的 100%比不上已经经过真实环境验证和实践的
    cheng6563
        11
    cheng6563  
       2022-02-14 11:00:03 +08:00
    你秘钥怎么发给客户端?
    rrfeng
        12
    rrfeng  
       2022-02-14 11:08:18 +08:00
    如果可以安全分发密钥当然没问题。

    比如硬件 ukey
    yuezk
        13
    yuezk  
       2022-02-14 11:12:02 +08:00   2
    如果要对 HTTP 的传输过程进行加密,用 HTTPS 就可以了。

    如果想对接口的数据格式进行加密,防止别人通过工具抓请求,来分析出接口的调用方法,进而伪造请求的话,就要想办法对请求参数和响应数据进行加密。比如楼上提到的网易云接口,同样的我了解到的支付宝的小程序也是可以配置接口加密的,还有一些银行金融应用,等等。

    对数据加密一般用对称加密算法,这就要双方使用相同的 key 进行加解密( HTTPS 也是用的对称加密算法进行数据的加密,非对称加密算法是用来协商对称加密的 key 的),所以怎么保证 key 的安全性是加密的关键。

    实际项目中,所有把 key 硬编码到客户端的做法都是不安全的,不管是前端代码还是 native 的客户端代码,只是破解难度的大小而已。

    比较靠谱的办法就是参考 HTTPS 的 SSL 握手的过程,使用非对称加密算法协商加密的 key ,然后后续的数据交互中使用这个 key 进行加解密。

    好消息前端项目中也是可以使用的,浏览器已经提供了相关的 API 来实现这个过程( https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto ),GitHub 上也有开源的 library 做了上层的封装( https://github.com/travist/jsencrypt
    jingslunt
        14
    jingslunt  
       2022-02-14 11:37:05 +08:00   1
    js 用 wasm
    xuelu520
        15
    xuelu520  
       2022-02-14 14:39:21 +08:00
    https+额外签名字段就足以。
    如果是 web 浏览器的应用,参数加密没啥意义,纯粹自欺欺人。
    MrdotX
        16
    MrdotX  
    OP
       2022-02-14 16:10:38 +08:00
    @yuezk 感谢大佬,同时也感谢所有参与回复的大家,对 https 安全性又多了一些了解!
    yuezk
        17
    yuezk  
       2022-02-14 16:24:45 +08:00
    @MrdotX #16 不是大佬。其实我说的方案也有点问题。就是虽然可以在浏览器中安全的交换加解密的 key ,但是怎么安全的保存这个 key 是最有挑战性的问题。如果是临时生成,这个 key 必然会保存在某个变量里面,但是如果有人使用开发者工具,在加解密的地方加上断点,那你加密返回的数据格式也一览无余,更何况你的前端代码都是直接暴露给别人的。
    FlyingShark
        18
    FlyingShark  
       2022-02-14 16:35:31 +08:00
    可以的,楼主是打算自己实现还是用别人的,实在不清楚的话要不了解下 S/MIME 这一套玩意,看看开源客户端是怎么实现的
    looplj
        19
    looplj  
       2022-02-14 17:27:08 +08:00
    看你想解决什么问题
    1. 防止中间人攻击,数据安全:直接 https
    2. 反抓包:客户端加密可行
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2966 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 13:08 PVG 21:08 LAX 06:08 JFK 09:08
    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