XSS(クロスサイトスクリプティング)脆弱性をウェブブラウザで確認するなら Google Chrome 30.0.1599.69 は避けたほうが良い理由♪
- エスケープされているかどうか HTML ソースを表示して確認しようとするとページがリロードされてしまい、入力した値が消えてしまうから。
ちなみに、バージョン 30.0.1599.69 を明記しておりますが、他のバージョンでならできるのかい?と問われますと、わかりません!が答えです。
実際にページの HTML ソースが確認できない様子
任意のフォームに XSS(クロスサイトスクリプティング)脆弱性検出パターンである「’>”><hr>」を入力します。
次のページに進みます。
右クリック「ページのソースを表示」
次のように表示され、ソースの表示ができません><。ソースを見れば、エスケープされていることを確実に確認できますのに。。。
フォーム再送信の確認
このウェブページを正しく表示するには、先ほど入力したデータが必要です。データは再送信できますが、このページで先ほど行った操作を繰り返すことになります。このウェブページを再読み込みしてください。ページの読み込みに必要なデータを再送信するには、再読み込みボタンを押してください。エラー コード: ERR_CACHE_MISS
このようになってしまう理由を考えました。きっと、レスポンスをすべて受け取って表示が完了した状態のソースを表示していないのです。
そうではなく、HTML ソースを表示するためのモードのようなものがあり、それに Chrome を切り替えてよっこらしょっと URL をリクエストし受け取った結果からページのソースを生成しているのです。
実際、Chrome のアドレス欄を見てみます。
- view-source:http://example.com/entry/?
このようになっておりました。きっと Chrome を「view-source:」の状態にした後、あらためて「http://example.com/entry/?」を読み込むのです。そのとき、フォームに入力した値は送られていないのです><。
では、デベロッパーツールを使えば HTML ソースが確認できるのではないでしょうか?
そう思っていた時期がわたくしにもございました。。。右クリック「要素の検証」から Elements を確認してみますと、、、見事にエスケープ済みのように見えます。
途方に暮れ、それでも一応いろいろ試してみましたらなんと!
Elements の該当箇所で右クリック「Edit as HTML」でやっとのこと、エスケープされたテキストが表示されました!
Chrome でもエスケープ文字列を HTML ソースで確認する方法!!!
まとめましょう♪次の手順で HTML ソースを Chrome で表示でき、エスケープされているかを明確に確認でき、XSS (クロスサイトスクリプティング)対策がなされているかなされていないのか、判断することができます。
フォームに「’>”><hr>」といった XSS 脆弱性検出パターンを入力し、次のページヘと進む操作をして、確認ページやエラーで元のページに戻ってきた時にすかさず次の操作ですわ♪
- 右クリック「要素の検証」
- Elements の該当入力フォーム要素を右クリック「Edit as HTML」
これです!でも面倒です!
Safari 6.0.5 ならもう少し簡単に確認できます!
悔しいですので Macbook Pro Retina 13インチに、といいますか OS X の Mac に付随しております Safari で模索してみましたら、簡単にエスケープされているかどうかを確認できました。
最初に、1 回だけ設定する準備を行います。
- Safari > 環境設定…(command + ,)の詳細タブ、「メニューバーに”開発”メニューを表示」にチェック
そして、Chrome の時と同じようにテストしたいページのフォームに「’>”><hr>」といったXSS 脆弱性検出パターンを入力し、リクエストし、レスポンスを受け取ってからスタートです。
- 開発 > ページのソースを表示
以上です♪簡単ですね!表示されたソースで「command + F」を入力すれば HTML ソースを対象に検索もできます。確認がはかどりますこと!
ちなみに、FireFox やなんと Internet Explorer でも HTML ソースでエスケープ文字列を確認できます♪
こちらは、Windows で確認できました♪Mac の FireFox や Internet Explorer(ありましたか!?)では未確認でありますこと、お断りいたします。
おわりに
何度か現れました、クロスサイトスクリプティングの検出パターン「’>”><hr>」はわたくしが考えたものではありません。IPA(独立行政法人 情報処理推進機構セキュリティセンター)の手引書に載っております、由緒正しい試験パターンです。
詳しくはこちらのページの下部にございます、「別冊:「ウェブ健康診断仕様」」の P 10、(B)  クロスサイト・スクリプティング、をご覧くださいませ。
この別冊を全てクリアしたとしても、サイトの安全宣言にはつながりませんとあります。
わたくしは逆に、不正アクセスの跋扈する昨今、安全宣言を出すことのできるサイトなんて無いのではないでしょうか???などと思ってしまいます。別冊をクリアしても安全宣言は出せないとしても、かなり不正アクセスには強くなるような、そんな気がします。ただの直感ですけれもね♪
以上です。