2011年4月21日木曜日

Java で, HTMLのXSS対策

<textarea> などで入力したものを保存したり, 最終的に表示したりするときに, HTMLのタグを
うちこまれたり, <script></script> などで, JavaScript を実行されてしまうXSS

PHP では,  $results = htmlspecialchars($results)  なるものがあり, HTML 文字を適切に変換してくれるものがあるが,   Java には, 今のところ見当たらない。
とりあえずサンプルとして作ってみた。

------------------------------------------------------------------------------
public String htmlspecialchars ( String str )
{
String ret_val = new String(str);

String[] escape = {"&", "<", ">", "\"", "\'", "\n", "\t"};
String[] replace = {"&amp;", "&lt;", "&gt;", "&quot;", "&#39;", "<br>", "&#x0009;"};

for ( int i=0; i < escape.length; i++ )
{
      ret_val = ret_val.replace(escape[i], replace[i]);
}

return ret_val;
}


とりあえず,  & ,  <,  > ",  ',  改行,  タブなどを変換しておけばよさそうだが。  空白や特殊文字がまだありそうだ

0 件のコメント:

コメントを投稿