2013-02-18 211 views
1

我正在构建一个基本的Web应用程序,它接受用户输入并返回一个加密的密码。如何安全地存储密钥?

问题是,目前我使用的SecretKey存储在Java类的src中。对我来说,这似乎是一种冒险的做法,所以我试图找到一种方法来安全地存储我的SecretKey。

做了一些研究,我找到了Java KeyStore类,但我不完全确定这是否是我需要的。另外,如果这是我所需要的,那么你们可以指导我如何实施它,更重要的是,它是如何工作的?

感谢

编辑:从做了很多思考/读取好像是不是真的有一个很好的解决方案,真正是不需要的,只要你的主服务器是安全的解决方案,该煤矿将是的,所以这不是问题。

谢谢你所有的答复! :)

+0

构成服务器硬盘中秘密密钥存储的所有解决方案之间几乎没有区别。如果密钥在磁盘上,则始终有一段时间以未加密的形式复制到服务器的内存中。 – gd1 2013-02-18 17:31:38

+1

你为什么要在Web应用程序中返回密码?你应该永远不要这样做。 – Perception 2013-02-18 17:33:01

+0

@ gd1那么KeyStore的目的是什么? – user2019260 2013-02-18 17:44:11

回答

1

密码应使用单向散列函数进行存储,这样可以避免此问题。请参阅https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet

+0

实际上,OP可以肯定地改进他/她的应用程序的总体设计,但是这个回答并不涉及他/她所要求的内容,而应该作为评论发布。 – gd1 2013-02-18 18:04:12

0

如果您正在谈论您的加密密钥,那么没有安全的方式来将该密钥安全地存储在JavaScript中。我猜你正在谈论它的浏览器本地存储的存储,这不过是浏览器端的一个持久cookie。 使用Chrome WebInspector或Firefox Firebug的每个人都可以轻松地阅读他所访问的任何页面的该商店。此外,您必须通过JavaScript将其保存在此商店中,并且每个人都可以在浏览器中阅读您的源代码,这更加明显。

安全地做这种事情的唯一可能性是服务器端,就像使用PHP一样。如果你想要交互行为的感觉,你可以在客户端使用AJAX与后端进行交互。

编辑: 嗯,我想你错了,因为你在谈论Java在后端?如果是的话,我认为当你在编译源代码中硬编码时没有问题?如果你想把它存储在别的地方,并害怕有人使用它,你可以在你的应用程序中使用它并将其散列在你的应用程序中,然后用它来生成密钥(当然盐是硬编码的)。

+0

我正在使用JSF,所以关键是在我的来源...我不认为浏览器看到它。但我是新手,所以我不确定。 – user2019260 2013-02-18 17:40:23