php mysql adodb

Я использую PHP с adodb, но сталкиваюсь с серьезной проблемой. Я использую adodb для ускорения разработки, поэтому я могу сделать что-то вроде:

$r["Name"] = $_POST['txtName']; if ($_POST["ID"] != "") $conn->AutoExecute("content", $r, 'UPDATE', 'AutoID = ' . $_POST["ID"]); else $conn->AutoExecute("content", $r, 'INSERT'); 

Однако, если это имя должно было иметь одну цитату, она сохраняет в db с косой чертой! Так что, если имя «Отзыв», оно будет сохраняться в качестве отзыва, которое вызывает у меня серьезные проблемы. Я все же могу избежать этого, но все же программа, как и выше, поскольку это намного быстрее, чем подготовка инструкций вставки / обновления.

ура

Solutions Collecting From Web of "php mysql adodb"

Правильное и окончательное решение этой проблемы состоит из двух частей:

  1. Отключите все magic_quotes программно в коде. Это гарантирует, что у вас есть известная конфигурация для работы, которая не может быть нарушена, если / когда администратор изменяет эти настройки php.ini.
  2. Подтвердите / укажите все входящие данные пользователя перед доступом к базе данных!

Хотя первая часть – хорошее программирование, вторая абсолютно необходима для написания безопасного приложения!

Чтобы указать пользовательский ввод, вы можете пойти двумя способами:

  1. Вручную (используйте qstr или Quote qstr ), и в этом случае вы должны быть очень осторожны, чтобы ничего не пропустить. Это может быть вполне выполнимо для небольших проектов, я так много раз ездил в прошлом.
  2. Для создания запросов используйте подготовленные операторы с связанными переменными. Это гарантирует, что в вашем приложении никогда не будет SQL-инъекции, если вы правильно укажете типы переменных, и это менее подвержено ошибкам, чем первый вариант. Это то, что я делаю в течение некоторого времени.

Обновить:

Если вы приступите к подготовленным заявлениям, вы обнаружите, что AdoDB не покупает вас так много, и вы можете использовать PDO для большей части работы. Когда вам нужно что-то «автоматическое», вы можете написать несколько функций, специфичных для приложения самостоятельно. По моему опыту, это всего лишь немного больше работы и в целом лучше, чем включение AdoDB.

Спасибо за ввод, я решил превратить магические кавычки во время выполнения с помощью этой функции:

 if (get_magic_quotes_gpc()) { function stripslashes_gpc(&$value) { $value = stripslashes($value); } array_walk_recursive($_GET, 'stripslashes_gpc'); array_walk_recursive($_POST, 'stripslashes_gpc'); array_walk_recursive($_COOKIE, 'stripslashes_gpc'); array_walk_recursive($_REQUEST, 'stripslashes_gpc'); } 

Однако это то, что подвержено SQL-инъекциям?