スポンサードリンク

クロスサイトスクリプティング対策を行うタイミングについて調べてみた

久しぶりにWebシステムに関わることになったのですが、クロスサイトスクリプティング(cross site scripting:XSS)対策をどのタイミングで行うべきかがあやふやになっていたので、復習の意味でも調べなおしてみました。

どのタイミングで行うべきか?

結論から言うと、HTMLソースを出力する(組み立てる)タイミングで行うのが正解のようです。

たしかにXSSの起動のトリガーはブラウザに表示されたタイミングなので、その直前で漏れなく対策されていれば問題ないわけです。

実際にプログラムの中で実施するタイミングについて考えてみると、一つはサーバーサイドでHTMLを組み立てるタイミングになるかと思います。

そしてもう一つが JavaScriput でDOMを操作して出力するタイミングになります。

どの文字に行うべきか?

無害化(サニタイズ)する文字ですが、おおよそ < と > と & の対策ができていれば良さそうな雰囲気です。

ついでにHTMLタグの属性を囲う " や ' までサニタイズしておけば、完璧と言ったところでしょう。

ただ気をつけないといけないのが、& を &amp; に変換するタイミング(順番?)でして、& を最初に変換するようにしておかないと < が &amp;lt; になっちゃったりして、なかなか悲しい事になりかねません。

同様の理由で、サニタイズする回数は必ず1回となるようにしておかないと、& がそのたびに &amp; に変換されるという事になってしまいますので気をつけたいところです。

そんな & に思うこと

そんな感じで、何かとサニタイズにおける罠の要因と勝手に思っている & でありますが、実はXSSには直接関与しない文字なんですよね。だって HTMLタグの要素じゃないですから。

「だったらサニタイズしなくてもよくね?」と思うわけですが、実際問題として &lt; と表示させたいところが、サニタイズしないと < と表示されてしまうわけでして、やっぱりやっておかないとダメみたいです。

サニタイズ変換メモ

ついでによく忘れてしまうので、文字変換のパターンをメモしておきます。

対象の文字変換後の文字列
<&lt;
>&gt;
&&amp;
"&quot;
'&#39;

まぁ、関数化しておけばいいだけの話なんですけどね(^_^;)。

とはいえ最近はフレームワークが花盛りですから、この辺の面倒くさいところはフレームワークに任せてしまうのが正解のような気がします。

スポンサードリンク
コメント
Verify your Comment
Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

コメントを投稿

プロフィール


  • 書いてる人:夢界 陸

    名古屋在住のおっさん。
    プログラミングやガジェットの話など、 日々の興味を徒然と綴っています。



    Twitterやってます @mukairiku



    運営サイト
    www.mukairiku.net

アクセスランキング


ブログ内検索

Licenses

  • Creative Commons License

OTHER

  • このブログのはてなブックマーク数

    ブログパーツ
Blog powered by TypePad

スポンサードリンク