XSS脆弱性とXSS攻撃の詳細
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/22 07:13 UTC 版)
「クロスサイトスクリプティング」の記事における「XSS脆弱性とXSS攻撃の詳細」の解説
本節ではXSS脆弱性とXSS攻撃の詳細を具体例を通して述べる。すでに述べたように、ウェブサイトではユーザがフォームなどで入力した値を変数として持ち、変数にセットされた値に応じてその後の動的なページ内容の生成が行われ、その際には変数値そのものがページに表示されることもある。XSS脆弱性の簡単な例としてはユーザが値を決定できる変数値を加工せずそのままウェブページに表示(エコーバック)してしまうというものがある。具体的には以下のようなシチュエーションでXSS脆弱性が生じる事が多い: ユーザが入力した内容の確認・訂正させるページ 検索結果の表示 エラー表示 ブログや掲示板におけるコメントの反映 そこで最初に挙げた確認ページのシチュエーションにおける脆弱性を利用したXSS攻撃の例を述べる。今、標的サイト example.comのウェブページにユーザの性別を選択させるフォームがあり、そのページではユーザが選択した値("man"もしくは"woman")を変数genderにそのまま保管し、genderの内容を以下のようにそのまま表示する事でフォームの内容をユーザに再確認させるページを動的に生成するとする(再確認ページのURLはフォームのあるページのURLと同一でも異なってもよい)。 入力した性別は以下のもので正しいでしょうか: (genderの値) 具体的にはたとえばPHPで もしくは というスクリプトが書かれていた場合である。 このようなページにおいて、攻撃者が何らかの方法でgenderの値を gender= にセット(=スクリプトのインジェクション。 詳細後述)し、この状態で被害者となるユーザがこのページにアクセスしてしまうとXSS攻撃は成功となる。 実際、標的サイトのウェブページには、変数genderの値をそのまま表示するページを動的に生成してしまうという脆弱性があるので、攻撃者が前述のようにgenderをセットした状態で被害者となるユーザがこのページを閲覧してしまうと、ウェブサイトは動的に生成したHTML 入力した性別は以下のもので正しいでしょうか: を被害者のブラウザに送りつけてくるため、悪意のあるスクリプトが被害者のブラウザ上で自動的に実行されてしまう。 なお、ウェブサイトの作者がgenderの値としてフォームに準備した値が「man」と「woman」の2つだけだったとしても、実際にgenderにセットされた値が「man」か「woman」のいずれかであることを、ウェブサイトを置いているサーバ側でチェックしない限り、攻撃者はそれ以外の値(=悪意のあるスクリプト)にgenderをセット可能である。
※この「XSS脆弱性とXSS攻撃の詳細」の解説は、「クロスサイトスクリプティング」の解説の一部です。
「XSS脆弱性とXSS攻撃の詳細」を含む「クロスサイトスクリプティング」の記事については、「クロスサイトスクリプティング」の概要を参照ください。
- XSS脆弱性とXSS攻撃の詳細のページへのリンク