-Поиск по дневнику

Поиск сообщений в All_For_Web

 -Подписка по e-mail

 

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 19.01.2006
Записей: 67
Комментариев: 250
Написано: 15


PHP: пишем авторизацию на кукисах

Пятница, 03 Февраля 2006 г. 12:38 + в цитатник
dark_man05 все записи автора источник: http://www.reactor5.ru/viewtopic.php?p=41

Предлагаю базу для простой и надежной авторизации (буквально в три строки кода) на cookies (например для админки какого-нибудь скрипта)
---------------
итак, сначала набор файлов, потом разъяснения.

conf.php
Код:
PHP:

define
("ADMIN_LOGIN","admin"); //логин админа 
define("ADMIN_PASS","password"); //пароль админа
font>



login.php
Код:
PHP:

<form action="dologin.php" method="post"
login
<
input type="text" /> 
password
<
input type="password" /> 
<
input type="submit" value="вход" /> 
</
form>
font>





index.php
Код:
PHP:

include("conf.php"); 
include(
"auth.php"); 

//далее идут коды, которые должны работать в защищенной части админки
font>




auth.php
Код:
PHP:

if((md5(ADMIN_PASS.$_SERVER["REMOTE_ADDR"])!=$_COOKIE["APass"]) || ADMIN_LOGIN!=$_COOKIE["ALogin"]) { 
  
header("Location: login.php"); 
  exit; 
}
font>



dologin.php
Код:
PHP:

include("conf.php"); 

if(
get_magic_quotes_gpc()){ 
  
$_POST[password]=stripslashes($_POST[password]); 


if((
$_POST[login]==ADMIN_LOGIN) && ($_POST[password]==ADMIN_PASS)) { 
  
setcookie("ALogin",ADMIN_LOGIN); 
  
setcookie("APass",md5(ADMIN_PASS.$_SERVER["REMOTE_ADDR"])); 
  
header("Location: index.php"); 
} else { 
  
setcookie("ALogin",""); 
  
setcookie("APass",""); 
  
sleep(1); 
  
header("Location: index.php"); 
  exit; 
}
font>




---------------
Как все это работает:
Предположим, все эти скрипты находятся в папке admin
Заходя по адресу путь_к _скрипту/admin/,
происходит вызов index.php, из него включается conf.php (логин, пароль) и auth.php (атворизация)

что делает auth.php:
Код:

if((md5(ADMIN_PASS.$_SERVER["REMOTE_ADDR"])!=$_COOKIE["APass"]) || ADMIN_LOGIN!=$_COOKIE["ALogin"]) {
header("Location: login.php");
exit;


если не переданы куки ALogin и APass и они не совпадают с
паролем и логином администратора, происходит переадресация на login.php (форма входа)

Обратите внимание! В APass хранится не пароль админа, и даже не зашифрованный пароль, а комбинация пароль+IP адрес входа, зашифрованная функцией md5. Куки APass устанавливается в dologin.php, если был нормальный вход.
Такое шифрование гарантирует практически невозможность подобрать пароль, даже если куки APass перехвачен. Даже если его попытаются использовать, вряд ли это удастся, т.к. он завязан на IP адрес вошедшего админа, и вероятность того, что хакер сидит на одном IP с админом, крайне мала.

В dologin.php:
- проверяется соответствие логина и пароля, если все нормально,
происходит установка куки (шифруется md5() IP адрес и пароль) и переадресация на index.php. Если логин и пароль не совпал, происходит пауза 1 секунда sleep(1); затем переадресация на форму входа login.php.
Зачем пауза? Если кто-то решит подбирать пароль с помощью брутфорс-программы или скрипта, ему будет устроена сладкая жизнь навечно. Если админ вдруг ошибется при вводе, то пауза в 1 сек. будет для него практически незаметна.
Рубрики:  Web-билдинг (HTML, PHP, Java и др)

Антон_Ч   обратиться по имени Суббота, 11 Февраля 2006 г. 17:29 (ссылка)
Я заюзаю но нескоро, еще не приступил к разграничению прав пользователей, потом скажу свое мнение, но всё равно, сенькс.
Ответить С цитатой В цитатник
 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку