Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "Запомнить меня". Общие вопросы по авторизации 
:(
    Опции темы
Addmin
  Дата 25.1.2011, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 3.2.2006
Где: сослан в Сибирь

Репутация: нет
Всего: 15



Здравствуйте!

Как-то скупо в Интернете находится информация по авторизации пользователей вкупе smile То есть и как выставлять кукисы, и как включать сессии, если кукисы не поддерживаются, и как вообще организовывается авторизация. Поэтому хочу попросить ваших советов.

У меня есть кое-какие знания о механизме сессий, сделал пару админ-панелей для собственных сайтов, авторизацию администратора делал так:

1. Пользователь вводит логин и пароль
2. Система сверяет логин и md5-хэш пароля с теми, которые есть в базе.
3. Если верно, ставит пользователю $_SESSION['auth'] = "true";

Далее на каждой страничке в начале стоит вот такой код:

Код

<?php
session_start()
if (!isset($_SESSION['auth']))
{
    header("Location: ./enter.php");
}
?>

<html>
     //А тут всё чистым текстом шпарит
</html>


Чтобы, так сказать, перенаправить незарегистрированного пользователя к входу smile Безопасно ли я делал или это сравни... Хотел сказать что-нибудь про тайваньских путан, да фраза никак не заканчивалась smile

И вот мне нужно сделать хороший проект с множеством пользователей. Важным делом здесь является кнопочка "запомнить меня". И вот тут у меня есть несколько вопросов:

1. Куки ведь "смертны", так? И на всех сайтах, которые, "запоминают тебя", им просто выставляется период жизни побольше?
2. "Я использую чужой компьютер" - значит, что не будут выставляться куки и будут использоваться только сессия, которая закроется вместе с браузером?
3. Если пользователь прошёл проверку и нажал "запомнить меня", я даю ему печеньку, да? А стартовать ли мне сессию через session_start()?
 
Буду благодарен за ответ, спасибо smile




--------------------
PM MAIL   Вверх
mcTep
Дата 25.1.2011, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 25.2.2009

Репутация: нет
Всего: 6



Цитата(Addmin @  25.1.2011,  18:43 Найти цитируемый пост)
1. Куки ведь "смертны", так? И на всех сайтах, которые, "запоминают тебя", им просто выставляется период жизни побольше?

Куки могут быть и бессмертными, все зависит от того сколько ты им время жизни установишь.  Установи 100 лет и, думаю, она тебя переживет. Если конечно пользователь насильно не удалит куку, или по каким то причинам она исчезнет с компьютера пользователя.


Цитата(Addmin @  25.1.2011,  18:43 Найти цитируемый пост)
2. "Я использую чужой компьютер" - значит, что не будут выставляться куки и будут использоваться только сессия, которая закроется вместе с браузером?


Да.

Цитата(Addmin @  25.1.2011,  18:43 Найти цитируемый пост)
3. Если пользователь прошёл проверку и нажал "запомнить меня", я даю ему печеньку, да? А стартовать ли мне сессию через session_start()?


Да. Да. При этом в куке тебе надо сохранить какой-либо идентификатор пользователя, чтобы знать, что за пользователь к тебе пришел. Причем по этому идентификатору тебе надо восстановить все параметры пользователя, которыми ты пользуешься в сессии.
PM MAIL   Вверх
Addmin
Дата 26.1.2011, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 3.2.2006
Где: сослан в Сибирь

Репутация: нет
Всего: 15



В куке ведь можно просто хранить имя пользователя? Чтобы просто идентифицировать его?

И
 
Код

?php
session_start()
if (!isset($_SESSION['auth']))
{
    header("Location: ./enter.php");
}
?>
<html>
     //А тут всё чистым текстом шпарит
</html>


Опасно ли? smile


--------------------
PM MAIL   Вверх
skyboy
Дата 26.1.2011, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Addmin @  26.1.2011,  06:58 Найти цитируемый пост)
И

нифига smile то, что хранится в куках, доступно из массива $_COOKIE. Сессия используется кукисы,но не вытягивает из них ничего, кроме идентификатора сессии.
а просто хранить имя пользователя не стоит. сам же упрощаешь работу взломщикам.
храни там номер-идентификатор + md5 от присланных тобой REMOTE_ADDR + USER_AGENT. Тогда после вороства куки проверяешь, что то, что тебе пришло, совпадает с содержимым куки
PM MAIL   Вверх
solenko
Дата 26.1.2011, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата(Addmin @  26.1.2011,  06:58 Найти цитируемый пост)
Опасно ли? 

Естественно. Что мешает мне поменять это имя и стать другим пользователем? Обычно в базе заводят отдельное поле, в которое вписывается услучайный token по которому потом определяется пользователь. Такие же токены используется для логина по ссылке (например, из писем).


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Addmin
Дата 26.1.2011, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 3.2.2006
Где: сослан в Сибирь

Репутация: нет
Всего: 15



Цитата(solenko @  26.1.2011,  09:27 Найти цитируемый пост)
Естественно. Что мешает мне поменять это имя и стать другим пользователем?

Но я ведь не открою вам сессию, пока вы не введёте пароль и логин smile "auth" - это сокращённо от "authorized". Это работает, пока мне нужно учитывать только одного пользователя (администратора).

То есть вообще можно вот так?

Код


<?php

//Здесь пользователь любым методом доказывает, что он подлинный. Печенька у него с шифрами или просто открыта сессия - я не выполняю следующую скобку.
{
    header("Location: ./enter.php"); //Если он не вошел, я перенаправляю его ко входу
}

?>

А тут я печатаю простой хтмл с боди, дивами и прочим, даже секретную информацию.


Случайным токеном можно сделать неслучайный хэш имени пользователя? smile То есть просто прохэшировать имя пользователя и хранить его в базе как токен, его же и в письмах присылать? 




Это сообщение отредактировал(а) Addmin - 26.1.2011, 10:49


--------------------
PM MAIL   Вверх
solenko
Дата 26.1.2011, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата(Addmin @  26.1.2011,  09:48 Найти цитируемый пост)
Но я ведь не открою вам сессию, пока вы не введёте пароль и логин smile "auth" - это сокращённо от "authorized". Это работает, пока мне нужно учитывать только одного пользователя (администратора).

Вы попробуйте написать алгоритм авторизации по remember me cookie просто словами по пунктам (начиная с "на сайт заходит пользователь без сессионной cookie, но с remember me cookie") и потом перечитайте эту часть сообщения )


Цитата(Addmin @  26.1.2011,  09:48 Найти цитируемый пост)
Случайным токеном можно сделать неслучайный хэш имени пользователя? smile То есть просто прохэшировать имя пользователя и хранить его в базе как токен, его же и в письмах присылать? 

Можно, но не рекомндуется. Т.к. если злоумышленник поймет алгорит хеширования, то сможет опять же авторизоваться любым пользоватлем.


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
MoLeX
Дата 26.1.2011, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



после  header() не забываем exit()


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Muerto
Дата 26.1.2011, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



MoLeX, +1 , Столько проблем можно заработать если этого не делать  smile 


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1073 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.