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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: $_SERVER['HTTP_REFERER'] ???
 
 автор: Olga_Soft   (17.08.2007 в 10:14)   письмо автору
 
 

Доброе время суток.
Подскажите пожалуйсто. У меня сайт. Uid пользователя передается по ссылке (,,,ex.php?uid=1Eb23..41), uid временный создается при авторизации. Любой человек может скопировать адресную строку и войти под uid-ом зарегистрировавшегося пользователя. Правильно ли будет использовав $_SERVER['HTTP_REFERER'] отсекать такие действия?

   
 
 автор: Unkind   (17.08.2007 в 10:19)   письмо автору
 
   для: Olga_Soft   (17.08.2007 в 10:14)
 

Неправильно. Лучше сверять IP и/или User-Agent.

   
 
 автор: Olga_Soft   (17.08.2007 в 10:23)   письмо автору
 
   для: Unkind   (17.08.2007 в 10:19)
 

Спасибо.
IP такая штука, которая может быть динамической. Но все равно спасибо.

   
 
 автор: Unkind   (17.08.2007 в 10:29)   письмо автору
 
   для: Olga_Soft   (17.08.2007 в 10:23)
 

Вообще-то можно и подсеть проверять.

   
 
 автор: Olga_Soft   (17.08.2007 в 10:43)   письмо автору
 
   для: Unkind   (17.08.2007 в 10:29)
 

А чем полх вариант с $_SERVER['HTTP_REFERER'] ?
Вот пример поего кода:


function is_user($tmp_key)
 {
  if(empty($tmp_key)){return false;}
  $user = $this->get_user_key($tmp_key);
  
  if(isset($_SERVER['HTTP_REFERER']))
  {
   $my_dir = substr($_SERVER['HTTP_REFERER'], strrpos($_SERVER['HTTP_REFERER'], '/'), // Проверяем откуда пришел 
strlen($_SERVER['HTTP_REFERER']));
   $self = substr($_SERVER['PHP_SELF'], strrpos($_SERVER['PHP_SELF'], '/')+1, strlen($_SERVER['PHP_SELF'])); // Проверяем себя
   if(ereg('\?', $my_dir))
   {
    $my_dir = substr($my_dir, 0, strpos($my_dir, '?'));
   }
   if(strcmp(($this->url."$my_dir"), ($this->url."/$self"))==0)
   {
    if(isset($user['tmp_key']) && $user['tmp_key'] == $tmp_key){return true;}
   }
  }
  return false;
 }

   
 
 автор: Unkind   (17.08.2007 в 11:48)   письмо автору
 
   для: Olga_Soft   (17.08.2007 в 10:43)
 

Тем, что он может не передаваться как из-за настроек браузера, так и просто нельзя будет вбить адрес в адресной строке самому пользователю.

   
 
 автор: Olga_Soft   (17.08.2007 в 14:21)   письмо автору
 
   для: Unkind   (17.08.2007 в 11:48)
 

Понятно. Спасибо.

   
Rambler's Top100
вверх

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