|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Решение задачи: "два пользователя с одним паролем!"
Что посоветуете сделать для решения вот такой задачи. Есть сайт который защищен паролем. Нужно создать механизм запрещающий нескольким пользователям заходить одновременно с одним паролем.
После длительных размышлений пришел к выводу что все это можно сделать с помощью MySQL! При авторизации я сохраняю имя пользователя, время когда он подключился и IP адрес в базе данных! Также я обновляю данные (время) при обращении к странице сайта. В течении следующих 10 минут (с момента последнего подключения реального пользователя) я запрещаю подключатся пользователям с другим IP адресом! Если прошло больше 10 минут, это означает что пользователь отключился и зашел заново, но уже с другим IP адресом! Но у этого метода есть свой недостаток! Если например пользователь не проявлял активность в течении 10 минут любой другой пользователь может подключится и "выкинуть" реального. Решением является: размещение Ява кода на каждой странице, который будет делать Represh каждые 9 минут. Как видно это все слишком сложно! Может показаться что я изобретаю велосипед! По этой причине прошу вашего совета по решению данного вопроса! Приму любую критику, замечания и конечно советы! Спасибо за уделенное мне время База будет иметь следующий вид: UserName CHAR Password CHAR OwnerIP CHAR LastEnter INT |
|
|||||
"Вождь"
|
>> Есть сайт который защищен паролем
пароль хорошо, а способ авторизации - лучше. >> Решением является: размещение Ява кода на каждой странице, который будет делать Represh каждые 9 минут. предлагается прочитать html спецификацию. перегружать страницу можно средствами html. в целом верно, но с пользователями ты заморочился. и с 10 минутами тоже. это уже не твоя задача, откуда заходит пользователь. если тебе нужно однопользовательское приложение - выкидывай всех, если много - раздавай всем разные пароли.
__________________
а мы летим орбитами путями не избитыми... |
|
|||||
Хочу заметить что под термином "защищен паролем" подразумевается авторизация (session_start(), $_SESSION['username'], $_SESSION['password'])
Прошу прошения если не правильно выразился Что касается "если тебе нужно однопользовательское приложение - выкидывай всех", то не выйдет. Пользователей куча, но имя пользователя и пароль покупается за вечно зеленые, посему многие попытаются заюзать один пароль. А как известно за лишний трафик мне платить не охотно. Надо сделать так что бы, если пользователь с таким именем уже зашел на сайт, то другим аксес динаид! :-) Последний раз редактировалось Flesh5; 23.10.2004 в 20:54. |
|
|||||
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Правильный ответ: ты не должен этого хотеть. Прежде, чем заниматься бизнесом в Сети, нужно понять, как оная Сеть функционирует.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
Цитата:
Может уточните свою мысль? |
|
|||||
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Я исчерпываюше выразил свою мысль. Что именно тебе непонятно?
Если же задаться целью тупо и бездумо заткнуть дыру в твоем бизнесе -- именно ту дыру, о которой ты сказал (остальные останутся) -- то это совсем легко: 1. Заводит таблицу с двуми полями: login и sid. 2. При лолине юзера удаляем запись с его login'ом (если такая есть) и вставляем новую с его login'ом и sid'ом его текущей сессии. 3. При каждом обращении юзера сверяем sid. Не совпал со значением в базе -- отказ в доступе.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ Последний раз редактировалось Crazy; 24.10.2004 в 12:38. |
|
|||||
Креизи мне понравилась ваша мысль, но попрошу объяснить как можно определить в каком случае происходит подключение реального пользователя? Вот например:
Некий пользователь с именем Вася Пупкин подключился к моему сайту впервые! Я сгенерировал ему индивидуальный номер s=598dd721ebd0c550870aabedc0770973 Данные я сохранил как в базу данных так и в кукисах пользователя! Все как будто оки токи! Теперь некий XXXXX пользователь пытается подключится с данным именем и паролем, но номер сессии не совпадает! В данном случае пользователь XXXXX может быть: 1) Злоумышленник который пытается использовать чужой пароль! Мы пришли к этому выводу так как его номер сессии не совпадает с номером сохраненном в базе данных! 2) Владелец с именем Вася Пупкин решил зачистить компьютер и удалил все кукисы! В этом случае его номер сессии не совпадает с номером в базе данных и он расценивается как злоумышленник! Единственным решением будет если можно отловить момент ухода с сайта пользователя! В противном случае, нет возможности определить по какой причине не совпадают номер сессий: попытка злоумышленника или реальный пользователь пытается зайти заново на сайт! |
|
|||||
Хочу обратить ваше внимание уважаемый "Crazy", на тот факт что сохранять IP адрес пользователя намного лучше, так как проблема у пользователя возникает проблема только в том случае если он отключился от Интернета и подключился заново в течении 10 минут, только в этом случае ему сайт выдаст сообщение: "Ваш пароль возможно используется другим пользователем , если ваш последний визит на сайте был не раньше чем 10 минут назад, пожалуйста подождите пока сайт обновит данные (макс. 10 минут) и попытайтесь войти заново, если вы все равно не смогли подключится пожалуйста сообщите администратору!".
Конечно это неудобства для пользователя, но другого выхода я не вижу! Хочу заметить что вопрос не из легких! И решение проблемы не многим известно! П.С. Проблема вызвана тем что нет возможности определить момент ухода пользователя с сайта! По этой причине и сохраняем IP адрес, который и дает возможность определить нашего пользователя. Но возникает вопрос: Как определить почему изменился IP адрес пользователя? Пользователь сделал ReConnect или это злоумышленник пытается подключится с чужим паролем? |
|
|||||
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Цитата:
Цитата:
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Цитата:
Аналогично, если два пользователя ходят через один прокси -- у них может быть один и тот же IP. Цитата:
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
Часовой пояс GMT +4, время: 16:23. |
|
« Предыдущая тема | Следующая тема » |
|
|