Дубин В.
Дубин В.дәйексөз келтірді1 ай бұрын
Когда Бьёрн Страуструп выбрал ключевое слово private для обозначения скрытых компонентов классов в C++, он думал, скорее всего, о том, чтобы разработчика не беспокоили запутанные подробности кода других разработчиков, а не о том, как защищать классы и объекты от атак вирусов и троянов. Произвольные преобразования типов и арифметические операции с указателями в C и C++ позволяют легко нарушать разрешения доступа к классам, не нарушая при этом правила языка. Возьмем следующий код: // Код C++ class Finances { private: char creditCardNumber[16]; ... }; main() { Finances finances; // Формирование указателя для получения доступа // к конфиденциальным данным внутри класса char *cardno = (char *)&finances; printf("Card Number = %.16s\n", cardno); } В этой маленькой драме на C++ мы написали код, который нарушает инкапсуляцию класса Finances и извлекает секретную информацию. Подобные фокусы — злоупотребления с нетипизованными указателями — в Java невозможны. Если этот пример кажется вам нереалистичным, подумайте, как важно защищать фундаментальные (системные) классы исполнительной системы от подобных атак. Если ненадежный код сможет повредить компоненты, предоставляющие доступ к реальным ресурсам (к файловой системе, к сети, к оконной системе), то у него появится возможность перехватить номера ваших кредиток.
Программируем на Java
Программируем на Java
·
Дэн Лук
Программируем на Java
Дэн ЛукМарк ЛойПатрик Нимайержәне т.б.
2.4K
1 Ұнайды

Кіру не тіркелу пікір қалдыру үшін

БастыАудиоКомикстерБалаларға арналған