Суперглобальный массив $_SERVER. Недомыслие Что он делает

Возможные атаки

Использование PHP как бинарного CGI-приложения является одним из вариантов, когда по каким-либо причинам нежелательно интегрировать PHP в веб-сервер (например Apache) в качестве модуля, либо предполагается использование таких утилит, как chroot и setuid для организации безопасного окружения во время работы скриптов. Такая установка обычно сопровождается копированием исполняемого файла PHP в директорию cgi-bin веб-сервера. CERT (организация, следящая за угрозами безопасности) CA-96.11 рекомендует не помещать какие-либо интерпретаторы в каталог cgi-bin. Даже если PHP используется как самостоятельный интерпретатор, он спроектирован так, чтобы предотвратить возможность следующих атак:

    Доступ к системным файлам: http://my.host/cgi-bin/php?/etc/passwd

    Данные, введенные в строке запроса (URL) после вопросительного знака, передаются интерпретатору как аргументы командной строки согласно CGI протоколу. Обычно интерпретаторы открывают и исполняют файл, указанный в качестве первого аргумента.

    В случае использования PHP посредством CGI-протокола он не станет интерпретировать аргументы командной строки.

    Доступ к произвольному документу на сервере: http://my.host/cgi-bin/php/secret/doc.html

    Согласно общепринятому соглашению часть пути в запрошенной странице, которая расположена после имени выполняемого модуля PHP, /secret/doc.html , используется для указания файла, который будет интерпретирован как CGI-программа Обычно, некоторые конфигурационные опции веб-сервера (например, Action для сервера Apache) используются для перенаправления документа, к примеру, для перенаправления запросов вида http://my.host/secret/script.php интерпретатору PHP. В таком случае веб-сервер вначале проверяет права доступа к директории /secret , и после этого создает перенаправленный запрос http://my.host/cgi-bin/php/secret/script.php . К сожалению, если запрос изначально задан в полном виде, проверка на наличие прав для файла /secret/script.php не выполняется, она происходит только для файла /cgi-bin/php . Таким образом, пользователь имеет возможность обратиться к /cgi-bin/php , и, как следствие, к любому защищенному документу на сервере.

    В PHP, указывая во время компиляции опцию --enable-force-cgi-redirect , а таке опции doc_root и user_dir во время выполнения скрипта, можно предотвратить подобные атаки для директорий с ограниченным доступом. Более детально приведенные опции, а также их комбинации будут рассмотрены ниже.

Вариант 1: обслуживаются только общедоступные файлы

В случае, если на вашем сервере отсутствуют файлы, доступ к которым ограничен паролем либо фильтром по IP-адресам, нет никакой необходимости использовать данные опции. Если ваш веб-сервер не разрешает выполнять перенаправления либо не имеет возможности взаимодействовать с исполняемым PHP-модулем на необходимом уровне безопасности, вы можете использовать опцию --enable-force-cgi-redirect во время сборки PHP. Но при этом вы должны убедиться, что альтернативные способы вызова скрипта, такие как непосредственно вызов http://my.host/cgi-bin/php/dir/script.php либо с переадресацией http://my.host/dir/script.php , недоступны.

В веб-сервере Apache перенаправление может быть сконфигурировано при помощи директив AddHandler и Action (описано ниже).

Вариант 2: использование --enable-force-cgi-redirect

Эта опция, указываемая во время сборки PHP, предотвращает вызов скриптов непосредственно по адресу вида http://my.host/cgi-bin/php/secretdir/script.php . Вместо этого, PHP будет обрабатывать пришедший запрос только в том случае, если он был перенаправлен веб-сервером.

Обычно перенаправление в веб-сервере Apache настраивается при помощи следующих опций:

Action php-script /cgi-bin/php AddHandler php-script .php

Эта опция проверена только для веб-сервера Apache, ее работа основывается на установке в случае перенаправления нестандартной переменной REDIRECT_STATUS , находящейся в CGI-окружении. В случае, если ваш веб-сервер не предоставляет возможности однозначно идентифицировать, является ли данный запрос перенаправленным, вы не можете использовать описываемую в данном разделе опцию и должны воспользоваться любым другим методом работы с CGI-приложениями.

Вариант 3: использование опций doc_root и user_dir

Размещение динамического контента, такого как скрипты либо любые другие исполняемые файлы, в директории веб-сервера делает его потенциально опасным. В случае, если в конфигурации сервера допущена ошибка, возможна ситуация, когда скрипты не выполняются, а отображаются в браузере, как обычные HTML-документы, что может привести к утечке конфиденциальной информации (например, паролей), либо информации, являющейся интеллектуальной собственностью. Исходя из таких соображений, многие системные администраторы предпочитают использовать для хранения скриптов отдельную директорию, работая со всеми размещенными в ней файлами по CGI-интерфейсу.

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

Вы можете установить корневую директорию для PHP-скриптов, настроив параметр doc_root в конфигурационном файле , либо установив переменную окружения PHP_DOCUMENT_ROOT . В случае, если PHP используется посредством CGI, полный путь к открываемому файлу будет построен на основании значения переменной doc_root и указанного в запросе пути. Таким образом, вы можете быть уверены, что скрипты будут выполняться только внутри указанной вами директории (кроме директории user_dir , которая описана ниже).

