繁体   English   中英

WPF应用程序中的安全问题

[英]Security concerns in a WPF application

我正在制作一个WPF应用程序,它将处理许多敏感数据,如用户名,密码,电子邮件等。所有这些数据都显示在应用程序的文本框和密码框中。 当应用程序关闭时,我需要删除内存中的所有数据,以便以后没有人可以检索它。

您能否告诉我一些有关需要注意的准则或提示,或者可以用来使该项目尽可能安全的技术?

谢谢

程序执行结束后,数据将不会保留在内存中,但是从理论上讲,可以在程序运行时读取数据。 您可以尝试使用SecureStringhttp : //msdn.microsoft.com/zh-cn/library/system.security.securestring.aspx

另外, PasswordBox控件已经使用SecureString ,因此您对此很SecureString

我认为您担心的是不值得担心的事情。

如果有人可以物理访问该计算机并想窃取敏感信息,则说明您已经迷失了游戏。

尽管用户名和密码当前可能不在内存中,但该人只需安装一个键盘记录程序,然后在下次运行该应用程序时获取它。

.Net字符串是不可变的并且是固定的。 不可变性使字符串在创建后不可更改。 实习使CLR使用具有相同内容的字符串的一个实例。 这也使得更难摆脱字符串。

MSDN

..为公用String对象分配的内存在公共语言运行库(CLR)终止之前不太可能释放。 原因是在应用程序甚至应用程序域终止后,CLR对内联String对象的引用可以保留。

您可以使用SecureString,但是它不是很方便,因为除PasswordBox之外,没有许多WPF控件支持它。

例如,有时您必须向用户显示密码,但是如果不将SecureString转换回普通字符串,则无法实现。 这带回了我们着手解决的问题。

因此,我认为对于有敏感数据的应用程序,WPF / C#并不是一个好的候选语言框架。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM