Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 使用get方法发送密码字段,ajax仍然不安全?_Jquery_Ajax_Security_Get - Fatal编程技术网

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

Jquery 使用get方法发送密码字段,ajax仍然不安全?,jquery,ajax,security,get,Jquery,Ajax,Security,Get,如果我使用get方法发送密码字段,而ajax仍然不安全 若我用html格式发送密码字段,则可以在URL中看到密码 <form method='get'> <input type"password" name="pass" /> <input type="submit" value="send" /> </form> URL可以看作example.com/?pass=inputpass 但如果我用ajax(get方法)发送,

如果我使用
get
方法发送密码字段,而ajax仍然不安全

若我用
html格式发送密码字段
,则可以在URL中看到密码

<form method='get'>
     <input type"password" name="pass" />
     <input type="submit" value="send" />
</form>

URL可以看作
example.com/?pass=inputpass

但如果我用ajax(get方法)发送,密码在任何地方都看不到

所以这是正确的方法


或者为什么不使用ajax+get发送密码?

是的,它仍然不安全。为了获得更高的安全性,在发送之前对其进行散列,然后在服务器端加上盐渍对其进行散列。还要确保使用https/tls。然而,不安全的不是ajax或“获取”方式本身

您可以使用ajax和get,只需确保流量已加密,密码已哈希

有人可以拦截流量并捕获密码


正如bobince所说,可以缓存/拦截请求URL。因此,您应该改用post,以便对参数(密码哈希)进行加密。

是的,它仍然不安全。为了获得更高的安全性,在发送之前对其进行散列,然后在服务器端加上盐渍对其进行散列。还要确保使用https/tls。然而,不安全的不是ajax或“获取”方式本身

您可以使用ajax和get,只需确保流量已加密,密码已哈希

有人可以拦截流量并捕获密码

正如bobince所说,可以缓存/拦截请求URL。因此,您应该使用post,以便对参数(密码哈希)进行加密

为什么不应该使用ajax+get发送密码

如果您在地址栏中看不到URL,这意味着URL不会因浏览器历史记录或引用而泄漏,因此这肯定比灾难性的普通表单+GET案例要好一点

但是URL仍然可能被记录,并且可能被任何其他与请求有关的内容(代理、缓存、web服务器本身、政府机构数据挖掘…)泄漏。一般来说,URL是不敏感的,对于日志记录和分析来说是公平的,所以您不应该在URL中放入真正敏感的数据,如凭证、信用卡号码等。这些最好是邮寄的

如果您确实必须在URL中放置访问令牌,那么可以使用一些缓解措施来降低其危险性。例如,可以编写服务器发布的限时或一次性令牌,而不是无限期地传递一个有效的密码,这样,如果有人在将来某个时候在日志中遇到一个旧URL,那么该URL将不再被接受

但是对于普通的本地服务器AJAX请求,没有明显的理由需要这样做

为什么不应该使用ajax+get发送密码

如果您在地址栏中看不到URL,这意味着URL不会因浏览器历史记录或引用而泄漏,因此这肯定比灾难性的普通表单+GET案例要好一点

但是URL仍然可能被记录,并且可能被任何其他与请求有关的内容(代理、缓存、web服务器本身、政府机构数据挖掘…)泄漏。一般来说,URL是不敏感的,对于日志记录和分析来说是公平的,所以您不应该在URL中放入真正敏感的数据,如凭证、信用卡号码等。这些最好是邮寄的

如果您确实必须在URL中放置访问令牌,那么可以使用一些缓解措施来降低其危险性。例如,可以编写服务器发布的限时或一次性令牌,而不是无限期地传递一个有效的密码,这样,如果有人在将来某个时候在日志中遇到一个旧URL,那么该URL将不再被接受



但是对于一个普通的本地服务器AJAX请求,没有明显的理由需要这样做。

我想我们这里讨论的是http而不是https?为什么要这样做,而不是
POST
?我使用
POST
,但是我想知道
POST
GET
对于发送密码(使用AJAX)没有区别?没有真正的区别,但是
POST
支持发送更多的字符,这对于加密数据的长度非常重要。正如回答中提到的,确保所有流量都是加密的我假设我们在这里谈论的是http而不是https?为什么你要这样做,而不是
POST
?我使用
POST
,但我想知道
POST
GET
对于发送密码(使用ajax)没有什么区别,但是
POST
支持发送更多字符,这对于加密数据的长度非常重要。正如回答中提到的,确保所有流量都已加密这不是一个好建议,因为有权访问服务器访问日志文件的人可能会在重播攻击中使用哈希,因为哈希的工作原理与密码一样。我认为你理解错了还是错了?你必须在某个时候发送密码,然后最好在电线上散列。然后,您可以使用TTL(通常是cookie)提供某种令牌,该令牌在每次身份验证请求时都会重新传输。但是,cookie和密码/哈希密码也可以重放。因此,提供商提供SSL和XSS安全的应用程序,以及用户保持系统安全(恶意插件等)非常重要。发送密码或密码散列进行身份验证并不重要。因为在后一种情况下,散列将充当密码。只有在重播攻击被缓解后,哈希才会有效。使用POST,它不会出现在访问日志中。只有在窃听者不会以明文形式掌握实际密码的情况下,才会更好。但由于散列将充当通过身份验证的密钥,因此只要没有重播,重播的请求就是可信的