| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Maxx 06.02.2019 01:55
taint-инг конечно непростая тема, но мне кажется что-то тут не так. повторю пример для наглядности.@main[]
$h[^hash::create[
$.test[8"e"]
]]
$json[^json:string[$h]]
$json
# выводит { "test":"8\"e\"" }
^json.save[json.json]
# в файл попадает { "test":"8\"e\"" }
^connect[mysql]{
^void:sql{insert into test set json = '$json'}
}
# в базу попадает {"test":"8"e""}1. если чистые данные не экранируются, то почему в файл попадает экранированная строка? а в БД - нет?$h[^hash::create[
$.test[^string::sql[select '8"e"']] ^rem{теперь то тут грязная строка?}
]]строчка стала грязной - но результат не изменился - в БД она попадает в "оригинальном виде" неэкранированной$json[^json:string[$h]]значения полей хэша не должны уже попадать намертво экранированными строками?
^void:sql{insert into test set json = '^taint[$json]'}Да, это работает. Но в файл то пишется как надо и без taint, вот это и непонятно