И снова аутентификация

  • Автор темы Anclaud
  • Дата начала

Фанат

oncle terrible
Команда форума
ForJest, я могу пояснить свою мысль.
эти две уважаемые программы прддерживают постоянное соединение с сервером.
и отследить попытку второго входа не составляет проблемы.
Веб-же браузер, как описано по ссылке, которую я любезно процитировал, постоянного соединения не имеют.
и поэтому просто считать правильным последнего не будет иметь НИ МАЛЕЙШЕГО ожидаемого эффекта.
первый запросил страницу? авторизован. зашибись. второй запросил? О, он! а первый об этом не знает. потом первый полез - ради бога! ты у нас теперь последний - получай.
Так что, смысла, повторюсь, в такой системе нет, если внимательно читать фак на танке
 

SelenIT

IT-лунатик :)
Anclaud
любой вариант "защиты" на клиенте элементарно ломается. hint: у юзера на машине не всегда один браузер.

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

yugene

Отошел от дел
Originally posted by SelenIT
Anclaud
нужно просто проверять на сервере количество обращений к данной странице под данным логином за последние (к примеру) 5 минут и блокировать все попытки входа, пока оно больше нуля.
Оборвалась вдруг у меня страница на середине и никакой рефреш уже не поможет. Более того, в течении пяти минут я могу просмотреть все страницы сайта только по одному разу.
 

SelenIT

IT-лунатик :)
Не все, а только те суперпуперсекретные, для которых стоит такое ограничение. Вообще не совсем понятно, зачем оно нужно.
 

yugene

Отошел от дел
Re: И снова аутентификация

Anclaud, используй сессии, храни их в БД, туда же пиши логин пользователя. При каждой попытки логина - смотри, нет ли в базе неустаревшей сессии с таким логином. Сессия удаляется либо при правильном выходе пользователя (кнопка ВЫХОД), либо по таум-ауту.
 

Кром

Новичок
Да, тяжелый случай. Советчиков уйма, да что толку...
На самом деле советовать что-то автору топика совершенно бессмысленно, пока он не ответит на вопрос Денча: "Да и потом, на фига это надо?"
Денч, тебя это тоже касается. Задал вопрос, а ответ-то получил? Тем не менее советы из тебя сыпятся как из рога изобилия. Вредные советы.
 

ForJest

- свежая кровь
Фанат
Да что вы говорите? Не поддерживает постоянного соединения? Какой ужас! Что же это они так! Недосмотр!
--------
Смысл в том, что нужно выбрать политику как вести себя при наличии конфликтов. Это общий алгоритм. Он не зависит от того, есть постоянное соединение или его нет. Смысл его очень простой - в каждый момент времени всего один авторизованый пользователь. Как реализовать - это другой вопрос.
-------
Поэтому - вырубите пожалуйста автоответчик.
 

empty

Guest
Следовательно надо запретить открытие по ссылки из одного браузера в другой. Также запретить нажатие Ctrl+N и
Shift + Кнопка мышки
Я бы на сайт, где мне что-то запрещают делать, к чему я привык, больше бы первого раза не зашёл...
 

koresh

Guest
И действительно, зачем тебе это нужно. Пользователям будет очень неприятно, когда твоим браузером кто-то управляет. Мой тебе совет:-Оставь все как есть.
 

Anclaud

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

-~{}~ 10.02.05 00:49:

yugene
Если открыть браузер в новом окне из другого окна то и номер сессии будет идентичен по этому я не узнаю о втором входе.
А я все таки решил сделать. Так. кто последний под этим логином зашел тот и хозяин. а предыдущему выход...

-~{}~ 10.02.05 00:51:

И где можно разместить ссылку, что бы народ потестил проект денька 3 и после этого только его запустить в рабочую эксплотацию??
 

yugene

Отошел от дел
Originally posted by Anclaud
Сайт который я делаю является комерческим и там есть функция вывода денег на WebMoney и если одновременно открыть две страницу вывода то можно обмануть систему.
По этому пришлось делать дополнительную проверку на то какая сумма было до заявки и которая стала во время заявки. Если есть изменения Больше или меньше то пиннок...
Думаю, это будет не первый сайт, работающий с WM. Как у других это реализовано, смотрели?
 

Vasya

Guest
IMHO.
Первая задача -- обеспечить уникальность HTTP-юзера для сайт-юзера.
Например, привязкой SID к сайт-юзеру в какой-то таблице. И при каждом запросе проверять соответствие.
Если авторизовался тот же сайт-юзер с другим SID, то для первого авторизация прекращается.
Вторая задача -- обеспечить некий путь сайт-юзера в отведенной области сайта. Это делается, например, построением графа переходов и хранением узла, где в данный момент находится сайт-юзер. Все запросы идут к диспетчеру (/dispatcher.php?want=gotoA), а этот диспетчер проверяет валидность перехода из сохранённого соостояния в запрашиваемое.
Вроде бы, всё довольно просто :)
 

yugene

Отошел от дел
Originally posted by Vasya
IMHO.
Первая задача -- обеспечить уникальность HTTP-юзера для сайт-юзера.
Например, привязкой SID к сайт-юзеру в какой-то таблице. И при каждом запросе проверять соответствие.
Если авторизовался тот же сайт-юзер с другим SID, то для первого авторизация прекращается.
А если я нажму CTRL+N в окне браузера и откроется новое окно, в нем будет другое SID?
 

Vasya

Guest
Автор оригинала: yugene
А если я нажму CTRL+N в окне браузера и откроется новое окно, в нем будет другое SID?
Это не важно для данной задачи, IMHO. В HTTP можно съэмулировать что угодно, но на это и есть граф переходов на сервере.
Напрмер, в нём записан переход со страницы А0 к Б0. Находясь на странице А0, вы делаете Ctrl-N и контент А0 берете из кеша браузера. Затем в новой странице совершаете разрешённый переход А0 -> Б0. Затем, переходите на старую страницу А0 и пробуете совершить переход А0 -> Б0 повторно -- получаете отлуп.
Актуальное состояние отражает теперь только одна страница вашего браузера.
 

yugene

Отошел от дел
Originally posted by Vasya
Это не важно для данной задачи, IMHO. В HTTP можно съэмулировать что угодно, но на это и есть граф переходов на сервере.
Напрмер, в нём записан переход со страницы А0 к Б0. Находясь на странице А0, вы делаете Ctrl-N и контент А0 берете из кеша браузера. Затем в новой странице совершаете разрешённый переход А0 -> Б0. Затем, переходите на старую страницу А0 и пробуете совершить переход А0 -> Б0 повторно -- получаете отлуп.
Актуальное состояние отражает теперь только одна страница вашего браузера.
А если второй переход будет не А0-Б0, а А0-В0? Получается, у меня открыто два окна - Б0 и В0.

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

Vasya

Guest
А если второй переход будет не А0-Б0, а А0-В0? Получается, у меня открыто два окна - Б0 и В0.
Нет. Если переход А0-В0 даже разрешен в графе, то он не совпадёт с состоянием для сайт-юзера, которое (состояние) хранится на сервере -- сайт-юзер находится на странице Б0. Поэтому переход А0-В0 невалиден.
 
Сверху