2009-04-17 15 views
20

jsp、サーブレット、Beanをmysqlデータベースで使用します。フォームフィールドにユーザーが入力した文字を制限することは望ましくありません。だから私はどのように入力を害虫駆除し、悪意のある活動のために出力が変更されないようにするか。余分なコードが送信されているかどうかを確認できる出力を送信する途中ですか?検索入力フィールドがあるとします。ユーザーは<script>alert("I am here")</script>のようなものを与えます。私はこれがhtmlタグであることがわかっています。ユーザーがリンクフィールドに余分なパラメータを追加した場合、追加のリンクフィールドが存在することを文書で確認するために、前後のチェックのように表示されます。Java Webアプリケーションでの入力のサニタイズ方法

+0

あなたの質問の名前を「Javaで入力をサニタイズする方法」のようなものに名前を変更することを検討してください - あなたの質問のタイトルは、今後同様の回答を探している人には役立ちません... – razlebe

+10

Whoa、質問にjavascriptを実行します!悪いstackoverflow、悪い! –

+0

@robhruska:Nice find! – Adnan

答えて

5

ユーザー入力や無効な文字を含む可能性のあるデータベースなどのソースから取得したデータの基本的なHTMLエスケープ処理は、常に行う必要があります。たとえば、<c:out> JSPタグではこれが実行されます。こうすると、ユーザがあるフィールドに"<script> ..."と入力し、再度印刷している場合は、"&lt;script&gt; ..."としてHTMLに出力されます。

10

実際には、ユーザーができるだけ小さなHTMLやJavaScriptを入力できるようにしてください。このようなことを検証して消毒する良い解決策の1つは、OWASP AntiSamyのような既製のライブラリを使用することです。

また、開発者が安全なWebアプリケーションを構築するために必要なセキュリティメソッドのコレクションについては、OWASP Enterprise Security APIを参照してください。

5

jsoupあなたにこれを手伝ってください。あなたが何をしても、正規表現や何かを使ってこれをハックしようとしないでください。なぜなら2つの問題があるからです。 jsoupで:-)

、あなたが必要とするすべてのコードの短い抜粋です:

String safe = Jsoup.clean(unsafe, Whitelist.basic()); 

あなたがタグを追加し、私はそれが名前空間のタグをサポートしていない見つかったものの、比較的簡単にWhitelistに属性をすることができます。

関連する問題