V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
qazwsxkevin
V2EX  ›  程序员

https 的 url 带有账号、密码、动作等等参数内容,在本地看起来, 1 次请求就完成的过程,中间的流量观察者,能不能直接看到这些内容?

  •  
  •   qazwsxkevin · 162 天前 · 3646 次点击
    这是一个创建于 162 天前的主题,其中的信息可能已经有所发展或是发生改变。
    买了个服务,提供方用 url 的 get or post 方式完成服务提供,类似这样: https://service.website.net/ser?xx&yy&zz 的,
    https 的概念不熟悉,请问:

    1 、https 是 client 在和 web 服务器做完域名 ca 核证、建立 TLS 通道后,才开始握手处理域名后面的内容吗?
    2 、这个跟本地客户端的发起者是什么,会过程不同吗?
    比如说发起者是 curl 、firefox 浏览器,c++的 sdk http:api 接口?
    遵从 https 规范一致性?

    3 、那么,bash shell 代码里直接组装成完整 https 的 url 去请求,1 次请求,1 次返回完成,中间人能看到的可能性有多大?
    27 条回复    2024-07-14 20:56:06 +08:00
    yikuo
        1
    yikuo  
       162 天前 via Android
    HTTPS 是加密的,如果没有遭遇中间人攻击,最多只能看到访问的域名,看不到 URL ,也与客户端无关。
    jim9606
        2
    jim9606  
       162 天前 via Android
    TLS 会将所有 HTTP 消息加密,只有域名 service.website.net 会暴露,这完全是因为 TLS 主流应用需要通过 SNI 扩展明文告知域名以供服务器选择证书。
    如果客户端有一些状态缓存,在只有被动监听攻击的情况下可以连域名都不暴露。
    forvvvv123
        3
    forvvvv123  
       162 天前   ❤️ 3
    看不到;

    如果考虑保密性,从实践来说,放到 Body 里面( POST 方式)比 URL 里面( GET 方式)会更好,因为除了 tls 保障通信过程中的安全,URL 相比请求 Body 在各个节点更容易被记录和存储(比如默认的 nginx 日志),从而更容易因为其他因素被泄露;
    blackeeper
        4
    blackeeper  
       162 天前
    问题 1 ,是的,建立 TLS 加密通道后,才开始交换内容信息
    问题 2 ,不会,过程是一样的
    问题 3 ,中间人看到的可能性为 0 。除非你的证书秘钥泄露给别人,且这个别人是 [中间人] ,能管控你网络的人
    lzy250
        5
    lzy250  
       162 天前 via iPhone
    DPI 也能解析到。
    0o0O0o0O0o
        6
    0o0O0o0O0o  
       162 天前
    1. 是
    2. 可能会有区别,但不会破坏 1 ,例如 RFC 8470
    3. 前提一定是客户端是安全的,服务器是安全的,证书是安全的。那么考虑的只是会不会被例如 POODLE attack 影响,那只要工具实现是安全的,服务端正确配置了,就不需要担心。
    yuzo555
        7
    yuzo555  
       162 天前
    我有一个疑问,Win 下一个程序获取管理员权限后,添加的根证书,可以用来劫持监听浏览器的 HTTPS 流量吗?
    我看那些网游加速器随随便便就会添加一个根证书到系统里面。
    fkdtz
        8
    fkdtz  
       162 天前
    @yuzo555 仅仅添加了根证书是不会解析到 HTTPS 数据的,想要解析出 HTTPS 数据还需要有劫持网路流量这一步,让所有请求都走代理,这就形成了典型的中间人。
    0o0O0o0O0o
        9
    0o0O0o0O0o  
       162 天前
    @yuzo555 #7 “获取管理员权限”后,你可以认为它能做任何坏事。此外这个问题其实讨论过, 本来就是为了 MITM 。

    /t/879778
    /t/1036217
    fpk5
        10
    fpk5  
       162 天前
    @yuzo555 #7 添加根证书+加速器代理流量=对于加速器都是明文的
    GeekGao
        11
    GeekGao  
       162 天前
    虽然理论上存在一些高级的攻击方法可能会威胁到 HTTPS 的安全性,但对于一般的流量观察者来说,由于 HTTPS 的加密特性,他们无法直接看到 URL 中的账号、密码或其他敏感信息,只能看到域名。

    如果遇到中间人攻击,那么都透明了,无所谓敏感信息放在 URL or Body 。
    Trim21
        12
    Trim21  
       162 天前 via Android
    在证书安全,加密算法没漏洞的情况下,中间人看不到 url 域名以外的东西。
    elboble
        13
    elboble  
       161 天前
    get 不好看,就用 post 呗,至少 url 上看不到。

    不过参数在 https 下都看不到的,

    还是那句话,也不是不能用
    dode
        14
    dode  
       161 天前
    提供 get 兼容纯粹是为了不懂的人设计的简化吧,你可以用 post
    misaka19000
        15
    misaka19000  
       161 天前
    HTTPS 除了域名之外什么都看不到
    salmon5
        16
    salmon5  
       161 天前
    @forvvvv123 #3 还有一种风险,而且这个风险更大:
    搜索引擎比如 bing 等,会把自家的浏览器( edge )用户的访问记录,给自家的爬虫爬,然后全球的人都可能搜索到。
    salmon5
        17
    salmon5  
       161 天前
    然后
    https://example.com/login?user_name=abc&password=xyz
    就会出现在 bing 的搜索结果中,这块 google 就处理的很专业,收录的时候会把 args 去掉。
    salmon5
        18
    salmon5  
       161 天前
    @salmon5 #16 这里说一嘴,edge 浏览器存在很大的隐私安全问题。
    feiyan35488
        19
    feiyan35488  
       161 天前
    @yuzo555 有根证书后,还需要配合中间人劫持流量才行,类似使用 charles 抓包, 一般只会存在个别场合里或 gfw 封控的域名下
    julyclyde
        20
    julyclyde  
       159 天前
    @forvvvv123 如果你真的读过 HTTP 标准,就不会觉得这种情况 GET 和 POST 有什么区别
    HTTP 请求的时候,用户名密码并不在 URL 里而是在 header 里
    forvvvv123
        21
    forvvvv123  
       159 天前
    @julyclyde 所以不推荐放 get 里面啊
    julyclyde
        22
    julyclyde  
       159 天前
    @forvvvv123 啊?你的思路是怎样的?
    都说了不在 URL 里了!
    为什么就“所以”了?
    forvvvv123
        23
    forvvvv123  
       159 天前
    @julyclyde 无非就是放到 urlpath 、get 参数、post 参数、header 这几个地方嘛,放 header 、post 参数会比放 urlpath 、get 参数好,因为 url 和 get 参数更容易被各个地方记录。 不是这个意思吗?
    julyclyde
        24
    julyclyde  
       159 天前
    @forvvvv123 对啊,但现实是没在你认为容易记录的位置上啊
    forvvvv123
        25
    forvvvv123  
       159 天前
    @julyclyde 你的意思是现实中的实现其实都是在 header 和 post 上?
    julyclyde
        26
    julyclyde  
       159 天前
    @forvvvv123 我上面都说过了啊“如果你真的读过标准”
    forvvvv123
        27
    forvvvv123  
       159 天前
    @julyclyde 哦哦哦哦哦,是这个意思
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2101 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:50 · PVG 08:50 · LAX 16:50 · JFK 19:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.