|
| |
|
|
| |
для: Trianon
(26.10.2006 в 15:49)
| | | Я понимаю...:)) Просто была написана функция stripslashes(), которая наборот убирает слеши... | |
| |
|
|
| |
|
|
| |
для: Unkind™
(26.10.2006 в 15:11)
| | | и addslashes к user_agent тоже никакого оношения не имеет.
Просто при формировании в операторе SQL любых строковых литералов нужно применять mysql_escape_string() | |
| |
|
|
| |
|
|
| |
для: 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 и он станет админом, если там подобная структрура таблицы, конечно... | |
| |
|
|
| |
|
|
| |
для: ols
(26.10.2006 в 01:19)
| | | >Существует уязвимость через них?
Если скрипт использует $_SERVER['HTTP_USER_AGENT'] (например, помещает его в базу данных), то возможна уязвимость, так как пользовательский агент может быть подделан. Подделать $_SERVER['REMOTE_ADDR'], чтобы он представлял опасность не получится. | |
| |
|
|
| |
|
|
| |
для: ols
(26.10.2006 в 01:54)
| | | по глупости.
В принципе, htmlspecialchars применяют перед тем, как выводить произвольный текст в html-поток, чтобы воспроизводиись все символы, в т.ч. и символы разметки html-кода.
stripslashes здесь вообще не к месту. | |
| |
|
|
| |
|
|
| |
для: Alph[p]a
(26.10.2006 в 01:34)
| | | это я понял. но ве же функция htmlspecialchars она преобразует спецсимволы. Для чего юзер агент обрабатывают этой функцие? | |
| |
|
|
| |
|
|
| |
для: 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));
|
| |
| |
|
|
| |
|
|
| |
для: Unkind™
(25.10.2006 в 00:36)
| | | А для чего фильтрую айпи и юзер агент? Существует уязвимость через них?
Вот
$ip = $_SERVER['REMOTE_ADDR'];
$agent = $_SERVER['HTTP_USER_AGENT'];
$ip=htmlspecialchars(stripslashes($ip));
$agent=htmlspecialchars(stripslashes($agent));
|
| |
| |
|
|
| |
|
|
| |
для: 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
(25.10.2006 в 00:11)
| | | Можно вырезать название оперы примерно так
<?php
if(preg_match("|Opera[^\s]+|i", $_SERVER['HTTP_USER_AGENT'], $out)) echo $out[0];
?>
|
только каждый браузер нужно будет обрабатывать отдельно. | |
| |
|
|
|