« ulogd mysql のtimeout | メイン | あけましておめでとうございます。 »

2008年12月27日

cgi.pmで@が最後に含まれるpathを渡すとprocessがdieする >>Perl 

cgi.pmで@が最後に含まれるpathを渡すとprocessがdieする。

cgi.pmの処理がまずいせいです。

例えばこんなのを渡すとcgi.pmが死ぬ。
http://nantoka/cgi/nantoka.cgi/%5bjv%40

対処方法。
$cgi = new CGI;
は、eval でブレースしなきゃだめ。

eval {
$cgi = new CGI;
};

path_infoはcgi.pmを使って取得しない。
@が含まれないんなら、evalでブレースしとけば一応安全。
eval {
$path_info = $cgi->path_info() || '';
};
で、エラーは出なくなるけど、値は取得できません。
$ENV{'PATH_INFO'};
で自前でとった方が安全だろうねえ。

cgi.pm 3.15でのお話。
その後どうなってるかは試してみてません。

twitterこの記事をTwitterでみんなに教える。

投稿者 debizoh : 2008年12月27日 17:25



トラックバック

現在、この記事はトラックバックを受け付けておりません。


コメント

現在、この記事はコメントを受け付けておりません。