ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

Защита хэша пароля в куках

 

3910
Дмитрий @Q-Tec
При авторизации пользователя хэш пароля, логин и т.д. попадает в куки (пользователь запоминает себя) и он естественно совпадает с хэшем из бд..
Можно ещё раз захэшировать полученный хэш пароля со своим алгоритмом ($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
Зачем пароль то в куках хранить 😀
Вообще просто одного раза md5 с умом достаточно.
В куках сессия например $sess=md5("login,pass,key");

3910
Дмитрий @Q-Tec
ну насчёт md5 это ладно.. понятно, что кодировать можно как угодно, но как авторизировать пользователя с таким методом для меня загадка (скрипт в первом посте)
Сессия - ты имеешь введу phpsessid? мне не подходит, мне нужно пользователя запоминать, на долго ))

Вообще хотелось бы увидеть в https://vmeste.eu/forum?tid=4692 способ регистарции и авторизации пользователя с запоминанием от тебя))

Отредактировано Q-Tec - 25.03.2011
4875
ValdeZ @ValdeZ
**********
может поможет

3910
Дмитрий @Q-Tec
Кстати, этот скрипт я и взял))

Отредактировано Q-Tec - 25.03.2011
20090
Dimitry @Dimitry
Составлять сессию можно как угодно, а проверять в обратном порядке:

//Секретный ключ для хеша, улучшает безопасноть сессий
$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 "Удачно авторизован";

Можно поразному делать, в зависимости от того какая безопасноть должна быть)