Forum Webscript.Ru

Программирование => PHP => Тема начата: pavel от 18 Октября 2003, 17:02:33

Название: Вопрос по защите переменных
Отправлено: pavel от 18 Октября 2003, 17:02:33
Каким образом можно защитить переменные от изменения их запросом http при запуске скрипта
Название: Вопрос по защите переменных
Отправлено: Макс от 18 Октября 2003, 17:32:37
1. register_globals = off
2. обязательная инициализация всех переменных, перед их использованием
Название: Вопрос по защите переменных
Отправлено: Художник от 18 Октября 2003, 18:25:50
Макс

2. обязательная инициализация всех переменных, перед их использованием

вот отсюдого можеш по подробнее ?

если можно приведи пример
Название: Вопрос по защите переменных
Отправлено: Макс от 19 Октября 2003, 11:42:30

// массив паролей админов сайта
$admins[] = array("login"=>"admin","password"=>"пароль");
$admins[] = array("login"=>"admin2","password"=>"пароль_2");

// авторизация админа
foreach($admins as $admin) {
   if (admin[\'login\'] == $_GET[\'login\'] && $admin[\'password\'] == $_GET[\'password\']) {
      // админ ввел правильные логин и пароль
      $good_admin = 1;
  }
}


if ($good_admin == 1) {
   // показываем секретные данные
} else exit;

в данном примере 2 переменный ен инициализированы:
 - массив admins
 - переменная $good_admin;
Скрипт взламывается 2-мя способами:
http://server.com/secret_script.php?good_admin=1
или
http://server.com/secret_script.php?admins[10][login]=maxim&admins[10][password]=mypassword&login=maxim&password=mypassword

Конечно это все для register_globals = on;
правильно надо так:

// массив паролей админов сайта
$admins = array(); // !!! инициализация массива
$admins[] = array("login"=>"admin","password"=>"пароль");
$admins[] = array("login"=>"admin2","password"=>"пароль_2");

// авторизация админа
$good_admin = 0; // !!! инициализация переменной
foreach($admins as $admin) {
   if (admin[\'login\'] == $_GET[\'login\'] && $admin[\'password\'] == $_GET[\'password\']) {
      // админ ввел правильные логин и пароль
      $good_admin = 1;
  }
}


if ($good_admin == 1) {
   // показываем секретные данные
} else exit;


ЗЫ
второй пример  я назвал правильным лишь с точки зрения инициализации переменных, а не как скрипта авторизации