如何在不使用 HTTPS 的情况下加密 HTTP 数据包传输 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
httpbin - 协议调试工具
httpstatuses - 协议状态码查询
httpie - cURL-like tool for humans
Fiddler
zhangchaoquan
V2EX    HTTP

如何在不使用 HTTPS 的情况下加密 HTTP 数据包传输

  •  
  •   zhangchaoquan 2019-10-17 22:01:06 +08:00 3945 次点击
    这是一个创建于 2252 天前的主题,其中的信息可能已经有所发展或是发生改变。

    要求在不安装额外的客户端的情况下浏览器正常访问

    11 条回复    2019-10-18 14:16:49 +08:00
    greatdancing
        1
    greatdancing  
       2019-10-17 22:05:05 +08:00 via Android   3
    上一次有人问
    V 友给的答案是难道你要重新发明 HTTPS?
    zhangchaoquan
        2
    zhangchaoquan  
    OP
       2019-10-17 22:10:37 +08:00
    neteroster
        3
    neteroster  
       2019-10-17 22:59:53 +08:00 via Android   1
    这不就是重新发明 HTTPS :(
    whileFalse
        4
    whileFalse  
       2019-10-17 23:11:47 +08:00 via iPhone
    上次有人问过。答案是不可能。
    因为不管做什么你都要用 js 去解密。
    然而第一个 js 通过 http 传输,会被中间人替换。

    除非能保证第一个 js 的真实性。
    https 的本质也只是在操作系统预置了保证真实的证书而已。
    yyfearth
        5
    yyfearth  
       2019-10-18 05:49:54 +08:00   1
    能不能要看你的目的是什么 HTTPS 主要有两个功能 一个是加密流量 一个是证书校验

    如果你的目的仅仅是像 HTTPS 一样加密流量 让中间的网络设备没办法“直接没有针对性”的读取和识别 (目的你懂的)
    这样你可以加密 Ajax API Call 的内容 然后用 JS 解密后在使用

    但是如果你的目的是防止篡改(就是 HTTPS 的证书) 那就没办法
    除非你现在客户端上干点什么 比如安装一个浏览器插件 或者在本地开个服务器什么的 做校验(相当于 HTTPS 本地的首信 CA )
    否则就像楼上说的一样 中间人可以“有针对性的修改”你的 JS 读取以及替换你解码用的部分
    那么所有加密流量就可以被读取识别和替换了

    总结一下 关键就是看你的需求 要不要防止有针对性的攻击 在此基础上要不要防止篡改
    yyfearth
        6
    yyfearth  
       2019-10-18 05:55:35 +08:00
    @whileFalse 如果可以用浏览器扩展的话 倒是可以实现
    把解密的密钥和算法以及证书放在扩展里面 这样就没办法篡改
    然后用 http 传输加密数据就比较安全了
    whileFalse
        7
    whileFalse  
       2019-10-18 08:38:35 +08:00
    @yyfearth #6 对。核心就是有个初始可信组件。
    zhangchaoquan
        8
    zhangchaoquan  
    OP
       2019-10-18 09:41:14 +08:00 via Android
    @yyfearth 不是防篡改,就是让中间件无法识别。
    yyfearth
        9
    yyfearth  
       2019-10-18 11:41:02 +08:00
    @zhangchaoquan 那就很简单了 这就和 HTTPS 没啥关系了
    你只要把所有 API 的数据加密 然后浏览器里面解密再用就是

    如果是多页 app HTML 本身也要加密 就直接输出一段加密后的 JS 然后解密 HTML 然后 body 上面 append 就可以了
    反正你也不考虑 JS 被篡改的情况
    Unknowncheats
        10
    Unknowncheats  
       2019-10-18 13:02:32 +08:00 via Android
    又看你的帖子。你方法:你穿越回去把明 https 的人了
    zhangchaoquan
        11
    zhangchaoquan  
    OP
       2019-10-18 14:16:49 +08:00
    @Unknowncheats 感谢,这就去
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     975 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 19:02 PVG 03:02 LAX 11:02 JFK 14:02
    Do have faith in what you're dong.
    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