Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 23.10.2004, 15:43
Flesh5 вне форума Посмотреть профиль Отправить личное сообщение для Flesh5 Посетить домашнюю страницу Flesh5 Найти все сообщения от Flesh5
  № 1  
Flesh5

Регистрация: Jun 2002
Сообщений: 226
Отправить сообщение для Flesh5 с помощью ICQ
По умолчанию Решение задачи: "два пользователя с одним паролем!"

Что посоветуете сделать для решения вот такой задачи. Есть сайт который защищен паролем. Нужно создать механизм запрещающий нескольким пользователям заходить одновременно с одним паролем.
После длительных размышлений пришел к выводу что все это можно сделать с помощью MySQL! При авторизации я сохраняю имя пользователя, время когда он подключился и IP адрес в базе данных! Также я обновляю данные (время) при обращении к странице сайта.
В течении следующих 10 минут (с момента последнего подключения реального пользователя) я запрещаю подключатся пользователям с другим IP адресом!
Если прошло больше 10 минут, это означает что пользователь отключился и зашел заново, но уже с другим IP адресом!
Но у этого метода есть свой недостаток! Если например пользователь не проявлял активность в течении 10 минут любой другой пользователь может подключится и "выкинуть" реального. Решением является: размещение Ява кода на каждой странице, который будет делать Represh каждые 9 минут.
Как видно это все слишком сложно! Может показаться что я изобретаю велосипед! По этой причине прошу вашего совета по решению данного вопроса!
Приму любую критику, замечания и конечно советы!
Спасибо за уделенное мне время

База будет иметь следующий вид:
UserName CHAR
Password CHAR
OwnerIP CHAR
LastEnter INT

Старый 23.10.2004, 19:57
Nirva вне форума Посмотреть профиль Отправить личное сообщение для Nirva Посетить домашнюю страницу Nirva Найти все сообщения от Nirva
  № 2  
Nirva
"Вождь"
 
Аватар для Nirva

Регистрация: Jun 2002
Адрес: New Zealand
Сообщений: 4,600
Отправить сообщение для Nirva с помощью ICQ
>> Есть сайт который защищен паролем
пароль хорошо, а способ авторизации - лучше.
>> Решением является: размещение Ява кода на каждой странице, который будет делать Represh каждые 9 минут.
предлагается прочитать html спецификацию. перегружать страницу можно средствами html.

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

Старый 23.10.2004, 20:50
Flesh5 вне форума Посмотреть профиль Отправить личное сообщение для Flesh5 Посетить домашнюю страницу Flesh5 Найти все сообщения от Flesh5
  № 3  
Flesh5

Регистрация: Jun 2002
Сообщений: 226
Отправить сообщение для Flesh5 с помощью ICQ
Хочу заметить что под термином "защищен паролем" подразумевается авторизация (session_start(), $_SESSION['username'], $_SESSION['password'])
Прошу прошения если не правильно выразился
Что касается "если тебе нужно однопользовательское приложение - выкидывай всех", то не выйдет. Пользователей куча, но имя пользователя и пароль покупается за вечно зеленые, посему многие попытаются заюзать один пароль. А как известно за лишний трафик мне платить не охотно.
Надо сделать так что бы, если пользователь с таким именем уже зашел на сайт, то другим аксес динаид! :-)


Последний раз редактировалось Flesh5; 23.10.2004 в 20:54.
Старый 23.10.2004, 22:09
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 4  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: 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++

Старый 24.10.2004, 12:09
Flesh5 вне форума Посмотреть профиль Отправить личное сообщение для Flesh5 Посетить домашнюю страницу Flesh5 Найти все сообщения от Flesh5
  № 5  
Flesh5

Регистрация: Jun 2002
Сообщений: 226
Отправить сообщение для Flesh5 с помощью ICQ
Цитата:
Оригинал написал(а) Crazy
Правильный ответ: ты не должен этого хотеть. Прежде, чем заниматься бизнесом в Сети, нужно понять, как оная Сеть функционирует.
Мне не понятно вы к чему? "нужно понять, как оная Сеть функционирует"
Может уточните свою мысль?

Старый 24.10.2004, 12:35
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 6  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: 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.
Старый 24.10.2004, 14:47
Flesh5 вне форума Посмотреть профиль Отправить личное сообщение для Flesh5 Посетить домашнюю страницу Flesh5 Найти все сообщения от Flesh5
  № 7  
