【Java/Kotlin】unbescapeでHTML5対応のエスケープ(サニタイズ)処理をする【SpringBoot】


やること

HTMLテンプレートのマクロ文字列をパラメータで置換する際のエスケープ処理をやります。

やり方

この記事ではunbescapeを用います。

HTML5対応が明示されていませんが、Apache Commons Textを用いる方法なども有ります。

導入

このライブラリはspring-boot-starter-thymeleafに入っていたため、SpringBoot関連のものを入れていれば何もする必要が無いかもしれません。
一応ですが、Mavenのリポジトリは以下です。

エスケープする

以下の記事を参考にエスケープ処理をやってみました。

HtmlEscape.escapeHtml5でエスケープできます。

検証用コード
fun main() {
    val value = """
        &: &
        ': '
        `: `
        ": "
        <: &lt;
        >: &gt;
    """.trimIndent()

    println(HtmlEscape.escapeHtml5(value))
}

実行結果

バッククォート以外はエスケープされました。

実行結果
&amp;: &amp;amp;
&apos;: &amp;#x27;
`: &amp;#x60;
&quot;: &amp;quot;
&lt;: &amp;lt;
&gt;: &amp;gt;

その他エスケープ可能な内容

パッケージを覗いてみた様子が以下です。
色々とエスケープできます。

参考にさせて頂いた記事