安全地处理密码

时间:2010-03-17 20:34:24

标签: security passwords

我有一个Java Web服务和一个使用此服务的Java Web客户端。其中一项功能是创建一个新的用户帐户。我的两个问题是:

  1. 如何从客户端安全地发送用户密码。
  2. 如何将用户密码安全地存储在服务器上。
  3. 我怎样才能实现这些目标?我知道该理论基本上落后于安全性,安全性算法等,但任何人都可以就如何编写代码给我一些建议吗?任何人都可以指出一些好的(如果可能不复杂的)例子,因为我发现互联网上的一些例子非常扭曲?

    非常感谢和问候, Krt_Malta

2 个答案:

答案 0 :(得分:3)

通常,如果您担心从Web客户端以明文形式传输密码,您将通过SSL运行该服务。

在后端,我不会将密码存储在清除中,并在存储之前对其进行散列。一定要用盐。当用户稍后登录时,我会对他们提交的密码进行哈希处理,然后将哈希值与先前存储的哈希值进行比较。如果它们匹配,则用户已经过身份验证。在我的情况下,它有更多的东西(记住我的功能等),但它是它的胆量。

我使用Apache Shiro框架来帮助完成大部分工作。它相当轻量级,不需要Web环境,但也可以使用。它也与Spring和其他解决方案集成,但同样,这不是必需的。可能值得一试。

答案 1 :(得分:2)

John的规则:始终尽量避免编写自己的安全软件。很容易犯错误,比如加密而不是哈希,不使用盐等。你找不到很多安全专家来检查你的代码,但你可以期待很多人看过更流行的开源系统。 / p>

首先,您可以使用OpenIDShibboleth来避免向其他人提供他们需要密码的系统 - 如果我可以使用现有帐户,我会感谢您!

如果答案为否,则对于密码存储,请尝试免费的LDAP服务器,例如OpenDSApache Directory Server

使用Spring Security或类似功能来管理登录和记住我。 (有一个nice video引入了春天的安全性。)

如果您希望系统将密码从客户端传送到服务器,则需要使用其他答案中提到的SSL(https)。

相关问题