Я использую 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 с косой чертой! Так что, если имя «Отзыв», оно будет сохраняться в качестве отзыва, которое вызывает у меня серьезные проблемы. Я все же могу избежать этого, но все же программа, как и выше, поскольку это намного быстрее, чем подготовка инструкций вставки / обновления.
ура
Правильное и окончательное решение этой проблемы состоит из двух частей:
magic_quotes
программно в коде. Это гарантирует, что у вас есть известная конфигурация для работы, которая не может быть нарушена, если / когда администратор изменяет эти настройки php.ini. Хотя первая часть – хорошее программирование, вторая абсолютно необходима для написания безопасного приложения!
Чтобы указать пользовательский ввод, вы можете пойти двумя способами:
Quote
qstr
), и в этом случае вы должны быть очень осторожны, чтобы ничего не пропустить. Это может быть вполне выполнимо для небольших проектов, я так много раз ездил в прошлом. Обновить:
Если вы приступите к подготовленным заявлениям, вы обнаружите, что 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-инъекциям?