Поиск источника ошибки режима Perl Taint - PullRequest
5 голосов
/ 15 июня 2011

При запуске CGI-сценария perl в режиме taint я получаю сообщение об ошибке вида ...

Insecure dependency in some_function while running with -T switch at (eval some_line) line some_other_line.
Compilation failed in require at my-script.cgi line 39.
BEGIN failed--compilation aborted at my-script.cgi line 39.

my-script.cgi строка 39 - это оператор использования для модуля perl, который несам использует eval или some_function, но предположительно использует другую библиотеку, которая это делает.Номера строк some_line и some_other_line, похоже, не имеют смысла ни в my-script.cgi, ни в библиотеке, которая 'use'd в строке 39 my-script.cgi.

Учитывая эту ошибку, какя могу отследить, где происходит ошибка taint?

Я попытался установить новый обработчик сигнала матрицы, который должен печатать трассировку стека, т.е.

$SIG{ __DIE__ } = sub { require Carp; Carp::confess(@_); };

, но, похоже, этого нетвлияние на ошибку.Возможно, это неправильный сигнал для того, чтобы ловить, не происходить достаточно рано, или требуется что-то более сложное.

Ответы [ 2 ]

4 голосов
/ 15 июня 2011

Carp :: Always отлично работает с исключениями, вызванными проверкой заражения.Пример вывода:

$ perl -MCarp::Always -T blah.pl
Insecure dependency in sprintf while running with -T switch at blah.pl line 6
        main::foo() called at blah.pl line 8
        main::bar() called at blah.pl line 10
2 голосов
/ 15 июня 2011

В эти дни я часто использую Devel :: SimpleTrace для отладки, и это недавно помогло мне найти ошибку при использовании Archive :: Zip.

Однако я не знаюесли это сработало бы в вашем случае, так как он по существу устанавливает тот же обработчик sig, который вы использовали.

...