据我了解,使用 GET 提交用户名/密码是一个安全问题,因为用户名/密码是可以显示在浏览器历史记录中的 URL 的一部分。
如果使用 AJAX 发出登录 GET 请求,这仍然是一个问题吗?
据我了解,使用 GET 提交用户名/密码是一个安全问题,因为用户名/密码是可以显示在浏览器历史记录中的 URL 的一部分。
如果使用 AJAX 发出登录 GET 请求,这仍然是一个问题吗?
据我了解,使用 GET 提交用户名/密码是一个安全问题,因为用户名/密码是可以显示在浏览器历史记录中的 URL 的一部分。
这不是唯一的问题。在用户提交数据的情况下使用 GET 会使您的应用程序面临CSRF漏洞。
例如,我可以 embed ,由于调用登录处理程序<img src="http://yoursite.com/login?username=something&password=somethingelse">,它可能会将我网站上的访问者从您的网站中注销。这个具体的例子取决于实现,但也可以进行其他攻击。在某些情况下,攻击者可能希望用户登录到他们的帐户。
除此之外,途中的其他记录器(您的 ISP 等)可能会记录很长时间。当然,对于 POST 请求也可以这样说,但通常完整的请求数据不会保留太久。
是的,这绝对是一个问题。浏览器历史不是唯一可以记录 URL 参数的地方,但服务器可能会记录它们,中间代理也可能会记录它们。
敏感数据(如用户凭据)应作为表单数据发布,而不是在查询字符串中传递。
GET 请求(根据协议定义)必须是“幂等的”,这意味着没有副作用。在这种情况下,将会话状态更改为“已登录”而不是“未登录”是副作用的一个示例。
浏览器、服务器和代理的工作方式很大程度上依赖于 GET 没有任何副作用的这一原则,因此违反这一原则意味着您可能会遇到难以诊断的问题。
当您正在做的事情改变了某事的状态时,请始终使用 POST,即使您实际上没有任何要 POST 的数据。去做就对了。