0

当在 Perl 中清除变量时,是否必须在本地对 Perl (.pl) 文件进行所有清除,或者是否可以通过 Perl 模块 (.pm) 将其传递到清除?

例如,untainting 可能看起来像这样:

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

(显然,将任何输入内容全部匹配是一种不好的做法,这只是一个示例)

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

use myModule;

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

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

4

1 回答 1

0

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

但是你不应该使用通用的 match-anything 表达式,比如/\A(.*)\z/suntainting。这违背了污染的目的,即确保值看起来像您在使用它之前所期望的那样。(但这与执行无污染的代码的位置无关。)

于 2015-09-16T19:30:07.003 回答