On 2008.10.01 at 17:34:46 +0300, Aleksey Cheusov wrote: > >> > Если речь идет о безопасности, то начинать надо с выкидывания sh. > >> Вызов внешней утилы не является дырой в безопастности. > >> По крайней мере речь _сейчас_ не об этом, контект не тот. > > > Дырой в безопасности является строковая подстановка с неявным > > репарсингом после неё. Чуть автор скрипта на кавычках поэкономил, и > > привет - arbitrary command execution. > > Ах вот оно в чем дело. Тут согласен. Но ведь это практически только > тогда, когда eval и прочие ssh/rsh. И эти проблемы есть практически в > любом скриптовом языке. Ни в tcl ни в perl разыменование переменной не > смотрит, пуста строка, или нет. И проблема, как следствие та же.
Вопрос не в том, пуста строка или нет, а в том, будет ли она передана в выполняемую внешнюю команду как один параметр, или как произвольный набор таковых. В Tcl, если не предпринимать специальных мер, будет как один. В Perl, если использовать списковую форму system/exec - как один. В shell - да хоть как двадцать восемь отдельных шелловских команд. Главное понапихать во вводимое значение побольше точек с запятой и бэктиков. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]