Java 访问修饰符的安全影响(公共、私有、内部、受保护)

Java 访问修饰符的安全影响(公共、私有、内部、受保护),java,c#,security,access-modifiers,Java,C#,Security,Access Modifiers,C#、Java和其他编程语言中类、属性或方法的访问修饰符是否确实对应用程序的安全性有影响?它们是否也以某种方式防止未经授权的访问?或者它们仅仅是一个清晰和支持编程的工具?访问修饰符的主要目的是强制执行特定的设计,而不是任何类型的安全性。不,访问修饰符不提供安全保护。它们只是为了方便开发人员,例如,它们有助于实施良好的编码实践,并有助于编程模式 通过使用Java/C#和其他语言中的反射,很容易访问不可访问的修饰符。与安全性一样,有必要了解您试图保护的内容。了解一下你的威胁模型 因此,是的,访问修饰

C#、Java和其他编程语言中属性方法访问修饰符是否确实对应用程序的安全性有影响?它们是否也以某种方式防止未经授权的访问?或者它们仅仅是一个清晰和支持编程的工具?

访问修饰符的主要目的是强制执行特定的设计,而不是任何类型的安全性。

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


通过使用Java/C#和其他语言中的反射,很容易访问不可访问的修饰符。

与安全性一样,有必要了解您试图保护的内容。了解一下你的威胁模型

因此,是的,访问修饰符对于处理移动代码的Java2安全模型是绝对关键的。例如,如果untrusted可以清除
java.lang.System.security
字段,那么这就结束了(更新:我认为特定示例不再有效,但原则仍然有效)。访问修饰符防止通过直接引用进行非法访问,并且通过运行时安全检查,即使通过反射进行访问

在其他情况下,它只是关于代码质量。软件安全漏洞几乎可以归结为质量差的代码,尽管有“我们认真对待安全”的借口。因此,访问修饰符在任何地方都发挥着作用