Ответ
serglif 20.10.2004 16:05
В очередной раз приношу свою благодарность вам - человеку которому не лениво нести свет в массы. :) Уже читал в форуме не один ваш подробный пост на тему taint/untaint. Не могу сказать, что теперь смогу объяснить все тонкости другому человеку, но часть этой темы осознал.
Остается не до конца понятым вопрос, который я попытался задать в стартовом посте, но возможно сделал это криво. Попытаюсь переформулировать.
Есть процедура, которая формирует и выдает XML-код. Делает она это следующим образом:
$items[^table::sql{select * from ...}]
$attributes[^items.columns[]]
^items.menu{
<item ^attributes.menu{$attributes.column = "$items.[$attributes.column]" }>
}
Прошу не пинать за 'select * from', PAF признал, что в случае универсального подхода это лучший вариант -
http://www.parser.ru/forum/?id=33228 :)
В записях базы данных присутствуют символы &, которые переходят в значения аттрибутов и очевидно должны быть заменены на & чтобы из полученного текста соорудить xdoc.
Так вот: 1. Если выданный XML-код обрабатывается в процедуре ^postprocess[], в которую он попадает через параметр $body, то эта замена происходит автоматически и насколько я понял по причине того, что xml-код, передаваемый параметром в ^xdoc::create автоматически помечается как ^taint[xml] и с ним производятся соответствующее преобразование.
2. Если передачи в ^postprocess[] не производится и я пытаюсь
создать xdoc непосредственно из результатов работы процедуры - поучаю ошибку из-за незаескейпенных амперсандов.
Вопрос: почему так происходит? Потому ли, что первый вариант попадает под случай:
Само преобразование Parser выполняет позже, при выдаче результата обработки документа пользователю, перед выполнением SQL-запроса или отправкой письма.
а второй вариант нет? Или?
- Проблемы с символами типа « в XML, serglif 20.10.2004 10:56
- Ответ, Misha v.3 [M] 20.10.2004 15:11
- Ответ, serglif 20.10.2004 16:05
- Ответ, Misha v.3 [M] 20.10.2004 16:44 / 20.10.2004 17:19
- Ответ, serglif 21.10.2004 08:59
- http://www.parser.ru/forum/?id=33960 | типографим в entities, untaint/taint никакой не нужен, Александр Петросян (PAF) [M] 20.10.2004 11:23
- Мощно излагаете!, serglif 20.10.2004 13:11 / 20.10.2004 13:14
- «не успевает»?, Александр Петросян (PAF) [M] 20.10.2004 16:55
- 123, Александр Петросян (PAF) [M] 20.10.2004 16:54
- Ответ, egr 20.10.2004 11:14