Flesh5

Регистрация: Jun 2002
Сообщений: 226
Отправить сообщение для Flesh5 с помощью ICQ
Креизи мне понравилась ваша мысль, но попрошу объяснить как можно определить в каком случае происходит подключение реального пользователя? Вот например:
Некий пользователь с именем Вася Пупкин подключился к моему сайту впервые! Я сгенерировал ему индивидуальный номер
s=598dd721ebd0c550870aabedc0770973
Данные я сохранил как в базу данных так и в кукисах пользователя! Все как будто оки токи!
Теперь некий XXXXX пользователь пытается подключится с данным именем и паролем, но номер сессии не совпадает! В данном случае пользователь XXXXX может быть:
1) Злоумышленник который пытается использовать чужой пароль! Мы пришли к этому выводу так как его номер сессии не совпадает с номером сохраненном в базе данных!
2) Владелец с именем Вася Пупкин решил зачистить компьютер и удалил все кукисы! В этом случае его номер сессии не совпадает с номером в базе данных и он расценивается как злоумышленник!
Единственным решением будет если можно отловить момент ухода с сайта пользователя! В противном случае, нет возможности определить по какой причине не совпадают номер сессий: попытка злоумышленника или реальный пользователь пытается зайти заново на сайт!

Старый 24.10.2004, 18:45
Flesh5 вне форума Посмотреть профиль Отправить личное сообщение для Flesh5 Посетить домашнюю страницу Flesh5 Найти все сообщения от Flesh5
  № 8  
Flesh5

Регистрация: Jun 2002
Сообщений: 226
Отправить сообщение для Flesh5 с помощью ICQ
Хочу обратить ваше внимание уважаемый "Crazy", на тот факт что сохранять IP адрес пользователя намного лучше, так как проблема у пользователя возникает проблема только в том случае если он отключился от Интернета и подключился заново в течении 10 минут, только в этом случае ему сайт выдаст сообщение: "Ваш пароль возможно используется другим пользователем , если ваш последний визит на сайте был не раньше чем 10 минут назад, пожалуйста подождите пока сайт обновит данные (макс. 10 минут) и попытайтесь войти заново, если вы все равно не смогли подключится пожалуйста сообщите администратору!".
Конечно это неудобства для пользователя, но другого выхода я не вижу!
Хочу заметить что вопрос не из легких! И решение проблемы не многим известно!
П.С. Проблема вызвана тем что нет возможности определить момент ухода пользователя с сайта! По этой причине и сохраняем IP адрес, который и дает возможность определить нашего пользователя. Но возникает вопрос: Как определить почему изменился IP адрес пользователя? Пользователь сделал ReConnect или это злоумышленник пытается подключится с чужим паролем?

Старый 24.10.2004, 19:45
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 9  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Оригинал написал(а) Flesh5
Креизи мне понравилась ваша мысль, но попрошу объяснить как можно определить в каком случае происходит подключение реального пользователя?
Друг, ты бредишь. Какого еще "реального" пользователя? Я же говорю: учи азы HTTP. У кого есть валидные логин и пароль -- тот и есть твой пользователь.

Цитата:
В противном случае, нет возможности определить по какой причине не совпадают номер сессий: попытка злоумышленника или реальный пользователь пытается зайти заново на сайт!
Ты не врубился в смысл алгоритма. Намек: там не упоминается слово "злоумышленик".
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 24.10.2004, 19:50
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 10  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Оригинал написал(а) Flesh5
Хочу обратить ваше внимание уважаемый "Crazy", на тот факт что сохранять IP адрес пользователя намного лучше, так как проблема у пользователя возникает проблема только в том случае если он отключился от Интернета и подключился заново в течении 10 минут
А также, если он ходит через продвинуто настроенный прокси (например -- squid). Hint: прокси могут обрабатывать запросы совместно, распределяя нагрузку. Соответственно, запросы на сайт могут в одной сессии приходить с разных IP. Это одна из причин, почему контроль сессий по IP не вшит жестко в PHP.

Аналогично, если два пользователя ходят через один прокси -- у них может быть один и тот же IP.

Цитата:
П.С. Проблема вызвана тем что нет возможности определить момент ухода пользователя с сайта!
Я ж говорю: бизнес-процесс "спроектирован" в условиях незнакомства с реалиями протокола HTTP.
__________________
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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:23.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.