€
$
₴
₽
EN
RU
Vmeste.EU
Лента
Каталог
Файлы
Форумы
Услуги
Основное
Radiotalk
Пользовательское
Программирование
6 •
Посмотреть все темы
Защита хэша пароля в куках
1
3910
Дмитрий
@Q-Tec
24.03.2011
При авторизации пользователя хэш пароля, логин и т.д. попадает в куки (пользователь запоминает себя) и он естественно совпадает с хэшем из бд..
Можно ещё раз захэшировать полученный хэш пароля со своим алгоритмом ($hash = md5(md5($password.$login).$bla.$bla);)
Но как по нему снова авторизировать пользователя, если этот хэш не совпадает теперь с хэшем из бд, писали, что такое возможно, но как, увы, умолчали.. В PHP я не силён, сами знаете, может такое и не возможно? (Теория - получаем хэш из бд, хэшируем данным алгоритмом и если получаем тот же хэш то аторизируем, так, не так? Как я понял, хэш всегда получается один и тот же..)
[spoiler=Кусок скрипта авторизации запомненного пользователя]
// проверяются куки на наличие логина и пароля
if (!isset($_SESSION['id'])){
if (isset($_COOKIE['login']) && isset($_COOKIE['password'])){
$login = mysql_escape_string($_COOKIE['login']);
$password = mysql_escape_string($_COOKIE['password']);
$query = "SELECT `id` FROM `table` WHERE `login`='{$login}' AND `password`='{$password}' LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());
// Если всё окей, то авторизируем пользователя по кукам.. и вдупливаем в phpsessid его id для возможности получения доступа к отдельным страницам
if (mysql_num_rows($sql) == 1){ $row = mysql_fetch_assoc($sql); $_SESSION['user_id'] = $row['id']; }
[/spoiler]
Отредактировано Q-Tec -
25.03.2011
20090
Dimitry
@Dimitry
24.03.2011
Зачем пароль то в куках хранить 😀
Вообще просто одного раза md5 с умом достаточно.
В куках сессия например $sess=md5("login,pass,key");
3910
Дмитрий
@Q-Tec
25.03.2011
ну насчёт md5 это ладно.. понятно, что кодировать можно как угодно, но как авторизировать пользователя с таким методом для меня загадка (скрипт в первом посте)
Сессия - ты имеешь введу phpsessid? мне не подходит, мне нужно пользователя запоминать, на долго ))
Вообще хотелось бы увидеть в
https://vmeste.eu/forum?tid=4692
способ регистарции и авторизации пользователя с запоминанием от тебя))
Отредактировано Q-Tec -
25.03.2011
4875
ValdeZ
@ValdeZ
25.03.2011
**********
может поможет
3910
Дмитрий
@Q-Tec
25.03.2011
Кстати, этот скрипт я и взял))
Отредактировано Q-Tec -
25.03.2011
20090
Dimitry
@Dimitry
25.03.2011
Составлять сессию можно как угодно, а проверять в обратном порядке:
//Секретный ключ для хеша, улучшает безопасноть сессий
$key='secretkey';
//авторизация
//взять с базы данные по $_POST[login]
if($_POST[pass]==$pass) {
$sess=md5("$login,$pass,$key");
cookie("login",$login,time()+86400*365);
cookie("sess",$sess,time()+86400*365);
}
//проверка сессии
//взять с базы данные по $_COOKIE[login]
if($_COOKIE[sess]==md5("$login,$pass,$key")) echo "Удачно авторизован";
//или если пишется в в базу sess
if($_COOKIE[sess]==$sess) echo "Удачно авторизован";
Можно поразному делать, в зависимости от того какая безопасноть должна быть)