ФорумПрограммированиеПыхнуть хотите?F.A.Q. → Авторизация пользователей в полном смысле этого слова.

Авторизация пользователей в полном смысле этого слова.

  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 30 января 2008 г. 10:22, спустя 14 минут 25 секунд


    ОК подробнее:

    Берем за основу весь код, который в первом посте. Там при удачной авторизации, пользователь попадает на закрытую страницу.
    А мне нужно чтобы проходила проверка еще и по ID в базе, и если ID=1 (например), то пользователь попадает на другую закрытую страницу, а если ID любой другой, то на обычную.

    На простой закрытой странице (для всех) у меня будет различная инфа для всех зарегестрированных, но не будет поля для регистрации новых.

    Регистрировать сможет только юзер с ID = 1, т.к. будет попадать на страницу с формой для регистрации.

    Вот так примерно.


    Я не пойму, а чего сложного в реализации того что вы хотите? В скрипте регистрации проверяйте ID, если не 1 то не выдавайте страницу с регистрацией. Вы куда-то конкретно хотите внедрить? Если да, то приведите ВАШ код, а не "Берем за основу весь код, который в первом посте" - в первом посте описывается процедура авторизации а не регистрации.
    adw/0
  • Aarstad

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 13 февраля 2008 г. 9:30, спустя 13 дней 23 часа 8 минут

    Yuk хочет сделать разграничение прав, для зарегестрированных пользователей.

    Это можно реализовать проверяя id пользователя, или если прав много и они произвольным образом смешиваются у разных пользователей, то имеет смысл завести отдельную таблицу в базе.
  • J.Smith

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 19 февраля 2008 г. 4:31, спустя 5 дней 19 часов


    Можно брать двойной хеш (например, md5(sha1('password'))) или использовать так называемую "соль" (salt).
    Пример использования соли: md5('password' . 'secret_code');
    secret_code — это и есть соль, то есть мы тупо к паролю добавляем какой-то набор символов (желательно ещё и запомнить, какой набор символов мы добавляем ;))


    Насколько я понимаю, это бессмысленно. Ведь какую проблему мы пытаемся решить? Хакер взломав базу получает md5 хэш и при помощи радужных таблиц находит строку из которой этот хэш получен. Найдя эту строку он отнимет от нее соль (которую также найдет во взломанной базе) и получит пароль.

    Соль надо добавлять к уже сгенерированному хэшу. В этом случае мы получим просто набор символов, расшифровать который можно только зная длину соли и имея таблицы для всех вариантов соли. А также зная куда эту соль добавили.
    Также, получается, что соль в базе хранить нельзя (иначе можно отнять ее от хеша и дальше работать по таблицам с ним). Лучше задать ее однажды в скрипте и добавлять ко всем хэшам.

    Хотя это конечно больше теория. Добавляя достаточной длины соль (по вашему способу) можно усложнить строку из которой хэш генерится. И найти эту строку в таблицах будет проблематично. Если конечно не рассматривать ситуацию, когда хакер будет сам перебором (долго очень) пытаться найти нужный хэш.

    Кроме того, можно добавлять к уже готовому хэшу пароля в качестве соли использовать какое-нить неочевидное поле (например хэш даты регистрации пользователя). Чтобы хакеру было сложнее определить что добавлено и куда.


    А не проще будет сначала посольть логин, потом пароль, а потом все это кодировать с помощью md5:

    $login
    $password
    $solt_1
    $solt_2
    $cripting_1 = md5(md5($login).md5($solt_1))
    $cripting_2 = md5(md5($password).md5($solt_2))
    $cripting = md5(md5($cripting_1).md5($cripting_2))
  • XoxMa

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 2 марта 2008 г. 11:54, спустя 12 дней 7 часов 22 минуты

    Я хотел бы узнать, если у меня есть чей-то md5 хэш, то его можно как-нибудь узнать, какой пароль там находится? Например какой-нибудь прогой..
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 2 марта 2008 г. 12:11, спустя 17 минут 3 секунды

  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 10 марта 2008 г. 4:13, спустя 7 дней 15 часов 2 минуты

  • XoxMa

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 10 марта 2008 г. 11:43, спустя 7 часов 30 минут 2 секунды

    Кстати, как сделать регистрацию на сайте не с регистрацией имени (ника), который вводит пользователь, а с id начиная с id1, потом id2, id3, то есть как мне написать цикл регистрации?
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 10 марта 2008 г. 12:29, спустя 46 минут 26 секунд


    Кстати, как сделать регистрацию на сайте не с регистрацией имени (ника), который вводит пользователь, а с id начиная с id1, потом id2, id3, то есть как мне написать цикл регистрации?

    не понял вопроса
    все умрут, а я изумруд
  • XoxMa

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 10 марта 2008 г. 12:38, спустя 9 минут 1 секунду

    Когда пользователь регится, то он вводит только свой пароль и например e-mail. После регистрации пользователю дадут уникальный номер - id. Как сделать, чтобы id с каждым разом становилось больше. Если самый первый пользователь зарегился на сайте, то у него буде id=1, у второго пользователя id=2. Я не знаю только как написать, чтобы сайт обращался к базе данных и проверял на существование id=1, если этот id существует, то к следующему id (то есть id=2). И так до того момента, пока не будет свобдный id :-)
    Например в vkontakte.ru такая же регистрация.
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 10 марта 2008 г. 13:10, спустя 31 минуту 14 секунд

    не
    поле id должно быть auto_increment'ное
    там при создании таблицы, если поле Дополнительно, там ставишь auto_increment и оно само увеличивается, читай ман
    все умрут, а я изумруд
  • XoxMa

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 10 марта 2008 г. 15:23, спустя 2 часа 13 минут 8 секунд

    Спасиб, разобрался.
    У меня какой-то глюк. У меня всё нормльно работает в регистрации и авторизации пользователя, кроме куки.
    Например если я поставлю галочку на куки при авторизации, то потом выйти из пользователя не могу. То есть я ввожу login.php?logout и ничего не происходит.

    Этот глюк только у меня или у кого-нибудь ещё?
  • sap

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 10 марта 2008 г. 16:00, спустя 37 минут 30 секунд

    А кук удаляется?
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 10 марта 2008 г. 16:03, спустя 2 минуты 58 секунд

    XoxMa, ты говоришь про тот пример, который я тут выложил?
    все умрут, а я изумруд
  • XoxMa

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 12 марта 2008 г. 15:03, спустя 1 день 23 часа

    if (isset($_GET['logout']))
    {
    if (isset($_SESSION['user_id']))
    unset($_SESSION['user_id']);

    header('Location: index.php');
    exit;
    }

    Когда я захожу под своим логином, то всё нормально работает, и если я набиру login.php?logout, то я выйду из моего пользователя.

    НО! Если я вхожу под своим логином и ставлю галочку на куки, то есть чтобы куки у меня сохранилось, то потом я не могу выйти из моего пользователя.
    Вот моя беда. Приходится ждать 24 часа (так как у меня было куки по умолчанию установлено на 24 часа), и только потом я могу выйти.

    Только у меня эта проблемма или у кого-нибудь ещё?
    md5, я скачал твой пример целиком. Ты в конце статьи дал файлик для скачивания.
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 12 марта 2008 г. 15:47, спустя 44 минуты 4 секунды

    	setcookie('login', '', 0, "/");
    setcookie('password', '', 0, "/");

    добавить чтобы стереть куки
    архив обновил
    все умрут, а я изумруд

Пожалуйста, авторизуйтесь, чтобы написать комментарий!