我正在为我的硕士项目开发一个网络应用程序。这是一个供教授管理学生项目的系统,它使用Java作为服务器端代码,使用HSQLDB作为数据库,使用JSP作为表示层,并且运行在tomcat上。将存储的数据不包括任何敏感信息(学生 ID、财务信息等),但用户名和密码是必需的,因此我想在学生使用密码进行访问时保护密码本身他们将我的应用程序用于其他一些更重要的应用程序(即使我告诉人们不要这样做,这无疑会发生)。
我以前从未研究过这类事情,我很迷失。我确实找到了一篇很好的文章,解释了如何使用 Java创建密码的哈希值 http://www.devbistro.com/articles/Java/Password-Encryption,我在中找到了信息tomcat文档 http://tomcat.apache.org/tomcat-7.0-doc/config/realm.html解释如何设置领域中使用的哈希方案以及如何做带有 Tomcat 的 SSL http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html, 以及ASAJavaScript 库 http://code.google.com/p/crypto-js/#SHA-2从密码创建哈希,但我不确定如何将所有部分放在一起,以及我到底需要哪些部分。
如果我使用 JavaScript 库对密码进行哈希处理并使用 SSL 进行登录步骤(此后我认为这是不必要的,因为其他数据不需要保护),然后仅在数据库中存储密码的哈希版本,是否足够?或者我需要做更多的事情吗?我跑过一个问题 https://crypto.stackexchange.com/questions/760/webapp-password-storage-salting-a-hash-vs-multiple-hashes答案讨论了 PBKDF2 和其他一些事情,但这让我更加困惑......如果我应该使用这些答案中提到的方案之一,我该如何去做呢?我没有在 tomcat 或其他文档中看到对它们的引用,所以我不知道如何使用它们......
如果有人可以消除我的困惑并告诉我安全传输和存储密码的正确方法是什么,我将非常感激。
SSL 负责保护整个传输层。您无需担心通过 HTTPS 发送的数据。
切勿将真实密码存储在数据库中。仅存储使用适当安全(即非 MD5)散列函数生成的加盐散列。为每个哈希使用不同的盐。
如果遵循这些原则,无论您使用什么组件,您都将拥有合理的用户名/密码存储机制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)