sql-инъекции и phpBB

Вопросы без привязки к версии. Установлена авточистка (2 года).

sql-инъекции и phpBB

Сообщение Махди 29.05.2007 21:31

Очень хотелось бы узнать у знатоков phpBB как этот скрипт защищается от sql-инъекций. :roll:
Махди
phpBB 1.0.0
 
Сообщения: 4
Зарегистрирован: 28.12.2006 21:57


Сообщение Xpert 29.05.2007 22:17

Золотым правилом: "Не доверяй входным данным"
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5716
Зарегистрирован: 13.03.2004 21:27
Откуда: msk.ru

Сообщение Vladson 29.05.2007 23:07

Махди писал(а):защищается

От них вообще никто не защищаются, их просто не существует в правильном коде.
По этому если код нормальный то и защищаться не от чего...
Серый цвет светлый (светлее чёрного) и серый цвет тёмный (темнее белого) и серый цвет средний (между чёрным и белым).
Сколько бы мнений ни было все правда, а истины просто нет. Любой кто думает что докопался до истины всего лишь выдумал себе свою правду.
Хотя возможно просто поверил в чужую ложь...
Аватара пользователя
Vladson
phpBB 2.0 RC-1 (pre)
phpBB 2.0 RC-1 (pre)
 
Сообщения: 1037
Зарегистрирован: 27.04.2004 5:07
Откуда: Estonia, Tallinn

Сообщение Махди 30.05.2007 14:43

Дайте, пожалуйста, пример такого кода, оч. нужно.
Как можно построить код так, чтобы избежать эти инъекции на 100%?
Махди
phpBB 1.0.0
 
Сообщения: 4
Зарегистрирован: 28.12.2006 21:57

Сообщение CodeWorld 30.05.2007 15:24

Максимум ищи во входных параметрах SELECT UNION и т.п. и заноси в лог предупреждений. Потом хоть узнаешь где дырка
CodeWorld
phpBB 1.4.4
 
Сообщения: 74
Зарегистрирован: 04.03.2006 16:19

Сообщение Coagulant 30.05.2007 15:41

Махди писал(а):Как можно построить код так, чтобы избежать эти инъекции на 100%?
Например, можно использовать placeholder'ы для вставки переменных в sql-запросы. При этом вставляемые данные автоматически "чистить". Этим занимается в том числе библиотека dbSimple.


В phpBB 2.x защита от sql-инъекций выполняется вручную в каждом запросе. Немудрено и пропустить "грязную переменную".
Код: Выделить всё
            $sql = "SELECT user_id
               FROM " . USERS_TABLE . "
               WHERE username LIKE '" . str_replace("\'", "''", $search_author) . "'";


Впрочем, в 3.x ситуация изменилась не кардинально:
Код: Выделить всё
      $sql = 'SELECT user_id
         FROM ' . USERS_TABLE . "
         WHERE username_clean $sql_where '" . $db->sql_escape(preg_replace('#\*+#', '%', utf8_clean_string($author))) . "'
            AND user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')';


Добавлено спустя 1 минуту 37 секунд:

CodeWorld писал(а):ищи во входных параметрах SELECT UNION и т.п. и заноси в лог предупреждений. Потом хоть узнаешь где дырка
Будет уже поздно. Хотя как вторая линия оброны сгодится (для подстраховки).
Аватара пользователя
Coagulant
phpBB 2.0.17
 
Сообщения: 1030
Зарегистрирован: 10.01.2005 19:43
Откуда: Москва

Сообщение Махди 30.05.2007 18:38

Coagulant
Спасибо. :)
В первом коде я так понял, просто все ' заменяються на двойные кавычки, т.е. '

А вот во втором коде, не совсем ясны как работают эти новые функции.

А mysql_real_escape_string() может спасти?[/code]
Махди
phpBB 1.0.0
 
Сообщения: 4
Зарегистрирован: 28.12.2006 21:57

Сообщение Coagulant 30.05.2007 21:05

Махди
Приведенные выше два куска кода никоим образом не могут служить руководством к действию. Это лишь часть "защиты" phpbb, ей не исчерпывается.

Обратитесь к dbSimple, ссылка в посте выше.

А вообще статей по поовду sql injection очень много. Везде как правило есть и советы по тому как не допустить дырявого кода.
Аватара пользователя
Coagulant
phpBB 2.0.17
 
Сообщения: 1030
Зарегистрирован: 10.01.2005 19:43
Откуда: Москва


Вернуться в phpBB-пространство

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0