我正在开发ac#应用程序,用户将输入一些信息,如服务器,数据库,用户和密码(密码隐藏this.txtPassword.PasswordChar = '*';
),如果我使用密码恢复工具,如BulletsPassView显示密码,而我知道某些应用程序受到此工具的保护(skype,yahoo messenger,...)。
我想知道我必须做些什么来保护我的应用程序
答案 0 :(得分:4)
解决方法:引用您关联的网站:
此实用程序适用于大多数密码文本框,但有些应用程序不会将密码存储在项目符号后面,以提高其安全性。在这种情况下,BulletsPassView将无法显示密码。
这意味着您可以通过从PasswordBox中取出实际密码并在每次击键时将其替换为 来保护自己。
更好的方法:使用Current, Relevant Technology而不是古老的winforms:
我刚刚使用WPF PasswordBox
进行了测试,并且没有被BulletsPassView工具检测到/显示。
答案 1 :(得分:2)
如果您的计算机遭到入侵,而且没有任何模糊处理和技巧(Skype tricks)可以帮助您对付确定的攻击者 - 您的应用程序将必须以明确的形式使用密码(或其他机密信息)(它可能哈希,加密,无关紧要 - 最终它将采用与身份验证相同的形式)。现代用户操作系统并非旨在保护您免受交战管理员或受损核心的影响。
我认为您不应该担心在PasswordBox控件中泄露您的密码 - 如果某人能够在您的计算机上执行类似操作,那么他可以做更糟糕的事情。在这种情况下,这不是任何人都可以有效处理的威胁。
保护您的密码(或密钥)的唯一真正方法是......根本不将其存储在您的应用中,并且只在安全的可信计算机上使用它,以尽可能短的时间,删除并清除所有密码信息之后。
编辑(评论后):
有了大量现成的工具和漏洞,你不应该低估脚本小子。
如果你想保护类似于BulletsPassView的工具的Windows.Forms.PasswordBox,你应该相应地命名你的问题(如果这是你的目标,那么重命名它 - 你的问题将不那么广泛,目标非常确定。)
关于PasswordBox的实际保护:
我认为BulletsPassView只是通过钩子(如Spy++)访问目标窗口并获取所需的值(Spy++ hooks internals)。
如果您想要保护BulletsPassView,您可以尝试一些非标准的PasswordBox或使用其他UI。但我不确定这会永远解决这个问题。
对于我所知道的钩子,你实际上do实际上并不多。正如我已经说过的主要保护是限制一切不允许的环境,并以最小的权限运行所有内容。您无法保护您的系统免受一切攻击 - 创建一些正式的有限威胁模型并实施处理已识别威胁所需的功能。
P.S。:我对dll钩子知之甚少 - 可能有人知道一种方式 P.P.S。:并且不要忘记重命名问题以反映您的实际目标和问题。