变量隐私实际上与安全性有什么关系,还是只是为了方便编程?

Nic*_*ckJ 4 language-agnostic security private protected public

多年来我一直在编程,我认为我甚至理解公共,私人和受保护的大部分区别,但这些名称是否只是误导?这些能见度水平只是为了帮助我们避免绊倒自己的脚趾吗?我编写的许多语言似乎都没有强制执行大部分规则,而且我从未听说过黑客入侵系统,因为你的一个变量没有标记为私有.

我很想知道它多年来一直困扰着我.

spr*_*aff 6

如果黑客能够正确计算内存偏移量,则可以访问私有变量.不是太难.

这些访问控制涵盖了更广泛且通常不同的错误类别.更好的封装简化了代码并使其更易于推理,从而清除了发现其他安全问题错误的途径.(也就是说,它间接有助于安全.)

有意破坏的代码也可能更难以意外打破:-)