アキラのITメモ:サニタイジングをする

IT関係、技術関係のメモです。

サニタイジングをする

CGIを作成する時などにクロスサイトスクリプティング(XSS)対策のために必ず必要になるサニタイジングですが、いつもどうやるんだっけ?と忘れてしまいがちなのでここにメモしておくことにします。基本的には以下のような感じでOKです。このあたりの話はIPA セキュアWebプログラミングのページが役に立ちます。

#!/usr/local/bin/perl

use CGI;

$query = new CGI;
$input = $query->param("input");
$input = &sanitize($input);
print <<"EOM";
Content-type: text/html

<html><body>
$input
</body><html>
EOM
exit;

# サニタイジングをする関数
sub sanitize {
    my $input = $_[0];
    $input =~ s/&/&amp;/g;   # & → &amp;
    $input =~ s/</&lt;/g;     # < → &lt;
    $input =~ s/>/&gt;/g;     # > → &gt;
    $input =~ s/"/&quot;/g; # " → &quot;
    $input =~ s/'/&#39;/g;   # ' → &#39;
    return $input;
 }

なお上記のCGIスクリプト(input.cgiとする)を呼び出す例は以下の通りです。

<html><body>
<form action="./input.cgi">
input: <input type="text" size="30" name="input">
<input type="submit" value="submit">
</form>
</body></html>

カテゴリ: Perl 投稿日: 2007年01月05日 00:01
Trackback URL: http://akira-site.net/cgi-bin/mt/mt-tb.cgi/412

コメント

コメントを投稿





カテゴリ「Perl」内の記事

サイト内検索

カテゴリ

最近のエントリ

関連商品

アバウト

Atom RSS
Powered by MT3.33-ja
合計:total
今日:today 昨日:yesterday