微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

记忆中密码的一般实践

我正在写一个.NET(C#)的Windows应用程序来存储用户密码,如keypass,lastpass,roboforms等。

为了处理用户数据,我必须将其保存在内存中,这个数据还包含用户密码

现在我的问题是:

有人可以使用一些工具或内存转储读取内存数据?

如果是,那么如何? 有人可以分享这样的工具? 我尝试使用CurrProcess,HeapViewer,ProcessExplorer和ProcessView应用程序,但在内存转储中找不到任何私有数据,

我是否需要学习其他内容以确保内存密码的保护。

谢谢

如何在* config文件中保存键值

如何检查NotifyIcon是否隐藏

如何刷新目录作为修复FileSystemWatcher的一种方法

WM_DESTROY,WM_CLOSE绕过IMessageFilter

AD /表单身份validation

键盘挂钩改变键的行为

为什么“ n”在Windows上换行?

找出如果一个进程中断了当前进程

在Linux上运行ASP.Net与标准的以微软为中心的解决scheme相比如何?

SaveFileDialog阻止可移动驱动器

是的,有一些工具可以捕获所有物理内存(和页面文件)供进一步调查。 他们被称为“法医”,你可以找到一些通过添加这个关键字到您的搜索。 如果你想在你的代码中捕获内存(也就是自己编写这样的程序),使用我们的Rawdisk产品是可能的。

至于保护你的密码,Kobi提到了securestring类,它应该在内存中安全地存储字符串。 虽然这个类不是100%的保护(当你使用它的时候密码是解密的),但是使得密码捕获的可能性要小得多。

你的担心是正确的,记忆中的字符串是不安全的。

您可能正在寻找securestring类。

如果你担心有人窥探内存的密码,那么你有更重要的问题。 如果恶意用户可以访问RAM,那么将键盘记录器放到机器上,或绕过在软件中使用密钥,或者在密钥被解密后拦截密钥,都是微不足道的。 等等

一般的规则是,如果有人可以访问机器,那么它的游戏安全明智。

我建议探索Keepass (2.xx版本)的源代码。 它是用.NET编写的,它处理你关心的同样的问题。

我的经验在安全方面是有限的,但我希望这将是有益的

是的,这是可能的

您可以使用WinDbg + SOS从对象的内部表示中获取所需的任何内容

在BCL中有一个叫做securestring的特殊类,应该适合你的需要。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