正确传输和保护用户'web应用程序的密码

Properly transmitting and securing users' passwords for a web app

本文关键字:web 应用程序 密码 传输 保护 用户      更新时间:2023-09-26

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

我以前从未研究过这种事情,我很失落。我确实找到了一篇很好的文章,解释了如何使用Java创建密码哈希,我在tomcat文档中找到了解释如何设置领域中使用的哈希方案以及如何使用tomcat进行SSL的信息,以及一个从密码创建哈希的JavaScript库,但我不确定如何将所有部分放在一起,以及我到底需要什么部分。

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

如果有人能澄清我的困惑,告诉我安全传输和存储密码的正确方法是什么,我将不胜感激。

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

永远不要在数据库中存储真实密码。仅存储使用适当安全(即非MD5)哈希函数生成的加盐哈希。每个杂碎用不同的盐。

如果你遵循这些原则,无论你使用什么组件,你都会有一个合理的用户名/密码存储机制。