Имеет ли переменная конфиденциальность какое-то отношение к безопасности или это просто для удобства программирования? - PullRequest
4 голосов
/ 04 января 2012

В течение многих лет я программировал, и я думаю, что я даже понимаю разницу между публичным, частным и защищенным по большей части, однако эти имена просто вводят в заблуждение?Являются ли эти уровни видимости только для того, чтобы помочь нам не споткнуться о собственные пальцы?Многие языки, которые я запрограммировал, похоже, не соблюдают большинство этих правил, и я никогда не слышал о взломе системы, потому что одна из ваших переменных не была помечена как закрытая.

Я хотел бы знать, что это беспокоит меня много лет.

Ответы [ 3 ]

6 голосов
/ 04 января 2012

Хакер может получить доступ к закрытой переменной, если он может правильно рассчитать смещения памяти. Не слишком сложно.

Эти средства управления доступом охватывают более широкий и в целом другой класс ошибок. Лучшая инкапсуляция упрощает код и облегчает размышления, что очищает путь для выявления других ошибок, которые являются проблемами безопасности. (То есть, косвенно помогает безопасности.)

Код, который сложнее взломать специально, вероятно, сложнее взломать и случайно: -)

2 голосов
/ 04 января 2012

Спецификаторы доступа - это средство заказа исходного кода, а не функция безопасности.

Поскольку переменные-члены класса определены в вашем собственном коде, к ним можно получить доступ несколькими способами (указателями, макросами) независимо от спецификаторов доступа.

1 голос
/ 04 января 2012

Если вы создаете библиотеку для использования другими, вы хотите показать API и скрыть все остальное.Вы не хотите недокументированные "особенности" повсюду.Это может привести к всевозможным ошибкам, а те, в свою очередь, могут создать дыры в безопасности.

Даже если код не для кого-то другого, довольно легко забыть и опрокинуть себя, назначив что-то изпорядок, который был задуман, или мышление переменной означает одно, а значит другое.

Итак, краткий ответ заключается в том, что это всего лишь удобство программирования, но эти удобства программирования могут помочь вам создать более надежный и более безопасный код.

...