HTTP 身份验证与复杂 URL
HTTP Auth vs Complex URL
假设我需要提供一个带有私有数据的安全端点。考虑 user1
和 password1234
。两者在安全性上有什么区别吗:
https://website.com/myendpoint 使用上面给出的凭据的 HTTP 基本身份验证
在我看来实际上没有区别,但我没有任何 specific/strong 论据。
确实有很大的不同。根据最佳做法,您不应在 url 中包含任何敏感信息(更不用说密码了)。
原因如下:
Urls 被记录在服务器上(通常是文件,但其他数据存储可能更糟)这可能允许攻击者提取此数据,例如备份。
URL 可能会在中间代理上被记录 and/or 检查。考虑使用 https 检查的公司代理。
URL 缓存在客户端并添加到浏览器历史记录中。已获得对 PC 的访问权限的脚本或恶意用户可能会从那里提取密码。即使预期的客户端是程序化的,也要考虑出于任何原因想要使用您的应用程序或 api 来自浏览器的用户(用户非常有创意:))。
网址可能会显示在屏幕上。
当然,并非所有这些都适用于所有用例,但其中一些是您无法控制的。所以最好不要在您的 url 中包含任何敏感数据。 Http basic 优于 https。
假设我需要提供一个带有私有数据的安全端点。考虑 user1
和 password1234
。两者在安全性上有什么区别吗:
https://website.com/myendpoint 使用上面给出的凭据的 HTTP 基本身份验证
在我看来实际上没有区别,但我没有任何 specific/strong 论据。
确实有很大的不同。根据最佳做法,您不应在 url 中包含任何敏感信息(更不用说密码了)。 原因如下:
Urls 被记录在服务器上(通常是文件,但其他数据存储可能更糟)这可能允许攻击者提取此数据,例如备份。
URL 可能会在中间代理上被记录 and/or 检查。考虑使用 https 检查的公司代理。
URL 缓存在客户端并添加到浏览器历史记录中。已获得对 PC 的访问权限的脚本或恶意用户可能会从那里提取密码。即使预期的客户端是程序化的,也要考虑出于任何原因想要使用您的应用程序或 api 来自浏览器的用户(用户非常有创意:))。
网址可能会显示在屏幕上。
当然,并非所有这些都适用于所有用例,但其中一些是您无法控制的。所以最好不要在您的 url 中包含任何敏感数据。 Http basic 优于 https。