Новые книги

В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
Master the fundamental concepts of real-time embedded system programming and jumpstart your embedded projects with effective design and implementation practices. This book bridges the gap between higher abstract modeling concepts and the lower-level programming aspects of embedded systems development. You gain a solid understanding of real-time embedded systems with detailed practical examples and industry wisdom on key concepts, design processes, and the available tools and methods.

Delve into the details of real-time programming so you can develop a working knowledge of the common design patterns and program structures of real-time operating systems (RTOS). The objects and services that are a part of most RTOS kernels are described and real-time system design is explored in detail. You learn how to decompose an application into units and how to combine these units with other objects and services to create standard building blocks. A rich set of ready-to-use, embedded design “building blocks” is also supplied to accelerate your development efforts and increase your productivity.

Experienced developers new to embedded systems and engineering or computer science students will both appreciate the careful balance between theory, illustrations, and practical discussions. Hard-won insights and experiences shed new light on application development, common design problems, and solutions in the embedded space. Technical managers active in software design reviews of real-time embedded systems will find this a valuable reference to the design and implementation phases.

Qing Li is a senior architect at Wind River Systems, Inc., and the lead architect of the company’s embedded IPv6 products. Qing holds four patents pending in the embedded kernel and networking protocol design areas. His 12+ years in engineering include expertise as a principal engineer designing and developing protocol stacks and embedded applications for the telecommunications and networks arena. Qing was one of a four-member Silicon Valley startup that designed and developed proprietary algorithms and applications for embedded biometric devices in the security industry.

Caroline Yao has more than 15 years of high tech experience ranging from development, project and product management, product marketing, business development, and strategic alliances. She is co-inventor of a pending patent and recently served as the director of partner solutions for Wind River Systems, Inc.

About the Authors

Безопасность

Учебник РНР
Назад Вперёд

Глава 4. Безопасность

Содержание
Обзор
Двоичный CGI
Apache-модуль
Безопасность файловой системы
Безопасность баз данных
Сообщение об ошибке
Использование Register_Globals
Данные, отправляемые пользователем
Скрытие PHP
Оставаться на уровне

PHP это мощный язык и интерпретатор, подключён ли он к web-серверу как модуль или запускается как отдельный двоичный CGI. Он способен выполнять доступ к файлам, исполнять команды и открывать сетевые соединения на сервере. Эти свойства делают всё запускаемое на web-сервере небезопасным по умолчанию. PHP разработан специально как более безопасный язык для написания CGI-программ, чем языки Perl или C, с корректным выбором опций конфигурации времени компиляции и времени выполнения, удобным кодированием, что даёт вам сочетание свободы и необходимой защищённости.

Поскольку имеется много способов использования PHP, имеются и множество опций конфигурации, управляющих его поведением. Большое количество опций гарантирует, что вы можете использовать PHP для различных целей, но это также означает, что имеются комбинации этих опций и конфигураций серверов, которые дают незащищённую инсталяцию.

Гибкость конфигурации PHP эквивалентна гибкости кода. PHP можно использовать для построения законченных серверных приложений со всеми возможностями пользователя оболочки/shell, или использовать его для простых серверных включений с минимальным риском в жёстко контролируемой среде. То, как вы выстроите окружение и насколько безопасной оно будет, в большой степени зависит от PHP-разработчика.

Эта глава начинается с общего рассмотрения проблем обеспечения безопасности, различных комбинаций опций конфигурации и ситуаций, когда они могут безопасно использоваться. Также даётся описание кодирования для различных уровней безопасности.

Обзор

Абсолютно безопасных систем не существует, поэтому используется некий баланс риска и удобства использования. Если каждая переменная, отправляемая пользователем, требует двух форм биометрической проверки (такой как сканирование сетчатки глаза и отпечатки пальцев), вы получите предельно высокий уровень безопасности. Заполнение очень сложной формы займёт полчаса, что побудит пользователей находить способы обойти защиту.

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

Обычно плохо помнят фразу: надёжность системы определяется её самым слабым звеном. Если все транзакции основательно защищены на основе логинга по времени, размещению, типу транзакции etc., но пользователь проверяется только по единственной куке, надёжность связки пользователя и log'а транзакций будет серьёзно нарушена.

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

Internet заполнен людьми, пытающимися сделать себе имя на том, что они разрушат ваш код, завалят ваш сайт, разместят на нём неподходящее содержимое, и вообще желающими сделать вашу жизнь интересной. И неважно, маленький или большой у вас сайт, вы всегда являетесь мишенью, находясь online и имея сервер, с которым можно соединиться. Многие программы-кракеры невелики по размеру, они просто просматривают массивы блоков IP, выискивая жертву. Не будьте одной из них.


Назад Оглавление Вперёд
Конфигурация Вверх Двоичный CGI