【问题标题】:Hash Security Vulnerability - How to Fix?哈希安全漏洞 - 如何修复?
【发布时间】:2012-06-14 15:44:48
【问题描述】:

我已经开发了我的应用程序来使用加盐的 SHA-512 密码哈希。

如果黑客要获取哈希,我可以做些什么来防止黑客使用 Greasemonkey 更改登录页面以使密码不被哈希?我预见的攻击向量将使他们能够将他们获得的哈希输入密码输入,然后 Greasemonkey-altered 页面按原样发送该信息(不对输入的密码进行哈希,这是实际的哈希)。

这只是如何使用获取的哈希的一个示例。还有其他方法可以使用 Greasemonkey 更改网站的代码以达到相同的效果。

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

这里有人想出什么办法吗?

【问题讨论】:

  • 您应该在服务器端散列您的密码。那么,风险很小。
  • 这需要以纯文本形式传输密码
  • 永远不要在客户端散列密码——这样散列就变成了密码,你仍然以“纯文本”的形式传输它。使用 SSL 保护密码传输。
  • @Brad:谢谢,我想我现在“明白”了。我现在想知道我的会话身份验证是否有任何可以改进的地方 - 详细信息在下面对 Rich Bradshaw 的回答的评论中。
  • @WladimirPalant:也谢谢你。

标签: javascript security greasemonkey sha


【解决方案1】:

在服务器上散列您的密码。使用 SSL 进行网络保护。

【讨论】:

  • 好的,我想我开始明白为什么这是解决方案了。我正在努力解决这些问题。
  • 用户登录后,我会创建一个特定于会话的、有时间限制的代码,并将其存储在数据库中并作为 cookie 存储在客户端中。这用于会话中的所有进一步通信。我应该在这里做些什么改进?
  • 你的语言应该已经内置了 Session cookie 支持,但是是的,就是这样。
  • 这个答案没有任何作用来防范 Greasemonkey 漏洞!
  • 如果 javascript 可以弄乱你的身份验证,它不是身份验证。 JS 不可能干扰您的身份验证过程。
【解决方案2】:

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

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

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

请参阅"Can a website know if I am running a userscript?",您可以让脚本编写者更难,但最终,如果坏人可以让用户安装 Greasemonkey 脚本(或者更糟糕的是,一个完整的附加组件/扩展),那么您只能让用户帐户被盗用变得更加困难(并非不可能)。

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

让脚本编写者更难(并非不可能)的事情:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-27
    • 2019-05-18
    • 1970-01-01
    • 2020-08-16
    • 2021-12-28
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    相关资源
    最近更新 更多