Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
G_Z 04.01.2016 18:58 / 04.01.2016 19:06
1) "помечает" строку (отдельно каждый символ строки и это тайное знание)Да.
какой вид преобразования к строке (на самом деле к отдельному символу) применить непосредственно перед
отдачей (т.е. когда весь код завершился)
2) он не просто помечает, но и попутно выводит эту же переменную в этом же месте кода,Этот оператор возвращает помеченную строку, оставляя оригинал нетронутым.
поэтому когда надо просто "пометить" необходимо присваивание $str[^taint[uri][$str]]
если мы назначилиТак и есть.
вид пост-фактум преобразования для строки,
а потом ДО этого преобразования изменили строку
replace-ом, то уже этот результат должен попасть
в конечном счете под taint-преобразование
И именно поэтому те символы уже помеченной строки, которыеЗависит от того, как заменять.
я по коду изменю replace'ом поменяют свой taint на какой-то другой
(на какой?) на as-is или tainted ?
И именно поэтому эта часть строкиЭто не фильтр.
не будет затронута фильтром taint[uri]?
Последовательность имеет значениеКонечно имеет.
Вот это неявное перепачкивание и невозможность вывестиОно вполне явное.
состояние "окрашенности" строки куда-то в отладку
и создает, как мне кажется, запутанность.
Почему replace - перепачкивает, а присвоение str[^taint[str]]Он не «перепачкивает», он заменяет символы на те, что ему дают.
нет? ведь "код написанный программистом" это as-is?
@main[] # чистая строка, написанная программистом $str[абв] # вся строка, помечена как небезопасные uri-данные $str[^taint[uri;$str]] # получим percent-закодированные символы всей строки ^apply-taint[$str]<br/> # заменим символ грязной строки, на чистый символ, написанный программистом $str[^str.replace[б;б]] # получим percent-закодированные символы, кроме того, что заменён на чистый, он выведен как есть ^apply-taint[$str]<br/> # заменим чистый символ на грязный вручную $str[^str.replace[б;^taint[uri;б]]] # снова получим percent-закодированные символы всей строки ^apply-taint[$str]