Поэтому я довольно параноик и использую mysql_real_escape_string()
с PDO. На самом деле я не использую подготовленные заявления в PDO, поэтому мне приходится санировать данные.
При размещении на моем собственном сервере я создавал бы непривилегированного пользователя на локальном компьютере, поэтому mysql_real_escape_string()
не выйдет из строя и не mysql_real_escape_string()
мою переменную (хе-хе, теперь это санитация!). Я понимаю, что это довольно неудачное решение, поскольку, если у db нет соответствующих кодировок, тогда нет никакого смысла в санировании вообще, но это работало промежуточный.
Теперь на моем новом хосте я не могу создать незарегистрированного, непривилегированного пользователя для базы данных … и mysql_real_escape_string()
терпит неудачу, потому что на локальном компьютере нет сервера mysql. Я не могу отредактировать php.ini, чтобы установить имя хоста / пользователя / пароль для базы данных по умолчанию.
Что я могу сделать?
Мозговой штурм, поскольку я пишу это, мне интересно, может ли php разрешить изменения времени выполнения в config … возможно … hrm. Изменить : Hm … ini_set()
? : O
Смешивание двух библиотек баз данных, подобных этому, является плохой идеей и потенциально опасно.
mysql_real_escape_string()
нуждается в существующем, классическом подключении базы данных mysql_connect()
(которое может получить информацию о наборе символов) для полной безопасности. Соединение PDO будет отдельным, возможно с разными настройками набора символов, что в итоге приведет к снижению безопасности :
Перед использованием mysql_real_escape_string () требуется соединение MySQL, иначе возникает ошибка уровня E_WARNING и возвращается FALSE. Если link_identifier не определен, используется последнее соединение MySQL.
Используйте PDO полностью, альтернативы нет.
Если вы не хотите использовать подготовленные инструкции, PDO::quote
должна быть правильной функцией:
Возвращает цитированную строку, которая теоретически безопасна для передачи в оператор SQL.
Однако обратите внимание, что даже на странице руководства для этой функции рекомендуется использовать подготовленные инструкции.
Полезность использования PDO заключается в том, чтобы не беспокоиться о спасательных материалах.
Я предлагаю вам использовать подготовку и позволить PDO выполнять грязную работу.