Почему мы должны избегать двойных кавычек, одинарные кавычки, создавая запросы в PHP

Почему мы должны избегать двойных кавычек, одинарные кавычки, создавая запросы в PHP? есть ли какие-то особые преимущества при этом? или это просто хорошая практика?

3 ответа

Требуется, чтобы ваши запросы работали и были безопасными. Рассмотрим следующий код:

$name = "O'reilly";
$sql  = "INSERT INTO users (name) VALUES ('$name')";

Результат SQL будет выглядеть так:

INSERT INTO users (name) VALUES('O'reilly');

Который просто не работает. Это должно быть правильно экранировано:

INSERT INTO users (name) VALUES('O\'reilly');

То же самое относится и к другим специальным символам.


Предотвратить внедрение SQL

Рассмотрим этот запрос:

DELETE FROM users WHERE username='$username';

куда $username получается из $_POST, Если злоумышленнику удалось опубликовать строку вроде ' OR 1; -- как $username тогда запрос становится таким:

DELETE FROM users WHERE username='' OR 1; -- ';

который действителен и WHERE всегда оценивается как истина, и вам придется дать хорошее объяснение своим злым пользователям.

Смотрите также: Лучший способ предотвратить SQL-инъекцию в PHP

Если вы не избежите кавычек, запрос заканчивается на месте одинарных кавычек. Так что ваш запрос не будет успешно выполнен!

Например

$qry = "SELECT * FROM user WHERE email='test@test.com'";

Он работает нормально, но если кто-то входит в email='test'@test.com', тогда запрос заканчивается только на' test 'и не находит строк с этим.

Так что это предотвращает также инъекцию sql!

s, чтобы предотвратить атаки SQL-инъекций. Знать SQL-инъекцию http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php http://www.homeandlearn.co.uk/php/php13p5.html

Для предотвращения внедрения PHP Sql /questions/18621243/kak-ya-mogu-predotvratit-vnedrenie-sql-v-php/18621248#18621248

Другие вопросы по тегам