Forum Webscript.Ru

Программирование => PHP => Тема начата: anlgizer от 26 Августа 2002, 22:50:14

Название: Проблема авторизации с использованием сессий.
Отправлено: anlgizer от 26 Августа 2002, 22:50:14
Привет!
Итак, идентификация происходит следующим образом:
пользователь вводит логин/пароль, который сверяется с БД. Авторизированному пользователю открывается сессия, в которой хранится id, который используется для последующей работы скрипта.
для зашиты от взлома имеется следующий алгоритм.


unset($user_id);
session_start();
if(!session_is_registered(\'user_id\'))
{
        header(\'location: check.php\');
}
....вывод данных...
 

Уничтожать сессию или переменную сессии нельзя - придется опять вводить пароли.

Если другой пользователь, работаеющий с того же компа не закрыв браузера (Куки работают, насколько мне известно до закрытия окна (по дефалту ) ) просто введет Url документа, то она выводит данные предыдущего вошедшего юзера.
То же самое, если воспользоваться конпкой back браузера и заново авторизироватся - выводятся данные предыдущего.

как же быть?
:insane:
Название: Проблема авторизации с использованием сессий.
Отправлено: Меняздесьдавнонет от 26 Августа 2002, 23:38:40
Казнить нельзя помиловать.
Сессию убивать нельзя, потому, что придется вводить пароли.
Но при этом может придти друго юзер и без пароля войти.

Ты уж сам определись, как-нибудь, чего ты хочешь.

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

БОЛЬШЕ от тебя ничего не зависит.
Странно вообще, что ты озаботился, кто там сидит за компом.
Название: Проблема авторизации с использованием сессий.
Отправлено: anlgizer от 26 Августа 2002, 23:55:24
да, кстати, puple это щенок...

я хочу чтобы при входе на ЛЮБУЮ страницу, с того же компа, без закрытия браузера, если юзер не прошел авторизации (не знаю как, может флаг поставить... а где его хранить?) то его ворочало в начало.

блин... хреново....
получается никак!!! не может быть такого....
Название: Проблема авторизации с использованием сессий.
Отправлено: Меняздесьдавнонет от 27 Августа 2002, 00:08:53
Тебе наддо быть корректнее в формулировках.
пока это напоминает причитания тещи, у которой опрокинули таз а борщом.
Я, как бы ответил, тебе, основываясь на своем недюжинном телепитическом аппарате, но вообще я сомневаюсь, что правильно понял твои проблемы.
Название: Проблема авторизации с использованием сессий.
Отправлено: anlgizer от 27 Августа 2002, 00:30:30
мисандерстуд.
щас еще раз попробую.

юзер вводит логин/парольt, открывается сессия, туда записывается user_id из БД, ссответствующий логи/пароль.
перенаправляется а другую страничку, скажем erminal.php

для защиты от url типа terminal.php?user_id=1
очищается $user_id
открывается сессия.
Преверяется, есть в области хранения данных сессии переменная user_id, которая должна была быть установлена при авторизации.

Есть - работаем дальше, нет - редирект на страничу авторизации.

юзер ушел, не закрыв окно браузера, скажем, ввел ntv.ru посмотрел новости и ушел.

пришел злодей, ввел адрес странички авторизации. Т.к. брауер не закрылся, то кука пред. пользователя осталась.
Злодей вводит свой логин/пароль но сессия считается незаконченной, кука не перезаписывается, остается переменная с user_id другого пользователя.

другой вариант, злодей вводит сразу terminal.php и, опять же, считается "своим", получает информацию предыдущего юзера.

как сделать чтобы так не было?
Название: Проблема авторизации с использованием сессий.
Отправлено: Меняздесьдавнонет от 27 Августа 2002, 10:11:40
Ну, ты как - проснулся уже? :-)
Отслеживать с сервера, кто сидит за компом больше не хочешь?
Я на это надеюсь очень, во всяком случаее.
А то после твоих слов о
Цитировать
блин... хреново....
получается никак!!! не может быть такого....

Я уж беспокоиться начал.

В общем.
при попадании на страницу авторизации надо, естественно, на ней запрашивать пароль, а не писать "Здравствуйте, дорогой юзернейм!".

От того, что один юзер окно не закрыл, а другой пришел - ты НЕ ЗАЩИТИШЬСЯ НИКАК. Это следует из здравого смысла. Есть такая штука в жизни, кроме мануала по РНР. Так что relax & enjoy. что по-русски звучит "выпей и забей".

Ну, в общем, ты можешь уменьшить время жизни сессии. Но этим ты можешь подгадить ннормальным юзерам, а злодей все равно придет в этот промежуток.
Название: Проблема авторизации с использованием сессий.
Отправлено: Меняздесьдавнонет от 27 Августа 2002, 10:14:14
да, а щенок - это pup. Просто pup. А слова puple ни в одном из известных мне языков нет.
Название: Проблема авторизации с использованием сессий.
Отправлено: Maniac от 27 Августа 2002, 14:49:22
Кстати, про
Цитировать
relax & enjoy
...
А на фиг тебе такой уровень защищенности нужен? Вообще говоря, даже в ФБР компы не выключаются, если юзер отошел покурить. Или ты пишешь внутренний сайт для напропалую интригующих сотрудников корпорации? ИМХО, большинство посетителей среднестатистического сайта находятся на достаточной дистанции друг от друга