Еще одна используемая при настройке безопасности опция - user_dir . В случае, если переменная user_dir не установлена, путь к открываемому файлу строится относительно doc_root . Запрос вида http://my.host/~user/doc.php приводит к выполнению скрипта, находящегося не в домашнем каталоге соответствующего пользователя, а находящегося в подкаталоге doc_root скрипта ~user/doc.php (да, имя директории начинается с символа ~).

Но если переменной public_php присвоено значение, например, http://my.host/~user/doc.php , тогда в приведенном выше примере будет выполнен скрипт doc.php , находящийся в домашнем каталоге пользователя, в директории public_php . Например, если домашний каталог пользователя /home/user , будет выполнен файл /home/user/public_php/doc.php .

Установка опции user_dir происходит независимо от установки doc_root , таким образом вы можете контролировать корневую директорию веб-сервера и пользовательские директории независимо друг от друга.

Вариант 4: PHP вне дерева веб-документов

Один из способов существенно повысить уровень безопасности - поместить исполняемый модуль PHP вне дерева веб-документов, например в /usr/local/bin . Единственным недостатком такого подхода является то, что первая строка каждого скрипта должна иметь вид:

#!/usr/local/bin/php

Также необходимо сделать все файлы скриптов исполняемыми. Таким образом, скрипт будет рассматриваться так же, как и любое другое CGI-приложение, написанное на Perl, sh или любом другом скриптовом языке, который использует дописывание #! в начало файла для запуска самого себя.

Что бы внутри скрипта вы могли получить корректные значения переменных PATH_INFO и PATH_TRANSLATED , PHP должен быть сконфигурирован с опцией --enable-discard-path .



<<< Назад Содержание Вперед >>>
Есть еще вопросы или что-то непонятно - добро пожаловать на наш

Недомыслие — это когда от страсти становится не до мыслей.

Смешные афоризмы

Недомыслие как качество личности – склонность не додумывать последствия своих действий; вести себя недостаточно обдуманно, глупо, неосмысленно; неспособность глубоко и основательно мыслить, правильно понимать что-либо.

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

И, повернувшись к сыну, он сказал: - Запомни этот урок. Никогда не руби дерево зимой. Никогда не принимай решения по недомыслию, в неподходящее время или когда находишься в плохом состоянии души. Жди. Будь терпеливым, плохие времена пройдут. Помни, что весна возвратится.

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

Недомыслие – союзник идиотства, бестолковости, дурости и безмозглости.

Парень, разыгрывая любознательность, спрашивает у симпатичной стюардессы: - Девушка, а что означает ТУ-154-2Б? – Сам что ли не можешь додуматься? Ну, ТУ - это значит, что самолет выпущен конструктором Туполевым, 150 - количество мест в салоне, а 4 - это сколько членов экипажа. - А 2Б? – Ну, видно недомыслие твой конёк! Это мы с Маринкой.

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

Недомыслие – отработанный способ доставить неудобства своему окружению.

В. Щлахтер говорит, что очень часто мы недомыслие воспринимаем за тупость. Или вообще за скотство. Например, водитель выехал на загруженный перекресток. Он перекрыл движение всем, кто стоит на боковой дороге и ждет зеленого сигнала светофора. Но от это сделал, скорее всего, не со злости, и не потому, что он тупая подлая скотина. Он просто не утрудил свою несчастную головушку додумать последствия. Теперь все сигналят ему (чаще ей!), называют самыми нелестными эпитетами из неформальной лексики.

— Оставь коту побольше воды, меня три дня не будет, — сообщает мама. И сынок привозит коту упаковку пластиковых полуторалитровых бутылок. Пей, котяра! То, что коту не под силу открыть бутылку и напиться из нее сыну даже в голову не приходит. Попросили побольше воды — он и принес побольше, какие проблемы? Он это сделал не от тупости. И не от ненависти к несчастному коту. От недомыслия!

Недомыслие приходит в ум гораздо раньше здравомыслия. Оно всегда сопровождается поспешными суждениями.

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

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

Недомыслие – бич людей, думающих только о своих интересах.

Прапорщик спрашивает у солдата: - Что нужно делать при вспышке ядерного взрыва? - Лечь ногами к вспышке и накрыться руками - отвечает тот. - Неправильно. Нужно вытянуть вперед руки с автоматом, чтобы расплавленный металл не капал на казенные сапоги.

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

Муж вернулся из командировки. Дома никого. Решил спрятаться, чтобы сделать сюрприз жене. Вдруг видит, в квартиру входит жена с каким-то мужчиной. Заходят в спальню. Дверь закрывается, муж скорее к замочной скважине. И видит, как жена целуется с этим мужчиной, он снимает с нее всю одежду, бросаются оба на кровать, он снимает с себя одежду, а трусы бросает в сторону входной двери, где прячется муж, и они, повиснув на ручке, закрывают мужу замочную скважину и весь обзор. И тут муж с досадой думает: — Ну, вот зря день потерял, опять полная неопределенность!

Петр Ковалев

Ремонт полов