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



当对Perl中的变量进行反污染时,所有的反污染都必须在本地对Perl (.pl)文件进行,还是可以通过Perl模块(.pm)进行反污染?

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

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

(显然,覆盖匹配任何输入都是一个不好的做法,这只是展示一个示例)

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

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

其中"myUntaint"是.pm "myModule"中的子例程,它包含了我的正则表达式。

是的,您可以在模块中设置一子例程,该子例程接受受污染的参数并返回从该参数派生的未受污染的表达式。

但是您不应该使用像/A(.*)z/s这样的通用匹配任何表达式来进行不污染。这违背了污化的目的,污化的目的是确保值在使用它之前看起来像您所期望的那样。(但这与执行不污染的代码的位置无关。)

最新更新