Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Авторизация на php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
improbable
Отправлено: 17 Марта, 2012 - 17:39:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Я еще недостаточно опытен, чтобы оценить все плюсы и минусы данного метода.
Я не знаю, существует ли он вообще, просто пришло на ум сделать, - сделал.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         $ip = $_SERVER['REMOTE_ADDR'];
  3.                         include 'database.php';
  4.                         $status = '1';
  5.                                 $query = 'SELECT * FROM `sessions` WHERE `ip` = "'.$ip.'" AND `status` = "'.$status.'"';
  6.                                 $sql = mysql_query($query);
  7.                                         if(!mysql_num_rows($sql)){
  8.                                                 echo "you are not logged";
  9.                                                                                }
  10.                                         else                                 {
  11.                                                 echo "you are logged";
  12.                                                                                }
  13. ?>


При авторизации через специальную форму, в таблицу `sessions` заносятся данные об IP адресе пользователя, дате входа, имени пользователя.
При следующем входе на страницу, для входа на которую нужна авторизация, нас пропускает, так как IP с тех пор не изменился. Каждый IP соответствует конкретному пользователю, так же, при входе, будет обнуляться статус всех сессий для всех пользователей с данным IP. При выходе то же самое.

Какие плюсы, минусы?
P.S. Я знаю, что IP можно подделать, но ведь для этого надо его знать...
 
 Top
tarweb
Отправлено: 17 Марта, 2012 - 18:16:54
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Прикольно !
Например я зарегистрировался с домашнего компа а потом зашел, например с работы - и что?
 
 Top
improbable
Отправлено: 17 Марта, 2012 - 18:20:16
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




tarweb пишет:
Прикольно !
Например я зарегистрировался с домашнего компа а потом зашел, например с работы - и что?


Не имеет значения место регистрации.
При авторизации в БД заносятся данные о текущем IP адресе и имени пользователя (имя пользователя вводится при авторизации). После этого авторизация не требуется, пока IP не поменялся. Если заходите с работы - ваша домашняя сессия сбрасывается, создается новая, с рабочим IP адресом.

(Отредактировано автором: 17 Марта, 2012 - 18:21:38)

 
 Top
tarweb
Отправлено: 17 Марта, 2012 - 18:52:37
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Если IP дополнительная защита - то через прокси непонятно.
 
 Top
improbable
Отправлено: 17 Марта, 2012 - 18:54:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




tarweb пишет:
Если IP дополнительная защита - то через прокси непонятно.

Непонятно то, что ты написал))
О какой защите идет речь?
Я просто предложил альтернативу cookies, которые крадут всегда.
Хочу у опытных узнать уязвимости этого метода.
(Добавление)
Если бы вы хоть чуть-чуть шарили в php, то по коду всё бы поняли
 
 Top
tarweb
Отправлено: 17 Марта, 2012 - 19:01:08
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




По Вашему коду(недописаному) видно, что Вы проверяете количество пользователей с одним IP
 
 Top
improbable
Отправлено: 17 Марта, 2012 - 19:06:21
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Нет, проверяются сессии со статусом 1, где IP равен IP машины.
Если таковая строчка найдена в БД - пользователя пускает, дезактивируя (присваивая статус 0) все остальные сессии данного IP и пользователя.

При авторизации в таблицу `sessions` добавляется строка, в которую заносятся session_id, username, IP, дата входа и статус сессии, который по умолчанию равен 1 (включен).

При авторизации с другой сети, скрипт выключит все сессии для конкретного (того, на который заходят) username.

Т.е. активная сессия может быть только одна для пользователя и IP адреса одновременно.

Теперь понятно, или сделать пример?
 
 Top
Okula
Отправлено: 17 Марта, 2012 - 19:08:09
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




improbable пишет:
Если бы вы хоть чуть-чуть шарили в php, то по коду всё бы поняли

По куску кода приведённому тобой понятно только то что ты делаешь выборку из базы по IP адресу. К тому же не практично хранить IP адрес в базе в таком виде котором он отдаётся браузером. Есть специальные функции long2ip() и ip2long()
Данный метод не является практичным, т.к. авторизация будет ненадёжна (это касается мобильных устройств, восновном браузеров Opera Mini, которые используют прокси сервера, которые могут менятся в течении 1 сеанса несколько раз).
Уж лучше писать в куки или сессии и исключить возможность утечки информации с вашего сайта (читайте статьи по безопасности, в частности раздел о кроссайтовом скриптинге - XSS).
 
 Top
improbable
Отправлено: 17 Марта, 2012 - 19:10:24
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Я, в-принципе, и не планирую использовать этот способ для мобильных устройств..
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB