そのホームページ大丈夫? SQLインジェクションって何? それは「データベースシステムを不正に操作する攻撃方法」です!
こんにちは!
IT・プログラミング関連講師の荒川栄一郎です。
本日は「クロスサイト・リクエスト・フォージェリ」について記述します。
★「セキュリティ」って何?
まず「クロスサイト・リクエスト・フォージェリ」についてお伝えする前に
情報セキュリティについて知る必要がありますので
「セキュリティ」の概要についてお伝えします。
インターネットには、様々なユーザが接続しています。
その中には、インターネットを利用して
虎視眈々と悪さをしようと企んでいるユーザもいます。
インターネットに接続するコンピュータを安全に利用するためには
どのような脅威があり、その対策方法などを知っておく必要があります。
セキュリティは
「安全」「防護」「保障」などの意味を持つ英単語で
ITの分野では、「情報セキュリティ」のことを指し
コンピュータを安全に利用できるようにすることです。
現在はインターネットを利用して
HP(ホームページ)を閲覧したり
FacebookやTwitterなどのSNS(Social Networking Service)で
情報のやり取りを行うことができますよね。
このようなWebシステムを利用して
●クレジットカード情報
●個人情報
●メールの内容
●ログイン情報
のような情報を簡単に取得することも可能になっていますので
Webシステムの利用者は
いろいろな脅威があることを知っておいたほうがいいと考えます。
また、Webシステムを作成する側は
利用者が安心して利用できるように考慮しなければいけません。
しかし、情報セキュリティ対策は万全だと思っていても
日々いろいろな脅威が発生し、その対策方法が講じられていることも事実です。
★クロスサイト・リクエスト・フォージェリって何?
インターネットには、様々なユーザが接続しています。
その中には、インターネットを利用して
虎視眈々と悪さをしようと企んでいるユーザもいます。
現在では
●SNS
●オンライン・ショッピング
●オンライン予約
などのWebシステムがよく利用されています。
もし
●自分が投稿する内容
●自分がショッピング時に入力する個人情報やクレジットカード情報
が悪意のある攻撃者によって操作・閲覧することができたら
大変なことになるかもしれませんね。
クロスサイト・リクエスト・フォージェリは
他サイトからのリクエストを受信させる攻撃方法です。
クロスサイト・リクエスト・フォージェリとは
英語で「Cross Site Request Forgeries」と書き
「CSRF」の略称で表現されたり
「シーサーフ」と呼ばれたりします。
クロスサイト・リクエスト・フォージェリを直訳すると
●クロスサイト・・・・・Webサイトをまたいで
●リクエスト・・・・・悪意のあるリクエストを
●フォージェリ・・・・・偽造する
という意味になります。
クロスサイト・リクエスト・フォージェリは
Webシステムに存在する脆弱性を利用した攻撃方法のことで
掲示板や問い合わせフォームなどを処理するWebシステムが
本来拒否するべきである他サイトからのリクエストを受信し処理してしまいます。
もう少し簡単に言うと
Webシステムの利用者自身が
意図しない処理が実行されてしまう攻撃手法です。
攻撃の一例は下記のような手順になります。
①悪意のある攻撃者がSNSなどで罠サイトに誘導するURLなどを書き込む。
②利用者がSNSにログインする。
③悪意のある攻撃者の投稿を閲覧した利用者を①の罠サイトに誘導する。
④罠サイトで②の利用者のセッションIDを取得し何らかのボタンを押させる。
⑤罠サイト経由でSNSに②の利用者が投稿していないのに悪意のある投稿が行われる。
これは投稿の流れの一例ですが
その外にも
●投稿内容を削除する。
●投稿内容を変更する。
●IDとパスワードを取得する。
●IDとパスワードを変更する。
●SNSを退会させる。
などの行為を罠サイト経由で行わせることができます。
これがSNSでなく
オンライン・ショッピングであれば
購入していない商品が送られてきたり
クレジットカード情報を盗まれていたら勝手に買い物もできてしまいますね。
またオンライン・バンキングだったとしたら。。。
いろいろ想像するだけでもぞっとしますね。
このように偽造したWebサイトなどを利用して
ログインしている利用者のセッションIDを取得して正規サイトに攻撃する手法を
「クロスサイト・リクエスト・フォージェリ」と呼びます。
セッションIDはログインしている利用者に付けられる番号で
セッションIDで本人かどうかを判定しています。
本人だと判定されると
上記のようなことが簡単にできてしまいます。
システム開発側はこのようなシステムを作ると
利用者からクレームがくるでしょうし
多額な賠償請求を迫られる可能性もあるかもしれません。
システム開発側は
必ずクロスサイト・リクエスト・フォージェリ対策を施さなければ
利用者が安心して利用できません。
クロスサイト・リクエスト・フォージェリ対策は
(1)セッションIDとは別に秘密情報を設定する。
(2)処理を実行する直前のページで再度パスワードの入力を求める。
(3)Refererが正規のリンク元かを確認し、正しい場合のみ処理を実行する。
(4)重要な操作を行った際には、その旨を登録済みのメールアドレスに自動送信する。
などの方法があります。
(1)セッションIDとは別に秘密情報を設定する。
セッションIDだけでなく別の秘密情報を生成しておき
セッションID以外の秘密情報も一致していれば処理を行わせるようにします。
この秘密情報のことを「トークン」と言います。
トークンとは第三者が知りえない秘密情報です。
トークンはWebシステム側で乱数などで発行し
HTMLのhiddenパラメータで設定しておくことで
クロスサイト・リクエスト・フォージェリを回避することができます。
(2)処理を実行する直前のページで再度パスワードの入力を求める。
Webシステムは
セッションIDだけで本人確認をして処理を実行するのは非常に危険です。
処理の実行前にパスワード認証などを行うことにより
クロスサイト・リクエスト・フォージェリを回避することができます。
(3)Refererが正規のリンク元かを確認し、正しい場合のみ処理を実行する。
クロスサイト・リクエスト・フォージェリは
罠サイトからの攻撃手法です。
同一サイトからのリクエストであるということが分かれば
処理を行わせるようにすればいいのです。
Referer(リファラ)とは「参照元」という意味があり
現在リクエストされているページへのリンク先を持った直前の
Webページのアドレス情報です。
もう少し簡単に言うと
現在表示されているページの前のURL情報です。
今のURLのドメインとRefererのドメインが一致していれば
同一サイトから利用していると判定できます。
Refererのチェックを行うことにより
クロスサイト・リクエスト・フォージェリを回避することができます。
(4)重要な操作を行った際には、その旨を登録済みのメールアドレスに自動送信する。
オンライン・バンキングなどで振込などの処理を行うと
必ずメールが届きますよね。
メールを見ることで
自分が行った処理が正常に行え完結できたと安心できますね。
このように
重要な操作を行った際には
その旨を登録済みのメールアドレスに自動送信することで
自分が行った処理であることが認識できますので
クロスサイト・リクエスト・フォージェリを回避することができます。
Webサイトには様々な脅威が潜んでいますので
常に最悪の事態も想定したりして
対策方法を考慮することが大切だと考えます。
Webサイトを構築する側の人は
Webサイトの利用者が安心して利用できるシステムを作成するように
心掛けなければいけません。
Webサイトを利用する側も
インターネットを利用するシステムには
様々な脅威が潜んでいることを頭に入れておかなければいけません。
ネット社会では
企業だけでなく個人にとっても脅威が潜んでいます。
セキュリティ対策は
しっかりと行う必要がありますね。
★クロスサイト・リクエスト・フォージェリのまとめ
クロスサイト・リクエスト・フォージェリって
難しいと思われている方も多々いると思いますが
利用者を識別するための情報を乗っ取る攻撃方法です。
セキュリティ対策という言葉を聞いたことがある方は非常に多いと思いますし
セキュリティを意識している人も非常に多いと思います。
クロスサイト・リクエスト・フォージェリは
今やPCやスマートフォンでインターネットを利用する上で
潜んでいる脅威だと考えますが
明確に内容や仕組みを理解している人は少ないと思います。
ただクロスサイト・リクエスト・フォージェリというものは
●他サイトからのリクエストを受信させる攻撃方法
●Webサイトの作る側も利用する側も考えなければいけないこと
ということだけでも
このコラムを通じて理解していただけましたら幸いに思います。
クロスサイト・リクエスト・フォージェリは
他サイトからのリクエストを受信させる攻撃方法です。
もしクロスサイト・リクエスト・フォージェリに興味を持たれたら
少しずつ勉強してみてはいかがでしょうか?
ユーザとしては知る必要がありませんが
少しずつ覚えていくことで、点が線で繋がることも多々あります。
そうなると結構楽しくなるかもしれません。
これからIT業界を目指している人には
知っておいてほしい知識だと思いますが
少しずつ勉強していってほしいと思います。
★クロスサイト・リクエスト・フォージェリについて学ぶ方法は
クロスサイト・リクエスト・フォージェリについては
新入社員研修やIT・プログラミング関連の研修で
学ぶことができるようになっています。
【IT・プログラミング研修】
●「Java(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/java_training/java_web/
●「Java(Webアプリ開発 - Spring Framework -)」の詳細情報
https://itlaboj.com/courses/java_training/java_spring/
●「Python(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/python_training/python_web/
●「PHP(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/php_training/php_web/
●「C#(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/cs_training/cs_web/
●「ネットワーク基礎」の詳細情報
https://itlaboj.com/courses/it_training/network_kiso/
★「クロスサイト・リクエスト・フォージェリ」習得に必要なもの
クロスサイト・リクエスト・フォージェリの内容は基本的に座学になりますが
Webアプリケーションの知識や構築方法を学んだ後に行う内容ですので
それぞれのプログラミング言語のセットアップなどが必要になります。
また、このコースは
リアルでもオンラインでも受講することが可能です。
オンラインで受講される人は
「Zoom」が利用できる環境があればいいと考えます。
このコースはシステム開発に直結する話ではあり
SEやプログラマになるための必要な内容になります。
みんなが楽しみながらWebサイトの脅威・対策方法の知識を習得してほしいと思いますし
将来のIT技術者を研修や動画コンテンツを通じて
育成していきたいと考えています。
私は日本全国に多くのIT技術者を育成できる研修を目指していきたいです。
そして一人でも多くの受講者に受講してもらい理解してもらえる研修を行いたいと思っています。