PHP - статьи


Register_globals=On? Вы в опасности!


,

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

Что представляет собой register_globals?
Это опция в php.ini, которая указывает на необходимость регистрации переменных, полученных методом POST или GET в глобальный массив $GLOBALS.

Для ясности приведу пример при register_globals=On.
Есть файл "index.php" с содержимым:

<?
echo $asd.' - локальная переменная<br>';
echo $GLOBALS['asd'].' - ссылка в глобальном массиве $GLOBALS<br>';
echo $_GET['asd'].' - $_GET["asd"]';
?>

В адресной строке напишем: index.php?asd=123

Получим:

123 - локальная переменная

123 - ссылка в глобальном массиве $GLOBALS

123 - $_GET['asd']

Как мы видим, создались 2 переменные: одна локальная (+ ссылка в $GLOBALS), другая в массиве $_GET. Многие не используют массив $_GET вообще, они продолжают обрабатывать переменную $asd после получения ее извне.

Но давайте вдумаемся, зачем нам "загрязнять" массив $GLOBALS? Для этого у нас есть специальные массивы, хранящие данные, переданные методами GET (массив $_GET) и POST (массив $_POST).

Тот же самый пример, но при register_globals=Off:

- глобальная переменная

- ссылка в глобальном массиве $GLOBALS

123 - $_GET['asd']

Т.о. не была создана локальная переменная и для манипулирования с мы должны использовать массив $_GET.

Возможно, уже сейчас вы изменили свое мнение о register_globals.

Вероятно, вам придется, что-то переписать в своих программах, но оно того стоит.

А теперь я расскажу вам, как взломщик может воспользоваться этой опцией в своих целях, т.е. при register_globals=On.

Начну от простого к сложному.
Часто мы видим предупреждения:


Notice: Undefined variable: asd(название переменной) in ****

Что это значит? Это значит, что переменная $asd не была определена явно.




Начало    Вперед



Книжный магазин