<?
// массив паролей админов сайта
$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;
ЗЫ
второй пример я назвал правильным лишь с точки зрения инициализации переменных, а не как скрипта авторизации