| Новости | 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].