Comments 16
Ага. Удачи вам. А я пока подожду, пока вы 16-32 символьный ключ сессии будете брутать :)
Знал проекты где использовалась 8-символьная сессия состоящая из одних цифр. Алгоритмы ведь разные бывают. В своей статье я и сказал, что длина сессии не должна быть малой.
Идентификатор сессии записываемый в куки обычно представляет из себя хеш (md5 например).

Как вы будете его брутфорсить?
думается пока вы будете брутфорсить сессию она устареет и система ее почистит, а вы все так и будете сидеть и брутфорсить и сидеть и сЕдеть
Обычно сессия меняется при авторизации пользователя через логин и пароль. Я на некоторых форумах не ввожу его месяцами, храня сессию в браузере. Другие думаю также. Если на портале 10 миллионов пользователей, длина сессии не меняется и у взломщика какой-нибудь ботнет, то вероятность подобрать какие-нибудь существующие сессии достаточно велика.
Насколько я помню, там хранятся печеньки с авторизационной информацией, а не с ID сессии.
эвы вы не сессию храните на remeber-me куку которая сама по себе должна быть секурной и каждый ее делает по своему и если она легко брутфорсится то это банальный эксплоит конкретной реализации, дефолтное время жизни сессии например для php — 1440 секунд, ну вернее там сложнее но порядок чисел такой
Я сам Perl'щик и не пользуюсь PHP для разработки своих проектов, как и многие другие. В PHP имеется свой метод реализации сессии, но кто запрещает сделать свой метод? При этом и стоит учитывать указанные в статье вещи.
>Поставьте обязательную привязку к IP.
Вы забыли, что у более 80% пользователей дома, динамический IP.
Я указал это в статье и заметил также, что нужно обязательно сделать возможность отключить эту функцию.
имхо
1. менять куку при успешном заходе ( спаролем или без ), обновляя срок жизни
2. использовать md5(uniqid()) — это 32 символа или 128 бит и 2^128 ~10^38 вариантов

добавление пары порядков картину не изменит.
IP может быть динамический или прокси/NAT.
Не обязательно использовать хэш для идентификации юзера. Можно нужную информацию (user id, время, IP, http_user_agent и тд.) зашифровать обычным симметричным шифром, и это сохранить в кукис. Такую печеньку брутфорсить вообще смысла нет.

Использовать md5(uid) без соли — грех.
Проблема высосана из пальца, более-менее длинный идентификатор — и всё. Никаких ip, переменной длины, user_agent'ов и прочего не надо — не забивайте голову чушью.
Привязывать сессию к ip | user_agent пользователю надо!
Опишу случай есть одно социальное сеть connect, в один прекрасный день смотрел чей то профиль,
и выскочил javascript alert('Приветик') я сразу нашел не фильтруемое поле и через 10 минут куки всех
кто заходил на мою страницу уже были на моем сервере. Там хранился e-mail, md5(password), PHPSESSIONID
в опере поддела куки и вуаля захожу под логином и паролем пользователя. В роди бы и ничего я же не знаю
пароль но как бы так нельзя. Мне тогда фантазии не хватило что с этим делать и я просто написал в аську
владельцу, он долго морозился и я ему позвонил и сказал где уязвимость. Больше всего поразило то что им
понадобилось 4 дня чтобы поставить htmlspecialchars() на то поле.

Only those users with full accounts are able to leave comments. Log in, please.