そのホームページ大丈夫? ディレクトリ・トラバーサルって何? それは「ファイルの中身をのぞく攻撃方法」です!
こんにちは!
IT・プログラミング関連講師の荒川栄一郎です。
本日は「クロスサイト・スクリプティング」について記述します。
★「セキュリティ」って何?
まず「クロスサイト・スクリプティング」についてお伝えする前に
情報セキュリティについて知る必要がありますので
「セキュリティ」の概要についてお伝えします。
インターネットには、様々なユーザが接続しています。
その中には、インターネットを利用して
虎視眈々と悪さをしようと企んでいるユーザもいます。
インターネットに接続するコンピュータを安全に利用するためには
どのような脅威があり、その対策方法などを知っておく必要があります。
セキュリティは
「安全」「防護」「保障」などの意味を持つ英単語で
ITの分野では、「情報セキュリティ」のことを指し
コンピュータを安全に利用できるようにすることです。
現在はインターネットを利用して
HP(ホームページ)を閲覧したり
FacebookやTwitterなどのSNS(Social Networking Service)で
情報のやり取りを行うことができますよね。
このようなWebシステムを利用して
●クレジットカード情報
●個人情報
●メールの内容
●ログイン情報
のような情報を簡単に取得することも可能になっていますので
Webシステムの利用者は
いろいろな脅威があることを知っておいたほうがいいと考えます。
また、Webシステムを作成する側は
利用者が安心して利用できるように考慮しなければいけません。
しかし、情報セキュリティ対策は万全だと思っていても
日々いろいろな脅威が発生し、その対策方法が講じられていることも事実です。
★クロスサイト・スクリプティングって何?
インターネットには、様々なユーザが接続しています。
その中には、インターネットを利用して
虎視眈々と悪さをしようと企んでいるユーザもいます。
クロスサイト・スクリプティングとは
英語で「Cross Site Scripting」と書き
「XSS」の略称で表現されたりします。
クロスサイト・スクリプティングは
Webサイトをまたいで悪意のあるスクリプト(文章・原稿)を混入させることです。
もう少し簡単に言うと
FacebookやTwitterのようなWebサイトの投稿などを利用して他人に悪さをすることです。
クロスサイト・スクリプティングの攻撃方法は
①悪意のある攻撃者が投稿サイトを利用して悪さをするための投稿を書き込む
②他の利用者(閲覧者)が①の投稿を見る
③見た瞬間に偽サイトに誘導したり、閲覧者のPCに攻撃を仕掛ける
のような流れで行います。
閲覧者のPCの攻撃のひとつには
Cookieなどの情報を抜き取り悪意のあるサイトに送られる攻撃があります。
Cookieとは
Webサーバから発行されPCやスマートフォンに保存されるファイルです。
Cookieは
訪問したWebサイトの情報をに記録するために利用されています。
主には
●訪問したWebサイトの訪問回数
●ログインするためのIDやパスワードの情報
●ショッピングをした際に入力したクレジットカード情報
のような情報などをCookieに保存することができます。
「ログインするためのIDとパスワードの入力が省ける!」
「クレジットカード情報をいちいち入力しなくてもお買い物ができる!」
と利点は多々ありますが
この情報が他人に知られるとどうなるでしょうか?
閲覧者がよく利用しているサイトに他人がログインできる。
閲覧者のクレジットカード情報で他人がお買い物ができる。
などなど。。。
大変なことが起こる可能性が秘められています。
クロスサイト・スクリプティングの攻撃方法は
HTMLというHP(ホームページ)を作る方法を知っていれば極めて簡単です。
HTMLは
「Hyper Text Markup Language」の略語で
●不等号
●ダブルコーテーション
●シングルコーテーション
の記号をベースにWebブラウザに表示するプログラムを構築できます。
このような記号のことを「特殊文字」とも言います。
クロスサイト・スクリプティングを実行するプログラムは
JavaScriptというWebブラウザで動くプログラミング言語で
プログラムを作成します。
JavaScriptはHTMLの中に記述し
これも「特殊文字」と絡めてプログラムを構築します。
悪意のある投稿者が
特殊文字を投稿に絡めることで
Webブラウザに表示するプログラムを構築することも可能になります。
この悪意のある投稿を仕込むことにより
●閲覧者を偽サイトへ誘導
●閲覧者のCookie情報を盗む
ことが簡単に行うことができます。
閲覧者は注意して投稿サイトなどを利用する必要がありますが
これは閲覧者の責任だけではありません。
そのサイトを作成した側の責任が非常に大きいと考えます。
投稿サイトを作成する側は
必ずクロスサイト・スクリプティング対策を施さなければ
利用者が安心して利用できません。
クロスサイト・スクリプティング対策は
(1)特殊文字をサニタイジングする。
(2)発行するCookieにはHttpOnly属性を設定する。
(3)HTTPレスポンスヘッダのContent-Typeフィールドに文字コード(charset)を指定する。
(4)クロスサイト・スクリプティング攻撃のブロック機能を備えたWebブラウザを使用する。
などの方法があります。
(1)特殊文字をサニタイジングする。
サニタイジングとは「スクリプトの無効化」のことで
入力データからの特殊文字を検出し
別の文字に置換したり除去したりする無害化を行う処理です。
サニタイジングにより
クロスサイト・スクリプティングを防ぐことができます。
(2)発行するCookieにはHttpOnly属性を設定する。
HttpOnly属性とはCookieに設定できる属性のひとつで
これが設定されたCookieは
HTMLテキスト内のスクリプトからのアクセスが禁止されます。
よってHttpOnly属性より
JavaScriptで作成したプログラムは実行できなくすることができ
クロスサイト・スクリプティングを防ぐことができます。
(3)HTTPレスポンスヘッダのContent-Typeフィールドに文字コード(charset)を指定する。
HTTPレスポンスヘッダとは
WebサーバからWebブラウザに返される情報で
Webブラウザに表示される情報の前に送られる
●コンテンツタイプ(Content-Type)
●再利用期限(Expires)
●データの最終更新日時(Last-Modified)
●接続状況(Connection)
●移動先(Location)
のような詳細な文脈を提供するために使用されます。
この内の「Content-Type」は
●データがHTMLなのか画像なのか
●文字コードなどの情報
を表します。
通常「Content-Type」は
「text/html; charset=UTF-8」のように文字コードを指定できますが
この指定を省略した場合
Webブラウザは文字コードを独自の方法で推定して
推定した文字コードにしたがって画面表示を処理します。
Content-Typeを省略すると
悪意のある攻撃者が
故意に特定文字をWebブラウザに選択させるような文字列を埋め込み
Webブラウザに表示する悪意のあるプログラムを構築することも可能になります。
よってContent-Typeを省略せず文字コードを指定することでより
故意に特殊文字を埋め込ませないようにでき
クロスサイト・スクリプティングを防ぐことができます。
(4)クロスサイト・スクリプティング攻撃のブロック機能を備えたWebブラウザを使用する。
現在Webブラウザには
クロスサイト・スクリプティング攻撃の
ブロックを試みる機能を備えたものがありますが
Webブラウザによって対応状況に差があるため
全てのWebサイト閲覧者に有効な対策ではありません。
Webサイトには様々な脅威が潜んでいますので
常に最悪の事態も想定したりして
対策方法を考慮することが大切だと考えます。
Webサイトを構築する側の人は
Webサイトの利用者が安心して利用できるシステムを作成するように
心掛けなければいけません。
Webサイトを利用する側も
インターネットを利用するシステムには
様々な脅威が潜んでいることを頭に入れておかなければいけません。
ネット社会では
企業だけでなく個人にとっても脅威が潜んでいます。
セキュリティ対策は
しっかりと行う必要がありますね。
★クロスサイト・スクリプティングのまとめ
クロスサイト・スクリプティングって
難しいと思われている方も多々いると思いますが
FacebookやTwitterのようなWebサイトの投稿などを利用して他人に悪さをすることです。
セキュリティ対策という言葉を聞いたことがある方は非常に多いと思いますし
セキュリティを意識している人も非常に多いと思います。
クロスサイト・スクリプティングは
今やPCやスマートフォンでインターネットを利用する上で
潜んでいる脅威だと考えますが
明確に内容や仕組みを理解している人は少ないと思います。
ただクロスサイト・スクリプティングというものは
●FacebookやTwitterのようなWebサイトの投稿などを利用して他人に悪さをすること
●Webサイトの作る側も利用する側も考えなければいけないこと
ということだけでも
このコラムを通じて理解していただけましたら幸いに思います。
クロスサイト・スクリプティングは
FacebookやTwitterのような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技術者を育成できる研修を目指していきたいです。
そして一人でも多くの受講者に受講してもらい理解してもらえる研修を行いたいと思っています。