1、该程序的输入数据来自外部数据源
2、该程序所调用sub-shell或者函数影响到该程序之外其它东西。
你可以用“-T”开关来打开Perl的taint模式。
当打开taint模式时,Perl就会进行执行检查以确保你的数据未被taint,如果不安全的使用了被taint的数据,就会发出严重错误。为了使你的数据不被taint,执行正则表达式来匹配数据并提取匹配部分。这样,你就必须描述出你所期望的数据的内容以及格式,并只接受符合这一要求的数据。
例如,假设你期望收到一个单词字符(word
characters,即字母数字以及下划线)那么,下面的代码通过一个正则表达式(它只通过全部由单词字符组成字符串)会“蒸馏出”你的数据来:
if ( $data =~ /^(w+)$/ ) {
$data = ;
} else {
die "Error: tainted data found: $data
";
}