访问clr的实习字符串列表

时间:2008-12-23 13:03:33

标签: .net string clr

我刚刚回答了一个question,我说虽然字符串实习很好,但它可能是一个安全问题,因为以后可以轻松访问字符串值。

虽然我很确定这是真的:-)我不确定它到底有多容易。我尝试使用谷歌搜索主题,但我没有相关的结果(谷歌在这一个是弱的),所以然后我尝试你们的人。

你知道在app domian中访问intered字符串列表的任何“简单”方法吗?我必须使用内存转储和那些东西,还是有像AppDomain.GetInteredStringsList()这样的方法?

与此相关:从intered字符串中获取任何有用数据真的很容易。将敏感数据存储在字符串中真的是一个安全漏洞吗?

4 个答案:

答案 0 :(得分:6)

这并不是特别容易 - 但它是可行的。

基本上,如果你有任何可以进行内存转储的东西,你可以找到一些看起来像是字符串对象的内存。 (特别是,它们在开始时都会有相同的“指向类型信息的指针”,所以如果你有一个示例字符串,你就会离开。)

顺便说一句,这与实习字符串没什么关系。它不像所有字符串都被实现 - 只有字符串常量,以及用户明确实习的字符串。

答案 1 :(得分:3)

  

这真的是一个存储的安全漏洞   字符串中的敏感数据?

是的,绝对是的!

应使用SecureString类存储敏感的安全数据。

编辑:

因为即使是实例化的字符串存储在托管堆中,使用转储堆的工具也会显示应用程序中的所有字符串。

答案 2 :(得分:1)

在合理的应用程序中,密码存储在字符数组中,以便在不再需要时可以覆盖它们。

答案 3 :(得分:1)

并非不可能......但不一定是通过托管代码。任何有权访问进程转储(windb / sos / etc)的东西都可以轻松查找字符串。