![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
begin |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 415 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
Хочу реализовать на сайте функцию поиска, но тут натолкнулся в статьях об инъекциях на тот факт, что такие слова как UNION, OR, SELECT (ну и наверное все остальные ключевые слова MySQL) могут использоваться для инъекции.
Но я хочу, чтобы поиск искал и по русским и по анлийским словам. Как мне вычищать из запрашиваемой строки все ключевые слова? |
|||
|
||||
Fally |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: нет Всего: 4 |
Для инъекции используются не ключевые слова SQL, а операторы. При подстановке данных в запрос используй функцию РНР mysql_real_escape_string и никаких проблем не будет ;)
Это сообщение отредактировал(а) Fally - 27.7.2007, 15:27 |
|||
|
||||
begin |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 415 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
вот что нашел в описании этой ф-и:
А как же OR и ему подобные? О них ни слова ни в одном описании.. |
|||
|
||||
Anarki |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 14.3.2005 Репутация: нет Всего: 11 |
Вручную через str_replace тот же.
Интересная статейка: http://www.securitylab.ru/analytics/216344.php Fally, Как бы не так Например, мы пользователь с uid=5, хотим получить информацию доступную для пользователя с uid=3
И мы ее получим. Это сообщение отредактировал(а) Anarki - 28.7.2007, 00:11 |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 9 Всего: 146 |
Пока эта строка находится в кавычках - это константа и никакие "--" не будут считаться комментариям, а если лень обрамить числовую переменную кавычками, то используйте intval(). Т.ч. Fally абсолютно прав. Если хотите еще большей защиты, то используйте Prepared Statements. |
|||
|
||||
Anarki |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 14.3.2005 Репутация: нет Всего: 11 |
Ну я лишь привел пример, который придумал, естественно в нормальных скриптах всё лучше делать через placeholders те же. Но в я думаю будут встречатся и такой код в скриптах , не все же заключают в кавычки или делают приведение к integer'у.
Это сообщение отредактировал(а) Anarki - 29.7.2007, 14:55 |
|||
|
||||
Fally |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: нет Всего: 4 |
Anarki, ну-ну..., по-моему, любые данные пришедшие в скрипт от пользователя, имеют строковое представление (или я не прав?).. а следовательно что мешает мне применить к ним mysql_real_escape_string() ? А к заведомо целочисленным переменным использовать, как сказал sTa1kEr, intval() или же (int)$var?
А насчёт плейсхолдеров я с вами согласен, но видел людей, в классе с возможностью их использовать, всё равно применяли обычные запросы как и mysql_query(). Кстати, Дмитрий Котеров предлагает очень хорошую библиотеку DbSimple begin, Этого достаточно, к SQL-injection в первую очередь приводят не операторы языка SQL, а злонамеренное использование в данных идущих в запрос символов, таких как приведены в описании функции... Это сообщение отредактировал(а) Fally - 30.7.2007, 09:44 |
|||
|
||||
Anarki |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 14.3.2005 Репутация: нет Всего: 11 |
Да, конечно, в виде строк. Ничего не мешает, главное не забывать обрамлять апострофами или кавычками эти параметры в SQL-строке, как уже сказали. Кстати DbSimple автоматом обрамляет подставляемые значения апострофами, формируя запрос ![]() И вообще пользуюсь ей очень давно и доволен ![]() Это сообщение отредактировал(а) Anarki - 31.7.2007, 00:01 |
|||
|
||||
Fally |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: нет Всего: 4 |
Сам пользуюсь, жалоб не было))) А уж НЕобрамление апострофами или кавычками зависит от коэффициента криворукости и склероза программиста))
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |