Что такое register_globals в PHP?

Кто-нибудь может привести несколько примеров того, что register_globals ?
И считается ли global $ user_id; регистром глобальным?

61
задан Mayeenul Islam 13 January 2014 в 18:29
поделиться

3 ответа

Если у вас есть register_globals=on, все, что передается через GET, POST или COOKIE, автоматически отображается как глобальная переменная в коде, это может иметь последствия для безопасности.

Т.е. вы нажимаете на url test.php?access_level=100 и у вас будет $access_level = 100 в PHP.

Когда вы делаете глобальную переменную $somevar, вы создаете свою собственную глобальную переменную, что обычно не представляет большой проблемы.

15
ответ дан 24 November 2019 в 17:07
поделиться

Параметр register_globals определяет, как вы получаете доступ к форме, серверу и среде. переменные.

register_globals=On :

Вы можете получить доступ к атрибуту формы без глобальных массивов (GET[], POST[] & REQUEST[] )

пример: http://www.example.com/one .php?myinput=abc

Вы можете получить доступ напрямую в one.php

echo $myinput; // abc

register_globals=Off :

Вы должны получить доступ ко всем атрибутам только через глобальные массивы.

пример: http://www.example.com/one.php?myinput=abc

Вы должны получить доступ в one.php

echo $_GET['myinput']; //abc
9
ответ дан 24 November 2019 в 17:07
поделиться

Директива register_globals:

register_globals — это внутренняя настройка PHP, которая регистрирует элементы массива $_REQUEST как переменные. Если вы отправляете значение в форме через POST или GET, значение этого ввода будет автоматически доступно через переменную в скрипте PHP, названную в честь имени поля ввода. .

Другими словами, если вы отправили форму, содержащую текстовое поле username, выражение ($username === $_POST['username']) в самом начале скрипта вернет true.

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

Классический пример:

if(user_is_admin($user))
{
    $authorized = true;
}

if($authorized)
{
    // let them do anything they want
}

Теперь, если вы посетили этот скрипт в веб-браузере и на сервере была включена register_globals, вы могли бы просто добавить ?authorized=1 к URL-адресу. и режим бога будет включен!

Ключевое слово global:

global — это ключевое слово, имеющее мало общего с register_globals.

Вот пример его использования:

$foo = 'bar';

baz();

function baz()
{
    echo $foo; // PHP warns you about trying to use an uninitialized variable
               // and nothing is output (because $foo doesn't exist here)
}

buzz();

function buzz()
{
    global $foo; // Enables the use of $foo in this scope

    echo $foo; // Prints 'bar' to screen
}
92
ответ дан 24 November 2019 в 17:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: