【问题标题】:Best way to pass a password via GET or POST通过 GET 或 POST 传递密码的最佳方式
【发布时间】:2013-10-13 08:15:12
【问题描述】:

我制作了一个简单的登录表单,但让我烦恼的是,如果您查看请求(它是 ajax),您可以看到用户密码,即 ?user=Bob&pass=secret

这是完全不用担心的事情还是我做错了?我想不出办法。

【问题讨论】:

标签: jquery ajax post login get


【解决方案1】:

始终使用 HTTPS 并始终选择 POST。 GET 方法将允许您的浏览器在将 URL 存储在其历史记录中时存储用户名和密码,也可以将其发送到第三方网站,例如谷歌分析。此外,服务器通常会记录请求数据,包括查询字符串参数。很清楚为什么使用 GET 是一个非常糟糕的主意。

【讨论】:

    【解决方案2】:

    如果您不使用 SSL,则 GETPOST 是等效的。尽管存在 SSL 时 POST 比 GET 更安全。

    GET 发送未加密的数据,但是当您使用 SSL 时,将发送的 HTTP 数据将被加密,因此它是安全的。

    您可以查看相关线程:- Send password safely using an ajax request

    【讨论】:

    • 此外,如果通过GET发送密码,长度将被限制为URL的最大长度。
    【解决方案3】:

    如果您能够查看请求,则可以查看密码,无论它是未加密的 GET 请求还是 POST 请求。

    为保护您的用户,最佳做法是提供登录页面本身并通过 SSL 将数据发布到您的服务器。这将有助于防止恶意方查看请求和敏感信息。

    如果您想更进一步,您可以在将用户密码发送到您的服务器之前,在 Javascript 中安全地散列用户密码。以下是更多相关信息:https://softwareengineering.stackexchange.com/questions/76939/why-almost-no-webpages-hash-passwords-in-the-client-before-submitting-and-hashi

    【讨论】:

    • 目前我正在使用 PBKDF2 对服务器端进行 16000 次迭代。对于某些机器性能不佳的人来说,散列客户端可能会很慢,并且将其全部放在客户端会引入有关散列的新安全问题吗?
    • @imperium2335:- 我建议你使用 bcrypt 来保护密码:- codahale.com/how-to-safely-store-a-password
    • @imperium2335:- 还要检查这个相关线程以获取您的查询:- crypto.stackexchange.com/questions/24/…
    • 它当然会改变安全配置文件,但我不确定它是好是坏。完全不传输密码是最好的,在客户端进行散列(只要安全完成)是朝着这个方向迈出的一步。
    • 据我所知,您可以采取的最远距离是 SRP (en.wikipedia.org/wiki/Secure_Remote_Password_protocol)
    【解决方案4】:

    使用 post 或 get over https...http post 和 get 请求是纯文本。

    【讨论】:

      猜你喜欢
      • 2011-03-20
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 2011-05-18
      • 2020-05-27
      • 1970-01-01
      相关资源
      最近更新 更多