Наверно после прочтения заголовка у вас сложилось впечатление, что я тупой и не пользуюсь поиском. Но я скажу чесно искал НО есть одно но.
Обрабатывать переменные которые идут в запрос функцией addslashes() не катит.
Дело в том что даже если к MS SQL идет вот такой запрос.
Причем здесь magic_quotes_gpc.
Ты непонял вопроса.
Даже при Экранирование кавычки MS SQL выдает ошибку.
Могу даже показать что он пишет.
UPD
Код:
SELECT * FROM table WHERE account='test\''
Msg 105, Level 15, State 1, Line 1
Unclosed quotation mark after the character string 'test\''.
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'test\''.
Вот что сервер отвечает. и ему наплевать из PHP идет конект или напрямую через Server Manager.
Последний раз редактировалось EST a1ien; 19.05.2008 в 19:26..
А.. ты про MSSQL, глянь тут http://vingrad.ru/blogs/sabrog/2007/12/29/sql-injection-kak-to-vse-neodnoznachno/ тогда...
Цитата:
В общем двойной зачот.
Недавно правил один из своих сайтиков. Движок был заточен под MySQL и прекрасно с ним работал. Но этот проект пришлось поднимать на MSSQL. Долго извращаясь, у меня это все-таки получилось. Синтаксис неповторимый.
На днях поступила жалоба, что при попытке написать сообщение вываливается ошибка драйвера БД. При ближайшем рассмотрении выяснилось, что не экранируются кавычки. Смешно? Идем дальше. Экранирование кавычек у меня всегда было. А тут нет. Странно. Вспомнить почему именно так я не смог. Причина оказалась смешной. В модуле MSSQL для PHP нет функции аналогичной mysql_escape_string(). УЖОС.
Первое, что пришло на ум, использовать функцию mysql_escape_string(). Но не тут-то было. Проблема осталась, хотя экранирование работало. Помог опыт программирования на VB. Кавычка экранируется ее повторением. Т.е. чтобы кавычка попала внутрь строки, перед ней надо поставить не \, а просто повторить ее. Ржунимагу. Ну как так можно?
Отдельный зачот MS и разработчикам PHP.
Ссылка, которая меня сегодня еще немного порадовала http://nuclight.livejournal.com/107170.html.
http://gorinich.net/posts/4
Последний раз редактировалось -=lebed=-; 19.05.2008 в 19:53..