https网址中的用户名和密码
考虑URL:https:// foo:password@example.com
上述例子中的用户名/密码部分是否符合此问题中定义的“URL参数”?
当您将用户名和密码放在主机前时,这些数据不会以这种方式发送到服务器。 而是根据所使用的身份验证模式转换为请求头。 大多数情况下,这将是我在下面描述的基本身份验证。 类似的(但不太经常使用的)认证方案是现在提供可比较的安全功能的Digest Auth。
使用基本身份验证,来自问题的HTTP请求将如下所示:
GET / HTTP/1.1
Host: example.com
Authorization: Basic Zm9vOnBhc3N3b3Jk
像你看到的那样的字符串是由浏览器创建的: base64_encode(username + ":" + password)
。
对于HTTPS传输的外部人员来说,这些信息是隐藏的(就像HTTP层面的所有其他信息一样)。 尽管如此,您应该注意登录客户端和所有中间服务器。 用户名通常会显示在服务器日志中,但密码不会。 但这并不能保证。 当你使用例如curl
在客户端上调用该URL时,用户名和密码将在进程列表中清晰可见,并可能出现在bash历史记录文件中。
当您通过ayush使用该方法时,用户名和密码将始终在Web服务器,应用程序服务器,缓存的服务器日志中出现,除非您专门配置服务器以不记录它。 这仅适用于能够读取未加密的http数据的服务器,例如应用服务器。
基本身份验证通过浏览器显示这个小小的用户名/密码弹出窗口来标准化和实现。 当您将用户名/密码放入通过GET或POST发送的HTML表单中时,您必须自己实现所有登录/注销逻辑(这可能是一个优点)。 但是你绝不应该通过GET参数传输用户名和密码。 如果必须,请使用POST。 防止默认情况下记录此数据。
在今天通常使用用户/密码输入表单和随后的基于cookie的会话来实现身份验证机制时,您必须确保密码是使用POST请求传输的,还是仅使用上述其中一种标准化身份验证方案传输的。
最后我可以说,通过HTTPS传输数据是安全的,只要您注意密码在意想不到的地方不会出现。 但该建议适用于以任何方式传输任何密码。
链接地址: http://www.djcxy.com/p/27063.html上一篇: Username and password in https url
下一篇: Could not open a connection to your authentication agent