Forum. MyNuke.ru
Forum. MyNuke.ruСообщения за сегодняПерсональные сообщения

Навигация  
Вернуться   Forum. MyNuke.ru > PHP-NUKE > Безопасность
Ник
Пароль
Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Alie вне форума      Старый фильтры в полях ввода #1  
Alie
Участник+
Регистрация: 20.03.2006
Сообщения: 153


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alie Найти все сообщения от Alie Добавить Alie в список друзей  
28.09.2006, 03:11

На днях решила добавить фильтры в созданные мной модули чтоб пользователи в БД ненароком гадость не засунули. Всё прописано вроде правильно, только вот не фильтруют мои фильтры...
Если обрисовать ситуацию точнее - фильтр работает только в том случае, когда html код был добавлен с помощью редактора! Если код прописан вручную, или редактор отключён - код не фильтруется.

Парадокс прямо:

Код для примера:
Код:
//Вводим данные в БД $result=mysql_query("insert into ".$prefix."_table values ('".$info."')"); //Фильтр при вводе $info=filter($_POST['info'],nohtml,1); //Выводим данные из БД $result=mysql_query("SELECT info FROM ".$prefix."_table"); //Фильтр при выводе $info = filter($row['info'], nohtml);

Поправьте меня, если какие ошибки есть...
Каким образом редактор влияет на фильтры?

Использовалась Nuke 7.9 Final Release с NukeFiles.

Заранее спасибо ребята!

Soniks вне форума      Старый #2  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Soniks Посетить домашнюю страницу Soniks Найти все сообщения от Soniks Добавить Soniks в список друзей  
05.10.2006, 14:31

фильтрацию переменной нужно пролводить до того как выполняется запрос на добавление в бд, а не после
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".


Alie вне форума      Старый #3  
Alie
Участник+
Регистрация: 20.03.2006
Сообщения: 153


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alie Найти все сообщения от Alie Добавить Alie в список друзей  
05.10.2006, 18:47

Цитата: Сообщение от Soniks
фильтрацию переменной нужно пролводить до того как выполняется запрос на добавление в бд, а не после


Ну да:) Эту глупость я обнаружила и исправила, только вот результат тот-же.... Вот код при вводе данных в бд:
Код:
//В форме ввода указаны такие названия переменных: $from $mail $text //Ставлю фильтр $from = filter($from, nohtml, 1); $mail = filter($mail, nohtml, 1); $text = filter($text, nohtml, 1); //Записываю в БД $result = $db->sql_query("insert into " . $prefix . "_test VALUES (NULL, '$from', '$mail', '$text')");


А вот вывод данных:
Код:
//Запрос к БД $sql = "SELECT * FROM ".$prefix."_test ORDER by id DESC LIMIT 0 , 10"; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { //Фильтр данных: $id = intval($row['id']); $from = filter($row['from'], nohtml); $mail = filter($row['mail'], nohtml); $text = filter($row['text'], nohtml); //В форме вывода указаны следующие переменные: $from $mail $text


Написала всё именно в том порядке, в каком код расположен в файле...

Alexander-V-Sh вне форума      Старый #4  
Аватара для Alexander-V-Sh
Alexander-V-Sh
Бывалый
Регистрация: 19.04.2006
Сообщения: 352


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alexander-V-Sh Посетить домашнюю страницу Alexander-V-Sh Найти все сообщения от Alexander-V-Sh Добавить Alexander-V-Sh в список друзей  
05.10.2006, 18:52

Попробуйте так еще:
Цитата //Ставлю фильтр
$from = strip_tags($from);
$from = htmlspecialchars($from);

$text = strip_tags($text);
$text = htmlspecialchars($text);

$mail = strip_tags($mail);
$mail = htmlspecialchars($mail);

//Записываю в БД
$result = $db->sql_query("insert into " . $prefix . "_test VALUES (NULL, '$from', '$mail', '$text')");

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

Alie вне форума      Старый #5  
Alie
Участник+
Регистрация: 20.03.2006
Сообщения: 153


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alie Найти все сообщения от Alie Добавить Alie в список друзей  
05.10.2006, 19:27

Заработало..... Спасибки
Кстати, есть такой фильтр, который не просто изменяет символику кода а просто удаляет его?
Например:
Код:
Я ввожу код <a href=#>code</a> Delete code. А в БД записывается code Delete code. Или Delete code.

Последний раз редактировалось Alie, 05.10.2006 в 19:30.

Alexander-V-Sh вне форума      Старый #6  
Аватара для Alexander-V-Sh
Alexander-V-Sh
Бывалый
Регистрация: 19.04.2006
Сообщения: 352


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alexander-V-Sh Посетить домашнюю страницу Alexander-V-Sh Найти все сообщения от Alexander-V-Sh Добавить Alexander-V-Sh в список друзей  
05.10.2006, 19:52

так strip_tags вроде и удалает все теги.
Вы пишиите <a href=#>code</a> Delete code
пропускаем через strip_tags и получаем
code Delete code

А htmlspecialchars для замены всего что осталось: слеши, оптострофы, ковычки и т.д.
Еще можно добавить следом фильтр нюки:

$from = filter($from, "nohtml");
Для надежности :))) и мат заодно вырежет еще.

Alie вне форума      Старый #7  
Alie
Участник+
Регистрация: 20.03.2006
Сообщения: 153


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alie Найти все сообщения от Alie Добавить Alie в список друзей  
06.10.2006, 00:13

меня почему-то работает по-другому....
пишу:
Код:
<a href=#>code</a> Delete code.

Иду в phpMyAdmin, нахожу нужную таблицу. Там в записях у меня вместо кода его кодовый аналог - &alt; и т.п. При выводе опять генерируется html... И это при том, что стоит фильтр перед выводом данных! Ничего не понимаю.... Получается от SQL иньекций поля защищены, а вот от XSS атак - нет....

Alexander-V-Sh вне форума      Старый #8  
Аватара для Alexander-V-Sh
Alexander-V-Sh
Бывалый
Регистрация: 19.04.2006
Сообщения: 352


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alexander-V-Sh Посетить домашнюю страницу Alexander-V-Sh Найти все сообщения от Alexander-V-Sh Добавить Alexander-V-Sh в список друзей  
06.10.2006, 00:17

$from = strip_tags($from);
и
$from = htmlspecialchars($from);
местами не перепутали?
попробуйте только:
Цитата $from = strip_tags($from);

Alie вне форума      Старый #9  
Alie
Участник+
Регистрация: 20.03.2006
Сообщения: 153


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alie Найти все сообщения от Alie Добавить Alie в список друзей  
06.10.2006, 03:50

рррррррррррр.... ну конечно! Я действительно неправильно их расположила!
Никак не могу привыкнуть к тому, что

Код:
$var1="1"; echo "$var1"; $var1="2"; //Будет выводится 1 а не 2....


Спасибо большое!

Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +4, время: 02:03.


На Верх
Рейтинг@Mail.ru