Как очистить переменные, чтобы предотвратить инъекции sql - союз выбора?
Я прочитал много документов для предотвращения инъекций SQL. они сказали, используя PDO
а также mysql_real_escape_string
,
Я программирую код BBS (в старом стиле...), и люди, использующие мой код BBS, делают простой код, такой как:
select * from $g4[member_table] where mb_id='$mb_id' and mb_1='$my_option'
$mb_id
делать mysql_real_escape_string
но $my_option
не может быть. так что я хочу убрать все $_GET
, $_POST
, $_REQUEST
переменная с использованием функции php, например clean_sql ().
clean_sql () очищает все операторы sql, когда значение $my_option равно "1" union select * from g4_member где mb_id='admin'"
пожалуйста, дайте мне знать функцию вроде clean_sql ()?
=== cleal_sql должен работать с php 4.x.
1 ответ
Рекомендации по внедрению SQL-кода одинаковы независимо от того, используете вы UNION или нет. То же самое касается $_POST
, $_GET
, $_REQUEST
или любая другая форма предоставленных пользователем данных. Либо используйте подготовленные операторы (через PDO или MySQLi), либо mysqli_real_escape_string()
,
Конечно, вы должны сделать шаг вперед и проверить и очистить предоставленные пользователем данные, прежде чем пытаться сохранить их в своей базе данных. Функции как filter_var()
а также ctype_*
Это простой способ проверки и / или очистки данных.