【发布时间】:2012-11-29 00:41:12
【问题描述】:
我必须先说我知道在客户端应用程序中硬编码密码是不好的做法,原因有很多。还有其他问题涉及该问题。此问题的范围较窄,并假设由于某些您无法控制的原因,身份验证凭据必须驻留在客户端应用程序的代码中。
如果某些方法比其他方法更好(例如:JPasswordField 将密码存储在 char 数组而不是 String 中)并且如果您必须在 Java 应用程序中对其进行硬编码,您可以采取哪些措施来使其更难被取走?
更新:
应用程序的一个实例在远程 PC 上运行,最终用户具有管理员权限。凭据用于访问同一网络中的数据库,因此实际密码已经预先确定,必须在实际代码中手动输入。
【问题讨论】:
-
您是否考虑过对密码进行哈希处理?也许这适用于您的用例?
-
您能否详细说明您的客户端应用程序是如何工作的?它运行了多少个实例?谁控制它的生命周期?密码是干什么用的?
-
您是否需要将密码发送到其他地方,所以您实际上需要实际密码?或者您是否从某个地方(如用户)收到密码,只需要检查它是否正确(并且可以使用哈希)?
-
将牛排嵌入鲨鱼嘴里最安全的方法是什么?
-
另一个澄清请求:密码可以硬编码,所以需要重新编译才能更改,还是必须在安装应用程序后才能更改?此外,是否可以使用编译时代码生成器生成代码给您密码,或者必须可以手动输入实际的 Java 源代码?
标签: java authentication embed credentials