OWASP ( ESAPI ) ライブラリも使用し、さまざまな種類の表示用に文字列をエスケープするには、次を使用します。
String html = ESAPI.encoder().encodeForHTML("hello < how > are 'you'");
String html_attr = ESAPI.encoder().encodeForHTMLAttribute("hello < how > are 'you'");
String js = ESAPI.encoder().encodeForJavaScript("hello < how > are 'you'");
HTML (jsp を想定)
<tag attr="<%= html_attr %>" onclick="alert('<%= js %>')"><%= html %></tag>
更新( 2017 )
ESAPI エンコーダーはレガシーと見なされているため、より優れた代替手段が作成され、積極的に維持されています。代わりにOWASP Java エンコーダーを使用することを強くお勧めします。
プロジェクトで既に を使用している場合は、代わりにこのライブラリをエンコードに使用できるようにESAPI
する統合が追加されています。
使用法はwiki ページで説明されていますが、完成させるために、これを使用してデータをコンテキストに応じてエンコードする方法を次に示します。
// HTML Context
String html = Encoder.forHtml("u<ntrus>te'd'");
// HTML Attribute Context
String htmlAttr = Encoder.forHtmlAttribute("u<ntrus>te'd'");
// Javascript Attribute Context
String jsAttr = Encoder.forJavaScriptAttribute("u<ntrus>te'd'");
HTML (jsp を想定)
<div data-attr="<%= htmlAttr %>" onclick="alert('<%= jsAttr %>')">
<%= html %>
</div>
PS:より多くのコンテキストが存在し、ライブラリによってサポートされています