реальная escape-строка и PDO [дубликат]
этот вопрос уже есть ответ здесь:
- Как я могу предотвратить SQL-инъекций в PHP? 28 ответов
Я использую PDO после миграции из библиотеки mysql. Что я использую вместо старого ?
Мне нужно избежать одиночных кавычек, чтобы они вошли в мою базу данных, и я думаю, что может быть лучше способ справиться с этим без добавления(ing) косой черты для всех моих строк. Может кто-нибудь сказать мне, что я должен использовать?
3 ответа:
вы должны использовать PDO Prepare
из ссылки:
вызов PDO:: prepare () и PDOStatement:: execute() для операторов, которые будут выдаваться несколько раз с различными значениями параметров оптимизирует производительность вашего приложения, позволяя драйверу согласовывать клиентское и/или серверное кэширование плана запроса и метаинформации, и помогает предотвратить атаки с использованием SQL-инъекций, устраняя необходимость вручную цитировать параметры.
PDO предлагает альтернативу, предназначенную для замены mysql_escape_string () С PDO:: quote () метод.
вот отрывок с сайта PHP:
<?php $conn = new PDO('sqlite:/home/lynn/music.sql3'); /* Simple string */ $string = 'Nice'; print "Unquoted string: $string\n"; print "Quoted string: " . $conn->quote($string) . "\n"; ?>
приведенный выше код выведет:
Unquoted string: Nice Quoted string: 'Nice'
использовать подготовленные операторы. Они сохраняют данные и синтаксис отдельно, что устраняет необходимость в экранировании данных MySQL. См., например,в этом уроке.