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

Форум PHP

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

 

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

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

тема: как определить юзер агент?
 
 автор: ols   (24.10.2006 в 03:03)   письмо автору
 
 

Полдскажите функцию плз=))

P.S И еще если кто знает скажите где можно найти справочник в инете по подобным функциям желательно на русском=)) Спасибо=))

   
 
 автор: Lelik   (24.10.2006 в 03:14)   письмо автору
 
   для: ols   (24.10.2006 в 03:03)
 

читаем здесь

   
 
 автор: ols   (24.10.2006 в 12:39)   письмо автору
 
   для: Lelik   (24.10.2006 в 03:14)
 

Например мне необходимо определить версию браузера.
Это так:



 
echo "Ваш браузер $_SERVER['HTTP_USER_AGENT']"-.;
$_SERVER['HTTP_USER_AGENT']

   
 
 автор: cheops   (24.10.2006 в 12:41)   письмо автору
 
   для: ols   (24.10.2006 в 03:03)
 

Эту информацию обычно извлекают из суперглобального массива $_SERVER
<?php
  
echo $_SERVER['HTTP_USER_AGENT'];
?>

   
 
 автор: ols   (25.10.2006 в 00:11)   письмо автору
 
   для: cheops   (24.10.2006 в 12:41)
 

а как сделать так чтобы информацию о браузере выводилась не полностью. Например Opera/8.01

   
 
 автор: cheops   (25.10.2006 в 00:35)   письмо автору
 
   для: ols   (25.10.2006 в 00:11)
 

Можно вырезать название оперы примерно так
<?php 
  
if(preg_match("|Opera[^\s]+|i"$_SERVER['HTTP_USER_AGENT'], $out)) echo $out[0];
?>

только каждый браузер нужно будет обрабатывать отдельно.

   
 
 автор: Unkind™   (25.10.2006 в 00:36)   письмо автору
 
   для: ols   (25.10.2006 в 00:11)
 


<?php
echo strtok(getenv('HTTP_USER_AGENT'), "/")."<br />"//Opera
echo strtok(getenv('HTTP_USER_AGENT'), " ")."<br />"//Opera/8.01
?>

   
 
 автор: ols   (26.10.2006 в 01:19)   письмо автору
 
   для: Unkind™   (25.10.2006 в 00:36)
 

А для чего фильтрую айпи и юзер агент? Существует уязвимость через них?
Вот



$ip = $_SERVER['REMOTE_ADDR'];
$agent = $_SERVER['HTTP_USER_AGENT'];
$ip=htmlspecialchars(stripslashes($ip));
$agent=htmlspecialchars(stripslashes($agent));

   
 
 автор: Alph[p]a   (26.10.2006 в 01:34)   письмо автору
 
   для: ols   (26.10.2006 в 01:19)
 

Это не фильтрация

$ip = $_SERVER['REMOTE_ADDR']; 
$agent = $_SERVER['HTTP_USER_AGENT']; 

Просто приравнивают к короткому названию длинные переменные, чтобы в скрипте просто писать
$ip,$agent
_________________________________________
А тут экранируем переменные и удаляем html теги, вроде

$ip=htmlspecialchars(stripslashes($ip));
$agent=htmlspecialchars(stripslashes($agent));

   
 
 автор: ols   (26.10.2006 в 01:54)   письмо автору
 
   для: Alph[p]a   (26.10.2006 в 01:34)
 

это я понял. но ве же функция htmlspecialchars она преобразует спецсимволы. Для чего юзер агент обрабатывают этой функцие?

   
 
 автор: Trianon   (26.10.2006 в 09:28)   письмо автору
 
   для: ols   (26.10.2006 в 01:54)
 

по глупости.
В принципе, htmlspecialchars применяют перед тем, как выводить произвольный текст в html-поток, чтобы воспроизводиись все символы, в т.ч. и символы разметки html-кода.
stripslashes здесь вообще не к месту.

   
 
 автор: cheops   (26.10.2006 в 13:27)   письмо автору
 
   для: ols   (26.10.2006 в 01:19)
 

>Существует уязвимость через них?
Если скрипт использует $_SERVER['HTTP_USER_AGENT'] (например, помещает его в базу данных), то возможна уязвимость, так как пользовательский агент может быть подделан. Подделать $_SERVER['REMOTE_ADDR'], чтобы он представлял опасность не получится.

   
 
 автор: Unkind™   (26.10.2006 в 15:11)   письмо автору
 
   для: ols   (26.10.2006 в 01:19)
 

stripslashes() тут и правда не к месту...Тогда уж addslashes()... :)
htmlspecialchars() - только чтобы при просмотре все было OK...

Пример взлома через User-Agent:


<?php
//MySQL
include("configs");
//Заголовки и "верхушка" страницы
include("headers");

$id intval($_GET['id'];

//Допустим данные юзера должны быть обновлены...
$sql mysql_query("UPDATE `users` SET `ip` = '".getenv("REMOTE_ADDR")."', `ua` = '".getenv("HTTP_USER_AGENT")."' WHERE `id` = ".$id.";"); 

//Нижняя часть страницы
include("footer");
?>


Хакер может сменить User-Agent на Opera/8.01 (Windows NT 5.1; U; ru)', `admin` = '1 и он станет админом, если там подобная структрура таблицы, конечно...

   
 
 автор: Trianon   (26.10.2006 в 15:49)   письмо автору
 
   для: Unkind™   (26.10.2006 в 15:11)
 

и addslashes к user_agent тоже никакого оношения не имеет.
Просто при формировании в операторе SQL любых строковых литералов нужно применять mysql_escape_string()

   
 
 автор: Unkind™   (26.10.2006 в 15:52)   письмо автору
 
   для: Trianon   (26.10.2006 в 15:49)
 

Я понимаю...:)) Просто была написана функция stripslashes(), которая наборот убирает слеши...

   
Rambler's Top100
вверх

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