URL和加密中传递的HTTP基本身份验证凭据


250

我对HTTPS和HTTP身份验证凭据有疑问。

假设我使用HTTP身份验证来保护URL:

<Directory /var/www/webcallback>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /var/www/passwd/passwords
Require user gooduser
</Directory>

然后,我通过HTTPS从远程系统访问该URL,并在URL中传递凭据:

https://gooduser:secretpassword@www.example.com/webcallback?foo=bar

用户名和密码会自动进行SSL加密吗?GET和POST是否一样?我很难用此信息来找到可靠的来源。



一个非常古老的问题,但仍然如此:ietf.org/rfc/rfc3986.txt不赞成使用这种方法:
Madbreaks

Answers:


237

用户名和密码会自动进行SSL加密吗?GET和POST同样如此

对对对。

使用SSL时,将加密整个通信(如果尚未缓存主机名的IP,则保存DNS查询)。


25
+1。GET和POST(包括url)均已加密。我只添加-firebug和Tamper数据之类的工具仅能显示未加密的结果,因为它们是浏览器的一部分,因此能够在加密请求之前对其进行拦截。通过电线发送后,所有内容都会被加密。
Sripathi Krishnan

21
需要明确的是,除域之外的所有内容均已加密。如果碰到这个人跌倒,想更详细的回答,请参阅answers.google.com/answers/threadview/id/758002.html
rcourtna

7
为了完整起见,“ Internet Explorer不支持网站地址(HTTP或HTTPS URL)中的用户名和密码 ”看起来只有Internet Explorer 3.0到6.0版本支持HTTP或HTTPS URL的以下语法:http: //username:password@server/resource.ext注意:默认行为的这一更改不会影响其他协议。例如,在安装832894安全更新后,您仍然可以在FTP URL中包含用户信息。
路加福音

该答案既不包含任何可靠的消息来源,也不包含进一步的解释。
詹斯·皮萨

26

是的,它将被加密。

如果您仅检查幕后发生的事情,就会了解它。

  1. 浏览器或应用程序将首先分解URL,然后尝试使用DNS查询来获取主机的IP。即:将发出DNS请求以查找域的IP地址(www.example.com)。请注意,不会通过此请求发送其他信息。
  2. 浏览器或应用程序将使用从DNS请求接收到的IP地址启动SSL连接。证书将被交换,并且在运输级别发生。此时将不会传输任何应用程序级别的信息。请记住,基本身份验证是HTTP的一部分,HTTP是应用程序级别的协议。不是传输层任务。
  3. 建立SSL连接后,现在将必要的数据传递到服务器。即:路径或URL,参数以及基本身份验证用户名和密码。

-5

不一定正确。它会在网络上加密,但仍会保留在日志纯文本中


17
哪个Web服务器记录请求中的用户名和密码?这将是不安全的Web服务器的麻烦。
安德鲁·巴伯

1
是的,这不是真的。可能可以指示apache记录此信息,但是默认情况下当然不这样做。
DougW 2012年

27
@Brandon可能正在考虑查询字符串中的“在URL中”(例如,?user = bob&pw = 123hackmeplz)。那可能最终会出现在服务器日志中。
Mike Graf

5
相关:“当您使用例如curl在客户端上调用该URL时,用户名和密码将在进程列表中清晰可见,并且可能会出现在bash历史记录文件中。” - stackoverflow.com/a/4981309
鹰眼帕克

1
询问者@ zb226特别提到将凭据放入URL。
Lambart
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.