Нужно ли отключать магические кавычки при использовании PDO - PullRequest
3 голосов
/ 19 ноября 2011

Простой вопрос, и я хочу простой ответ.Я использую подготовленные PDO заявления, чтобы убедиться, что мои данные безопасно обработаны в базе данных.Но я в замешательстве.Должен ли я отключать магические кавычки или использовать полоски на переменных, если включены магические кавычки.И после того, как затем позволить PDO выполнять работу по обеспечению безопасности?

Ответы [ 2 ]

5 голосов
/ 19 ноября 2011

Если вы используете подготовленные операторы PDO для вставки данных в вашу базу данных, данные будут поступать в базу данных именно в том виде, в каком вы ее вставили. magic_quotes добавляет косые черты к данным: поэтому они будут присутствовать в базе данных. Это явно не то, что вы хотите.

Как вы говорите, отключите магические кавычки или, если необходимо, используйте stripslashes.

1 голос
/ 24 января 2013

Stage1 - Просмотр:

Вы вводите чье-то имя до <input type="text" name="name"></input>

Stage2 - Модель:

Теперь вы публикуете в Model, используете$_POST['name'] для извлечения чьего-либо имени и записи оператора sql:

$sql = "INSERT INTO tableName 'name' VALUES(:name)"; // Then prepare and bindParam

Прежде чем вы сможете получить доступ к базе данных с помощью PDO, ваш оператор sql будет экранирован, если ваш gpc включен.То есть чье-то имя будет чьим-то именем.Затем вы используете PDO для доступа к базе данных.Но теперь в базе данных чье-то имя сохраняется, потому что PDO не будет знать, что обратный слеш перед одиночной кавычкой был добавлен gpc, вместо этого PDO думает, что вы добавили этот обратный слеш перед одиночной кавычкой намеренно.

Вывод: если вы используете PDO, просто выключите gpc.

...