Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Безопасность (http://forum.mynuke.ru/forumdisplay.php?f=13)
-   -   filter и filter nohtml (http://forum.mynuke.ru/showthread.php?t=2392)

Alexander-V-Sh 14.11.2006 20:29

filter и filter nohtml
 
Возник вопрос, касайющийся оптимизации, но его осуществимость зависит от безопастности.

Фильтр переменных.
$text=filter($text);
Нужен ли он, при выводе данных из базы? При записи, а особенно от посетителей - необходим. Даже через админ панель пусть будет. А при выводе?

И еще фильтр для заголовков:
$text=filter($text, "nohtml");
Чем он лучше:
$title = strip_tags($title);
?

Просто разница в 50-100раз по нагрузке (при проводе 1 слова 10.000раз):

С параметром nohtml:
Генерация страницы: 16.86
Генерация страницы: 17.05

Просто фильтр:
Генерация страницы: 9.197
Генерация страницы: 8.201

Без фильтра или с strip_tags:
Генерация страницы: 0.177
Генерация страницы: 0.147

Просто запросы в БД идут быстро, а генерация страницы - 0.1 до 0.4 сек. (это на 1 пользователя). Удалив фильтры, можно уменьшить раза в 2-5 пачти (особенно при выводе больших листингов заголовков).

Но конечно безопасность важнее :) Поэтому вопрос задал в этой теме.

Alie 15.11.2006 12:53

По идее, если запись html тэгов невозможна даже в кодированом варианте - тогда можно и убрать...

Soniks 17.11.2006 02:32

фильтрация при выводе не обязательна, но так как php-nuke дырявая и если злоумышленнику удастся скажем добавить в БД XSS код, то хоть при выводе его на экран он будет обезврежен, если конечно правильно фильтр будет применен.
А если делать все по уму и четко отслеживать переменные, то от этой фильтрации можно отказаться

Alexander-V-Sh 21.11.2006 16:44

Меняю сейчас все:

$title = filter($row['parent'], "nohtml");

на

$title = strip_tags(htmlspecialchars($row['title']));

Быстрее работает :)

Alie 22.11.2006 11:40

если Post код вдолбят - обидно будет сайт терять.... а намного быстрей? может тоже переделаю:)

Alexander-V-Sh 22.11.2006 16:54

Alie

Если фильтр используется чаще 20-30 раз, то смысл есть. Секунды 0.1 точно выйграешь. (у меня было, 0.30, стало 0.15-0.2)

К примеру вывод заголовков новостей (штук 50 их на странице). Вывод новостей. (10 новостей+10разделов+10категорий+10авторов и т.д.) - тож много получается.


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

Copyright © 2005 by Soniks