Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Насколько надежна такая аутентификация?


Автор: Kurt 14.2.2005, 23:56
Пробую силы в Perl'е. Написал простое веб-приложение. Аутентификация черезе Cookie:
При входе в систему юзер получает Cookie с его ID. На каждой странице происходит проверка такого Cookie. Если Cookie присутствует - показываю страницу и продляю время жизни кука на 12 мин, иначе - редирект на страницу входа в систему.
При выходе из системы уничтожаю Cookie.
Насколько надежен такой способ аутентификации и возможно ли взломать такую защиту?

Автор: Mal Hack 15.2.2005, 00:04
Если ты просто проверяешь авторизованность пользователя по наличию куки, то это не правильно. Ту же куку можно через сокеты передать.

В ПМ (не пишу тут, дабы не сочли за рекламу) тебе скинул адрес своей статьи, про авторизацию на куках. На единоправильное решение не претендую, вариантов много может быть.
ЗЫ: Тока я писал на PHP, но думаю алгоритм и суть поймешь.

Автор: Kurt 15.2.2005, 00:34
Ох, как я был наивен. smile
Спасибо. Буду исправлять..

Автор: Chuck 15.2.2005, 13:05
Mal Hack, хотелось бы почитать! Никакая это не реклама!

Автор: GoodBoy 15.2.2005, 14:17
Mal Hack
Да, давай пости тут!

Автор: Mal Hack 15.2.2005, 16:16
ну лан
http://wboard.ru/topic262.html
Вкратце изложу суть:
Цитата
1. Технология обеспечения безопасности и алгоритм действий.

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

Сама же подмена может осуществляться через непосредственную посылку данных скрипту через заголовки. Новичкам это мало что говорит, но те кто более менее знаком с сокетами и header(); поймут о чем я.

Дабы не разводить демагогию текстом сразу опишу по каким параметрам и как мы будем строить защиту.
1. При авторизации мы будем искать в таблице с пользователями запись, де имя идентично тому, которое ввел пользователь, а MD5 хэш от пароля введенного пользователем равен хэшу, записанному в таблицу при регистрации пользователя.
2. При успешной авторизации пользователю пишутся куки, с его именем (“name”) и уникальным временем авторизации (“time”). Пусть вас не смущает использование времени, если его взять с дробными частями секунды, то уж никак не получится, чтобы два пользователя залогинились в одно и тоже время. Это – невозможно технически.
3. Мы будем хранить в базе в таблице сессий уникальный хэш (шифр), который будем составлять из вышеупомянутых кук, кода браузера пользователя и IP адреса. Правда, «name» мы использовать не будем, по нему мы будем узнавать ID пользователя, который уже и пойдет в хэш безопасности. Затем по нему и проверять, залогинен ли пользователь или нет, т.е. активна ли его сессия или нет.

Я всегда считал, считаю, и буду считать, что самое важное при программировании это правильно поставить задачу и продумать алгоритм, т.е. последовательность действий.
Наша последовательность действий такая.
1. Если нажата кнопка с именем blogin, мы должны запустить функцию авторизации.
2. Если нажата кнопка breg, мы должны запустить функции регистрации пользователя и автоматической авторизации после этого.
3. Если у пользователя есть установленные нами куки, мы должны проверить, а есть ли у этого пользователя активная сессия. Если да, то мы будем считать этого пользователя авторизованным.

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

Автор: Monty 18.2.2005, 15:25
блин, вы как буд-то знали мою проблему smile .... и она решена, спасибо Mal Hack smile

PS. я тоже был наивен smile
Добавлено @ 15:29
прочитал .... мне понравилась идея smile ... тоже что и было у меня, но без тайма smile
Добавлено @ 15:30
черт ... "+" поставить не могу smile .... надеюсь позже не забуду smile

Автор: Гость_Виктор 7.12.2005, 00:58
Хочу поблагодарить Mal Hack. Для меня долго оставался проблемный вопрос в процессе проверки аутентификации пользователей. Прочитал статью автора и разобрался. Спасибо!

Автор: r 12.12.2005, 02:17
Да куки хорошо, если они не отключены у пользователя smile , пользуюсь сессиями, Вам всем советую, ибо вижу их огромное преимущество. А куки их ведь можно редактировать и многое другое о чем я еще не знаю. Даже где-то читал что есть возможность, при запуске скрипта пользователем(о чем он даже не сможет догадатся), считать у него все куки к себе в файлик.
Я конечно сомневаюсь в этом, но авторизация с куками, ненадежна. Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)