Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
mssql и sql-inj Как защитить?! |

19.05.2008, 18:54
|
|
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
Провел на форуме: 1269624
Репутация:
114
|
|
mssql и sql-inj Как защитить?!
Наверно после прочтения заголовка у вас сложилось впечатление, что я тупой и не пользуюсь поиском. Но я скажу чесно искал НО есть одно но.
Обрабатывать переменные которые идут в запрос функцией addslashes() не катит.
Дело в том что даже если к MS SQL идет вот такой запрос.
Код:
SELECT * FROM some_table where name='test\''
Он всеравно жалуется на незакрытую кавычку.
|
|
|

19.05.2008, 19:14
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
почитай https://forum.antichat.ru/thread58597.html и всё станет ясно...
|
|
|

19.05.2008, 19:23
|
|
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
Провел на форуме: 1269624
Репутация:
114
|
|
Причем здесь 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..
|
|
|

19.05.2008, 19:51
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
А.. ты про 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..
|
|
|

19.05.2008, 20:31
|
|
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
Провел на форуме: 1269624
Репутация:
114
|
|
Спасибо большое. В жизне не подумал бы о том чтобы экранировать кавычку надо перед ней поставить еще одну.
Просто зачет мелкомягким.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|