Это звучит, как вы в основном ищете учебную информацию, так вот дите объяснение того, что register_globals
имел обыкновение делать .. почему он был там ... и почему это уже не так (и вы не должны его включать).
Переменные приходят через $_GET
и $_POST
(или $_REQUEST
) массивов ... что register_globals сделал, было сделать программирование проще, принимая все элементы этих массивов, и положить их в глобальное пространство имен - то есть, что делает " регулярные "глобальные переменные из них - так что $_GET['includes']
можно было бы легко назвать просто $includes
.
Это было в счастливые дни интарбла, когда интернет не распространился почти так же, как сейчас, технология не так хорошо знала, было меньше людей, которые знали, как взламывать сайты, и нет один писал о червях, которые автоматически взламывали бы сайты.
Это было ужасно неуверенно - потому что, если ленивый программист не потрудился правильно инициализировать все переменные (например, если установить, включен ли $ include, а затем использовать его, прежде чем он будет правильно инициализирован), любая из этих неверно инициализированных переменных может быть настроен на то, что хотел хакер. PHP был довольно новым, и многие любители писали код - часто также делали такие вещи, как забывание правильно избегать переменных в SQL-запросах. Таким образом, один недостаток безопасности, как правило, легко отслеживать с другим, позволяя хакеру (или автоматическому сценарию) получать более глубокие и более глубокие уровни доступа.
Около 2001 года люди начали очень серьезно предупреждать о последствиях register_globals - так что это довольно старая проблема, но все же хорошо быть в поиске, особенно с приложениями, которые не имеют солидной репутации для безопасность.