Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Sumo 28.09 14:11 / 28.09 14:12
... и даже помечает данные как грязные, когда данные приходтят из внешних источников.# Когда не нужно ничего явно преобразовывать достаточно покрасить, # т.е. сказать парсеру — что value_json надо заэскейпить, если потребуется # И Парсер сам всё сделать при исполнении sql:void ^connect[$connectString]{ ^sql:void{ insert into table1 (uuid, value_json, int_value, form_value) values ('^math:uuid7[]', '^taint[^json:string[$data]]', ^i.int[], '$form:value') } } # Если нам нужно отправить запрос и сохранить запрос в лог на диск, # то в этом случае нам надо будет сделать apply-taint, чтобы в логе был корректный запрос ^connect[$connectString]{ # Готовим запрос и сразу преобразоваваем # и явно эскейпим строку в контексте оператора connect $query[^apply-taint[sql][ insert into table1 (uuid, value_json, int_value, form_value) values ('^math:uuid7[]', '^taint[^json:string[$data]]', ^i.int[], '$form:value') ]] # Отправляем запрос в базу ^sql:void{$query} } # А теперь пишем в лог запрос, но уже корректно заэскейпленный $now[^date::now[]] ^query.save[append; [^now.gmt-string[]] - $query^#0A]Общее правило — не нужно нигде явно писать untaint, apply-taint и даже taint, если явно нет причины. Для остального обычно достаточно покрасить данные обычным ^taint[$value].