4

私は、XSS 脆弱性に満ちた 1000 以上の JSP ファイルの大規模なコード ベースを継承しました。

コードがいっぱい

<%= request.getParameter("theparam")%>

out.println("some stuff before"+request.getParameter("theparam")+"and some other stuff");

String myVar = request.getParameter("theparam");
out.println(myVar);

すべてのファイルを個別に確認することなく、すべてのファイルを保護したいと考えています。

私の最善のアプローチは何ですか?

  • すべてのソース ファイルで、「request.getParameter("xx")」を「StringEscapeUtils.escapeHtml(request.getParameter("xx"))」に「すべて置換」しますか?

  • 関数「request.getParameter」を何らかの方法でオーバーライドして、デフォルトで stringescapeutils.escapehtml(request.getParameter("")); に設定できますか? ?

thnx

4

2 に答える 2

3

これが最善のアプローチだと言っているわけではありませんが、次のようになります。

関数'request.getParameter'をなんとかしてオーバーライドして、デフォルトでstringescapeutils.escapehtml(request.getParameter( ""));にすることはできますか??

サーブレットフィルタを使用し、HTTPサーブレットリクエストをラップすることで簡単に実現できます。このアプローチは、検証ロジックをHttpServletRequestに追加する方法で説明されています。

ただし、最も包括的なアプローチは、表示時にエスケープすることです。できれば、JSPでのみ実行してください。残念ながら、サーブレットでもHTMLを生成します。XSSを防ぐためのJava5HTMLエスケープを参照してください。

于 2012-07-13T21:50:33.750 に答える