该示例告诉系统:除非代码收到写入 C:\test.tmp 的权限,否则不应当运行。如果代码遇到没有授予该权限的安全策略,那么将引发 PolicyException,并且代码不会运行。您可以确保代码将被授予该权限,并且不必担心由于权限太少而导致的错误。
该示例还告诉系统:不需要其他权限。除此之外,代码将被授予策略选择要授予它的任何权限。虽然额外的权限不会导致损害,但如果某处有安全问题,则拥有较少的权限可以很好地堵住漏洞。带有代码不需要的权限会导致安全问题。
将代码所接收的权限限制为最少特权的另一个方式是列出要拒绝的特定权限。如果您要求所有权限都是可选的,并从该请求中排除特定权限,那么权限通常会被拒绝。
确保状态数据的安全处理敏感数据或作出任何安全决定的应用程序需要使该数据处于自己的控制下,并且不能让其他的潜在恶意代码直接访问该数据。使数据安全地保留在内存中的最佳方式是将其定义为私有或内部(限制在同一程序集的范围内)变量。但是,此数据也服从于您应当知道的访问权:
•在反射时,引用了对象的高度受信任代码可以获得并设置私有成员。
•使用序列化时,如果高度受信任的代码可以通过对象的序列化形式访问相应数据,那么它就可以有效地获得和设置私有成员。
•在调试时,可以读取该数据。
确保自己的任何方法或属性都没有无意地公开这些值。
在某些情况下,数据可以使用“protected”加以保护,这时,只能访问该类及其派生类。但是,由于存在其他公开的可能性,您还应当采取下面的预防措施:
•通过将类的派生限制在同一个程序集内,或使用声明性安全来要求某些标识或权限以便从您的类中派生,从而控制允许哪些代码从您的类中派生(请参阅本文的确保方法访问的安全部分)。
•确保所有派生类都实现了相似的保护或者被密封。
装箱的值类型如果您认为已经分发了无法修改原始定义的类型的副本,有时还可以修改装箱的值类型。返回装箱的值类型时,您所返回的是对值类型的引用,而不是对值类型副本的引用,因而允许调用您代码的代码修改您的变量值。
文章来源于领测软件测试网 https://www.ltesting.net/