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 · 3446 次点击
    这是一个创建于 1867 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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   ·   实用小工具   ·   3140 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:21 · PVG 21:21 · LAX 05:21 · JFK 08:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.