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
Форумы портала PHP.SU :: Версия для печати :: класс пользователя и авторизация
Форумы портала PHP.SU » » Объектно-ориентированное программирование » класс пользователя и авторизация

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

1. foozzi - 15 Мая, 2013 - 20:54:46 - перейти к сообщению
Написал класс для авторизации/аунтификации пользователя и определения его.
Как я понял он уязвим и авторизоватся может гость по кукам
класс - https://github[dot]com/foozzi/typica[dot][dot][dot]ass/lib[dot]User.php
2. caballero - 15 Мая, 2013 - 21:03:27 - перейти к сообщению
а как уязвимость связана с тем класс это и не класс?
и чем смысл класса авторизации? Что он инкапсулирует этот класс?
или просто хочется выглядеть крутым - я тоже умею класс написать
3. foozzi - 15 Мая, 2013 - 21:23:52 - перейти к сообщению
caballero пишет:
а как уязвимость связана с тем класс это и не класс?
и чем смысл класса авторизации? Что он инкапсулирует этот класс?
или просто хочется выглядеть крутым - я тоже умею класс написать

В данный момент я не прошу поливать меня дерьмом, я прошу подсказать в чем ошибка
4. LifePlay - 16 Мая, 2013 - 08:43:30 - перейти к сообщению
Я бы не рекомендовал делать так:
PHP:
скопировать код в буфер обмена
  1. $Check_cookie = db::normalizeQuery("SELECT * FROM users WHERE hash_user = '%s' AND ip_user = '%s'", $_COOKIE['hash'], $_COOKIE['ip']);
Так как $_COOKIE можно подделать и в итоге получить доступ по краденым кукам

Должна хотя бы быть функция проверки соответствия Хеша, браузеру которому этот Хеш установлен. Но информация о браузере должна хранится на сервере. Например
PHP:
скопировать код в буфер обмена
  1. $Check_cookie = db::normalizeQuery("SELECT * FROM users WHERE hash_user = '%s' AND ip_user = '%s'", $_COOKIE['hash'], $_COOKIE['ip']);
  2.  
  3. if($Check_cookie && $Check_cookie['user_agent'] == $_SERVER['HTTP_USER_AGENT'])
  4.         {
  5.         //...
5. foozzi - 16 Мая, 2013 - 22:57:28 - перейти к сообщению
LifePlay пишет:
Я бы не рекомендовал делать так:
PHP:
скопировать код в буфер обмена
  1. $Check_cookie = db::normalizeQuery("SELECT * FROM users WHERE hash_user = '%s' AND ip_user = '%s'", $_COOKIE['hash'], $_COOKIE['ip']);
Так как $_COOKIE можно подделать и в итоге получить доступ по краденым кукам

Должна хотя бы быть функция проверки соответствия Хеша, браузеру которому этот Хеш установлен. Но информация о браузере должна хранится на сервере. Например
PHP:
скопировать код в буфер обмена
  1. $Check_cookie = db::normalizeQuery("SELECT * FROM users WHERE hash_user = '%s' AND ip_user = '%s'", $_COOKIE['hash'], $_COOKIE['ip']);
  2.  
  3. if($Check_cookie && $Check_cookie['user_agent'] == $_SERVER['HTTP_USER_AGENT'])
  4.         {
  5.         //...


допилил проверку по юзер-агенту
6. LIME - 16 Мая, 2013 - 23:02:01 - перейти к сообщению
и это легко подделать
проверяй по ip
7. foozzi - 16 Мая, 2013 - 23:25:38 - перейти к сообщению
LIME пишет:
и это легко подделать
проверяй по ip

дык я и проверяю по ip
(Добавление)
LIME пишет:
и это легко подделать
проверяй по ip

а как подделать то, если сессии
8. esterio - 16 Мая, 2013 - 23:34:52 - перейти к сообщению
user agent - всего лишь заголовок и к сессиям отношения не имеет
9. foozzi - 16 Мая, 2013 - 23:38:56 - перейти к сообщению
esterio пишет:
user agent - всего лишь заголовок и к сессиям отношения не имеет

добавил проверку по ip
10. LifePlay - 17 Мая, 2013 - 15:08:14 - перейти к сообщению
LIME пишет:
и это легко подделать
проверяй по ip

IP может быть динамичным как тогда быть?
11. LIME - 17 Мая, 2013 - 15:10:20 - перейти к сообщению
LifePlay после того как ты авторизовался он у тебя прыгать не будет))
(Добавление)
....динамичный IP)))....
12. foozzi - 17 Мая, 2013 - 16:25:07 - перейти к сообщению
LIME пишет:
LifePlay после того как ты авторизовался он у тебя прыгать не будет))
(Добавление)
....динамичный IP)))....

Еще вопросик, не могу понять, почему этот класс все же не соответствует ООП?
13. esterio - 17 Мая, 2013 - 16:29:10 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. public static function Check_Access()
  2.     {
  3.         if(!isset($_SESSION['user_id']) && !isset($_SESSION['raw']))
  4.         {
  5.             show404('Ошибка доступа', 'Авторизуйтесь');
  6.         }
  7.     }


http://ru[dot]wikipedia[dot]org/wiki/%D0[dot][dot][dot]D%D0%B8%D0%B5%29

И что мне придеться самому писать show404? а если мне вместо 'Авторизуйтесь' нужно другое сообщение вывести?
(Добавление)
PHP:
скопировать код в буфер обмена
  1. public static function logout()
  2.     {
  3.         self::$user = null;
  4.  
  5.         self::destroy_session_cookie();
  6.  
  7.         header("Location: /main");
  8.        
  9.         exit;
  10.     }


не нашел метод
PHP:
скопировать код в буфер обмена
  1. destroy_session_cookie

и я главной в большинстве случаев делаю / вместо /main
в общем начали в павильном направлении, но ен обижайтесь если не дотягиваете
14. DeepVarvar - 17 Мая, 2013 - 21:03:06 - перейти к сообщению
esterio пишет:
в общем начали в павильном направлении
После долгих растолковываний по аське.
Я рад что он прозрел.. Хотя он поболее рад, конечно же.. Закатив глазки
15. foozzi - 17 Мая, 2013 - 22:36:43 - перейти к сообщению
esterio пишет:
PHP:
скопировать код в буфер обмена
  1. public static function Check_Access()
  2.     {
  3.         if(!isset($_SESSION['user_id']) && !isset($_SESSION['raw']))
  4.         {
  5.             show404('Ошибка доступа', 'Авторизуйтесь');
  6.         }
  7.     }


http://ru[dot]wikipedia[dot]org/wiki/%D0[dot][dot][dot]D%D0%B8%D0%B5%29

И что мне придеться самому писать show404? а если мне вместо 'Авторизуйтесь' нужно другое сообщение вывести?
(Добавление)
PHP:
скопировать код в буфер обмена
  1. public static function logout()
  2.     {
  3.         self::$user = null;
  4.  
  5.         self::destroy_session_cookie();
  6.  
  7.         header("Location: /main");
  8.        
  9.         exit;
  10.     }


не нашел метод

и я главной в большинстве случаев делаю / вместо /main
в общем начали в павильном направлении, но ен обижайтесь если не дотягиваете


Немного не понял по поводу метода Check_Access(), у меня файл с ф-ми отдельным файлом.
А метод destroy_session_cookie() вот же он https://github[dot]com/foozzi/typica[dot][dot][dot]ib[dot]User.php#L189 (189 строка)

 

Powered by ExBB FM 1.0 RC1