Список чисел в форме

Я на сервере обычно так проверяю:
// для обработки данных
function def($var, $sql=true) {
$var= htmlspecialchars($var, ENT_QUOTES, "windows-1251");
// мнемонизировали строку.
if(get_magic_quotes_gpc ())
{
$var= stripslashes ($var);
// убрали лишнее экранирование.
}
if ($sql)
{
$var= mysql_real_escape_string ($var);
// если нужен MySQL-запрос, то делаем соответствующую очистку.
}
$var= strip_tags($var);
//убираем теги.
return $var;
}
Эту функцию добавил в конфигурационный файл, который подгружаю на каждой странице, а данные проверяю вот так

Циферки можно вот так проверять
Если в $id хацкер всунет строку, то сеттайп ее превратит в 0 (нуль).

Если например забираешь гет, то негодяй может пихнуть массив
Заведомо конечно. Функция при этом скажет, что так делать нельзя и покажет пути к файлам. Что бы быть незамеченным:
$val = strval($_GET['val']);

Ну вот некоторые варианты защиты. А вообще всегда надо првоерять тип данных и тогда скрипт будет менее уязвим.
Сам ленюсь это делать :)
 
Есть еще способ, будет не лишним.
Проверяем символы, которые ввел пользователь в адресной строке:
Код:
if ( !preg_match( "|^[a-z 0-9~%.:_\-\/]+$|i", $_SERVER['REQUEST_URI'] ))
{
print "Error!";
}
 
И куда этот код вставить? После каждого выражения, или только один раз где иссеты?
 
В вашем случае будет достаточно такого:
Код:
if (isset($_POST['number'])) {$number = $_POST['number'];}
$number = intval($number);
if ($number > 0 && $number <= 150){
   // Выполняем то что нужно
...
} else {
   // Ошибка  
}

То, что я отписал в прошлом посте, можно вставить в самое начало скрипта, и только один раз. Это дополнительная проверка, которая требуется для проверки $_GET параметров.

Если у вас PHP версии > 5.2, то рекомендую ознакомится со встроенной функцией
 
  • Нравится
Реакции: zavu
Уважаемый saen, если ты уверен, что $val = $_GET['val']; это строка, то в твоем двиге огромнейшая дырень. Покажи мне его и я достану все твои пароли и таблицы из бд.
Поэтому не стоит ржать, если нет знаний в данной области (имеется ввиду преобразование "строки в строку")
Перечитай мой пост предыдущий и может быть поймешь о чем.
Надеюсь я больше не буду отвлекаться по пустякам.
 
Назад
Сверху