当传递 URL 中编码的用户名和密码时,例如:https://阿拉丁:[电子邮件受保护]/index.html
客户端实际上是否在授权标头中发送了此信息?
对于这种URL编码,服务器端需要进行怎样的处理呢?
客户端实际上是否在授权标头中发送了此信息?
这取决于客户是什么。如果客户端是浏览器,答案是否定的。这是实验结果:
- 在 Chrome 中,不会发送任何授权标头。
- 在 Firefox 中,不发送任何授权标头。 Firefox 还会提示确认对话框,因为主动发送身份验证信息很奇怪。
- 在 Safari 中,不会发送任何授权标头。 Safari 也会首先显示一个警告页面,因为它怀疑该 URL 属于钓鱼网站。
- 在 Opera 中,不发送任何授权标头。
- 我使用的是 Mac,无法在 IE/Edge 上运行实验。但根据其他浏览器的合理行为,我猜 IE/Edge 也会有同样的行为。无论如何,如果有人进行实验并得到结果,我将不胜感激。
一般来说,出于安全考虑,浏览器会忽略URL中主动发送的认证信息。
然而,如果客户端是开发工具,则认证信息可以以base64编码并作为授权标头发送。这是一些实验结果:
- 在curl中,是的,发送了授权标头。
- 在 Postman 中,不发送任何授权标头。
是否发送授权标头取决于工具的设计。
对于这种URL编码,服务器端需要进行怎样的处理呢?
在服务器端,您需要做的就是从Authorization header中获取base64编码的字符串,对其进行解码,并检查它是否有效。
如果示例 URL 中使用 HTTP 协议,会有什么不同吗?
为了安全起见,是的,通过 HTTP 的授权标头是非常不安全的。 Base64编码/解码不会带来任何安全效益,任何人都可以解码。
否则,它们是相同的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)