【问题标题】:Sending sensitive data as a query string parameter将敏感数据作为查询字符串参数发送
【发布时间】:2010-10-01 09:36:18
【问题描述】:

我们正在审查系统的设计。并且需要验证我们认为可能存在安全问题的地方。

在这个系统中,一些敏感信息在查询字符串中发送。问题是:

  • 是否可以在请求通过 Internet 时读取查询字符串参数,即使请求是通过 https 发送的?
  • 能否从客户端机器上的浏览历史中读取查询字符串参数?

【问题讨论】:

  • 也许还有一个问题:通常整个查询字符串(包括参数)都被写入日志文件;也就是说,它也可能未经任何加密就存储在网络服务器上。

标签: ssl https query-string http-get


【解决方案1】:

当您使用 HTTPS 时,会在发送任何 HTTP 流量之前建立 SSL/TLS 连接,因此整个请求(包括 URL 及其参数)将被加密并且无法读取。第三方唯一可能看到的是服务器证书(因此他们可以看到主机名,仅此而已)。

浏览器的历史不受 HTTPS 的任何保护,尽管一些浏览器可能有一些“安全浏览”选项,可能会自动删除一些 HTTPS URL。这最终取决于浏览器及其配置。

【讨论】:

    【解决方案2】:

    如果在获取请求中传递敏感细节,这肯定是一个安全问题。 敏感数据不仅会缓存在用户的浏览器中,还会缓存在任何代理中以及网络服务器日志中

    【讨论】:

    • 它们不会在任何代理中,除非在反向代理中(在实际目标服务器之后)。
    【解决方案3】:

    第一个是的。不确定第二个 - 取决于浏览器,我猜 - 但我怀疑,是的,这里也是。

    【讨论】:

    • HTTP 请求(包括方法、路径、查询、标头、实体等)一旦建立,就会在 SSL/TLS 连接之上发送。它们不可见。
    猜你喜欢
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多