如果我使用get
方法发送密码字段并且ajax仍然不安全?
如果我使用html form
发送密码字段,则密码可以在URL中看到。
<form method='get'>
<input type"password" name="pass" />
<input type="submit" value="send" />
</form>
网址可以看作example.com/?pass=inputpass
但如果我用ajax(get方法)发送密码,则无法在任何地方看到。
所以这是正确的方法
或为什么不应该使用ajax + get来发送密码?
答案 0 :(得分:7)
为什么不应该使用ajax + get来发送密码?
如果您在地址栏中没有看到该URL,则表示该URL不会通过浏览器历史记录或引荐来泄露,因此这肯定比灾难性的简单格式+ GET案例要好一些。
但是URL可能仍然被记录并且可能被触及请求的任何其他内容泄露(代理,缓存,Web服务器本身,政府机构数据挖掘......)。一般来说,URL是一种非常敏感且公平的记录和分析游戏,因此您不应该在其中放置真正敏感的数据,如凭据,信用卡号等。这些最好通过POST。
如果您确实必须在URL中放置访问令牌,您可以使用缓解措施来降低其危险性。例如,可以写一个服务器发出的限时或一次性令牌,而不是传递无限期的密码,这样如果有人在将来的某个时刻遇到日志中的旧URL,那么该URL就不会更长时间被接受。
但是对于正常的本地服务器AJAX请求,没有明显的理由需要这样做。
答案 1 :(得分:2)
是的,它仍然不安全。为了获得更高的安全性,请在发送之前对其进行哈希处理,然后在服务器端加上salting哈希。还要确保使用https / tls。然而,不是ajax或“get”方式本身就是不安全的。
您可以使用ajax和get,只需确保流量已加密且密码已经过哈希
有人可以拦截流量并获取密码。
正如bobince所说,请求URL可以被缓存/拦截。因此,您应该使用post,以便参数(密码哈希)被加密。