Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Нужен совет по созданию авторизации

10K
04 января 2008 года
ChesnoK
57 / / 18.07.2006
Здравстуйте, вот решил зделать на сайте систему авторизации, пока только для админа. По сути я хочу узнать правильный алгоритм по которому следует всё это делать да и в безопасности всего этого я тож чайник, никогда раньше этого не делал. В общем мой алгорит таков: вводим логин с пасвордом, в файле acess.php это всё обрабатывается и если логин с пасвордом верны то в сессию записываем логин и пасворд, далее везде проверяем существование переменных в сессии, если существуют, то проверяем правильность их значений, если всё правильно то всё гут, если нет - отправляем на авторизацию.
Вот собственно код acess.php
Код:
<?php
session_start();
# Выход из админского раздела
function close()
{
 session_unregister('pass');
 session_unregister('login');
 Header("Location: index.php");
 die;
}

if(!empty($_GET['action'])) { $action = $_GET['action']; }
if($action == "exit")
{
 close();
}
# если не чпокнули то в шлём в попу
if(empty($_POST['chpok'])) { print "fuck off"; die; }

include("config.php");
$login = $_POST['login'];
$pass = $_POST['pass'];

# если пасворд или логин не правильный то ясен пень што делаем
if(($login != $admin_login) or ($pass != $admin_pass))
{  
 $_SESSION['err'] = "enter_err";
 Header("Location: index.php");
 die;
}

# если пасворд правильный убираем собщение об ошибке и отправляем на index.php
session_unregister('err');
$_SESSION['pass'] = $pass;
$_SESSION['login'] = $login;
Header("Location: index.php?action=admin");

# если просто запрошен файл acess.php посылаем в попу
if(!defined("IN_ADMIN")) { print "fuck off"; die; }

?>


Только не смейтесь над этим :)
15
05 января 2008 года
shaelf
2.7K / / 04.05.2005
Более дурного, нежеле запись пароля куда либо я не видел. Достаточно один раз проверить и записать флаг об авторизации + те данные, которые тебе потом могут понадобиться (логин, дата последнего входа и т.д.) + register globals off. Т.к. сессии хранятся на сервере, то доступа к ним нет (увод сессии и подсовывание линка в расчёт сейчас не берём). Можно конечно ещё делать хеш из логин + IP + ещё что-то...
10K
05 января 2008 года
ChesnoK
57 / / 18.07.2006
Мда... с пасвордом я лоханулся.... а вот ещё вопросик: после записи об авторизации в сессию есть смысл в будущем проверять соответствие логин-пароль? или просто доверять тому что в сессии?
Потом ещё вопросик: если register globals off, то регистрация переменных в сессии не пашет ведь так? а как тогда быть?
И ещё один вопрос: если отключены куки как подключиться к сессии?
244
05 января 2008 года
UAS
2.0K / / 19.07.2006
>> если register globals off, то регистрация переменных в сессии не пашет ведь так?
Первый раз слышу.. По крайней мере что мешает использовать $_SESSION['variable'] = 'value';??

>> если отключены куки как подключиться к сессии?
читай мануал. если отключены cookie, то ID сессии будет дописываться ко всем URLам страницы
10K
05 января 2008 года
ChesnoK
57 / / 18.07.2006
Про куки имел ввиду немного другое... но ладно, т.е. не надо проверять включены куки или нет, php сам всё зделает?
Я тут вродь на этом форуме в факе по безопасности читал что стоит проверят зарегистрована переменная в сесии или нет, но:
session_unset("var")
и
session_register("var");
как написано в мурзилке работают только при register globals on
15
05 января 2008 года
shaelf
2.7K / / 04.05.2005
Про register_globals вообще забудь. Он должен быть только off и всё, что написано "если register_globals on" просто пропускай. В 6 части вообще его в php.ini не будет, он просто будет тупо в off. И больше читай маны, там это разжёвано всё, а цитировать маны мягко говоря не хочется.
10K
05 января 2008 года
ChesnoK
57 / / 18.07.2006
Тогда вот ещё вопрос: после записи об авторизации в сессию есть смысл в будущем проверять соответствие логин-пароль?
И стоит ли проверять зарегистрована переменная в сессии или нет и собственно говоря стоит ли писать session_register("var");
15
05 января 2008 года
shaelf
2.7K / / 04.05.2005
Мой совет, возьми любой открытый, старый (> 3 лет) продукт и посмотри как там устроена авторизация. Не думаю, что лучшее ты сможешь придумать.
8
05 января 2008 года
mfender
3.5K / / 15.06.2005
Цитата: ChesnoK
Тогда вот ещё вопрос: после записи об авторизации в сессию есть смысл в будущем проверять соответствие логин-пароль?
И стоит ли проверять зарегистрована переменная в сессии или нет и собственно говоря стоит ли писать session_register("var");


не надо переавать логины и пароли. храни объект юзера сериализованным в сессии, а передавай только OID сессии, ну или хэш OID+IP-адрес для пущей безопасности, как советовал Shaelf.

10K
05 января 2008 года
ChesnoK
57 / / 18.07.2006
В общем вот что у меня получилось:
http://des-raben.jino-net.ru/new/

В общем проверьте на стойкость так сказать, елси через пару минут там появится надпись "Здарова МихалычЪ" то.... в общем будем думать дальше.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог