parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

http://www.parser.ru/forum/?id=33960 | типографим в entities, untaint/taint никакой не нужен

Александр Петросян (PAF) 20.10.2004 11:23

там моё мнение про эту затею в целом.

в вашем случае:
@main[]
$untrustedRaw[$form:text]
$untrustedTypographed[^typo[$untrustedRaw]]

$xmldoc[^xdoc::create{<?xml version="1.0" encoding="$request:charset" ?>
<!DOCTYPE document [
	<!ENTITY	laquo		"&#171^;">
	<!ENTITY	raquo		"&#187^;">
]>

<document attr="$untrustedTypographed"></document>}]

$response:content-type[text/xml]
^untaint{^xmldoc.string[]}

@auto[]
#заметьте, что &laquo; тут написан кодером =
#= чистый =
#= никаких замен с его знаками не будет происходить
$typoTable[^table::create{from	to
<<	&laquo^;
>>	&raquo^;
}]

@typo[untrustedRaw] как бы типографит
#заменяет исходные буквы, которые могут быть tainted, на чистые
^untrustedRaw.replace[$typoTable]
но проще всего забыть про названия entities, они всё равно при transform не выживают, и сразу заменять на нужные буквы.

причём пока буква есть в кодировке windows-1251, лучше так её и записывать. тогда код значительно сокращается. (если буквы нет в windows-1251, записывать её в виде &#ddddd; или &#xHHHH;

тогда не надо и entities объявлять.
$typoTable[^table::create{from	to
<<	«
>>	»
}]