如何在 perl 脚本中设置污点模式
#!/usr/bin/env perl
谢邦?
您可以在 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
显然,这是对启动性能的重大打击。
由于污点模式只能通过-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