Большой Воронежский Форум
Веб-программирование>Запомнить меня
Сергей29 09:45 08.12.2011
Здравствуйте.
Собственно говоря проблема в следующем : нужно реализовать функцию(галочку) "запомнить меня"
У меня нет возможности создать базу типа MySql с логином и паролем и по идентификатору в куках высовывать из базы пароль.
(У меня связка JS-PHP-Web сервис(XML строка) )

Я пока додумался до двух вариатнов :

1) Записывать пароли с логинами в куки -> сильно шифруя (ну по алгоритму) пароли.

2)Использовать Flashcookie (как - то)

Как еще можно реализовать такое хранение и такую задачу???
Заранее спасибо. [Ответ]
alemiks 10:16 08.12.2011
web-сервис сторонний или самописный? [Ответ]
Сергей29 10:19 08.12.2011
сервис свой

(записывать туда логин и пароль) по идентификатору куки?
[Ответ]
alemiks 12:05 08.12.2011

Сообщение от Сергей29:
сервис свой

(записывать туда логин и пароль) по идентификатору куки?

А логины/пароли на стороне сервиса где хранятся?
Логин/пароль однозначно нельзя хранить в куках. При авторизации сервис выдает токен, его и хранить. При повторном обращении передаём токен. Токен сделать живущим в течение сессии (до закрытия браузера). [Ответ]
anadonam 16:44 08.12.2011
Сергей29, в куках храни идентификатор юзера (но не логин, самое простое это уник цифра, которую не знает даже сам юзер но по которой идентифицируется акканут юзера) а проверка идентификатора идет в сессии в ходе работы сайта по нему и ориентируется для кого что загружать на сайте.

логин и пароь - это для юзера, а ты оперируй этим идетификатором - сессия получает его раз когда юзер вошел на сайт (или через куки или через "кнопку вход") а потом с ним и работает пока стоит сессия. и всё нормально будет в плане защиты (но дальше уж можно и самому додумать если нужна сильная защита в этом плане)


id - log - pas

0 - admin - 123
1 - вася - 1234
2 - dimon - qwerty
------------------------

более сложный случай:

w1ew232323- василий петрович - herugadaish
1sdfsdfsd 4 - геннадич петя - moipassal [Ответ]
AlexanderSergeev 17:04 08.12.2011
Нуда...варианты есть..не один точно. а вот про то, что в куках незя хранить - эт верно..сам посуди, а мало ли что, и откуда взять эти логины пасы потом) [Ответ]
a_drew 11:23 09.12.2011
Вопрос. А если у вас на сервере не хранится связка логин/пароль, то как вы ее вообще используете? В смысле как пользователь проходит аутентификация? С чем сравнивается его пароль?
Если у вас нет возможности использовать mysql посмотрите в сторону sql lite или чего-то типа такого. Но опять же будьте аккуратны с хранением паролей.
Как вариант на стороне клиента можно хранить не зашифрованный пароль, а хэш от объединенных вместе логин+пароль+соль (salt которая).
К сожалению вы слишком расплывчато описали, что конкретно вам нужно сделать (насколько длинная сессия, насколько критичны данные, для чего авторизация и т.д.) поэтому чего-то более конкретного посоветовать очень сложно.

как вариант еще можно попробовать поработать с http://samy.pl/evercookie/
Но лучше подробно опишите, что вам нужно сделать, тогда будет намного проще посоветовать вам что-то конкретное. [Ответ]
DRON-ANARCHY 12:07 09.12.2011
a_drew, да там в куки можно чо угодно запихать, захешировав, как бог на душу положит. Хоть md5(md5($pass)). Уже хрен кто раскусит.
В общем, тоже не пойму проблему. [Ответ]
Сергей29 23:15 09.01.2012

Сообщение от a_drew:
Вопрос. А если у вас на сервере не хранится связка логин/пароль, то как вы ее вообще используете? В смысле как пользователь проходит аутентификация? С чем сравнивается его пароль?

