Pull to refresh
6
Регеда Антон@regeda

User

7
Subscribers
Send message
Конечно же, реляционные БД можно быстро отображать с помощью Пыха напрямую, но XSLT дает универсальную возможность преобразования структурированных данных в любую последовательность отображаемых данных. И в связке Data -> XML -> HTML могут появится при абстрактных задачах связки вида: Data -> XML -> Data, HTML -> XML -> Data, XML->XML->Data, XML -> XML -> HTML и тд и тп.
Все зависит от Ваших задач. Скорость или универсальность? Выбирать Вам!
XSLT — универсальный паттерн, описывающий шаблонизатор. Во-первых, он универсален, во-вторых, он страндартизован, в-третьих, на вход поступают структурированные данные. Что еще надо?
Делалось для себя, но думаю и другим пригодится
1. разрезание и фильтрация тегов идет в одном цикле без повторных действий.
2. повторюсь, что метод с конечным автомат (ковырянием по одному символу) заложен для реализации как php extension
Идея с белым листом мне очень нравится, скорее всего буду развивать защиту в этом ключе.
Изначально алгоритм с конечным автоматом заложен для реализации как php extension, что будет крайне быстро.
Если по-Вашему итог в обсуждении и поставлен, то в развитии кода ставится «to be continued».
А если используется WYSIWYG редактор? То HTML нужно преобразовывать в bb-код, а потом обратно?
фу-ты, ну-ты на & quot;
Этот ТОП использовался как отправная точка для написания фильтра, все примеры проверялись на корректное преобразование
Как показала практика и примеры других участников, экранирование — не лучший способ, поэтому двойные кавычки в unquoted значения аттрибутов заменяются на "
Если надо будет банить «яваскрипт», то будем банить
если у Вас есть на руках Ваш топ 500, то милости прошу на обозрение.
А чистый javascript, конечно же, не пропускается ;)
Скорее всего нет…
Во всяком случае Opera 10 не преобразует %3C в < или %3A в двоеточие
Обновлено! IE «expression» фильтруется даже если каждый символ экранируется символом \ или C-подобным комментарием /*XSS*/:

style="onsec:e\x\p\re\s\s\i\o\n(alert('XSS'))"


или
style="onsec:e/*XSS*/x/*XSS*/p/*XSS*/re/*XSS*/s/*XSS*/s/*XSS*/i/*XSS*/o/*XSS*/n(alert('XSS'))"

Обновлено! Значения в аттрибутах @href @src пропускаются через «rawurldecode»
Обновлено! Теперь в unquoted значениях аттрибутов все двойные кавычки экранируются.
<img src='http://ya.ru/logo.gif' bo="o\"onload=\"alert();" />
Спасибо за пример
Я CI не хаял, а просто показал один пример. Благодаря Вашему фидбеку данная уязвимость будет устранена ))
OK! Обновлено
Ну максимум, Вы украдете свои данные.
если <style> еще можно понять, то что плохого сделал старый добрый <a> ???

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity