处理敏感数据或者作出任何安全决定的应用程序都需要保持它们所拥有的底层控件数据并且不能够允许其他潜在的恶意代码进行直接的访问。在内存中保护数据的最佳方式就是把数据声明成为私有变量或者是内部(为相同的汇编集而使用被限制的作用范围)变量。但是,即使这个数据遵循了你应该知道的访问:
- 使用反射机制,引用对象中被高度信任的代码能够获取并且设置私有的成员。
- 使用序列化,被高度信任的代码能够有效地获取并且设置私有的成员,如果它能够从被序列化对象中访问到相应的数据。
- 在调试的时候,这个数据应该能够被读取。
确保没有任何属于你的方法或者属性会无意识地暴露这些值。
在有些情况下,数据能够出于这个类和它的派生类的被限制访问而被声明成是“被保护的”。但是,你应该采取下列附加的防范措施来防止额外的暴露:
- 对通过被限制到相同汇编集或者通过使用安全声明而被允许的继承类进行代码控制,相关内容将在[保护方法访问]中被描述,同时需要在代码中使用一些身份或者许可来派生你的类。
- 确保所有的派生类都实现了类似的保护或者是被密封的。