Показать сообщение отдельно

  #28  
Старый 19.09.2007, 19:17
[53x]Shadow
Leaders of Antichat
Регистрация: 25.01.2007
Сообщений: 341
Провел на форуме:
3372120

Репутация: 2565
По умолчанию

Цитата:
Сообщение от groundhog  
Y.Dmitriy, не городи чепухи... Она экранирует только кавычки, слеши и нулевые байты... Если на хосте крутится более-менее продвинутая БД (MySQL 5.X, Oracle и т.д.), то обход экранирования кавычек элементарно организуется через CHAR(...,...,...) или шестнадцатиричное представление - 0x7573657273.
А я с вами не согласен, в полном объеме =\
Если к передаваемой в запрос SQL переменной применяется функция из класса экранирования кавычек, то как правило в самом запросе параметр из этой переменной обрамляется кавычками, например:
PHP код:
...
$res mysql_query("SELECT * FROM 'news' WHERE 'id'='".$id."'");
... 
в результате применение функции SQL - CHAR(...,...,...) или шестнадцатиричного представления для обхода экранирования кавычек, ничего не даст!
Пример сформированного запроса:

Код:
SELECT * FROM 'news' WHERE 'id'= 'CHAR(....)' или '0x.......'
надеюсь вы понимаете, что он не отработает, т.к. MySQL воспримет 'CHAR(....)' или '0x.......' как простые строковые данные, а не функцию.
При этом применение экранирования кавычек в случае, когда параметр (целочисленного типа) не обрамляется кавычками, не имеет смысла для защиты от SQL инъекции, а всего лишь усложняет использование конструкций load_file и into outfile.