^untaint(ed) - было бо более точно, но лингвистически криво, причем вся кривизна понимания taint-измов с порога именно в семантике и подаче
andylars 27.06.2016 21:56
/ 27.06.2016 22:15
Так как ^untaint = не отменяет покраску вообще.
А отменяет только "неопределенную" (tainted-краску).
И то не "отменяет", а красит в "as-is".
Вообще, формально стоило просто не смешивать "тип-краски" и названия методов.
Ко всему прочему, еще тип краски "tainted" прописан не в списке, а в строках по тексту, что усложняет умозрительное восприятие.
Поправьте, если я ошибаюсь, но формально модель выглядит выглядит так:
Для всех символов строк - есть типы красок.
tainted - неопределенно-грязные
as-is - чистые как есть
url
file
...
Так мало того - tainted-краска называется "сбивающе" с толку (лучше бы dirty называлась), так этот тип тупо не перечислен в таблице видов краски ниже, а "подлый" оператор ^taint - красит в эту "tainted"-краску без указания "вида краски".
Неудивительно, что порог входа в понимании сразу завышается :)
Но исторически так сложилось. Надо просто дать более ясное объяснение:
1) tainted-краску - переназвать "dirty" (чтобы отгородить от методов)
2) перечислить ее в таблице видов краски (в документации)
3) и можно даже добавить опционально для порядка к ^taint[dirty][string]
потому что он это и так делает, но только без указания аргумента, а не просто по-умолчанию.
Ясно, что делалось это давно и исторически так сложилось...
Вообще если рассуждать формально, то не нужен никакой untaint,
нужен
^taint[to][which][string]
to - в какой цвет красим: dirty(tainted), as-is, url... (по-умолчанию dirty)
which - красим всё или выбранный цвет: all, dirty(tainted), as-is, url... (по умолчанию all)
string - строка
тогда
^taint[string] - покрасит всё в dirty(tainted) - как он и делает сейчас
а
^taint[as-is][dirty][string] - "очистит" только dirty(tainted)-куски, сделая их as-is
как это делает сейчас ^untaint{string}
----
Плюсы:
+ Становится и чище и гибче и даже больше возможностей - при всё том же механизме покраски.
+ Добавляется лучшая читаемость всего, что происходит, особенно с порога
+ Бородатый и странный ^untaint{} - в legacy-топку. (Остается для обратной совм)