реальная escape-строка и PDO [дубликат]


этот вопрос уже есть ответ здесь:

  • Как я могу предотвратить SQL-инъекций в PHP? 28 ответов

Я использую PDO после миграции из библиотеки mysql. Что я использую вместо старого ?

Мне нужно избежать одиночных кавычек, чтобы они вошли в мою базу данных, и я думаю, что может быть лучше способ справиться с этим без добавления(ing) косой черты для всех моих строк. Может кто-нибудь сказать мне, что я должен использовать?

3 66

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. См., например,в этом уроке.