如何使用'#!/ usr / bin / env perl'- shebang在perl脚本中设置污点模式?

时间:2010-03-27 10:48:29

标签: perl shebang taint

如何在带有

的perl脚本中设置污点模式
#!/usr/bin/env perl

认领?

2 个答案:

答案 0 :(得分:12)

您可以在shebang行传递PERL5OPT环境变量:

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

这似乎对我来说都是倒退。

另一种选择是,如果检测到它没有打开,则在污染模式下重新执行脚本:

#!/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

显然,这是一个重大的创业表现。

答案 1 :(得分:3)

由于污点模式只能通过-T标志启用,并且env不接受shebang行中的任何标记,因此最佳选择是通过perl -T script.pl运行程序而不是直接执行脚本。

如果你绝对需要在shebang中强制执行污点模式,你可以在PATH的某个地方(例如/ usr / local / bin)创建一个taintperl脚本,其中包含以下内容:

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

然后在你的Perl脚本中,有

#!/usr/bin/env taintperl