HTTPS URL 传参安全吗?

欢迎访问陈同学博客原文
原文:How Secure Are Query Strings Over HTTPS? by HttpWatch
译者:陈同学
译者注:有人说他抓包能抓到HTTPS中的URL参数,我就纳闷了,翻译一篇小短文学习一下。

请求参数能通过URL安全传递吗? 当客户看到 HttpWatch 中的 HTTPS请求后经常会问这个问题,同时客户也想知道还有谁能看到这些数据。

举个例子,假设我们使用以下URL在请求查询参数中传递密码。

https://www.httpwatch.com/?password=mypassword

由于 HttpWatch 集成在浏览器中,因此可以看到SSL加密前的数据。

HTTPS URL 传参安全吗?

如果你使用像 Network Monitor 这样的抓包工具,会发现只能看到加密后的数据,根本看不到请求的 URLs、Headers 或 Body

HTTPS URL 传参安全吗?

只要满足以下几点,HTTPS肯定是安全的。

  • 不要忽略任何 SSL 证书警告
  • 保护好用来初始化SSL连接的 private key

因此,从网络角度来说,URL参数肯定是安全的。但是,一些其他地方可能泄漏URL上的数据:

  • Web server 日志中会存储URLs:URL一般会存储在日志中,这意味着任何敏感数据(如密码)都会被明文存储,下面是一行日志:

    2009-02-20 10:18:27 W3SVC4326 WWW 208.101.31.210 GET /Default.htm password=mypassword 443 ...
    

    在任何地方明文存储密码都不是件好事情

  • 浏览器的历史记录会存储URLs:下面是IE浏览器的历史记录,可以看到URL参数。

HTTPS URL 传参安全吗?

  • URLs可以通过HTTP Referrer 头传递:当页面中使用了js、images等资源时,请求头的Referrer属性会一起传递。有时,URL上的查询参数可能会传递到第三方站点并被存储起来。在 HttpWatch 中可以看到,Google Analytics 请求中,通过 Referer 头传递的URL中带有密码。

HTTPS URL 传参安全吗?

小结:HTTPS传递查询参数肯定是没有问题的,但是不要用来传递可能引发安全问题的敏感信息奥。


欢迎关注陈同学的公众号,一起学习,一起成长

HTTPS URL 传参安全吗?