【WEB】CSRFとXSSの違いって?

もくじ

Webアプリケーションの脆弱性及び攻撃手法

WEBアプリケーションに対する攻撃のほとんどが、入力データチェックの不備を突いたものになります。

それについては今までCSRFしか知らなかったけど、XSSという攻撃手法があることも知ったのでそれを覚え書きします。また、CSRF自体もしっかり理解していなかったのでまとめることにしました。

双方を比較

まず、どう違うのかざっくり認識しましょう。

CSRF:ユーザーを誘導したページへアクセスした際に、そのユーザーが別のサーバーなどに攻撃をさせる。ユーザ自体に被害はない。

XSS:ユーザー環境のWebブラウザで、任意のJavaScriptを実行させて情報を抜き取ったりする。ユーザー自身が被害に遭う可能性が高い。

では、次項から詳しく説明していきます。

CSRF

クロスサイトリクエストフォージェリ (cross-site request forgeries) は、Webアプリケーションの脆弱性の一つ、もしくはそれを利用した攻撃。

出典:Wikipedia

ユーザー(被害者)を誘導し、誘導したページへアクセスした際に特定の処理を強制的に実行させる攻撃を許す脆弱性または攻撃手法です。

手法・特徴

  • 攻撃者は攻撃用Webページを準備し、ユーザー(被害者)がアクセスするよう誘導します

  • ユーザが攻撃用Webページにアクセスすると、攻撃用Webページ内にあらかじめ用意されていた不正なリクエストが攻撃対象サーバに送られます

  • 攻撃対象サーバ上のWebアプリケーションは不正なリクエストを処理し、ユーザー(被害者)が意図していない処理が行われてしまいます

出典:トレンドマイクロ

被害

Webページを閲覧したユーザー(被害者)自体に直接的な被害があるわけではないようです。しかし、攻撃用Webページを閲覧したことを引き金にサーバーへ攻撃を施してしまうので、サーベーへ攻撃した加害者と認識される可能性があります。

対策

攻撃用Webページへアクセスしないことが最善策となります。そのため、信頼できない不審なURLには飛ばないようにしましょう。

XSS

クロスサイトスクリプティング(cross site scripting)とは、Webアプリケーションの脆弱性、もしくはそれを利用した攻撃。

出典:Wikipedia

ユーザー(被害者)の Web ブラウザで任意の JavaScript を実行させることを許す脆弱性または攻撃手法 です。

<蛇足>

クロスサイトスクリプティング(cross site scripting)なのに略称がXSSなのは、CSSCascading Style Sheets)と紛らわしいからみたいですね。

手法・特徴

  • 攻撃者は、XSS脆弱性のあるWebサイトにユーザを誘導することにより、ユーザ環境で不正スクリプトを実行させることができます

  • 攻撃者は、脆弱性利用のために、不正スクリプトを含んだ攻撃用URLを作りこむ必要があります

出典:トレンドマイクロ

ユーザーの入力に対して動的にHTMLページを生成するアプリケーションが対象になります。

入力データのチェックに不備があるサイトが攻撃対象になり、攻撃者は入力データにスクリプトを埋め込み、サイト間を跨ってユーザのcookie情報を盗み取り正規のユーザに成り済ますことが可能になります。

被害

攻撃者が用意した攻撃用URLにアクセスしたユーザの環境で不正スクリプトが実行されます。

不正スクリプトの内容にもよりますが、クッキー情報を抜き取られたり、フィッシング詐欺に遭ったり、さまざまな被害に繋がります。

対策

  • 最新のブラウザにアップデートする

  • 電子メール内やWeb上の不審なURLを安易にクリックしない

  • ブラウザのセキュリティ設定により、スクリプトの実行を無効化する

  • ウイルス対策製品により、不正スクリプトを検出し、実行をブロックする

  • セキュリティ対策製品の機能により、不正サイトへのアクセスをブロックする

出典:トレンドマイクロ

不正なURLは何にせよ踏まないようにしましょう。また、脆弱性に対応したバージョンがアップデートされることも多いので、最新版を使うこともおすすめします。

制作者サイドでも対策を

被害者にならないためにもユーザー個人個人がネットリテラシーを持って楽しむことが望ましいですが、製作者サイドが被害者を出さないように心掛けることももちろん大切です。

CSRF対策やXSS対策、怠らないようにしましょう。

参考URL

XSS と CSRF って結局何が違うのか? - Qiita

クロスサイトスクリプティング