【问题标题】:how to secure my javascript client in which users will fill their passwords如何保护我的 javascript 客户端,用户将在其中填写密码
【发布时间】:2013-04-22 20:00:13
【问题描述】:

我如何拥有一个基本的 javascript 注册表单,它将用户填写的密码发送到安全的 axis2 Web 服务(将密码的加盐哈希存储在数据库中)。

Mu 的问题是 - 当用户输入纯文本密码并在服务器端进行哈希处理时,密码是否会在发送到服务器之前被破解。

如何保护我的 javascript 客户端,您能否推荐一些库。

提前谢谢你

【问题讨论】:

  • 明文如何被“破解”?

标签: javascript passwords security


【解决方案1】:

如果你想保护客户端和服务器之间的数据传输不被窃听,有一个标准的解决方案:SSL

【讨论】:

    【解决方案2】:

    除非使用 HTTPS 连接,否则密码以明文形式发送。没有客户端代码可以帮助您。

    【讨论】:

    • 技术上不正确,例如,如果服务器将发送一个公钥,而客户端将使用公钥对密码进行编码,则密码不再以明文形式发送。真正的问题在于,中间人可以很容易地更改代码,使密码由浏览器以明文形式发送,因此使用 SSL 当然是正确的方法(并加密密码客户端side 没有 SSL 毫无意义),但它可能的。在客户端进行处理也是可能的(但毫无意义)。
    • @DavidMulder:是的。我解释了很多 here —— 除非你使用像 HTTPS 这样的基于证书的系统,否则任何 MITM 攻击都可以随时修改密钥。
    • @DavidMulder 就像我说的,没有客户端代码可以提供帮助。可能但毫无意义。
    • @JosephtheDreamer 您实际上说过密码始终以明文形式发送,这与“可能但毫无意义”不同。但无论如何,我们都同意。
    • @Manishearth 顺便说一句,将公钥存储在客户端会有所帮助(类似于 ssh 指纹识别,仅当您知道处于安全连接时才接受指纹),但当然是 MITM可以更改发送给客户端的代码,这(再次)使其毫无意义:P 但是这并不意味着一切都是毫无意义的。从理论上讲,可以用javascript编写一个例如Diffie-Hellman密钥交换的实现,这并不是毫无意义的,但这真的超出了我的范围O:)
    【解决方案3】:

    密码以明文形式发送,并且可以通过中间人攻击(例如 ARP posioning)轻松嗅探/欺骗(其中与您或您的客户端位于同一子网络的人可以嗅探和操纵数据包)。

    获取SSL 证书并为您的网站启用HTTPS(关于apache here 的说明)。

    有关为什么在客户端保护内容没有意义的更多详细信息,请参阅我的回答 here。基本上,除非有像 HTTPS 这样的基于证书的信任系统,否则攻击者总是可以通过动态修改密钥或从 javascript 中删除加密代码来欺骗您尝试的任何加密协议。

    【讨论】:

    • 黑客如何动态修改密钥或从 javascript 中删除加密代码?你的意思是嗅探从服务器到客户端的 javascript 响应?
    • @KhanhTo:是的。如果一个人能够嗅探数据包,那么一个人也能够修改它们。 (见security.stackexchange.com/questions/34965
    猜你喜欢
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    • 2012-09-03
    相关资源
    最近更新 更多