反射是否打破了私有方法的概念,因为私有方法可以在类之外访问?
反射会破坏私有方法的理念吗?因为私有方法可以从类外部访问?(也许我不明白反思的含义或错过了别的东西,请告诉我)http://en.wikipedia.org/wiki/Reflection_%28computer_science%29
编辑:如果 relection 打破了私有方法的概念 - 我们是否只将私有方法用于程序逻辑而不用于程序安全性?
谢谢
反射会破坏私有方法的理念吗?因为私有方法可以从类外部访问?(也许我不明白反思的含义或错过了别的东西,请告诉我)http://en.wikipedia.org/wiki/Reflection_%28computer_science%29
编辑:如果 relection 打破了私有方法的概念 - 我们是否只将私有方法用于程序逻辑而不用于程序安全性?
谢谢
我们是否仅将私有方法用于程序逻辑而不用于程序安全性?
不清楚您所说的“程序安全”是什么意思。安全问题不能在真空中讨论;它必须得到国际社会的普遍支持。您正在考虑保护哪些资源免受哪些威胁?
CLR 代码访问安全系统旨在保护用户数据资源免受用户计算机上运行的恶意部分受信任的代码的威胁。
因此,CLR 中的反射、访问控制和安全性之间的关系非常复杂。简而言之,不完全准确,规则如下:
完全信任意味着完全信任。完全受信任的代码可以访问该过程中的每个内存位。这包括私有字段。
在部分信任中对私有进行反思的能力由许可控制;如果未授予,则部分信任代码可能不会对私有进行反射。
有关详细信息,请参阅 http://blogs.msdn.com/b/shawnfa/archive/2006/09/29/777047.aspx。
看
http://blogs.msdn.com/b/shawnfa/archive/2006/10/05/using-lightweight-codegen-from-partial-trust.aspx
了解详情
执行摘要是:您可以充分锁定部分受信任的代码,使其无法使用反射来查看私有内容。您无法锁定完整的信任代码;这就是为什么它被称为“完全信任”。如果你想限制它,那么不要相信它。
那么:将字段设为私有是否可以保护它免受低信任代码试图读取它的威胁,从而窃取用户的数据?是的。它是否保护它免受高信任代码读取它的威胁?不可以。如果代码既受用户信任又对用户充满敌意,则用户有一个大问题。他们不应该信任该代码。
请注意,例如,将字段设为私有并不能保护代码中的秘密免受拥有您的代码并且对您怀有敌意的用户的影响。安全系统保护好用户免受恶意代码的侵害。它不能保护好代码免受邪恶用户的侵害。如果你想把一些东西保密,以防止用户看到它,那么你就是在做一个愚蠢的差事。如果你想让它保密,以防止邪恶的黑客引诱用户运行敌对的低信任代码,那么这是一个很好的技术。