Новости | 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, вот это и непонятно