soapclient отправляет логин и пароль с "формы" web - сервису там они сравниваются и ответ от сервиса серверу уходит обратно. [Ответ]
a_drew 00:49 10.01.2012
Вообще, если сервис поддерживает аутентификацию, то он должен возвращать токен для пользователя, который потом и надо передавать сервису. Ну собственно это и будет тот самый SESSION_ID.
Если сервис ничего не возвращает, то это какой-то весьма странный сервис. На мой взгляд, в этом случае хранение пароля на стороне клиента или сервера зависит от того, на кого вы хотите взвалить ответственность за кражу пароля.
Если этот сервис — доступ к данным банковской карты, то лучше написать им на саппорт. Если нет, то просто добавляете к логину и паролю какую-то достаточно длинную соль и шифруете, скажем, 1000 раз с каким-нибудь длинным паролем и сохраняете в куки. Про выбор алгоритма, соли и количества итераций в интернете куча статей. Взять тот же пароль от wifi для примера. [Ответ]
Spectator 01:16 10.01.2012

Сообщение от Сергей29:
Как еще можно реализовать такое хранение и такую задачу???
Заранее спасибо.

Никак. Нужен мускул (MySQL), всё остальное - решения через жопу. Можно, конечно, на ПыХаПы организовать нечто вроде простенькой СУБД для хранения паролей, но без ума и знаний она навернется скорее раньше чем позже.
Кабы те знания у Вас были - не спрашивали бы. [Ответ]
a_drew 01:29 10.01.2012
тогда уж наверное SQLight, если нет технической возможности развернуть полноценный MySQL. [Ответ]
Dark_Dante 17:52 14.01.2012
А файлом обойтись никак?

Я конечно не специалист... Но если сделать так

Код:
$login=$_POST['login'];
$pass=md5($_POST['pass']);
//собираем строку
$str=$login.'|'.$pass;
file_put_contents("file.txt", $str, FILE_APPEND);
Потом считываем из файла значения в массив, выбираем из массива нужного юзера с нужным хэшем, проверяем совпадение хэша и делаем сессию [Ответ]
silly 18:09 14.01.2012
Ну, как бы, зачем делать все через жопу, если можно сделать нормально? Правда же? Вы, кстати, с файлами тоже работаете неоптимально, здесь подошли бы функции serialize/unserialize. [Ответ]
Dark_Dante 18:12 14.01.2012
Да я не спорю. Я пхп знаю поверхностно, но просто если нет базы данных то как выход хранить в файлах. К тому же там выше была идея хранить в куках... а если у юзера отключены куки? [Ответ]
silly 18:17 14.01.2012
Не стоит решать задачу, которую никто не ставил: про отсутствие бд никто на самом деле не заявлял, это все предположения.

Код:
$login=$_POST['login'];
$pass=md5($_POST['pass']);
//собираем строку
$str=$login.'|'.$pass;
file_put_contents("file.txt", $str, FILE_APPEND);
Забыл написать изначально, кроме serialize/unserialize нужны еще блокировки.

Сообщение от Dark_Dante:
К тому же там выше была идея хранить в куках... а если у юзера отключены куки?

1. Глупая идея.
2. Без кук сессии не работают. Нет возможности отличать пользователей друг от друга. Раньше еще практиковалось указание идентификаторов сессий в ссылках, но это время прошло. [Ответ]
a_drew 19:04 14.01.2012

Сообщение от :
Не стоит решать задачу, которую никто не ставил: про отсутствие бд никто на самом деле не заявлял, это все предположения.

Сообщение от :
У меня нет возможности создать базу типа MySql с логином и паролем и по идентификатору в куках высовывать из базы пароль.

и SQLight и так хранит все в файлах. Или вы хотите переписать SQLight? [Ответ]
silly 19:16 14.01.2012
Если это мне вопрос, то я очень люблю sqlite на самом деле. [Ответ]
silly 19:33 14.01.2012

Сообщение от Сергей29:
сервис свой

(записывать туда логин и пароль) по идентификатору куки?

И там тоже нет mysql? А?

А то тут некоторые считают, что я невнимательно тему прочитал… [Ответ]
a_drew 19:54 14.01.2012
silly, прошу прощения, вопрос был к Dark_Dante, который хочет самостоятельно реализовать сохранение данных а файл.

И видимо тему невнимательно прочитал я. Не заметил про то, что сервис свой. Если он свой, то он работает неправильно, т.к. должен возвращать токен сессии, о котором я писал выше. И тогда автоматически отпадают все проблемы с хранением пароля. [Ответ]
Вверх