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

StackOverflow https://stackoverflow.com/questions/2528959

  •  22-09-2019
  •  | 
  •  

我如何在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 路径中的某个地方(例如/usr/local/bin),带有以下内容:

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

然后在您的perl脚本中

#!/usr/bin/env taintperl
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top