一般做法是,当您登录或执行其他需要您的用户名和密码的操作时,您将其发送到 post 请求的正文中。此外,为了增加安全性,应该使用 https。
在获取请求中,这些参数作为 URL 的一部分发送。但据我了解,在 https 中,正文和标头都是加密的。
所以理论上,无论你使用 https post 还是 get 发送,你的数据都是安全的……在一种情况下,攻击者将不得不解密你的 header 和你的 body。
所以我的问题是,如果这一切都是真的,那么发布如何更安全?
一般做法是,当您登录或执行其他需要您的用户名和密码的操作时,您将其发送到 post 请求的正文中。此外,为了增加安全性,应该使用 https。
在获取请求中,这些参数作为 URL 的一部分发送。但据我了解,在 https 中,正文和标头都是加密的。
所以理论上,无论你使用 https post 还是 get 发送,你的数据都是安全的……在一种情况下,攻击者将不得不解密你的 header 和你的 body。
所以我的问题是,如果这一切都是真的,那么发布如何更安全?
除了其他人已经写过的内容之外,还有一点,在网络服务器日志文件中,最常记录整个 url,因此任何有权访问日志文件的人都可以读取登录凭据。此外,如果页面上有一些流量分析工具(比如谷歌分析或其他),那么那里也会报告调用 url -> 这些人也可以读取登录凭据(他们甚至可能出现在流量分析中)。
GET 记录在浏览器的历史记录中。有人可能会查看您的冲浪历史并查看您的密码。
将某些内容放入 GET 请求的主要目的是能够为结果添加书签。这对搜索结果非常有用,而不是登录请求。理论上,共享该 URL 将允许任何人使用您的用户名和密码登录。
****
与您在密码输入字段中显示的原因相同...
如果您通过 GET 发送凭据,任何从用户背后看的人都可以在 URL 栏中看到密码(或者可能是密码的哈希值,具体取决于您执行登录的方式)。
这是出于隐私考虑。正如其他人所提到的,GET
可以轻松跟踪请求,以便潜在的恶意方可以读取 URL 字符串。
诸如
www.facebook.com/login?username=ironman231&password=veryStrongPassword
这样的 URL 就是一个很好的例子;用户名和密码在 URL 中直接可见。