我有一个带有web服务身份验证信息的java属性对象。我需要对数据进行加密,但我不知道需要将加密密钥存储在哪里才能保证数据的安全。
对此数据进行加密并以安全的方式检索数据的最佳实践是什么?
使用密钥库有什么好处吗?
ws_user=username
ws_password=password
ws_url=https://www.whatever.com/myservice
发布于 2011-12-08 20:55:19
你的问题很常见。在linux中,用户密码存储在纯文本文件中。虽然只存储了密码散列,但如果攻击者获得了该文件的访问权限,他很快就会使用脱机字典攻击发现一些密码。在这种情况下,操作系统依靠文件权限拒绝未经授权的用户访问。在您的情况下,这并没有太大的不同。您必须正确配置密码文件权限,确保服务器的物理安全。
发布于 2011-12-09 23:07:11
底线是某个地方需要以未加密的形式拥有“链的根”密码。受操作系统保护的本地文件、受操作系统保护的远程文件、在源代码中硬编码的文件等。
解决这个问题的唯一方法是要求用户在应用程序启动时输入初始密码,这对于需要自动启动的应用程序来说显然是不可能的。
发布于 2011-12-08 21:08:46
这是一个先有鸡后有蛋的问题。
然后,您将需要查找存储密钥库密码的位置,依此类推……
根据您的安全要求和需要,您可以使用对称加密对数据进行加密,并使用客户端证书身份验证通过远程服务器(您的服务器)检索密码。
或者,您可以使用对称加密对数据进行加密,并将密码硬编码到您的jar中,这是不安全的,但需要一些努力才能找到它,并且您可以将责任委派给文件系统权限,以确定谁可以访问您的文件。
https://stackoverflow.com/questions/8357868
复制相似问题