通过Perl模块子程序传递Perl Untaint变量

时间:2015-09-16 16:26:36

标签: regex perl perl-module taint

当在Perl中解开变量时,所有的无关必须在本地完成Perl(.pl)文件,或者它可以通过Perl模块(.pm)传递给untaint吗?

例如,无污染可能看起来像这样:

$string =~ /\A(.*)\z/s

(显然,将毯子匹配 - 输入任何东西都是一种不好的做法,这仅仅是一个例子)

我想知道是否可以通过.pm传递它,因为我想在多个.pl文件中执行相同的正则表达式。

use myModule;

$string = myModule::myUntaint($string);

其中“myUntaint”是包含我的正则表达式的.pm“myModule”中的子例程。

1 个答案:

答案 0 :(得分:0)

是的,你可以在模块中有一个子程序,它接受一个受污染的参数,并返回一个从它派生的无表情的表达式。

但你不应该使用通用匹配 - 像/\A(.*)\z/s这样的任何表达式来解开。这违背了污点的目的,这是为了确保价值看起来像你在使用之前所期望的那样。 (但这与无效生活的代码无关。)