Символы, которые я должен знать для SQL-инъекций

Я знаю, что вы излечиваете все вещи с помощью mysql_real_escape_string() (и с htmlspecialchars() ), но я хочу знать символы, которые вызывают весь этот беспорядок, от которого все хотят избавиться?

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

Он был закодирован с нуля, чтобы использовать php 's теперь устаревший и никогда не любимый – magic_quotes .

После изменения хоста также произошли изменения php.ini , мы столкнулись с множеством неожиданных результатов. У нас нет доступа к php.ini , нет user.ini ( user.ini ), и хост недостаточно чувствителен, чтобы предоставить нам дополнительные возможности. Существует проблема с услугами хостинга здесь, в Латвии, одна из основных.

Но да, это уже не по теме. Я просто хочу знать, какие символы – те, которые не ускользают , никакие магические цитаты и никакая защита не могут вызвать весь этот беспорядок ?

Кроме того, в тексте содержались такие вещи, как – /ls который напоминает команду списка каталогов UNIX (хост-OS) – метод не реализован.

И похоже, что веб-сайт взаимодействует с базой данных в среде CLI, поэтому проблема /ls . И я хочу подтвердить, что всякий раз, когда вы вводите значение, которое начинается с / и следует за командой UNIX, возникают ошибки «Метод не реализован».

PS Я не ищу решение, я уже исправил ошибку. Просто хочу знать символы.

Обновить для уточнения

1) На момент написания вопроса я вызывал CLI который выглядит как socket unix-domain вызов- unix-domain / TCP . Живи и учись!

2) Если вы полностью прочитаете вопрос, вы увидите, что я исправляю ошибки / дыры, оставленные другими разработчиками. Сине мы взяли на себя эти ИТ-услуги клиентов, они хотели, чтобы мы тоже завладели их веб-сайтом.

3) Поскольку они заплатили много денег за текущий сайт, они не хотят платить еще больше за новый в более новой, лучше построенной системе.

4) Строка подключения внутри скриптов – $this->db = DB::connect('mysql://'._DB_USER.':'._DB_PASS.'@'._DB_HOST.'/'._DB_NAME.''); Думаю, unix-domain .

Из руководства PHP :

mysql_real_escape_string () вызывает библиотечную функцию MySQL mysql_real_escape_string, которая добавляет обратную косую черту к следующим символам: \ x00, \ n, \ r, \, ', "и \ x1a.

Каждая БД будет иметь свои собственные метасимволы в качестве расширений стандартного синтаксиса SQL. Некоторые будут использовать -- для комментариев, некоторые используют c-style /* */ и т. Д. Каждая БД имеет свои собственные требования к экранированию, поэтому для каждого типа БД в PHP существует функция escape-функции. То, что работает для MySQL, может быть совершенно бесполезным для (скажем) Oracle.

Единственным «окончательным» списком символов будут те, которые перечислены в стандартах SQL. Но использование только тех, в вашей собственной функции escape-функции было бы бесполезным, потому что оно не будет включать специфичные для БД нестандартные метасимволы, которые БД понимает.