Java 正确传输和保护用户';web应用程序的密码
我正在为我的硕士项目开发一个web应用程序。这是一个教授管理学生项目的系统,它使用Java作为服务器端代码,使用HSQLDB作为数据库,使用JSP作为表示层,并在tomcat上运行。将要存储的数据不包括任何敏感信息(学生ID、财务信息等),但用户名和密码是必需的,因此我希望在学生为我的应用程序使用密码时保护密码本身,以防他们为其他更重要的应用程序使用密码(即使我告诉人们不要这样做,这无疑也会发生) 我以前从来没有研究过这类事情,我很迷茫。我确实找到了一篇好文章,解释了如何使用Java,我在解释如何设置域中使用的哈希方案以及如何做,以及如何从密码创建哈希的文章中找到了信息,但我不确定如何将所有部分放在一起,以及我需要哪些部分确实需要 如果我使用JavaScript库散列密码并使用SSL进行登录步骤(我认为这之后就没有必要了,因为其他数据不需要保护),然后只在数据库中存储散列版本的密码,这样就足够了吗?或者我需要做更多的事情吗?我遇到了答案中讨论的PBKDF2和其他一些东西,但它只是让我更困惑…如果我应该使用这些答案中提到的方案之一,我该怎么做呢?我没有看到对它们的引用n tomcat或其他文档,所以我不知道如何使用它们Java 正确传输和保护用户';web应用程序的密码,java,javascript,tomcat,passwords,hsqldb,Java,Javascript,Tomcat,Passwords,Hsqldb,我正在为我的硕士项目开发一个web应用程序。这是一个教授管理学生项目的系统,它使用Java作为服务器端代码,使用HSQLDB作为数据库,使用JSP作为表示层,并在tomcat上运行。将要存储的数据不包括任何敏感信息(学生ID、财务信息等),但用户名和密码是必需的,因此我希望在学生为我的应用程序使用密码时保护密码本身,以防他们为其他更重要的应用程序使用密码(即使我告诉人们不要这样做,这无疑也会发生) 我以前从来没有研究过这类事情,我很迷茫。我确实找到了一篇好文章,解释了如何使用Java,我在解释如
如果有人能澄清我的困惑,告诉我安全传输和存储密码的正确方法,我将不胜感激。SSL负责保护整个传输层。您不必担心通过HTTPS发送的数据 永远不要在数据库中存储真实密码。只存储使用适当安全(即不是MD5)散列函数生成的salt散列。对每个散列使用不同的salt
如果你遵循这些原则,不管你使用什么组件,你都会有一个合理的用户名/密码存储机制。确保你对哈希进行了加密!@jtahlborn,是的!我怎么会忘记这一点。除了回答之外,谢谢!你可以通过存储每个密码使用的算法来验证存储。这允许你要在将来升级算法而不中断现有用户,您可能还需要指出,您不需要在客户端进行哈希运算(并且使用特定于用户的salt也无法真正工作)。以下是有关如何存储密码的详细信息: