Фильтр данных от SQL-инъекции

Статус
В этой теме нельзя размещать новые ответы.

GoodLuck777

Новичок
В общем меня почему-то мучает один момет, я фильтрую все свои числовые переменные которые получаю "извне" с помощью умножения на единицу (точно знаю что должна быть цифра), например:
PHP:
$news_id = $_GET['id']*1;
. Скажите, это нормально таким образом защищаться от неприятностей с базой данных или это как-то обходится?

1. да, я знаю что остаются только цифры, мне это и нужно
2. только целые числа от 1

Кто-нибудь еще так делает или нужно регуляркой проверять на кавычки и т.п.?
 

Духовность™

Guest
То, что ты делаешь - это фактически санитарная обработка, а не валидация в классическом понимании. Я не сторонник такого подхода. Я предпочитаю проверить "на число". Если это не число - до свидания - никаких запросов к базе.
Чисто вопрос принципа.
 

Рамазан

Новичок
я думаю так будет лучше:
PHP:
$news_id = isset($_GET['id']) ? (int)$_GET['id'] : null;
а вообще лучше так:
PHP:
$news_id = isset($_GET['id']) ? $_GET['id'] : null;

if($news_id !== null and preg_match('/^\d+$/', $news_id)
{
    делаем дела.
}
else
{
    выводим сообщение о неверном запросе
}
 

HraKK

Мудак
Команда форума
я тупо делаю (int) не проверяя. Если решил смухлевать и получил что-то не то, то твои половые проблемы, а вводить регулярку для такой проверки - много чести будет для хакеров.
 

zerkms

TDD infected
Команда форума
"а вообще лучше так:"
бред, так не лучше. Mr_Max и HraKK всё правильно сказали
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Делаю (int) $var, а дальше не волнует.
 

Духовность™

Guest
вы тему по ссылки читали? на 32 битных системах int() урезает число до PHP_INT_MAX. Использовать подобный подход на 32 системе - это завтрашний баг.
 

HraKK

Мудак
Команда форума
вы тему по ссылки читали? на 32 битных системах int() урезает число до PHP_INT_MAX. Использовать подобный подход на 32 системе - это завтрашний баг.
О, да. 32 битные системы это уже баг. Передавать числа выше 32 уже баг)
 

Духовность™

Guest
если у ваших домашних страничек числа не превышают PHP_INT_MAX, то это значит, что вы делаете правильно )
 

HraKK

Мудак
Команда форума
а в других случаях мы (int) и не используем)
 

zerkms

TDD infected
Команда форума
омг, нука поднимите руки, у кого автоинкремент перевалил за инт?
 

fixxxer

К.О.
Партнер клуба
Проблема с 32 битными системами в самом ближайшем будущем решится их отсутствием :)

у меня собственно уже.
 
  • Like
Реакции: AmdY

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Духовность™
Если у тебя проблемы, это не значит что у всех они есть, или появятся. Да и простите, чтобы где-то превысить лимит в 2.147.483.647 это простите фак-блин-тастика...
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху