1

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

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

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

我想不出任何方法来防止/保护这种类型的攻击。

这里有人想出点什么吗?

4

2 回答 2

7

在服务器上散列您的密码。使用 SSL 保护线路。

于 2012-06-11T18:00:46.463 回答
1

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

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

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

请参阅“网站可以知道我是否正在运行用户脚本吗?” ,你可以让脚本编写者更难,但最终,如果坏人可以让用户安装 Greasemonkey 脚本(或更糟糕的是,一个完整的附加组件/扩展),那么你只能让它变得更难 - - 并非不可能 - 用户的帐户被盗用。

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

您可以做的事情使脚本编写者更难(并非不可能):

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