Smi*_*mig 6 java embed authentication credentials
我必须说,我知道,硬编码在客户端应用程序密码是不好的做法,原因是多方面的,以前言这个问题.处理该问题还有其他问题.这个问题的范围较窄,并且假定认证证书必须驻留在客户端应用程序的一些集合,是你无法控制的原因代码.
如果某些方面是比其他人(例如:JPasswordField中存储在字符数组,而不是一个字符串密码),如果你不得不硬编码在Java应用程序,你可以采取什么措施来使其难以被取出?
更新:
应用程序的一个实例在远程PC上运行,最终用户具有管理员权限.凭证用于访问同一网络中的数据库,因此实际密码已经预先确定,必须在实际代码中手动输入.
....如果您必须在Java应用程序中对其进行硬编码,您可以采取哪些措施来使其更难获取?
首先,我会确定管理层负责做出这个错误决定的人完全清楚这是从根本上和不可靠的不安全1.
然后我可能会想到一些以晦涩的方式组装密码的naff算法; 例如,通过构建两个字节数组并将它们XOR一起...并分发混淆的字节码.您可以希望做的最好的事情是让技能有限的人难以对代码中的密码进行反向工程.
(使用强大的算法加密密码将无济于事,因为算法和解密密钥的选择都必须嵌入到您的代码中.实际上,您可以梦想的任何方案都可以通过使用调试器来设置密码需要明确的断点.)
1 ......甚至连Jon Skeet也无法保证安全.
如果某些方法比其他方法更好(例如:JPasswordField将密码存储在char数组而不是String中)...
我只想指出,使用char数组在JPasswordField等中保存密码的正常原因是为了防止坏人从核心转储或交换文件中读取密码.在这种情况下它不会真正有用,因为我们必须假设坏人有足够的控制权来将调试器连接到JVM并从char数组中捕获字节.
| 归档时间: |
|
| 查看次数: |
3917 次 |
| 最近记录: |