正确传输和保护用户的Web应用密码

时间:2012-08-31 20:02:08

标签: java javascript tomcat passwords hsqldb

我正在为我的Masters项目开发一个Web应用程序。它是教授管理学生项目的系统,它使用Java作为服务器端代码,使用HSQLDB作为数据库,使用JSP作为表示层,并在tomcat上运行。将存储的数据不包括任何敏感信息(学生ID,财务信息,没有类似的信息),但是用户名和密码是必需的,所以我想在学生使用密码的情况下自己保护密码我的应用程序,他们用于其他一些更重要的应用程序(即使我告诉人们不要这样做,这无疑会发生。)

我以前从未考虑过这种事情而且我很丢失。我找到了一篇很好的文章,解释了如何使用Java create a hash of a password,我在tomcat documentation中找到了解释如何设置领域中使用的哈希方案以及如何进行SSL with tomcat的信息,以及JavaScript library来创建密码的哈希值,但我不确定如何将所有部分组合在一起,以及我需要哪些部分。

如果我使用JavaScript库来散列密码并使用SSL进行登录步骤(之后我认为没必要,因为其他数据不需要保护),那么只在数据库中存储密码的散列版本,那够了吗?或者我还需要做更多的事情吗?我遇到了a question,其中答案讨论了PBKDF2和其他一些事情,但它让我更加困惑......如果我应该使用这些答案中提到的方案之一,我该怎么做呢?我没有在tomcat或其他文档中看到过对它们的引用,所以我不知道我是如何使用它们的......

如果有人能解决我的困惑,并告诉我安全传输和存储密码的正确方法是什么,我真的很感激。

1 个答案:

答案 0 :(得分:3)

SSL负责保护整个传输层。您无需担心通过HTTPS发送的数据。

切勿在数据库中存储真实密码。仅存储使用适当安全(即非MD5)散列函数制作的盐渍散列。为每个哈希使用不同的盐。

如果您遵循这些原则,无论您使用哪种组件,您都将拥有合理的用户名/密码存储机制。