Автологин. Новые песни о старом...

AndreyKl

Новичок
Автологин. Новые песни о старом...

Просмотрел форум. Остались вопросы. Собственно, вот.
Ситуация. Хотелось бы реализовать автологин. Привязка по IP не желательна, поскольку юзер может ходить с 2 машин (например, одна дома, одна на работе). В основном советуют хранить в куках хеш пароля и, например, имя пользователя (уникальное) (ну и ip + что-то уникальное и всё это в хеше, но привязка по ip не желательна). Затем вытаскивать из базы хеш пароля юзера с таким именем, сравнивать, и, соответственно, делать выводы.
Для меня не очевидна разница между паролем и хешем в данном случае(я имею ввиду возможность перехвата информации, ведь всё равно, что получит злоумышленник - хеш или пароль, в любом случае, он получает доступ к системе). Кроме того, похоже, что это создаёт дополнительную угрозу безопасности. Поясню: на сколько я понимаю, пароль в базе хранится в виде хеша для того, чтобы в случае получения несанкционированного доступа на чтение к базе, злоумышленник не мог воспользоваться полученным паролем. Если хранить в куках хеш, то это даёт возможность злоумышленнику, при получении доступа к базе, просто вставить хеш и логин в куки и получить доступ к системе.

Итого, решение к которому пришёл сейчас:
Хранить в куках имя пользователя и пароль (то есть просто запоминать то, что он вводит при логине).

Ну и собствено, вопрос:
Где я ошибаюсь? Каковы проблемы этого решения? Или какое решение лучше?
 

440hz

php.ru
в куках храни только ID сессии.
хочешь безопасное соединение - юзай https.
 

Андрейка

Senior pomidor developer
440hz
в куках храни только ID сессии.
ну и в чем плюс такого решения в случае автологина?

Привязка по IP не желательна, поскольку юзер может ходить с 2 машин
в смысле он один комп будет таскать с работы домой и обратно? или причем тут 2 ip?
 

440hz

php.ru
ну и в чем плюс такого решения в случае автологина
в случае автологина безопасность идет ваще далеко и надолго.

p.s. ну не логин же с паролем в куках хранить, чес-слово ...
 

Андрейка

Senior pomidor developer
440hz
ну не дальше, чем в случае использования id сессии

какая разница украдут sessid или hash(login+pass+something) ?
 

440hz

php.ru
Андрейка

в случае автологина не имеет значения что ты хранишь. а в других случаях не все равно.
 

AndreyKl

Новичок
в смысле он один комп будет таскать с работы домой и обратно? или причем тут 2 ip?

Хороший вопрос, уместный :) Подумаю, спасибо
 

Фанат

oncle terrible
Команда форума
Если хранить в куках хеш, то это даёт возможность злоумышленнику, при получении доступа к базе, просто вставить хеш и логин в куки и получить доступ к системе.
это абзац какой-то запредельной глупости
 

AndreyKl

Новичок
Автор оригинала: 440hz
в случае автологина безопасность идет ваще далеко и надолго.

p.s. ну не логин же с паролем в куках хранить, чес-слово ...
Идея с сессиями - хорошая, только вот сессии не живут так долго... есть решение?

-~{}~ 11.10.06 14:08:

Автор оригинала: Фанат
это абзац какой-то запредельной глупости
Поясни, пожалуйста. ?
 

Фанат

oncle terrible
Команда форума
что тебе пояснять? смысл фразы "если враг получит доступ к базе, то он сможет получить доступ к системе"?
а он УЖЕ не получил?!
 

Фанат

oncle terrible
Команда форума
а рядом с решением хранить в куках пароль в открытом виде - вообще уже ни в какие ворота не лезет.
поскольку в этом случае враг получит доступ к системе И БЕЗ ДОСТУПА К БАЗЕ, а просто введя логин и пароль!

-~{}~ 11.10.06 14:14:

440hz
у меня к тебе будет ОЧЕНЬ большая просьба не писать глупостей
 

AndreyKl

