А что это вообще такое?

       

Таблицы преобразований


as-is
изменений в тексте не делается

file-spec
символы * ? ' " < > |
преобразуются в "_XX",
где XX - код символа в шестнадцатеричной форме

uri
символы за исключением цифр, строчных и прописных латинских букв, а также следующих символов: _ - . "
преобразуется в %XX где XX - код символа в шестнадцатеричной форме



http-header
то же, что и URI

mail-header
если известен charset (если неизвестен, не будут работать up/low case), то фрагмент, начиная с первой буквы с восьмым битом и до конца строки, будет представлен в подобном виде:
Subject: Re: parser3: =?koi8-r?Q?=D3=C5=CD=C9=CE=C1=D2?=

sql
в зависимости от SQL-сервера
для Oracle/ODBC меняется ' на ''
для PgSQL меняется ' на '' и \ на \\
для MySQL делается средствами самого MySQL

js
" преобразуется в \"
' преобразуется в \' 
\ преобразуется в \\
символ конца строки преобразуется в \n
символ с кодом 0xFF предваряется \

xml
& преобразуется в &amp;
> преобразуется в &gt;
< преобразуется в &lt;
" преобразуется в &quot;
' преобразуется в &apos;

html
& преобразуется в &amp;
> преобразуется в &gt;
< преобразуется в &lt;
" преобразуется в &quot;

optimized-as-is
optimized-xml
optimized-html

дополнительно к заменам выполняется оптимизация по "white spaces" (символы пробела, табуляция, перевода строки).

Идущие подряд перечисленные символы заменяются только одним, который встречается в коде первым


Ряд taint преобразований Parser делает автоматически, так, имена и пути файлов всегда автоматически file-spec преобразуются, и когда вы пишите…

^file::load[filename]

…Parser выполняет…

^file::load[^taint[file-spec][filename]]

Аналогично, при задании HTTP-заголовков и заголовков писем, происходят http-header и mail-header преобразования соответственно. А при DOM-операциях текстовые параметры всех методов автоматически xml преобразуются.

Также Parser выполняет ряд автоматических untaint преобразований:
вид
что преобразуется
sql
тело SQL-запроса
xml
XML код при создании объекта класса xdoc










Содержание раздела