HTML
 Computer >> コンピューター >  >> プログラミング >> HTML

コンテンツのなりすまし(Content Spoofing)とは?攻撃の仕組みと対策を徹底解説

コンテンツのなりすまし(Content Spoofing:コンテンツ・スプーフィング)とは、悪意ある攻撃者が、テキストやHTMLの注入(インジェクション)を利用して、正規のサイトに見せかけた偽のウェブページをユーザーに表示させる攻撃手法です。

検索機能などでWebアプリケーションがユーザーの入力データを適切に処理していない場合、攻撃者はこの弱点を突き、ユーザーが気づかないうちにURLへ追加のパラメータを挿入できます。その結果、ユーザーはオリジナルのページとほぼ同じ外観の別ページへ誘導され、そこで氏名やパスワード、カードの暗証番号といった機密情報の入力を求められます。入力された情報が漏えいすれば、金銭的損害や個人情報の流出など、深刻な被害につながる恐れがあります。

2種類の基本的なインジェクション手法

  • HTMLインジェクション
  • テキストインジェクション

HTMLインジェクション

HTMLインジェクションは、URLのパラメータを通じて不正なHTMLコードを注入し、ページの表示内容を改ざんする攻撃です。典型的な攻撃の手順は以下の通りです。

  1. 攻撃者が脆弱性のあるWebアプリケーションを特定する。
  2. 攻撃者が、細工したURL(テキストやHTMLが注入されたもの)を、主にメールなどの手段でユーザーに送りつける。
  3. ユーザーがそのURLをクリックすると、正規のサイトそっくりに見える攻撃者のページへ誘導される。
  4. 偽ページ上で、ユーザー名・パスワード・カードの暗証番号(PIN)などの入力を求められる。
  5. 入力された情報は攻撃者のサーバーへ送信される。

具体例

一部のサイトでは、divタグの中身などのHTMLコンテンツをURLパラメータとして受け渡しています。これは重大な脆弱性になり得ます。例えば、次のようなURLがあったとします。

www.testing.com/siteAdcontent?divMessage=<h1>Click Here!!</h1>

このURLは、次のように自由に改ざんできてしまいます。

www.testing.com/siteAdcontent?divMessage=<hack><h1>Do not Click!!</h1></hack>

テキストインジェクション

テキストインジェクションは、URLパラメータの値を書き換えることで、ページに表示されるテキストメッセージを差し替える攻撃です。リクエストパラメータ経由でエラーメッセージなどを表示する仕組みを持つサイトで発生します。典型的な攻撃の手順は以下の通りです。

  1. 攻撃者が脆弱性のあるWebアプリケーションを特定する。
  2. 攻撃者が、URLで渡されるパラメータの値を改ざんする。
  3. 不正に加工されたページへのリンクが生成される。
  4. 正規のWebページが、改ざんされたパラメータに従って虚偽の情報を表示してしまう。

具体例

次のようなログイン用のURLがあるとします。

www.testing.com/loginAction?userName=abc&amp;password=123

ここに、errorMessageパラメータを追加した次のようなURLを作ることが可能です。

www.testing.com/loginAction?errorMessage=PasswordEmpty

このURLにアクセスすると、本来とは異なる虚偽の内容を表示するページへ誘導され、ユーザーに混乱や不信感を与える恐れがあります。

コンテンツのなりすましへの対策

  • URLパラメータやユーザー入力はすべて「信頼できないデータ」として扱い、サーバー側で厳格に検証・無害化(サニタイズ)する。
  • HTMLとして出力する際はエスケープ処理を徹底し、パラメータ由来の値がそのままHTMLとして解釈されないようにする。
  • エラーメッセージなどの表示内容は固定文字列に限定し、パラメータから動的に組み立てない設計にする。
  • ユーザーに対しては、機密情報を入力する前にアドレスバーのドメインやHTTPS接続の有無を確認するよう啓発する。
  1. HTMLのonwheelイベント属性とは?使い方とサンプルコードをわかりやすく解説

    onwheelイベント属性は、ユーザーがHTML要素の上でマウスホイールを上下に動かしたときに発生し、指定されたスクリプト(JavaScript)を実行します。本記事では、HTMLドキュメントにおけるonwheelイベント属性の基本的な使い方を、サンプルコードと実行結果つきでわかりやすく解説します。 構文 onwheelイベント属性の基本的な記述方法は以下の通りです。 <tagname onwheel="script">コンテンツ</tagname> それでは、HTMLのonwheelイベント属性の具体的な使用例を見ていきましょう。 使用例 以下のサ

  2. MongoDBにおけるコードインジェクション(NoSQLi)の脅威と対策を徹底解説

    初出:2019年3月5日 アプリケーション開発者、データベース管理者(DBA)、あるいはあらゆる分野の技術者にとって、コードインジェクションは常に意識しておくべき脅威です。 クラウド環境は堅牢に保ち、データベースへのアクセスも厳しく制限している――しかし、アプリケーションのコードはどうでしょうか。「NoSQLはSQLより安全」と考えられがちですが、NoSQLi(NoSQLインジェクション)のNoは「インジェクション不可能」という意味ではありません。NoSQLも他のデータベースと同様に、コードインジェクションに対して脆弱になり得ます。コードインジェクションへの備えを怠るのは、玄関にセキュリティ