Перейти к публикации

Нужна ли столь злобная фильтрация переменных GET- или POST- запросов


Рекомендованные сообщения

Приветствую!
В модуле я сделал такую проверку переменной из запроса, которая должна содержать только числовое значение:

$eid = (is_numeric($_GET['eid'])) ? $_GET['eid'] : die( "<script>document.location.href = '/index.php?logout'</script>" );

А теперь думаю - не крутовато ли? Есть ли подводные камни такой фильтрации 5-6 переменных из каждого запроса?

Всех с наступившим!

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

Ну как бы апнуть тему и вдруг кто ответит...
Проверьте, пожалуйста, мою логику:

$fa = (isset($_POST['fa'])) ? mysqli_real_escape_string($db, trim($_POST['fa'])) : '';
$fa = ($fa != '') ? strip_data($fa) : '';

Рассуждаю так:
1. Если переменная в запросе есть, то она реал-эскейпится. Если нет - остается пустой.
2. Если переменная по результатам пункта 1 не пустая - прогоняется через функцию (режет мускульные команды).

Заранее спасибо!

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, zilber сказал:

2. Если переменная по результатам пункта 1 не пустая - прогоняется через функцию (режет мускульные команды).

 

добавь фильтрацию html, js и php

 

Изменено пользователем alex32
Ссылка на сообщение
Поделиться на других сайтах

Спасибо за ответ и за совет, добавил!
Честно говоря, мне кажется я уже как-то перестарался...
Вот на данный момент как выглядит фильтрация:

 

Проверка на число:

if (is_numeric($_POST['org_id'])) { $org_id = $_POST['org_id']; } else { die('попытка взлома системы'); }

 

Очистка текста:

$pax_job = mysqli_real_escape_string($db, trim($_POST['pax_job']));
$pax_job = ($pax_job != '') ? strip_data($pax_job) : '';


Проверка на соответствие регулярке:

$err = false;
$errtext = '';

$regul = '/\D/';
if ( preg_match($regul, $pax_pass_serie))
{ $err = true; $errtext .= 'в серии паспорта не может быть букв<br />'; }

if (!$error)
{действие} else {стоп}


Не перестарался ли...

Изменено пользователем zilber
Ссылка на сообщение
Поделиться на других сайтах

мне пришло в голову...
а лучше использовать is_numeric или is_int?
и имеет ли смысл регулярка на цифры, если мне доступна проверка на is_numeric (is_int)?
если вводят номер телефона без разделителей или номер паспорта - достаточно ли проверить через is_numeric, или регуляркой - хуже не будет?

Ссылка на сообщение
Поделиться на других сайтах

вообщето у нормальных разрабов достаточно хтмлслэш, остаьное шлак. а если беспокоишся, то ответ прост: лишней филтриации не бывает, не парься
 

Ссылка на сообщение
Поделиться на других сайтах
30 минуты назад, alex32 сказал:

вообщето у нормальных разрабов достаточно хтмлслэш, остаьное шлак. а если беспокоишся, то ответ прост: лишней филтриации не бывает, не парься
 

ну я слабоват в теории и во всем остальном, собственно тоже.
я про производительность волнуюсь)

Ссылка на сообщение
Поделиться на других сайтах

не парься, четверть метра оперативы   погоды не сделают.
 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...