Главная Новые темы Список тем Задать вопрос Поиск  

Форум "Web-мастер" (архив)


Технологии web-програмирования


 #0 Victor T © 19.02.05 15:36:26 - 21.02.05 16:46:52

об авторизации, воровстве куков, 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))

иначе его можно вместе со вставкой перебрать
 #2 Deep © 21.02.05 13:30:03

ИМХО, главный минус вот.
> Минусы подобной реализации
> - при каждой смене ip адреса пользователю придется заново
> вводить свой пароль (например при каждом коннекте модемом)


Потому, возможно, стоит брать не саму айпишку, а айпишку прокси...
 #3 ZeroDivide © 21.02.05 13:33:26

А я сижу днем с работы, а вечером из дома.
 #4 Deep © 21.02.05 15:36:42

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

даже если одного пользователя будет, например, около 200 айопишек, для скл-сервера это совсем не проблема.  
 #5 VictorT © 21.02.05 15:55:27

> А я сижу днем с работы, а вечером из дома.
Там, откуда взял вышепреведённый текст, уже реализовали. И можно в настройках указать, использовать этот метод (проверять айпишку), или нет. А вообще, уж в твоём то случае, не проблема 2 раза в день авторизоваться. Кстати, по ссылке кроме приведённого мной текста (к тому же несколько сокращённого) ещё и обсуждение.
>#4 Deep ©
Что-то ты прогнал. Смысл в таком хранении айпишек? Получается, даже понижается безопасность. Лучше уж вообще ничего не делать, оставлять, как есть.
> проверять пароль только для айпишек, которых нет в базе.
Получается, если я залогинился с инет-кафешки, то потом другим вообще ничё делать не надо, чтоб войти подо мной?
 #6 Deep © 21.02.05 16:46:52

> Получается, если я залогинился с инет-кафешки, то потом
> другим вообще ничё делать не надо, чтоб войти подо мной?

можно сделать как например в яхо: при логине указывать галку
+Свой компьютер
+Чужой компьютер
Для своего  запоминать с айпишкой, для чужого в любом случае писать срок жизни куки не более получаса после последнего сообщения. Причем срок жизни шифровать в самом пароле. Итого имеем два типа паролей(в куки): для своего и чужого компа.




  • Тема находится в архиве

    Написать ответ

    Имя: Регистрация HTML?
    smiles смайлики
    Потом перейти в:    
    паутина



      ©  webest.net, 2002-2007  

    top.mail.ru
    » Бесплатный счетчик посещений
    » Рейтинг сайтов