입력 또는 환경에 의존하지 않는 100 % 신뢰할 수있는 솔루션을 찾고 있습니다 .- 단지 100 % - 특정 스칼라 변수를 오염시킨 것입니다 :-)펄 변수를 항상 오염되게하려면 어떻게해야합니까?
-1
A
답변
1
나는 완벽하다고 주장하지 않습니다. 신뢰할 수 있음. 새로운 시스템마다 코드가 예상대로 작동하는지 테스트를 만들어야합니다. 당신이 스칼라 기준에 파일 핸들을 열 경우
그러나 readline의 결과는 tainted로 나타납니다
#!/usr/bin/env perl -T
use strict;
use warnings;
use Scalar::Util qw(tainted);
my $var = 0.13;
print tainted($var) ? "Yes, tainted: $var\n" : "Nope, all clean: $var\n";
$var = taint_string($var);
print tainted($var) ? "Yes, tainted: $var\n" : "Nope, all clean: $var\n";
sub taint_string {
my $value = shift;
warn "Not going to work on references" if ref $value;
open my $fh, '<', \$value or die "Can't open: $!";
local $/; # Slurp
return <$fh>;
}
출력 :
Nope, all clean: 0.13
Yes, tainted: 0.13
HTTP : //perldoc.perl합니다. org/perlsec.html # Taint-mode – TLP