Директива register_globals
Вполне вероятно, что Вы уже слышали про директиву register_globals и знаете, что она делает. Если кто-то этого не знает, то Вы узнаете об этом из данной статьи, однако, главная задача этой статьи доказать, что директиву register_globals лучше всегда держать отключённой в целях безопасности.
Директива register_globals позволяет регистрировать переменные, полученные из GET-запроса. Допустим, был такой запрос: index.php?a=15. Таким образом, безусловно, создаётся переменная $_GET["a"] и переменная a. Вот создание переменной a и произошло в результате включённой директивы register_globals.
Теперь о том, почему данную директиву надо всегда держать отключённой. Предположим, что Вы делаете авторизацию пользователя, и Вы написали такой код:
<?php
if (($_POST["login"] == "Admin") && ($_POST["password"] == "123456")) $check_user = true;
if ($check_user) echo "Авторизация прошла успешно";
else echo "Ошибка авторизации";
?>
Теперь если файл называется, например, auth.php, то, обратившись к нему следующим образом: auth.php?check_user=1, то получится успешная авторизация, независимо от того, какие логин и пароль были отправлены и были ли отправлены вообще.
Безусловно, данный пример является слегка мистическим, поскольку так никто не пишет (хотя бы из-за отсутствия else $check_user = false;), однако, данный пример наглядно показывает, к чему может привести включённая директива register_globals.
Теперь о том, как же отключить директиву register_globals. Для этого надо добавить в файл .htaccess всего одну строчку:
php_value register_globals 0
Есть небольшая вероятность, что если директива была раньше включена, то у Вас может что-нибудь сломаться, поэтому всё внимательно проверьте и устраните все возникшие ошибки, поскольку безопасность того действительно стоит.
-
- Михаил Русаков
Комментарии (2):
Mihail u vas opechatka v etoj statje , v pervom obzace " ob ja napishu v etoj statje".
Ответить
Уже исправил, спасибо!
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.