哈希安全漏洞 - 如何修复?

时间:2012-06-11 17:58:15

标签: javascript security greasemonkey sha

我开发了我的应用程序以使用salted SHA-512密码哈希。

如果黑客要获取哈希,我该怎么做才能防止黑客使用Greasemonkey来改变登录页面以便密码不被哈希?我预见到的攻击向量将使他们能够将他们获取的哈希值输入到密码输入中,然后Greasemonkey更改的页面按原样发送该信息(无需对输入的密码进行哈希处理,即实际哈希值)。

这只是如何使用获取的哈希的一个例子。还有其他方法可以使用Greasemonkey更改站点的代码以获得相同的结果。

我想不出任何预防/防止此类攻击的方法。

有没有人想出点什么?

2 个答案:

答案 0 :(得分:7)

在服务器上哈希密码。使用SSL来保护电线。

答案 1 :(得分:1)

这个问题是关于Greasemonkey拦截密码的漏洞,对吧?

在这种情况下,SSL会 nothing 来防止用户凭据被盗,密码(或哈希或其他)将直接从用户的浏览器获取,然后通过用户的浏览器传输给坏人GM_xmlhttpRequest()

如果您尝试对密码进行编码或散列,客户端,Greasemonkey可以拦截甚至替换负责的JS。

参见"Can a website know if I am running a userscript?",你可以让脚本编写者更难,但最终,如果坏人可以让用户安装Greasemonkey脚本(或者更糟糕的是,一个完整的附加/扩展) )那么你只能让用户的帐户遭受损害变得更难 - 而不是不可能。

除非您有证据表明正在使用恶意脚本或插件,否则我甚至不会担心。最终,用户负责保持其浏览器和客户端互动安全

你可以采取哪些措施使脚本编写者更难(不是不可能):

  1. 监控您的日志,检查异常活动(无论如何都应该这样做)。
  2. 一般对机器人采取保护措施,例如,请参阅"When the bots attack!"
  3. 如果检测到实际脚本或ploy,则警告用户。
  4. 监控用户的异常活动帐户/操作。
  5. 您可以使用JS和一次性编码拦截密码,因为它是键入的。这将过滤掉因果脚本,但不会过滤掉确定的脚本。请注意,我不建议这样做,只是为了完整性而包含它。
  6. 将密码条目放入Flash对话框中。 Pure Greasemonkey很难与Flash交互。同样,我认为这不符合成本效益,但包含它是为了完整性。
  7. 对合法用户不需要任何繁琐的步骤(一次性密码,第三次通道身份验证等)。这只会让受害者永远爱不释手,直到他们找到更好的替代方案或解决方法(他们会这样做)。