陈同学
微服务
Accelerator
About
# HTTPS URL 传参安全吗? > 原文:[How Secure Are Query Strings Over HTTPS?](https://blog.httpwatch.com/2009/02/20/how-secure-are-query-strings-over-https/) by HttpWatch > 译者:[陈同学](https://chenyongjun.vip/) > 译者注:有人说他抓包能抓到HTTPS中的URL参数,我就纳闷了,翻译一篇小短文学习一下。 **请求参数能通过URL安全传递吗?** 当客户看到 HttpWatch 中的 HTTPS请求后经常会问这个问题,同时客户也想知道还有谁能看到这些数据。 举个例子,假设我们使用以下URL在请求查询参数中传递密码。 ```http https://www.httpwatch.com/?password=mypassword ``` 由于 HttpWatch 集成在浏览器中,因此可以看到SSL加密前的数据。 ![](https://blog-1256695615.cos.ap-shanghai.myqcloud.com/2018/11/06/94cfe1decef044288fe7d357dfb9720e.png) 如果你使用像 [Network Monitor](http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=f4db40af-1e08-4a21-a26b-ec2f4dc4190d&displaylang=en) 这样的抓包工具,会发现只能看到加密后的数据,根本看不到请求的 **URLs、Headers 或 Body**。 ![](https://blog-1256695615.cos.ap-shanghai.myqcloud.com/2018/11/06/e24c84356ed440909dd8b494a7e6db87.png) 只要满足以下几点,HTTPS肯定是安全的。 * **不要忽略任何 SSL 证书警告** * **保护好用来初始化SSL连接的 private key** 因此,从网络角度来说,URL参数肯定是安全的。但是,一些其他地方可能泄漏URL上的数据: * **Web server 日志中会存储URLs**:URL一般会存储在日志中,这意味着任何敏感数据(如密码)都会被明文存储,下面是一行日志: ```nginx 2009-02-20 10:18:27 W3SVC4326 WWW 208.101.31.210 GET /Default.htm password=mypassword 443 ... ``` [在任何地方明文存储密码都不是件好事情](https://blog.codinghorror.com/youre-probably-storing-passwords-incorrectly/)。 * **浏览器的历史记录会存储URLs**:下面是IE浏览器的历史记录,可以看到URL参数。 ![](https://blog-1256695615.cos.ap-shanghai.myqcloud.com/2018/11/06/f62862110f9444548058a95c858ae126.png) * **URLs可以通过HTTP Referrer 头传递**:当页面中使用了js、images等资源时,请求头的Referrer属性会一起传递。有时,URL上的查询参数可能会传递到第三方站点并被存储起来。在 HttpWatch 中可以看到,Google Analytics 请求中,通过 Referer 头传递的URL中带有密码。 ![](https://blog-1256695615.cos.ap-shanghai.myqcloud.com/2018/11/06/ad62dc570bf24bd28ffd8afd53079730.png) **小结**:HTTPS传递查询参数肯定是没有问题的,但是不要用来传递可能引发安全问题的敏感信息奥。
本文由
cyj
创作,可自由转载、引用,但需署名作者且注明文章出处。
文章标题:
HTTPS URL 传参安全吗?
文章链接:
https://chenyongjun.vip/articles/86
扫码或搜索 cyjrun 关注微信公众号, 结伴学习, 一起努力