Forum Webscript.Ru
Программирование => PHP => Тема начата: 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:
-
Казнить нельзя помиловать.
Сессию убивать нельзя, потому, что придется вводить пароли.
Но при этом может придти друго юзер и без пароля войти.
Ты уж сам определись, как-нибудь, чего ты хочешь.
правда, выбор у тебя небольшой.
сделать кнопку логаут, которая прибьет сессию, и написать юзеру большими буквами, что если он ее не нажмет, то враги стырят у него всю инфу.
БОЛЬШЕ от тебя ничего не зависит.
Странно вообще, что ты озаботился, кто там сидит за компом.
-
да, кстати, puple это щенок...
я хочу чтобы при входе на ЛЮБУЮ страницу, с того же компа, без закрытия браузера, если юзер не прошел авторизации (не знаю как, может флаг поставить... а где его хранить?) то его ворочало в начало.
блин... хреново....
получается никак!!! не может быть такого....
-
Тебе наддо быть корректнее в формулировках.
пока это напоминает причитания тещи, у которой опрокинули таз а борщом.
Я, как бы ответил, тебе, основываясь на своем недюжинном телепитическом аппарате, но вообще я сомневаюсь, что правильно понял твои проблемы.
-
мисандерстуд.
щас еще раз попробую.
юзер вводит логин/парольt, открывается сессия, туда записывается user_id из БД, ссответствующий логи/пароль.
перенаправляется а другую страничку, скажем erminal.php
для защиты от url типа terminal.php?user_id=1
очищается $user_id
открывается сессия.
Преверяется, есть в области хранения данных сессии переменная user_id, которая должна была быть установлена при авторизации.
Есть - работаем дальше, нет - редирект на страничу авторизации.
юзер ушел, не закрыв окно браузера, скажем, ввел ntv.ru посмотрел новости и ушел.
пришел злодей, ввел адрес странички авторизации. Т.к. брауер не закрылся, то кука пред. пользователя осталась.
Злодей вводит свой логин/пароль но сессия считается незаконченной, кука не перезаписывается, остается переменная с user_id другого пользователя.
другой вариант, злодей вводит сразу terminal.php и, опять же, считается "своим", получает информацию предыдущего юзера.
как сделать чтобы так не было?
-
Ну, ты как - проснулся уже? :-)
Отслеживать с сервера, кто сидит за компом больше не хочешь?
Я на это надеюсь очень, во всяком случаее.
А то после твоих слов о
блин... хреново....
получается никак!!! не может быть такого....
Я уж беспокоиться начал.
В общем.
при попадании на страницу авторизации надо, естественно, на ней запрашивать пароль, а не писать "Здравствуйте, дорогой юзернейм!".
От того, что один юзер окно не закрыл, а другой пришел - ты НЕ ЗАЩИТИШЬСЯ НИКАК. Это следует из здравого смысла. Есть такая штука в жизни, кроме мануала по РНР. Так что relax & enjoy. что по-русски звучит "выпей и забей".
Ну, в общем, ты можешь уменьшить время жизни сессии. Но этим ты можешь подгадить ннормальным юзерам, а злодей все равно придет в этот промежуток.
-
да, а щенок - это pup. Просто pup. А слова puple ни в одном из известных мне языков нет.
-
Кстати, про
relax & enjoy
...
А на фиг тебе такой уровень защищенности нужен? Вообще говоря, даже в ФБР компы не выключаются, если юзер отошел покурить. Или ты пишешь внутренний сайт для напропалую интригующих сотрудников корпорации? ИМХО, большинство посетителей среднестатистического сайта находятся на достаточной дистанции друг от друга