用get方法发送密码字段和ajax仍然不安全?

时间:2014-02-04 08:30:02

标签: jquery ajax security get

如果我使用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来发送密码?

2 个答案:

答案 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,以便参数(密码哈希)被加密。