我刚刚回答了一个question,我说虽然字符串实习很好,但它可能是一个安全问题,因为以后可以轻松访问字符串值。
虽然我很确定这是真的:-)我不确定它到底有多容易。我尝试使用谷歌搜索主题,但我没有相关的结果(谷歌在这一个是弱的),所以然后我尝试你们的人。
你知道在app domian中访问intered字符串列表的任何“简单”方法吗?我必须使用内存转储和那些东西,还是有像AppDomain.GetInteredStringsList()这样的方法?
与此相关:从intered字符串中获取任何有用数据真的很容易。将敏感数据存储在字符串中真的是一个安全漏洞吗?
答案 0 :(得分:6)
这并不是特别容易 - 但它是可行的。
基本上,如果你有任何可以进行内存转储的东西,你可以找到一些看起来像是字符串对象的内存。 (特别是,它们在开始时都会有相同的“指向类型信息的指针”,所以如果你有一个示例字符串,你就会离开。)
顺便说一句,这与实习字符串没什么关系。它不像所有字符串都被实现 - 只有字符串常量,以及用户明确实习的字符串。
答案 1 :(得分:3)
这真的是一个存储的安全漏洞 字符串中的敏感数据?
是的,绝对是的!
应使用SecureString类存储敏感的安全数据。
编辑:
因为即使是实例化的字符串存储在托管堆中,使用转储堆的工具也会显示应用程序中的所有字符串。
答案 2 :(得分:1)
在合理的应用程序中,密码存储在字符数组中,以便在不再需要时可以覆盖它们。
答案 3 :(得分:1)
并非不可能......但不一定是通过托管代码。任何有权访问进程转储(windb / sos / etc)的东西都可以轻松查找字符串。