【发布时间】:2015-09-26 06:23:40
【问题描述】:
类、属性或方法的访问修饰符在C#、Java和其他编程语言中实际使用对应用程序的安全性有影响吗?它们是否还以某种方式防止未经授权的访问?或者它们只是用于清晰和适当编程的工具?
【问题讨论】:
标签: java c# security access-modifiers
类、属性或方法的访问修饰符在C#、Java和其他编程语言中实际使用对应用程序的安全性有影响吗?它们是否还以某种方式防止未经授权的访问?或者它们只是用于清晰和适当编程的工具?
【问题讨论】:
标签: java c# security access-modifiers
不,访问修饰符不提供安全保护。它们只是为了方便开发人员而存在,例如它们有助于实施良好的编码实践并有助于编程模式。
在 Java/C# 和其他语言中使用反射很容易访问其他无法访问的修饰符。
【讨论】:
访问修饰符的主要目的是强制执行特定的设计,而不是任何类型的安全性。
【讨论】:
与安全性一样,有必要了解您要保护的内容。了解您的威胁模型。
所以,是的,访问修饰符对于 Java 2 安全模型来说是绝对关键的,用于处理移动代码。例如,如果 untrusted 可以清除 java.lang.System.security 字段,那么这就结束了(更新:我相信特定示例不再有效,但原则仍然存在)。访问修饰符可防止通过直接引用进行非法访问,并且通过运行时安全检查,即使通过反射访问。
在其他情况下,它只是关于代码质量。软件安全漏洞几乎可以归结为劣质代码,尽管有各种“我们认真对待安全”的借口。所以访问修饰符无处不在。
【讨论】: