1

一方面我有: http : //forums.enterprisedb.com/posts/list/2481.page 这里我们声明字段为 BYTEA,我们可以解密它并且加密是在数据库级别。

另一方面: https ://www.owasp.org/index.php/Hashing_Java 这里作为varchar,我们只比较哈希来授权。

最后 Spring 给出了http://static.springsource.org/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/crypto/password/StandardPasswordEncoder.html + char 秘密值适用于每个密码?

哪个是最好的方法?(我倾向于 Spring,因为据我了解,它在几行代码中封装了与 OWASP 类似的逻辑?)

4

1 回答 1

1

PostgreSQL 编码:

  • 您的应用程序可能依赖于 PostgreSQL,如果您想将它与另一个 DBMS 一起使用,您可能必须重写这部分。
  • 如果 PostgreSQL 在另一台机器上,您应该考虑在应用程序和 DBMS 之间使用某种形式的安全通信,因为密码在它们之间以纯文本形式传输。

OWASP 与 Spring:

  • 它们非常相似。
  • 两者都使用盐。
  • Spring 使用了一个秘密(Owasp 没有)。
  • 当然,如果您需要,您可以修改 Owasp 以使用秘密,或者您可以使用StandardPasswordEncoder无秘密。
  • Springencode()只返回一个包含盐的字符串(在 unix/linux 中通常如此),而 Owasp 需要一个额外的数据库属性作为盐值。
  • Spring 更简单,也许它比 2008 年的 Owasp 网络文章维护得更好。
  • Owasp 混合了多种功能:它对密码进行编码/检查,并且还包含大量 JDBC 代码。
  • Spring 只是对密码进行编码/检查,而您的责任是密码存储。但也许你的框架会为你做这件事,或者你可以自己写。

我会用StandardPasswordEncoder. 它更简单,并且与 Owasp 相同。

于 2011-10-16T19:07:52.350 回答