PHP - фильтрация одинарных кавычек - PullRequest
0 голосов
/ 07 сентября 2010

у меня есть некоторый HTML-код, сохраненный в строке PHP

$str = "<font size=2 color=#e0e0e0>you don't have a clue</font>";

Мне нужно записать эту строку в БД, чтобы $str стал частью запроса ..

теперь, независимо от моего запроса ... он работает нормально, пока в строке нет ' ОДИН КВОТОВ ....

любая из следующих двух проблем решит мою проблему

    1. какой-то встроенный метод анализирует строку PHP и удаляет из нее все ' ЕДИНЫЕ ЦИТАТЫ ... Я помню упоминание такой функции во время прохождения SQL-инъекции .

      • Как разрешить ' ОДИНОЧНЫЕ ЦИТАТЫ , отправленные в БД через Query без изменения запроса, т.е. как заставить этот запрос работать

      $str = "Don't";

      mysql_query("UPDATE content SET text='".$str."' WHERE p_ID='1');

Примечание:

  • у нас не может быть пользователей, чтобы позаботиться об этом или следовать методике, чтобы иметь успешное ' представление
  • $str поступает от пользователя ... я использую WMD и PHP Markdown , так что теперь вы знаете, в чем проблема ...

Ответы [ 2 ]

3 голосов
/ 07 сентября 2010

Использование mysql_real_escape_string:

mysql_query("UPDATE content SET text='". mysql_real_escape_string($str)."' WHERE p_ID='1'");

Не экранирование пользовательских данных перед их отправкой в ​​базу данных - это дыра в безопасности, позволяющая пользователям вводить специализированный фрагмент запроса, который изменит ваш исходный запрос, и выполнять вместе с ним. Это не только для того, чтобы законные пользователи могли отправлять контент, включающий одинарные кавычки, но и для того, чтобы злые пользователи не могли вводить sql наших запросов.

1 голос
/ 07 сентября 2010

Вам стоит подумать об использовании PDO и параметризованных запросов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...