V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
httpbin - 协议调试工具
httpstatuses - 协议状态码查询
httpie - cURL-like tool for humans
Fiddler
zhangchaoquan
V2EX  ›  HTTP

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

  •  
  •   zhangchaoquan · Oct 17, 2019 · 4196 views
    This topic created in 2396 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    如果是多页 app HTML 本身也要加密 就直接输出一段加密后的 JS 然后解密 HTML 然后 body 上面 append 就可以了
    反正你也不考虑 JS 被篡改的情况
    Unknowncheats
        10
    Unknowncheats  
       Oct 18, 2019 via Android
    又看見你的帖子。給你個方法:你穿越回去把發明 https 的人殺了
    zhangchaoquan
        11
    zhangchaoquan  
    OP
       Oct 18, 2019
    @Unknowncheats 感谢,这就去
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1031 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 72ms · UTC 19:00 · PVG 03:00 · LAX 12:00 · JFK 15:00
    ♥ Do have faith in what you're doing.