Я пытаюсь понять, как предотвратить sqlinjection, я написал эту базовую функцию: function
antiInjectie($inputfromform){ $temp = str_replace("'", "`",$inputfromform); $temp = str_replace("--", "~~",$temp); return htmlentitites($temp); }
Однако кто-то сказал, чтобы я также принимал гекс-значения, но как это сделать?
Обновление Я застрял в MDB2 и pgsql
Bobby-Tables имеет хорошее руководство по предотвращению внедрения SQL.
Короче: не вкручивайтесь сами с помощью ввода, используйте методы API базы данных, которые позволяют связать параметры.
С MDB2 вы можете сделать то же самое, что и с собственной PDO-структурой PHP, которая была предложена в связанном вопросе. Лучший способ остановить SQL Injection в PHP . Вы можете либо использовать подготовленный оператор с prepare
и execute
либо путем цитирования и вставки значений вручную.
Используйте pg_query_params () , самую легкую функцию, чтобы избежать SQL-инъекций с использованием PHP и PostgreSQL.
Во-первых, не пишите никакой функции escapting самостоятельно. Они, скорее всего, будут разбиты, и библиотека базы данных, скорее всего, будет содержать подходящую. Для mysql вы можете использовать mysql_real_escape_string .
Гораздо лучшее долгосрочное решение – это не создание полного запроса в виде текста, а использование готовых запросов и передача значений во время выполнения. Для mysql проверьте расширение mysqli.