Форум "Web-мастер" (архив)
Технологии web-програмирования
об авторизации, воровстве куков, etsКак известно - можно доверять только той системе безопасности, о которой ты знаешь, как она работает. Поэтому думаю стоит обсудить нововведение, которое мне придумалось и сейчас воплощается. Итак. Традиционно в кукиз записывается имя пользователя и хэш-функция от пароля пользователя - запишем это cookie.user=name cookie.pass=md5(pass) чтобы сделать невозможным подбор pass, зная md5(pass), перебором - добавляется имитовставка - некий известный только на сервере (прописанный в скрипте) набор символов vstavka и соотв пишется cookie.pass=md5(pass+vstavka) Но это не решает проблему воровства кукиз- злоумышленник подставляет себе сворованные значения и его компьютер для сервера дневников не отличим от компьютера того, у кого эти данные были украдены. Что предлагается - добавить к строке pass+vstavka еще и ip адрес. То есть происходят следующие операции 1) при авторизации, вводя явно логин и пароль (пароль знает только реальный пользователь) скрипту передается name и pass, они проверяются по базе данных, если они совпали - то перед нами гарантированно "правильный" пользователь cookie.user=name cookie.pass=md5(pass+vstavka+ip) ip - текущий ip пользователя при этом этот ip пишется в базу данных для этого пользователя 2) при авторизации по cookies (нужна, чтобы на каждой странице не вводить заново логин и пароль - но которая собственно и вносит уязвимость, если злоумышленнику известны cookies) скрипту передается cookie.user и cookie.pass берется из базы pass для пользователя cookie.user и его последний ip и вычисляется md5(pass+vstavka+ip). Если полученное совпадает с cookie.pass, то авторизация прошла успешно. Если не совпадает, то пользователя просят авторизоваться по логину и паролю Минусы подобной реализации - при каждой смене ip адреса пользователю придется заново вводить свой пароль (например при каждом коннекте модемом) Плюсы подобной реализации + если где то забыл нажать Выход и компьютер остался залогиненным, то зайдя с другого компьютера в дневник - ты сменишь ip в базе - и злоумышленник не сможет зайти в твой дневник с того, оставленного, компьютера - не зная твой пароль + если злоумышленнику удалось своровать cookies - они ему не помогут войти в дневник, так как его ip не совпадает (и не сможет совпадать - чаще всего) с ip жертвы Соответственно цель этого постинга - понять все ли тут красиво. И если да - то почему так не сделают все те, кому такая проблема актуальна. Обсуждение:
|
|
#1 Kerk © 20.02.05 11:14:10
имхо стоит > cookie.pass=md5(какая_то_необратимая_операция(pass+ip)) иначе его можно вместе со вставкой перебрать |
|
ИМХО, главный минус вот. > Минусы подобной реализации > - при каждой смене ip адреса пользователю придется заново > вводить свой пароль (например при каждом коннекте модемом) Потому, возможно, стоит брать не саму айпишку, а айпишку прокси... |
|
#3 ZeroDivide © 21.02.05 13:33:26
А я сижу днем с работы, а вечером из дома. |
|
можно запоминать айпишки в базу, и проверять пароль только для айпишек, которых нет в базе. если аутенфикация пройдена, добавлять айпишку в базу для данного пользователя. даже если одного пользователя будет, например, около 200 айопишек, для скл-сервера это совсем не проблема. |
|
> А я сижу днем с работы, а вечером из дома. Там, откуда взял вышепреведённый текст, уже реализовали. И можно в настройках указать, использовать этот метод (проверять айпишку), или нет. А вообще, уж в твоём то случае, не проблема 2 раза в день авторизоваться. Кстати, по ссылке кроме приведённого мной текста (к тому же несколько сокращённого) ещё и обсуждение. >#4 Deep © Что-то ты прогнал. Смысл в таком хранении айпишек? Получается, даже понижается безопасность. Лучше уж вообще ничего не делать, оставлять, как есть. > проверять пароль только для айпишек, которых нет в базе. Получается, если я залогинился с инет-кафешки, то потом другим вообще ничё делать не надо, чтоб войти подо мной? |
|
> Получается, если я залогинился с инет-кафешки, то потом > другим вообще ничё делать не надо, чтоб войти подо мной? можно сделать как например в яхо: при логине указывать галку +Свой компьютер +Чужой компьютер Для своего запоминать с айпишкой, для чужого в любом случае писать срок жизни куки не более получаса после последнего сообщения. Причем срок жизни шифровать в самом пароле. Итого имеем два типа паролей(в куки): для своего и чужого компа. |
Тема находится в архиве
Написать ответ |
|