Новичок
Спасибо.
Возможно я чего-то недопонимаю конечно, но всё-же:
доступ на чтение != полный доступ...
кроме того, часто можно получить хеш пароля посредством sql-инъекции, где даже доступ на чтение очень может быть очень ограниченным..

Чего не вижу?
 

tf

крылья рулят
AndreyKl, я что-то не врубаюсь
ну перехватил он чтонибыло в куках, что его остановит их использовать для доступа к системе?
 

Фанат

oncle terrible
Команда форума
указываю.
сессия - это не "столько, сколько укажешь", а пока юзер не закрыл браузер.

-~{}~ 11.10.06 14:22:

tf
он говорит не о краже кук, а о краже базы.
то есть, он далеко не первый, кто ставит телегу впереди лошади.
 

AndreyKl

Новичок
Автор оригинала: Фанат
а рядом с решением хранить в куках пароль в открытом виде - вообще уже ни в какие ворота не лезет.
поскольку в этом случае враг получит доступ к системе И БЕЗ ДОСТУПА К БАЗЕ, а просто введя логин и пароль![QOUTE]

Фанат, извините меня, возможно я сейчас очень жестко туплю, но:

Где враг возьмёт логин и пароль? Если в куках или при перехвате, то какая разница, что именно он получит, в любом соучае он получит доступ:
хеш - по которому его идентифицирует система
или
пароль по которому его идентифицирует система
Результат один и тот же, вроде?

-~{}~ 11.10.06 14:25:

Автор оригинала: tf
AndreyKl, я что-то не врубаюсь
ну перехватил он чтонибыло в куках, что его остановит их использовать для доступа к системе?
Ничего.. вот я и думаю, хранить логин и пароль и всё..

-~{}~ 11.10.06 14:35:

Поясню свою точку зрения:

1) можно украсть куки. То, что там хранится(хеш или пароль) даёт полный доступ. Что бы там не хранили (в куках), если их перехватить, то это полный доступ. таким образом, какая разница, что хранить в куках. Верно?

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

-~{}~ 11.10.06 14:36:

/хешь/хеш/s
 

Alexandre

PHPПенсионер
в смысле он один комп будет таскать с работы домой и обратно? или причем тут 2 ip?
а прочему бы и нет,
AndreyKl ты просто не подозреваешь как далеко ушла техника, и как люди привыкают к своим ноутам, что ежедневно их таскают домой, на работу и даже при поездки загород на природу берут - вот!!!. Но IP действительно могут быть разные - подсетки работы и подсетки домашней сети. IP вообще не катит. Храни в куках ID сессии и не парься.

Пароль вообще не рекомендуется хранить в куках ни в чистом виде, ни в хешируемом.
 

AndreyKl

Новичок
Автор оригинала: Alexandre
а прочему бы и нет,
AndreyKl ты просто не подозреваешь как далеко ушла техника, и как люди привыкают к своим ноутам, что ежедневно их таскают домой, на работу и даже при поездки загород на природу берут - вот!!!. Но IP действительно могут быть разные - подсетки работы и подсетки домашней сети. IP вообще не катит. Храни в куках ID сессии и не парься.

Пароль вообще не рекомендуется хранить в куках ни в чистом виде, ни в хешируемом.
Да, точно, было дело, мне один пользователь жаловался, что он в аэропорт, а его с ноута не пускает... запамятовал :)

А что с временем жизни сессии? просто взять её ID, засунуть в базу и в куки? Не совсем понятно...
 

Фанат

oncle terrible
Команда форума
Идея с сессиями - хорошая
Если учесть, что от сессий здесь нужен только идентификатор, то я бы предложил именно идентификатор и генерить.
Но поскольку этот идентификатор всё равно надо хнарить на сервере, а в условиях задачи скахано, что враг имеет доступ к серверу, то и это решение не подходит.

Причём это условие убивает вообще любые манипуляции с данными.
Если мы предположили, что враг имеет доступ к базе, то легко можем предположить, что он имеет его и к коду. и читает там все наши хитроумные построения.

-~{}~ 11.10.06 14:52:

просто взять её ID, засунуть в базу
об этом, мля, и речь.
 
Сверху