22.1. Когда безопасность имеет значение?
22.1. Когда безопасность имеет значение?
Компьютерные программы — это очень сложные вещи. Даже самая простая программа "Hello World" является на удивление запутанной. Игнорируя все, что происходит в ядре, библиотека С должна отыскать соответствующие совместно используемые библиотеки, загрузить их в систему, инициализировать стандартные методы ввода-вывода. На компьютере, с помощью которого готовилась данная глава, полная программа состояла из 25 системных вызовов. Только один из них оказался вызовом функции write(), который использовался непосредственно для вывода слов "Hello World".
С увеличением функциональности программ очень быстро возрастает их сложность. Большинство реально работающих программ принимают входные данные из нескольких источников (например, из командной строки, файлов конфигурации, терминала) и обрабатывают полученные данные сложными способами. Любая ошибка в процессе может вызвать непредсказуемое поведение, однако опытный программист чаще всего обрабатывает такие сюрпризы без появления нежелательных последствий. Если в эту "адскую смесь" добавить еще несколько сложных библиотек, то любому программисту (не говоря о команде программистов) будет очень трудно полностью представить себе реакцию программы на определенный набор входных данных.
Большинство программ очень внимательно тестируются, для гарантии того, что они дают соответствующие результаты для корректных наборов входных данных. При этом работа большинства программ с неожиданными входными данными проверяется недостаточно[156]. Несмотря на то что при проектировании ядра тщательно учитывается необходимость предотвращения риска для системы из-за неисправностей в пользовательских программах, все же ошибки в некоторых типах программ могут отразиться на целостности системы.
Существуют три типа программ, при создании которых программисты должны постоянно помнить о безопасности.
• Программы, обрабатывающие данные, которые могут поступать из ненадежных источников, очень уязвимы. Такие данные могут содержать скрытые атаки, использующие программные ошибки и вызывающие непредсказуемое поведение программ. Нередко целью таких атак является получение полного доступа к компьютеру для анонимных пользователей. Любая программа, имеющая доступ к данным через сеть (как клиентская, так и серверная) становится потенциальным мишенью для атак. Но даже безобидные программы вроде текстовых процессоров, могут быть поражены через поврежденные файлы данных[157].
• Программы, которые во время запуска могут переключаться между пользовательскими или групповыми контекстами (через биты setuid и setgid в исполняемом файле), несут потенциальную опасность передачи прав и информации привилегированного пользователя другому (непривилегированному) пользователю.
• Любая программа, работающая как системный демон, может вызвать проблему безопасности. Подобные программы работают в системе как привилегированные пользователи (довольно часто они выступают в качестве root), поэтому любое взаимодействие с обычными пользователями подвергает систему опасности.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
То, о чем вы молчите, имеет огромное значение для покупателя
То, о чем вы молчите, имеет огромное значение для покупателя С чем нам действительно нужно разобраться, так это с областью «Скрытое», куда входит информация, которую мы имеем, а клиенты очень хотели бы ее получить.Когда вы в последний раз совершали серьезную покупку, то
Значение имеет лишь результат
Значение имеет лишь результат Мы давно вынашивали идею собрать в одном месте действительно гуру инфобизнеса России. Самых настоящих профессионалов и экспертов, которые могли бы поделиться своей уникальной информацией, опытом и навыками не только в области бизнеса,
Показывайте даже то, что не имеет физического воплощения
Показывайте даже то, что не имеет физического воплощения Еще один интересный прием. Снова обратимся к рис. 11.Если сделать не просто перечень дополнительных опций, а дополнительную гарантию в виде отдельного «виртуального» товара и нарисовать для него красивую картинку,
Время имеет значение
Время имеет значение Буквальные значения времени вводятся в формате #часы:минуты:секунды символ#, где символ - это AM или РМ (означающие до полудня и после полудня соответственно). Например:#10:45:00 РМ##2:3:30 АМ#Печатать незначащие нули, как в #01:02:03 РМ#, не обязательно, но VBA добавит
1.9. Подход также имеет значение
1.9. Подход также имеет значение Когда верное решение очевидно, его следует немедленно использовать — данный подход может показаться работоспособным только в краткосрочной перспективе, однако это путь наименьших усилий в продолжительном периоде. Если не известно, какое
20.3.9. Unix имеет слишком много различных видов имен
20.3.9. Unix имеет слишком много различных видов имен Unix объединила файлы и локальные устройства — они являются просто потоками байтов. Однако сетевые устройства, доступные через сокеты, имеют иную семантику и другое пространство имен. Plan 9 показывает, что файлы вполне можно
Правило 50: Когда имеет смысл заменять new и delete
Правило 50: Когда имеет смысл заменять new и delete Вернемся к основам. Прежде всего зачем кому-то может понадобиться подменять предлагаемые компилятором версии operator new и operator delete? Существуют, по крайней мере, три распространенные причины.• Чтобы обнаруживать ошибки
1.9. Подход также имеет значение
1.9. Подход также имеет значение Когда верное решение очевидно, его следует немедленно использовать — данный подход может показаться работоспособным только в краткосрочной перспективе, однако это путь наименьших усилий в продолжительном периоде. Если не известно, какое
20.3.9. Unix имеет слишком много различных видов имен
20.3.9. Unix имеет слишком много различных видов имен Unix объединила файлы и локальные устройства — они являются просто потоками байтов. Однако сетевые устройства, доступные через сокеты, имеют иную семантику и другое пространство имен. Plan 9 показывает, что файлы вполне можно
Глава 4 Размер имеет значение
Глава 4 Размер имеет значение • Лучше меньше, да… меньше• Какой формат выбрать• Искусство оптимизацииЭта глава предназначена прежде всего для тех, кто пересылает цифровые фотографии по электронной почте или выкладывает их на сайте. В этих ситуациях файлы должны быть
Это не имеет значения
Это не имеет значения Только сутьНаш любимый ответ на вопрос «Почему вы не сделали это или почему вы не сделали то?». Всегда такой: «Поскольку это не имеет значения».Когда мы запустили Campfire, мы слышали некоторые из этих вопросов от людей, впервые проверяющих
10. Когда открыть, а когда закрыть
10. Когда открыть, а когда закрыть Рассмотрев деловые модели, которые поддерживают разработку программного обеспечения с открытыми текстами, мы можем теперь приблизиться к общему вопросу о том, когда исходному коду, с точки зрения экономики, имеет смысл быть «открытым», а
Значение SAP R/3
Значение SAP R/3 В оставшейся части этой главы я опишу выдающиеся свойства и преимущества системы SAP R/3 как ERP-системы. Хотя это и не было предметом обсуждения в главе 2 «Оценка ERP» и главе 3 «Выбор ERP», после тщательной оценки и выбора ERP-системы станет ясно, что по всем критериям
Размер баннера имеет значение
Размер баннера имеет значение Следует отметить, что размер баннера, котроый вы создаете имеет значение.Если вы создаете большой баннер, то он может иметь свои минуса.Во-первых, чем больше размер баннера, тем дольше будет загружаться веб-страница, на котрой расположен