Должен ли я избежать ввода, используя mysqli_real_escape_string, хотя я проверяю его с помощью is_numeric, чтобы предотвратить инъекцию sql

я использую $_GET['id'] чтобы получить идентификатор и посмотреть его в БД.

у меня сложилось впечатление, что если я буду использовать is_numeric функция для проверки строки является числовой или нет, то мне не нужно экранировать ввод, используя mysqli_real_escape_string, но недавно нашел это.

Находит, является ли данная переменная числовой. Числовые строки состоят
необязательного знака, любого количества цифр, необязательной десятичной части и
необязательная экспоненциальная часть. Таким образом, + 0123.45e6 является допустимым числовым значением.
Шестнадцатеричный (например, 0xf4c3b00c), двоичный (например, 0b10100111001), восьмеричный
(например, 0777) запись также допускается, но только без знака, десятичной и
экспоненциальная часть.
ссылка: http://php.net/manual/en/function.is-numeric.php

Итак, мой вопрос
Должен ли я избежать ввода, используя mysqli_real_escape_string, хотя я проверяю его с помощью is_numeric, чтобы предотвратить инъекцию sql ?

в качестве ввода будет только числовое значение, например. 555, 222 456, 879

0

Решение

Хотя я не могу придумать конкретный способ напасть на ваш пример, «я не могу придумать способ»! = «Это невозможно».

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

Ваше утверждение «входные данные будут представлять собой только числовые значения, например, 555, 222,456, 879», очевидно, неверно, поскольку вы привели несколько более сложных примеров в своей цитате — как SQL будет обрабатывать + 0123.45e6 или 0b10? Строка, содержащая число, не совпадает с числом.

По этой причине, ВСЕГДА ИСПОЛЬЗОВАНИЕ ПОДГОТОВЛЕН ЗАЯВЛЕНИЯ — Таким образом, вам не нужно беспокоиться об этом. +1 к @Ohgodwhy.

Если вы могли бы найти причину не использовать подготовленные заявления (а я не думаю, что они есть!), Давайте поговорим.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]