Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Контроль авторизации.

Сообщения:  [1-10]   [11-11] 

 
 автор: tAleks   (13.01.2007 в 11:59)   письмо автору
 
   для: cheops   (13.01.2007 в 00:53)
 

Спасибо!

   
 
 автор: cheops   (13.01.2007 в 00:53)   письмо автору
 
   для: tAleks   (12.01.2007 в 16:40)
 

>Это нормальный способ? или я что-то не учел?
Нормальный.

   
 
 автор: cheops   (13.01.2007 в 00:53)   письмо автору
 
   для: tAleks   (12.01.2007 в 21:29)
 

>Люди знающие, скажите плиз, можно ли подделать сессию?
Нет, можно лишь украть SID, но это тоже не просто, да и действует он ограниченное время.

   
 
 автор: Valick   (12.01.2007 в 23:33)   письмо автору
 
   для: tAleks   (12.01.2007 в 21:29)
 

Теоретически поддлелать сессию можно всего лишь надо перебрать 36^32, а по теории вероятности его можно угадать с первого раза.
чаще всего идентификаторы сессий "воруют".

   
 
 автор: tAleks   (12.01.2007 в 23:02)   письмо автору
 
   для: NIK   (12.01.2007 в 22:48)
 

Спасибо за ответ, но все же интересно мнение профи...

   
 
 автор: NIK   (12.01.2007 в 22:48)   письмо автору
 
   для: tAleks   (12.01.2007 в 21:29)
 

на счёт подделки сессии я сейчас открыл книгу - угадайте кто автор :) - вроде бы такого примера не приводилось. Но я всё-равно подстраховался бы и сделал проверку. Один запрос к БД, особенно такой простой будет занимать меньше секунды, даже разницы не будет!

> И приемлем ли используемый мною метод контроля авторизации?
я использую примерно такой же, получается что да :)


$session_user = FormDataCheck($_SESSION['winmodding_user'], 15);
$session_user_id = FormDataCheck($_SESSION['winmodding_user_id'], 5);
$session_user_password = FormDataCheck($_SESSION['winmodding_user_password'], 255);
$cookie_user = FormDataCheck($_COOKIE['winmodding_user'], 15);
$cookie_user_id = FormDataCheck($_COOKIE['winmodding_user_id'], 5);
$cookie_user_password = FormDataCheck($_COOKIE['winmodding_user_password'], 255);

if (!empty($session_user) AND !empty($session_user_id) AND !empty($session_user_password)) {
  $query_sel = mysql_query("SELECT * FROM users WHERE id = '$session_user_id' AND login = '$session_user' AND password_md5 = '$session_user_password'");
  if (mysql_num_rows($query_sel) == 1) {
    define (WINMODDING_ID, $session_user_id); 
    define (WINMODDING_USER, $session_user); /
    define (WINMODDING_REGISTRATED, $registrated); 
    define (WINMODDING_LOGIN, true); 
  } else $user_menu = $root."engine_includes/tpl_login.php";
} else {
  if (!empty($cookie_user) AND !empty($cookie_user_id) AND !empty($cookie_user_password)) {
    $query_sel = mysql_query("SELECT * FROM users WHERE id = '$cookie_user_id' AND login = '$cookie_user' AND password_md5 = '$cookie_user_password'");
    if (mysql_num_rows($query_sel) == 1) {
      define (WINMODDING_ID, $cookie_user_id); 
      define (WINMODDING_USER, $cookie_user); 
      define (WINMODDING_REGISTRATED, $registrated); 
      define (WINMODDING_LOGIN, true); 
    } else $user_menu = $root."engine_includes/tpl_login.php";
  } else {
    $user_menu = $root."engine_includes/tpl_login.php";

    define (WINMODDING_ID, 0);
    define (WINMODDING_USER, "Ãîñòü");
    define (WINMODDING_LOGIN, false);
  }
}

   
 
 автор: tAleks   (12.01.2007 в 21:29)   письмо автору
 
   для: NIK   (12.01.2007 в 21:02)
 

Ааа, ну если так то да... но опять же лишний запрос к БД......

Люди знающие, скажите плиз, можно ли подделать сессию?

И приемлем ли используемый мною метод контроля авторизации?

   
 
 автор: NIK   (12.01.2007 в 21:02)   письмо автору
 
   для: tAleks   (12.01.2007 в 18:33)
 

> Это чтоли при каждом обращении спрашивать Логин и Пароль?
нет. Просто заносить логин и пароль в сессию, а затем на каждой странице сверять их с реальным логином/паролем из БД/файла.
Пусть умные люди скажут, реально ли подделать обычную сессию, и если нет, то всё хорошо.

   
 
 автор: tAleks   (12.01.2007 в 18:33)   письмо автору
 
   для: NIK   (12.01.2007 в 17:21)
 

>лучше делать по-другому. Заносить в значение сессии логин и пароль, а затем в вашей функции сверять, совпадают ли они с реальными.

Это чтоли при каждом обращении спрашивать Логин и Пароль?

>Я не помню, можно ли подделать сессию, но всё-равно лучше подстраховаться. К тому же если будете работать с авторизацией на куках, предложенный способ явно спасёт при подделке куки.

У меня когда юзер вводит логи и пароль. Загружаются его днанные в сессию.
А приведенная мной функция, только проверяет авторизован ли юзер. И если юзер не авторизован, она переадресует его на стр. авторизации.

Вопрос в том, приемлемый ли это метод. Или можно ли сделать как-то более грамотно?

   
 
 автор: NIK   (12.01.2007 в 17:21)   письмо автору
 
   для: tAleks   (12.01.2007 в 16:40)
 

лучше делать по-другому. Заносить в значение сессии логин и пароль, а затем в вашей функции сверять, совпадают ли они с реальными. Я не помню, можно ли подделать сессию, но всё-равно лучше подстраховаться. К тому же если будете работать с авторизацией на куках, предложенный способ явно спасёт при подделке куки.

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования