使用了 HTTPS 的网络请求, 其中 JSON 数据有必要做额外的加密吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
wjploop
V2EX    程序员

使用了 HTTPS 的网络请求, 其中 JSON 数据有必要做额外的加密吗

  •  
  •   wjploop
    wjploop 2020-06-13 18:54:34 +08:00 5065 次点击
    这是一个创建于 1950 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假设客户端 app 的代码是安全的,没有被反编译查看。

    另外,我使用 finder/charles 代理工具,并在手机添加证书,可以查看到 https 请求内容(仅在 android 低版本有效)。

    想知道大家对于安全这块怎么处理呢?

    24 条回复    2020-06-15 13:05:05 +08:00
    xnode
        1
    xnode  
       2020-06-13 18:59:21 +08:00
    https 在公网上 可以大致保证数据不被篡改,但是数据仍然可能被窃听,但是除非重要数据 否则不需要加密
    qq292382270
        2
    qq292382270  
       2020-06-13 19:16:28 +08:00
    能加密最好加密. 数据安全靠的是加密,https 并没有带来多大安全感.
    hakono
        3
    hakono  
       2020-06-13 19:19:48 +08:00 via Android
    https 防的是传输过程中的攻击
    json 加密防的是来自本地用户的攻击(做外挂,作弊

    根据你自己的需求来选就行了
    dearmymy
        4
    dearmymy  
       2020-06-13 20:15:15 +08:00   1
    除非你 https 是双向校验,不然一个中间人攻击就可以了。
    如果假设 app 是安全的话,双向校验的确就够了。
    但事实上客户端扔出去就被各种搞。安全这块,看你自家软件业务,体量了。
    ZRS
        5
    ZRS  
       2020-06-13 20:18:00 +08:00   1
    @xnode TLS 同时保证数据的完整性和保密性,只要信任链是正常的就没问题。攻击者只能获取你访问的 IP 和域名以及传输的密文。
    yuzo555
        6
    yuzo555  
       2020-06-13 20:18:08 +08:00
    客户端能拿到的数据,攻击者就能拿到。

    就看你的数据值不值得攻击者花费时间精力金钱去拿了。
    rb6221
        7
    rb6221  
       2020-06-13 20:23:06 +08:00 via iPhone
    没有绝对的安全,要不要上只是根据自己的实际情况选择。
    说白了,我回答不用,你就决定不用了?那出问题要不要我背锅啊
    learningman
        8
    learningman  
       2020-06-13 22:21:44 +08:00
    SSL Pinning 试试?
    CRVV
        9
    CRVV  
       2020-06-13 22:54:03 +08:00 via Android   2
    > 客户端 app 的代码是安全的,没有被反编译查看

    如果这个假设成立,只要在客户端代码里判断一下服务器的证书是不是你的证书,问题就解决了。

    密码学的一个常识是不要自己写代码做加密,不要做额外的加密,没有用。
    QUIOA
        10
    QUIOA  
       2020-06-13 23:37:55 +08:00 via Android
    dullwit
        11
    dullwit  
       2020-06-13 23:40:27 +08:00
    重要业务数据还是加密吧,防止 MitM 中间人,不过这个客户端貌似可以检测出来
    testcaoy7
        12
    testcaoy7  
       2020-06-14 08:17:57 +08:00
    我觉得没必要。只要你用的正规证书,而且 TLS 配置的没问题,那么数据完整性和保密性都是已经在 TLS 层提供了的
    testcaoy7
        13
    testcaoy7  
       2020-06-14 08:20:03 +08:00   1
    如果你做额外的加密,那么解密密钥的安全分发又会成为问题,最后等于要自己实现一套完整的密码学协议,然而造密码学轮子是最不推荐的,稍有不慎就会有漏洞
    varint
        14
    varint  
       2020-06-14 10:54:32 +08:00 via iPhone
    @CRVV
    @testcaoy7 自己造轮子只能被爆菊+1,本人逆向菜鸡,根据教程爆了一个 app 的菊,这个 app 还是加固了的,json 字段用 3des 加密的,md5_sign 加了盐的,通通都被抓了现形。
    testcaoy7
        15
    testcaoy7  
       2020-06-14 10:58:23 +08:00
    @varint 以前看到哪个号称有国家密码局认证的加密 U 盘,在参数里面赫然写着加密方式是 DES,吓死我
    shuangya
        16
    shuangya  
       2020-06-14 11:12:05 +08:00 via Android
    一般不需要,除非有很重要的保密信息。不过有这种信息的一般也不会是谁都能看到的,本身的传播源就是可控的。
    至于抓包,那是没办法的事,用户本地抓包、反编译,你也不好管控。
    防范中间人攻击,那只要用户本身系统没有问题,你们服务器也没有问题,那就不存在问题。
    如果真的有很特别的需求,那你自己再加一层简单的加密也行,但不要报太大希望,这个只能是增加破解成本罢了。
    总的来说,如果没有特别需要,没必要。
    wanguorui123
        17
    wanguorui123  
       2020-06-14 11:24:33 +08:00
    只要 HTTPS 的证书合法,对无效证书进行过滤,应该没什么问题。其次不管如何加密没有绝对的安全,只能提高破解成本。
    Warder
        18
    Warder  
       2020-06-14 12:54:18 +08:00 via Android
    最近我也在想有没有那种基于 json schema 压缩的方法,之前看 google 的 http 请求结果上的字段都是混淆过的 。
    howellz
        19
    howellz  
       2020-06-14 15:38:59 +08:00
    客户端在人家手上,只要想揉拧,都是软柿子。
    一句话,这种在消息上加密的普通做法(不包括其他对程序进行比较复杂的加固):不重要的业务没啥必要;重要的业务没啥鸟用。因此不建议用这种方案。
    kimi0
        20
    kimi0  
       2020-06-14 21:30:52 +08:00
    看了前几楼的回答,觉得有必要回复一下这个帖子来澄清一些基础概念。
    然后再往后看几楼,发现已经有朋友解释过了,就不再赘述了,2333
    wizardoz
        21
    wizardoz  
       2020-06-15 09:35:25 +08:00
    @dearmymy 不太懂,中间人攻击如何通过服务器证书验证?
    dearmymy
        22
    dearmymy  
       2020-06-15 11:20:35 +08:00
    @wizardoz 中间人攻击,用的是中间人自己的证书,服务器那边校验下过来的证书是不是自己下发的就好了。这个前提是前端程序没有被逆向破解,毕竟他可以逆向前端程序,拿到客户端证书。
    myCupOfTea
        23
    myCupOfTea  
       2020-06-15 12:58:01 +08:00
    敏感数据我觉得还是要加密的,这就跟门锁一样,复杂的锁也能打开但是更需要时间,提高下防盗成本
    firefox12
        24
    firefox12  
       2020-06-15 13:05:05 +08:00
    @dearmymy 不是双向检验就能中间人攻击,那 99%的网站都可以被攻击了.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2952 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 13:46 PVG 21:46 LAX 06:46 JFK 09:46
    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