HTML(タグ)を表示する、XSS対策を行う
原理は非常にシンプルだ。単純に以下の文字列に置き換えてやれば良い。
これを行うことで、タグ使用不可の掲示板が作成できたり、XSS対策(クロスサイトスクリプティング)にも活用できる。
ここではオリジナルの関数とCGIモジュールの機能の両方を試してみたが、場合によって好きな方を使えば良い。結果はどちらも同じだ。
& | → | & |
| < | → | < |
| > | → | > |
| " | → | " |
| ' | → | ' |
これを行うことで、タグ使用不可の掲示板が作成できたり、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/&/&/g; $str =~ s/</</g; $str =~ s/>/>/g; $str =~ s/\"/"/g; $str =~ s/\'/'/g; return($str); }
ここではオリジナルの関数とCGIモジュールの機能の両方を試してみたが、場合によって好きな方を使えば良い。結果はどちらも同じだ。
<script language="JavaScript">alert('にょろ');</script>

