有人可以从Java应用程序中窃取密码吗?

Cha*_*ara 6 java password-protection

假设有一个包含纯文本密码的String变量.

是否有可能使用内存转储读取此密码.(假设使用了作弊引擎.)我很困惑这个JVM的东西.JVM是否提供某种保护措施.如果没有我需要用来避免这种"窃取"的做法.

实际威胁是特洛伊木马; 将内存转储的段发送给外部方.

Dav*_*les 11

如前所述,是的,任何人都可以通过各种方式提取密码.加密密码实际上没有帮助 - 如果它被应用程序解密,那么解密的表单也会出现在某个时刻,加上解密密钥(或代码)本身就会成为一个漏洞.如果它以加密形式发送到其他地方,那么只知道加密形式足以欺骗交易,所以这也没有多大帮助.

基本上,只要"攻击者"也是"发件人",你最终会被破解 - 这就是为什么音乐和视频行业无法让DRM工作的原因.

我建议你拿一份Applied Cryptography并阅读第一部分"Cryptographic Protocols".即使没有深入了解实际加密的数学,这也可以让您对该领域的各种设计模式有一个很好的概述.


Mic*_*mlk 7

如果您在应用程序中以明文形式保留密码,则无论您使用何种语言或运行时,都可以通过使用内存转储来读取密码.

为了减少发生这种情况的可能性,只需在真正需要时保留密码,然后转储或加密.这里需要注意的一点是,JPasswordField返回char []而不是字符串.这是因为你无法控制String何时消失.虽然你也无法控制char []何时会消失,但是当你完成密码时你可以用垃圾填充它.

我说减少因为这不会阻止某人.只要密码在内存中就可以恢复,并且因为解密也必须是可交付物的一部分,所以它也可能被破解而使您的密码大开.