当在Perl中解开变量时,所有的无关必须在本地完成Perl(.pl)文件,或者它可以通过Perl模块(.pm)传递给untaint吗?
例如,无污染可能看起来像这样:
$string =~ /\A(.*)\z/s
(显然,将毯子匹配 - 输入任何东西都是一种不好的做法,这仅仅是一个例子)
我想知道是否可以通过.pm传递它,因为我想在多个.pl文件中执行相同的正则表达式。
use myModule;
$string = myModule::myUntaint($string);
其中“myUntaint”是包含我的正则表达式的.pm“myModule”中的子例程。
答案 0 :(得分:0)
是的,你可以在模块中有一个子程序,它接受一个受污染的参数,并返回一个从它派生的无表情的表达式。
但你不应该使用通用匹配 - 像/\A(.*)\z/s
这样的任何表达式来解开。这违背了污点的目的,这是为了确保价值看起来像你在使用之前所期望的那样。 (但这与无效生活的代码无关。)