2006年05月28日 07:30 [Edit]

perl - Taint Mode

手前味噌ではありますが、taint modeまできちんと紹介した上に、サンプルコードに全部-Tをつけてあるのは、日本語のものでは拙著だけかもしれません。

[を] Perl の -T スイッチ
「掟」だそうです!!!

Amazonマーケットプレイスではプレミアが付いちゃってますが、今見てもそんなに内容は古くなってないようにも思えます。

他にも事例があれば紹介を。

おぼろげな記憶ですが、O'ReilleyのCGI本は-T付きだったように思います。

ついでに、添削。

[を] Perl の -T スイッチ
回避するには掃除が必要。例えば5行目を以下のようにするとOK。
    5  if ($fn =~ /^([a-z0-9]+)$/i) {$fn = $1} else {die}

こういうのは、きちんと関数を書いてやるが吉。例えば....

my $re_filename =  qr/[0-9A-Za-z_][0-9A-Za-z_\.]+/; # .foo is NG, foo.bar is OK
sub untaint_filename{
    my $name = shift;
    die "$name is insecure" unless $name =~ /^($re_filename)$/;
    return $1;
}

なお、Taint Modeに飽き足らない人はSafeにも挑戦してみるといいでしょう。こちらはさらに細かな制御が可能です。

Dan the Securer (but Never Secure Enough) Perl Monger


この記事へのトラックバックURL