3

我正在构建一个使用 HTTP 进行通信的非浏览器客户端-服务器 (XULRunner-CherryPy) 应用程序。我现在正在思考的领域是用户身份验证。由于我没有大量的安全知识,我更喜欢使用经过验证的方法和现成的库,而不是尝试自己发明和/或构建一些东西。

我最近一直在阅读很多文章,我可以说我留下的只是很多挫败感,其中大部分是由这篇文章和这篇博客文章贡献的。

我认为我需要的是:

  • 在数据库中安全存储密码(自适应散列?)
  • 用户凭据的安全有线传输(摘要式身份验证?SSL?)
  • 后续请求的安全令牌身份验证(对此不确定)

所以问题是:实现这一点的现代(最好是无头痛)技术和/或库是什么?(不会存储敏感信息,例如信用卡号)。

我一直在研究 OAuth,他们有一个强烈推荐使用的新版本。问题是文档仍在开发中,并且没有实现新修订版的库(?)。

4

3 回答 3

1

这可能不是一个完整的答案,但我想提供一些关于彩虹表和网络的令人放心的消息。由于以下原因,我不会太担心关于 Web 的 Rainbow Tables:

(1) Rainbow table 通过检查散列密码来破解工作。在网络上,散列密码存储在您的数据库中,因此即使考虑使用彩虹表,首先需要破解您的整个数据库。

(2) 如果您像大多数密码存储系统一样使用,那么彩虹表很快就会变得不可行。基本上,盐会在给定密码的末尾添加一系列额外的位。为了使用彩虹表,它需要在每个明文密码中容纳额外的位。例如,您向我们展示的第一个链接有一个彩虹表实现,它可以破解多达 14 个字符的密码。因此,如果您有超过 14 个字节的盐,那么该系统将毫无用处。

于 2010-01-03T09:14:55.040 回答
1

Amazon Web Services、OpenID 和 OAuth 都有请求签名的示例。Amazon Web Services 是一个易于遵循的示例,因为围绕交互没有更复杂的协议。它们基本上涉及让客户端或服务器通过使用先前设置的密钥(或密钥对)散列其所有字段来签署请求,并让另一端通过执行相同操作来验证签名。通过在字段中包含随机数或时间戳来防止重放哈希。

设置密钥或其他凭据以允许此操作可以通过 SSL 完成,并且应该注意 OAuth WRAP 的动机之一是用 SSL 替换部分或全部此请求签名,以便于实施。

于 2010-01-06T23:11:34.710 回答
1

经过大量的探索并尝试基于 Amazon S3 设计(我认为)编写我自己的原型(我认为)非常安全,我发现这个优秀的网站可以回答我所有的问题,一个企业安全 API 工具包,还有很多很多更多:OWASP

于 2010-03-01T16:58:34.057 回答