OWASP によると、DOM セーフで HTML を動的に更新するには、次のことをお勧めします。
- HTMLエンコーディング、そして
- 次の例に示すように、すべての信頼できない入力をエンコードする JavaScript:
element.innerHTML = “<%=Encoder.encodeForJS(Encoder.encodeForHTML(untrustedData))%>”;
サーブレットがユーザー入力 (AJAX 要求として受信) を受信し、データを処理し、要素の値を設定して (を使用してdocument.getElementById("elementID").innerHTML = data;
) DOM を動的に変更するために使用されるテキスト応答を送信する Web アプリケーションがあります。
DOM ベースの XSS を防ぐには、ESAPI エンコーダーを使用して HTML と JavaScript をエスケープする必要があります。
String htmlEscapedStr=ESAPI.encoder().encodeForHTML(content);
String JSEscapedStr=ESAPI.encoder().encodeForJavaScript(htmlEscapedStr);
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(JSEscapedStr);
;
または、エンコードされていない文字列をストリームに書き込んでも安全ですか
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(content);