一个类中私有字段值内的数据安全性如何,以及如何使其更安全?

ava*_*e70 2 c# field private class

我有一个类在其私有字段中预加载一些值,这些字段用于进一步的计算.

我感兴趣从这一点上来说,如何安全是一个数据-如何轻松地能不能被黑客通过内存筛选等访问完善这里的情况是这只是所谓的公共方法Class.CalculateSomething()将能够访问这些领域并返回结果.

知道这可能是不可能的,有没有办法增加这些领域的安全性,主要是数字和字符串?

Eri*_*ert 8

您没有包含有关攻击者的最重要事实:谁是攻击者?分析在很大程度上取决于这个问题的答案.

如果攻击者是用户,那么你就完成了.如果攻击者拥有机器,你无能为力.他们拥有这台机器.你甚至不知道他们是不是为了天堂而运行Windows.他们本可以编写自己的操作系统和自己的CLR.即使CLR中存在安全系统,您也不能依赖它,因为攻击者可能会从自定义环境中攻击您的代码.代码不可能保持确定用户的秘密.

在这种情况下,你所能做的就是(1)降低攻击者获得秘密的好处和(2)提高成本.一旦攻击成本超过成功攻击的好处,理性攻击者就会放弃.

虽然在这种情况下更好,但两者都没有.如果您不信任该用户,请不要在用户计算机上放置机密.将秘密保存在您拥有的机器上.

如果攻击者正在编写恶意代码,然后欺骗用户运行代码,那么你就可以了.如果用户对恶意代码给予完全信任,则恶意代码完全受信任,我们处于与以前相同的情况; 恶意代码是完全可信的,因此与用户一样强大; 这就是"完全信任"的含义.

如果恶意代码部分受信任,那么为了允许它通过Reflection读取私有成员,必须获得Skip Visibility Checks权限.

或者,可以授予限制性跳过可见性检查; 授予RSV的程序集允许查看被授予相同或更少权限的任何程序集的私有数据.