Вы спрашивали об этом на comp.lang.tcl , где я ответил:
1) Являются ли эти ошибки контрольными признаками проблем безопасности с
система, например, недостаточная проверка ввода пользователя?
Они указывают на проблемы в коде синтаксического анализа. Я предполагаю, что
код предполагает, что он может предполагать, что заголовок является правильно сформированным
Список Tcl, который вы считаете совершенно небезопасным. Санитарная обработка
используйте что-то вроде этого:
set listOfWords [regexp -all -inline {\S+} $someString]
Полученный набор слов гарантированно будет корректным
список для произвольной входной строки.
2) Если да, можно ли использовать это условие для выполнения произвольного TCL
заявления по отправке в систему специально созданного запроса, своего рода
http://en.wikipedia.org/wiki/Code_injection атака?
Скорее всего, нет, если только вы потом не обработаете этот список как код.
3) Существуют ли какие-либо документы "Практика безопасного кодирования TCL"? Любой другой
источник информации о том, как безопасно обрабатывать ненадежные данные?
Самый простой способ - выполнить синтаксический анализ в Safe Interpreter:
interp create -safe parsingInterp
parsingInterp eval { make the procedures }
parsingInterp eval [list doTheParse $stringToParse]
Обратите внимание, что мы также гарантируем, что построенные списки (например, из
list
, а также многие другие команды) eval-safe. То есть:
eval [list $a $b $c]
равно точно так же, как:
$a $b $c
Это верно, что бы ни было в этих переменных.