我正在为我的硕士项目开发一个网络应用程序。它是一个供教授管理学生项目的系统,服务器端代码使用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 或其他文档中看到对它们的引用,所以我不知道如何使用它们...
如果有人能消除我的困惑并告诉我安全传输和存储密码的正确方法是什么,我将不胜感激。
最佳答案
SSL 负责保护整个传输层。您无需担心通过 HTTPS 发送的数据。
切勿在数据库中存储真实密码。仅存储使用适当安全(即非 MD5)哈希函数生成的加盐哈希。对每个散列使用不同的盐。
如果您遵循这些原则,无论您使用什么组件,您都将拥有一个合理的用户名/密码存储机制。
关于java - 正确传输和保护网络应用程序的用户密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12221811/