11

如何在 perl 脚本中设置污点模式

#!/usr/bin/env perl

谢邦?

4

2 回答 2

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

显然,这是对启动性能的重大打击。

于 2010-03-27T11:23:43.037 回答
3

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

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

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

然后在你的 Perl 脚本中,有

#!/usr/bin/env taintperl
于 2010-03-27T11:02:31.933 回答