Использование переменных для проверки, разрешены ли определенные вещи - PullRequest
0 голосов
/ 19 марта 2012

Я думал о реализации функций включения и выключения определенных вещей на моем сайте, таких как регистрация и регистрация. Я мог бы включить файл с переменными, как так

<?php
$upload = 1;
$register = 1;
?>

А потом, предположим, в моем файле register.php я мог бы выполнить такую ​​проверку

if($register == 1){
//Show form
} else { echo "Registration is disabled" }

Мне было интересно, если это будет проблема безопасности, когда я где-то читал, что материал может быть добавлен к суффиксу URL, чтобы получить тот же эффект Вот так

register.php?register=1

Но это не работает, если глобальные регистры отключены, это большая проблема безопасности?

Ответы [ 4 ]

2 голосов
/ 19 марта 2012

Вам лучше использовать константы вместо переменных, если вы используете их из включенного файла. Константы не могут быть изменены во время выполнения ни при каких обстоятельствах:

define('UPLOAD', 1);
define('REGISTER', 1);

if (defined('REGISTER') && REGISTER === 1) {
  // Registration disabled
} 

Пока register_globals выключено (что и должно быть !!!!), глобальные переменные не могут быть изменены с помощью HTTP-запроса в $_GET,$_POST,$_REQUEST, если вы явно не сделаете это в коде, получив доступ к этим суперглобалам.

2 голосов
/ 19 марта 2012

NO

register.php?register=1 будет доступен только с $_GET['register'] Если вы не используете старую версию PHP с включенным register_globals Спасибо, Лекс

Если вы настраиваете некоторые функции на сервере, я предлагаю вместо этого использовать сеансы.

$_SESSION['upload'] = 1;
$_SESSION['register'] = 1;

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

И register_globals() удален из последней версии PHP 5.4.0, поэтому не используйте его.

1 голос
/ 19 марта 2012

При отключенных глобалах регистров это не проблема. Проблема возникает, если вы получаете ввод, как это:

$ register = $ _GET ['register'];

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

1 голос
/ 19 марта 2012

Пока у вас отключены register_globals, вам не стоит об этом беспокоиться.

...