こんにちは、ディレクターのなかみーです。
昨日の「【新人ディレクター向け vol.7】Web制作におけるセキュリティの基礎知識(前編)」では、攻撃されたときに何が起こってしまうのか、ということをサービスの運営者と利用者の立場でそれぞれ書いてみました。
今回は少し突っ込んで、攻撃手法とその対策について書いてみようと思います。
(まずは敵を知ろうぞ)
代表的な攻撃手法
- SQLインジェクション
- クロスサイトスクリプティング
- クロスサイトリクエストフォージェリ
- ディレクトリトラバーサル
- OSコマンドインジェクション
- HTTPヘッダインジェクション
- フォースブラウジング
- ブルートフォース
- クリックジャッキング
Webサイトへの攻撃に限って書いていますが、代表的なものだけでもこれくらいあります。なんて世の中なんでしょうね。
それぞれどんなことがされちゃうのか、代表的なものを抜粋して少しだけ解説しますね。
SQLインジェクション
フォームなどにSQLコマンドをぶちこんじゃう。例えば、
- select * from tbl_user;
というように、ユーザデータが入っているテーブル名などを予想で書かれて、そこに入っているIDやPWを根こそぎ取ろうとする、悪意に満ちたコマンドを送る手法。
クロスサイトスクリプティング
悪いことを考えるひとが、サーバに侵入して悪いコードを仕込み、利用者を不幸にさせるものです。
具体的に言うとSQLインジェクションと同じように、フォームのある場所で、
- <script type=”text/javascript”>alert(“不幸にさせる”);</script>
のようなJavaScriptを埋め込まれていたら、フォームに入力して実行した利用者は画面上に「不幸にさせる」というメッセージが表示されてしまいます。
こんなメッセージならまだしも、これを応用してどこかのサイトに飛ばしたり、Cookieを抜き取ったりもできます。
OSコマンドインジェクション
これも同じくフォームなどから、
- shutdown -r now
というようにLinuxなどのOSのコマンドを打ち込むことで、そのコマンドを実行してしまうものです。
ちなみにコマンドのサンプルはサーバを停止させるもの。コマンドが通ってしまうと、サーバがシャットダウンしてしまいます。
ブルートフォース
マイページなどのログインがあるサイトに対して、IDやPWの連続的な試行をおこないます。
単純なパスワードなどを設定していると、ログインに成功されてしまい、前回説明したとおり大変な不幸が訪れてしまいます。
代表的なところでいくと、上記があげられると思います。
セキュリティ試験をしよう
さてさて、ここまでで嫌というほど攻撃の種類と訪れる不幸について詳しくなったと思います。ここからは前回言った暗黙の了解の部分、セキュリティ対策ですね。
攻撃はなくならないのが世の常なので、きっちりと対策をして防ぎましょう。
でもディレクターが具体的な指示を出すのって、結構難しいですよね。
セキュリティホールを見つけることのできるチャンスは、セキュリティ試験です。専門会社もあるくらいですが、基本的なことならディレクターにもチェックできます。
方法は大きく2つ。
1. コマンドを入れてみる
悪さをされる基本的な入り口は、やっぱりログインやお問合せなどのフォーム系が多いです。このフォームに対して、色々なコマンドや構文を入れてみましょう。
- SQL構文
- select * from tbl_user;
- OSコマンド
- shutdown -r now
- JavaScript構文
- <script type=”text/javascript”>alert(“不幸にさせる”);</script>
- HTMLのタグ
- <p>不幸になるぞ</p>
これらをフォームに入れてみて、何かしら起こってしまったらそれはセキュリティ対策がされていないということになります。
プログラマーの方に伝えて、対策をとってもらいましょう。
2. 色々なところにたくさんアクセスしてみる
ざっくりしていますが、基本的なことは確認できます。
サイトにF5を連打してみる
Control+F5(Macの場合は⌘+R)でページの再読み込みができるので、何回か試してみましょう。人間一人程度の負荷でページが読み込めなくなってしまっては、とても本番では耐えられません。
ログインを何回も試してみる
あえて間違えてみましょう。ここが肝心です。3回くらい間違えてもロックがかからなかったり、「しばらく経ってから再度お試しください」などのメッセージが出なかったりしたら、たくさん攻撃されてしまうことになります。
また、間違えたときのエラーメッセージも注意が必要です。
「IDもしくはPWのいずれかが間違っています」
というような、どちらかが合っていてもそれを予測させないメッセージが適切だと思います。
この2つの方法を試せば、最低限のことは対策できます。
さいごに
何度も書いていますが、セキュリティ対策は「やってて当たり前の暗黙知」の部分です。
よいWebサービスを生み出す前に、ディレクター自ら色々とサイトにいじわるをしてみて、質の高いサービスを提供できるようにしましょう!
文中にも触れましたが、セキュリティ対策専門の会社さんもたくさんあります。ECサイトのようにお金が絡んだり、極めて重要な個人情報を取得したりするサービスの場合、専門の会社に委託するのが良いと思います。
また下記のサイトではセキュリティ対策の事例などが紹介されているので、事前に読んでおくと良いと思います。
- IPA 情報処理推進機構
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。