PDA

View Full Version : filter и filter nohtml


Alexander-V-Sh
14.11.2006, 20:29
Возник вопрос, касайющийся оптимизации, но его осуществимость зависит от безопастности.

Фильтр переменных.
$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авторов и т.д.) - тож много получается.