Forum Webscript.Ru
Программирование => PHP => Тема начата: pavel от 18 Октября 2003, 17:02:33
-
Каким образом можно защитить переменные от изменения их запросом http при запуске скрипта
-
1. register_globals = off
2. обязательная инициализация всех переменных, перед их использованием
-
Макс
2. обязательная инициализация всех переменных, перед их использованием
вот отсюдого можеш по подробнее ?
если можно приведи пример
-
// массив паролей админов сайта
$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;
ЗЫ
второй пример я назвал правильным лишь с точки зрения инициализации переменных, а не как скрипта авторизации