访问修饰符(public,private,internal,protected)的安全影响

8

在C#、Java和其他编程语言中,属性方法访问修饰符实际上对应用程序的安全性有影响吗?它们是否在某种程度上防止未经授权的访问?还是只是用于清晰和正确地编程的工具?

3个回答

11

不,访问修饰符并不提供安全保护。它们仅为开发人员方便而存在,例如它们有助于实施良好的编程实践和编程模式。

在Java/C#和其他语言中,使用反射可以轻松访问原本无法访问的修饰符。


3

访问修饰符的主要目的是强制实现特定的设计,而不是任何形式的安全性。


-2

在安全方面,了解你要保护的内容是非常必要的。要有一些关于你的威胁模型的想法。

因此,访问修饰符对于处理移动代码的Java 2安全模型绝对至关重要。例如,如果不受信任的人可以清除java.lang.System.security字段,那么就结束了(更新:我相信该特定示例不再适用,但原则仍然存在)。访问修饰符通过直接引用和运行时安全检查防止非法访问,即使通过反射访问也是如此。

在其他情况下,这只是关于代码质量。软件安全漏洞几乎都是由于质量差的代码造成的,尽管有所有“我们认真对待安全”的借口。因此,访问修饰符在各个方面都发挥着作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接