« 画面を分割する (vim) | メイン | タグクラウド(TagCloud)を簡単に生成する »

カテゴリー:文字列 セキュリティ 

HTML(タグ)を表示する、XSS対策を行う

このエントリーを含むはてなブックマーク  livedoorクリップ  HTML(タグ)を表示する、XSS対策を行うをdel.icio.usに追加  HTML(タグ)を表示する、XSS対策を行うをYahoo!ブックマークに追加  HTML(タグ)を表示する、XSS対策を行うをニフティクリップに追加

例えば文字列中にHTMLが含まれる場合、それをHTMLではなくタダの文字として表示したい場合がある。このような時にはHTMLの仕様で定められている文字実体参照などへ変換してやれば良い。

原理は非常にシンプルだ。単純に以下の文字列に置き換えてやれば良い。

&
&
amp;
<
&
lt;
>
&
gt;
"
&
quot;
'
&
#39;

これを行うことで、タグ使用不可の掲示板が作成できたり、XSS対策(クロスサイトスクリプティング)にも活用できる。

;#
;#HTML(タグ)を表示する、XSS対策を行いたい
;#

#-------------------------------------------------#
#HTML準備
#-------------------------------------------------#
my $html = qq|<script language="JavaScript">alert('にょろ');</script>\n|;

#-------------------------------------------------#
#変換+表示
#-------------------------------------------------#
#-- オリジナル関数 --#
print xss($html);

#-- CGIモジュールを利用 --#
use CGI qw(:cgi);
print CGI::escapeHTML($html);

#-------------------------------------------------#
#XSS対策
#-------------------------------------------------#
sub xss {
	my $str = shift || return(undef);

	$str =~ s/&/&amp;/g;
	$str =~ s/</&lt;/g;
	$str =~ s/>/&gt;/g;
	$str =~ s/\"/&quot;/g;
	$str =~ s/\'/&#39;/g;

	return($str);
}

ここではオリジナルの関数とCGIモジュールの機能の両方を試してみたが、場合によって好きな方を使えば良い。結果はどちらも同じだ。

&lt;script language=&quot;JavaScript&quot;&gt;alert(&#39;にょろ&#39;);&lt;/script&gt;



トラックバック

このエントリーのトラックバックURL:
http://katsubemakito.net/mt/mt-tb.cgi/614

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

VPSレンタルサーバー




クリエイティブ・コモンズ・ライセンス
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.