Ответ
Misha v.3 20.10.2004 15:11
попробую и я немного прояснить ситуацию с taint-ингом.
taint - это не что-то в самом тексте, это дополнительная информация
о тексте которую парсер хранит у себя, пока работает с ним.
как только парсер этот текст отдает куда-либо он использует эту информацию для того, чтобы сделать что-то с текстом перед самой выдачей.
т.е. если у нас был текст из двух букв на разных языках, и мы этот текст запишем в БД (файл) - то перед записью языки будет применены. но когда вы парсером попытаетесь считать это-же из БД (файла) - то там уже подобной информации не будет, будут только буквы. парсеру без разницы кто и когда положил туда эти буквы - сам он или ещё кто-либо, он начинает с самого начала - это внешние данные, поэтому по умолчанию он им н доверяет (грязные).
когда вы делаете некие преобразования перед сохранением данных пользователя в БД - tainting прекрасно работает. как только вы сохранили их в БД и на другой странице достали - про языки кусочков текста, которые были до записи текста в БД парсер уже ничего не знает.
поэтому мне кажется правильным делать все в один прием:
1 случай: мы получаем данные от пользователя, модифицируем их, корректируем ошибки и кладем в БД. после этого мы считаем что данные в БД уже хорошие, поэтому после доставания их из БД ^taint[as-is][их]. именно этот случай я обычно использую при написании административных интерфейсов.
2 случай: мы получаем данные от пользователя, ничего с ними не делая кладем в БД, а в другом месте достаем и показываем. в этом случае используем механизм taiтting-а при выводе. такие случаи имеют место быть в гостевых, форумах и т.д.
3 промежуточные варианты: а-ля описаный тут и
тут. вы хотите чтобы часть работы была выполнена с использованием taint-инга ДО сохранения текста, а другая часть - после, но забываете что после того как ваш текст побывает "где-то там", парсер ничего не будет знать о языках кусочков этого текста. выход в подобных случаях такой: часть работы делать с использованием taint, а вторую часть - ручками.
по поводу модифицирования данных пользователя: по моему это лишнее. я могу понять когда что-то введенное в административном интерфейсе "типографится" (причем не всегда и безусловно, а это контролируется админом), но когда типографятся буквы, введенные посетителем в форму гостевой - это по моему перебор. не только потому, что это уже не те буквы, которые ввел пользователь и выдавать из за написанное им нехорошо (не нравится что он написал - удали, но править - не могИ!) но и потому, что ваша типографика может дать сбой, а оригинал уже будет утерян (не будет сохранен).
поэтому я считаю так-же как и ПАФ - то что введенное пользователем надо хранить в исходном виде.
P.S. преждевременная оптимизация - тоже зло, т.к. она очень негативно сказывается на масштабируемости и впоследствии выходит боком.
- Проблемы с символами типа « в 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