手前味噌ではありますが、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
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。