我正在构建一个使用HTTP进行通信的非浏览器客户端 - 服务器(XULRunner-CherryPy)应用程序。我现在正在思考的领域是用户身份验证。由于我没有丰富的安全知识,我更倾向于使用经过实践检验的方法和现成的库来尝试自己发明和/或构建一些东西。
我最近一直在阅读很多文章,我可以说我留下的所有内容都是很多挫折,其中大部分是由this和this博客文章提供的。
我认为我需要的是:
所以问题是:实现这一目标的现代(无头痛的优选)技术和/或库是什么? (不会存储敏感信息,如信用卡号码。)
我一直在关注OAuth,他们有一个强烈建议使用的新版本。问题是文档仍在开发中,并且没有库实现新版本(?)。
答案 0 :(得分:1)
这可能不是一个完整的答案,但我想提供一些关于彩虹表和网络的令人欣慰的消息。由于以下原因,我不会过多担心Rainbow Tables的问题:
(1)彩虹表通过检查哈希密码来破解工作。在网络上,散列密码存储在您的数据库中,因此甚至可以考虑使用彩虹表,首先需要破解整个数据库。
(2)如果您使用salt作为大多数密码存储系统,那么彩虹表将很快变得不可行。基本上,salt会在给定密码的末尾添加一系列额外的位。为了使用彩虹表,它需要容纳每个明文密码中的额外位。例如,您向我们展示的第一个链接有一个彩虹表实现,可以在密码中最多破解14个字符。因此,如果你有超过14个字节的盐,那么系统将毫无用处。
答案 1 :(得分:1)
Amazon Web Services,OpenID和OAuth都有请求签名的示例。亚马逊网络服务是一个容易遵循的例子,因为没有更复杂的交互协议。它们基本上涉及让客户端或服务器通过使用先前设置的密钥(或密钥对)对其所有字段进行散列来签署请求,并让另一端通过执行相同的操作来验证签名。通过在字段中包含现时标记或时间戳来阻止重放哈希。
设置密钥或其他凭据以允许这样做可以通过SSL完成,并且应该注意OAuth WRAP的一个动机是用SSL替换部分或全部此请求签名,以便于实现。 / p>
答案 2 :(得分:1)
经过大量的探索并尝试编写基于Amazon S3设计的我自己的原型(我认为)非常安全,我发现这个优秀的网站可以解答我的所有问题,一个企业安全API工具包,以及更多,更多:OWASP。