こんばんわ!
世間では徳丸試験といわれている、ウェブ・セキュリティ基礎試験に挑戦しようということで、いつものごとくアウトプットで記事にまとめていきます。
今回は第七回目の表示処理についてまとめます。
表示処理が原因で発生する問題
何かをWebサイトに表示する際に気を付けなければならない点が、下記2点あります。
・クロスサイトスクリプティング
・エラーメッセージの漏洩
クロスサイトスクリプティング
クロスサイトスクリプティング(XSS)攻撃の目的は下記があります。
クッキー値の盗み出し
脆弱性なサイトから収集したクッキー値をクエリ―文字列につけて、情報収集ページに遷移され、それを攻撃者のメールに送信させる。これによりセッションIDを悪用してなりすます攻撃が行えます。
その他のJS攻撃
クッキー値を読み出すJS以外にもワーム等を動かすJSを引き起こすこともできます。
画面書き換え
元のformでinputのValue値を処理しない値で置いておくとHTMLの書き換えができ、クレジット情報の入力項目を追加したり、送り先のURLを書き換えることができます。
反射型XSS
反射型XSSは、攻撃者が作成したURLをユーザーがクリックすることで発生します。このURLには、悪意のあるスクリプトが含まれています。ユーザーがこのリンクをクリックすると、そのスクリプトがユーザーのブラウザで実行され、攻撃者はユーザーの情報を盗むことができます。
例えば、攻撃者は「特別な割引を得るためのリンク」と偽装したURLをメールで送ります。このURLをクリックすると、ユーザーはウェブサイトにリダイレクトされますが、その際に悪意のあるスクリプトが実行され、ユーザーのセッションクッキーが攻撃者に送信される可能性があります。
持続型XSS
持続型XSSは、攻撃者がウェブサイトに恒久的に悪意のあるスクリプトを保存します。このスクリプトは、そのウェブページを訪れるすべてのユーザーのブラウザで実行されます。
例えば、攻撃者は掲示板やコメント欄にスクリプトを含むメッセージを投稿します。そのメッセージを見たすべてのユーザーのブラウザでスクリプトが実行され、攻撃者はそれらのユーザーの情報を盗むことができます。
HTMLエスケープ
HTMLエスケープとは、特定の文字をそのHTMLエンティティ、またはUnicodeエスケープシーケンスに置き換えることを指します。これは、ブラウザがこれらの文字をリテラルテキストとして解釈するのではなく、HTMLマークアップとして解釈するのを防ぐために行われます。
HTMLエスケープは、クロスサイトスクリプティング(XSS)攻撃を防ぐための重要な手段です。XSS攻撃では、攻撃者は悪意のあるスクリプトをウェブページに注入し、他のユーザーのブラウザでそのスクリプトを実行します。HTMLエスケープを使用すると、これらのスクリプトはただのテキストとして表示され、実行されることはありません。
例えば下記があげられます
・& は & にエスケープされます
・< は < にエスケープされます
・> は > にエスケープされます
・" (ダブルクォート) は " にエスケープされます
・' (シングルクォート) は ' にエスケープされます
・/ (スラッシュ) は / にエスケープされます
対策
対策としては↑に上げたエスケープが必須として挙げられますが、他にも行うべきことがあります。
・HTTPレスポンスに文字エンコーディングを明示する
・X-XSS-Protectionレスポンスヘッダの使用
・入力値検証
・クッキーにHttpOnly属性を付与
・TRACEメソッドの無効化
・リンク先ドメイン名チェック
また、クロスサイトスクリプティングの対策ではないですが、エラーメッセージ表示抑制することも大切です。
ここまでです。
読んでいただきありがとうございます!