セキュリティ対策について語ります!(CSRF編)
これまで「XSS」「SQLインジェクション」「セッションハイジャック」と3回の記事に渡ってWebサイトへの攻撃手段とその対策方法を説明してきました。いずれもWebサイトやソフトウェアの「脆弱性」を狙った手口ですね。
セキュリティ関連の話の最後の締め括りとして、今回は「CSRF(クロスサイトリクエストフォージェリ)」について説明いたします。
前回の「セッションハイジャック編」の記事はこちら⬇️です。
⑴CSRFの定義
いつもの様に、Wikipediaで調べて見ます。
CSRF脆弱性とは以下のような攻撃(CSRF攻撃)を可能にする脆弱性を指す。攻撃者はブラウザなどのユーザ・クライアントを騙し、意図しないリクエスト(たとえばHTTPリクエスト)をWebサーバに送信させる。Webアプリケーションがユーザ・クライアントからのリクエストを十分検証しないで受け取るよう設計されている場合、このリクエストを正規のものとして扱ってしまい、被害が発生する。
CSRF(cross-site request forgeries)、クロスサイトリクエストフォージェリ。正式名称は舌を噛んでしまいそうなぐらい長いですね笑。直訳するならば、「サイトを移動する(cross-site)偽造の (forgeries)要求(request)」と言った所でしょうか??とりあえず「XSS(クロスサイトスクリプティング)」との区別に注意です。
簡単に言えば、悪意を持つ人が「意図しないリクエスト」を脆弱性のあるWebページに埋め込んでおき、それを知らないユーザーが「埋め込まれた意図しないリクエスト」を発動させてしまって様々な被害(アカウント情報を抜き取られるなど)を被ってしまうことです。
「埋め込む」という手口も何だかXSSに似てますね。「悪意を持った人が直接Webページにアクセスせずに、Webページに任意の操作をさせてしまう」というタチの悪い性質を持っています。
⑵CSRFによる攻撃手段
⑴の通り、Webサイトの利用者が「悪意を持った人によって埋め込まれた意図しないリクエスト」を知らず知らずのうちにWebページ上で行わされてしまい、アカウント情報の書き換え、掲示板への書き込み、銀行口座への送金などを行ってしまう事です。
埋め込まれるリクエストには何らかのスクリプトや自動転送などが仕込まれています。
⑶CSRFに対する対策方法
Webサイト管理者側から行う対策としては以下の2点があります。
1.対策が必要なページを区別し、該当ページにセキュリティソフトなどを実装させる
Webサイトは複数のページから構成されています。例えばトップページ、商品一覧を表示するページなどです。管理者はその中から「セキュリティ対策が必要なページを見極めて、そのページに対して対策を施す」ことで被害を防ぎます。
対策が必要なページとは「アカウント情報変更画面」「商品購入ページ」などが該当します。いずれも意図しない操作が勝手に行われては損害が生じるページです。
2.Webページ利用者が意図するリクエストをパスワードなどを入力させる事で区別できる様にする
どこかの販売サイトで買い物をする際に、「購入を確定させる直前でパスワードの入力を求められた」経験はございませんか?それは金銭のやり取りが絡む重要な処理を確定する前に、サイト利用者の意思の念押しをするためのものです。仮にそれが意図しない商品購入リクエストであった場合は、このパスワード入力の段階で弾く事が出来ます。
悪意を持った不正利用者とセキュリティ研究者のいたちごっこはおそらく、過去から未来永劫続く事になるのでしょうね・・
⑷CSRFによる過去の被害の事例
1.横浜CSRF事件「PC遠隔操作事件」
Webサイトに埋め込まれた「意図しないリクエスト」をユーザーがクリックしてしまった結果、正規のユーザーが知らずのうちに加害者となってしまい、自分自身や周りの人々に被害をもたらす・・・本当に胸糞の悪い手法です。
以上、4回の記事に渡って「XSS」「SQLインジェクション」「セッションハイジャック」「CSRF」という4つの攻撃手段とその対策を説明いたしました。これ以外の手口はまだまだ存在すると思いますが、セキュリティ関連の話は今回の記事で一旦終わりと致します。
そろそろ実際のプログラミング過程の記事も書いてみたい!と思う今日この頃です笑