【问题标题】:jQuery,sending password via ajax?jQuery,通过ajax发送密码?
【发布时间】:2025-12-17 13:25:01
【问题描述】:

我有注册框,我希望用户通过 ajax 注册。 通过 jquery ajax 发送密码是否安全? 如果没有,有人可以解释如何保护密码数据,有什么例子吗?

【问题讨论】:

    标签: jquery


    【解决方案1】:

    确保您通过 POST 发送它并使用 SSL 而不是普通的旧 http,您应该没问题。通过 AJAX 发送它并不比普通帖子更安全。

    请参阅this answer(以及另一个讨论here)以获得更深入的解释,但它的要点是您提出的请求以及通过线路传输的信息基本上是相同的它是一个 AJAX 请求或表单提交。

    【讨论】:

    • 我想补充一点,整个 HTTP 请求,无论是 POST 还是 GET 都是通过 HTTPS 连接加密的。两者都不比另一个更安全,主要的例外(此处不适用 ajax 的 b/c)是 URL 可能会出现在用户地址栏历史记录中——并且您可能不希望将密码保存在用户历史记录中。跨度>
    • 你能发布一些相关链接或更多信息吗?
    • @SiddharthSharma 更新了一些指向网络上其他问题的链接。
    • @user147 这应该是批准的答案。
    【解决方案2】:

    澄清一下,没有一种 100% 安全的方法可以使用 Ajax 发送任何类型的数据,甚至是普通的 POST。

    一个好的做法是使用 SSL/TLS 证书,如果你有一个好的 SSL/TLS 证书,没有人可以通过观察你的网络流量来嗅出密码。

    很遗憾,这些服务不是免费的。 (*)

    如果您不想为类似的东西付费并且您正在构建注册/登录,您可以简单地使用 OpenAuth 或 OpenID 并让人们使用社交网络加入,从而避免客户端和服务器端的许多安全步骤。

    *:按照 Ivan Venediktov 的建议,您现在可以通过关注LINK 获得免费的 SSL 证书。

    【讨论】:

    • 我需要检查 this.Tnx
    • 我认为这与安全无关
    • 没用,如果你有firebug,它会显示用户名和密码。任何了解 firebug 或其他知识的用户都可以从控制台看到您的请求并可能滥用代码
    • @KameshJungi,您在控制台中看到的用户名和密码肯定是您自己的用户名和密码,而不是其他人的。你能解释一下你的理论吗?我认为您是唯一可以在控制台中看到您的密码的人。如果您将计算机无人看管地留在同一页面上,这只是不安全的,因为有人可以访问控制台并读取数据,或者如果您不使用 SSL,有人可以在其他地方嗅探数据。通常使用 AJAX 登录,如果登录成功并且 POST 信息不可用,页面会刷新。对我来说,如果使用 SSL,这似乎是安全的。
    • 为了纠正Andrea,您可以使用letsencrypt.org获得免费的SSL证书
    【解决方案3】:

    如果您使用的是 HTTPS (SSL)(并且请做任何需要安全的事情),那么是的,AJAX 请求并不比完整回发到服务器更安全。

    【讨论】:

      【解决方案4】:

      这与通过完整回发发送密码一样安全/不安全。您需要使用加密连接以使其安全(r)。使用 SSL (https://)。

      【讨论】:

        【解决方案5】:

        如果您想在安全方面更进一步。 您甚至不需要收集用户密码,您可以在客户端使用类似http://www.movable-type.co.uk/scripts/sha1.html 的东西生成一个哈希(使用盐!)然后您永远看不到密码,只有哈希

        唯一的问题是需要 javascript。但是,您可以轻松地进行后备

        【讨论】:

        • 如果中间有人窥探哈希怎么办?他还不能登录吗?
        • 是的,但您不会泄露密码。另一个是为每次登录尝试发送一个唯一的盐,您使用密码+唯一的盐在客户端上生成一个哈希。但是你只是变得过于复杂
        • 但是既然你也是发网页,那中间的人不也知道加密方式,所以很容易破解吗?我的意思是,如果盐已经可以窥探客户端发送的内容,是否也不能轻易被拦截?
        • 为什么要全力以赴进行 MITM 攻击?只需获取会话 cookie :)
        • 因为 FYTW。我认为这就是大多数黑客这样做的原因。那还是钱。这并不重要,因为这是一个真正的风险。无论如何,是什么让 cookie 比常规 POST 更安全?真的 cookie 信息不也是由同一个 POST 协议发送的吗?