如何在带有
的perl脚本中设置污点模式#!/usr/bin/env perl
认领?
答案 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