我正在为我的硕士项目开发一个Web应用程序。这是一个用于教授管理学生项目的系统,它使用Java编写服务器端代码,使用HSQLDB编写数据库,使用JSP编写表示层,并在tomcat上运行。将要存储的数据不包含任何敏感信息(学生证,财务信息等),但用户名和密码是必填项,因此,如果学生使用密码进行操作,我想保护密码本身我的应用程序,他们将其用于其他更重要的应用程序(即使我告诉别人不要这样做,这无疑会发生)。
我以前从未研究过这种东西,我很迷路。我确实找到了一篇很好的文章,解释了如何使用Java 创建密码的哈希,并且在tomcat文档中找到了信息,该信息解释了如何设置在领域中使用的哈希方案以及如何使用tomcat进行SSL以及JavaScript库可通过密码创建哈希,但是我不确定如何将所有部分放在一起,以及我确切需要哪些部分。
如果我使用JavaScript库对密码进行哈希处理并在登录步骤中使用SSL(我认为这是不必要的,因为其他数据不需要保护),那么仅在数据库中存储密码的哈希版本就足够了?还是我需要做更多的事情?我遇到了一个问题,答案讨论了PBKDF2和其他一些问题,但这使我更加困惑……如果我应该使用那些答案中提到的方案之一,我该如何去做?我在tomcat或其他文档中没有看到对它们的引用,所以我不知道如何使用它们…
如果有人能消除我的困惑,并告诉我安全传输和存储密码的正确方法是什么,我将不胜感激。
SSL负责保护整个传输层。您无需担心通过HTTPS发送的数据。
切勿将真实密码存储在数据库中。仅存储用适当安全的哈希函数(即不是MD5)制成的盐腌哈希。对每个哈希使用不同的盐。
如果遵循这些原则,则无论使用什么组件,您都将拥有合理的用户名/密码存储机制。