AMG Solution

クロスサイトスクリプティング対策で改行のみ有効にしたいときの対応方法まとめ

こんにちは、堀部です。
 
クロスサイトスクリプティング(以下:XSS)の対応で、タグを無効化するのはよく行われることですが、テキストエリアに入力された内容を表示する際に、改行コードだけは有効にしたい場合があります。
 
そんな時に役立つ方法をご紹介します。

JSTLを使った方法

改行コードで、splitしてforEachでループしながら出力しています。改行以外のタグはc:outで無効化されます。
 
split関数の第2引数での改行は、置換するためにあえてしています。

jQueryを使った方法

.textでタグを無効化して、javascriptのreplace関数で改行コードを<br>に変換しています。replaceは最初の1つの一致文字しか置換してくれないため、正規表現を使うようにしています。

PHPを使った方法

htmlspecialchars関数で、変換された改行コードをstr_replace関数で<br>に変換しています。

まとめ

いかがでしたでしょうか。
 
Webアプリケーションを構築するうえでXSS対策は必ず行わなければいけませんが、有効にしたいコードまでエスケープしてしまうとユーザビリティの低下につながります。
 
今回ご紹介した言語での対応以外にも、方法はあると思いますので機会があればまたご紹介したいと思います。

HORIBE'S BLOG

堀部光一の記事

堀部光一の記事の最新情報をお届けいたします。

SAME CATEGORY BLOG

この記事と同様のカテゴリー記事

新卒採用
はじめました。
LOADING