Предотвращение внедрения SQL в PHP с MDB2 - PullRequest
3 голосов
/ 17 июля 2011

Я пытаюсь выяснить, как предотвратить sqlinjection, я написал эту основную функцию: функция

antiInjectie($inputfromform){
    $temp = str_replace("'", "`",$inputfromform);
    $temp = str_replace("--", "~~",$temp);
    return htmlentitites($temp);
}

Однако кто-то сказал мне также учитывать шестнадцатеричные значения, но как мне это сделать?

Обновление Я застрял с MDB2 и pgsql

Ответы [ 4 ]

6 голосов
/ 17 июля 2011

Бобби-таблицы содержит хорошее руководство по предотвращению SQL-инъекций.

Вкратце: не путайте ввод самостоятельно, используйте методы API базы данных, которые разрешают связанные параметры.

2 голосов
/ 17 июля 2011

Используйте pg_query_params () , самую простую функцию, позволяющую избежать внедрения SQL с использованием PHP и PostgreSQL.

2 голосов
/ 17 июля 2011

С MDB2 вы можете сделать то же самое, что и с нативной PDO PHP , которая была предложена в соответствующем вопросе Лучший способ остановить SQL-инъекцию в PHP .Вы можете использовать подготовленный оператор с prepare и execute или , заключив в кавычки и вставив значения вручную.

1 голос
/ 17 июля 2011

Во-первых, не пишите никаких экранирующих функций самостоятельно. Они, скорее всего, будут сломаны, и библиотека базы данных, скорее всего, будет содержать правильную. Для mysql вы можете использовать mysql_real_escape_string .

Гораздо лучшим долгосрочным решением является не создание полного запроса в виде текста, а использование подготовленных запросов и передача значений во время выполнения. Для mysql, проверьте расширение mysqli.

...