Как очистить переменные, чтобы предотвратить инъекции 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_* Это простой способ проверки и / или очистки данных.

Другие вопросы по тегам