Как установить режим taint в perl-скрипте с помощью '#! / Usr / bin / env perl'- shebang? - PullRequest
11 голосов
/ 27 марта 2010

как мне установить режим taint в Perl-скрипте с

#!/usr/bin/env perl

притон?

Ответы [ 2 ]

12 голосов
/ 27 марта 2010

Вы можете передать переменную среды PERL5OPT в строке shebang:

#!/usr/bin/env PERL5OPT=-T perl

Мне кажется, что это довольно задом наперед.

Другой вариант - повторно запустить скрипт в режиме taint, если вы обнаружите, что он не включен:

#!/usr/bin/env perl

warn 'Taint mode is '.(${^TAINT} ? 'on' : 'off'); # For debugging

exec($^X,'-T',$0,@ARGV) unless ${^TAINT};

# do stuff under taint mode here

Очевидно, что это главный удар по производительности при запуске.

3 голосов
/ 27 марта 2010

Поскольку режим taint можно включить только с помощью флага -T, а env не будет принимать какие-либо флаги в строке shebang, лучше всего запускать программу через perl -T script.pl, а не выполнять скрипт напрямую. .

Если вам абсолютно необходимо принудительно включить режим taint в shebang, вы можете создать сценарий taintperl где-нибудь в вашем PATH (например, / usr / local / bin) со следующим содержимым:

#!/bin/sh
/usr/bin/env perl -T

Тогда в вашем Perl-скрипте есть

#!/usr/bin/env taintperl
...