Webシステムのセキュリティ 〜主な攻撃手法と対策〜

WEB・デジタルのお仕事,思わずシェアしたくなる話
2019.01.29

 Web上には、簡単な情報を扱うものから個人情報を扱う精密なものまで、さまざまな便利なシステムが存在します。
 『システム開発とは?〜基本からわかるWebシステム〜』では、Webシステムの基礎を紹介しましたが、今回はそのセキュリティ対策について、エンジニアが知っておきたい“攻撃手法”と“対策”を紹介してみましょう。

Webシステムへの攻撃とは?

 そもそもWeb上における攻撃とはなんでしょうか?
 負荷を与えてシステムへアクセスできなくするものもあれば、内部の情報を盗み出すことも攻撃です。また、システムへの直接介入を行わずアナログ的に攻撃する手法もあります。Webシステムが様々な用途に使えるのと同様に、それを攻撃する手法も多種多様に存在するのです。

クリックジャッキング

 まずはクリックジャッキング。これはリンクや、ボタン、文字などの上に透明の要素を設定し、ユーザーからはわからないように意図しない操作を誘導することです。

 たとえば、あなたが運営しているメンバーズサイトがあり、以下のような退会ページがあるとしましょう。「退会する」をクリックすれば、もちろん退会となり、会員情報は一瞬にして削除されてしまいます。

 もちろん本人が自分の意志で退会するのであれば問題ありません。しかし、そこに悪意のあるユーザーが下記のようなページを作成するとどうなるでしょう。

 実は上の画像には透明な【退会ページ】が重なっており、『入力する』を押すとメンバーズサイトから退会してしまう罠が仕掛けられています。【退会ページ】自体は本来の機能を呼び出しているため、これによって、あなたの運営するメンバーズサイトからは、意図しない退会が増えてしまうわけです。
 上記のように、見た目だけ他ページに見せ、本来の機能を悪用することを『クリックジャッキング』といいます。

●対策
 原因としては、他サイトに機能自体を呼び出させてしまうことにあります。上記を制限することで、『クリックジャッキング』を防ぐことが可能です。
 具体的な対応は以下のとおりです。

①HTTPレスポンスヘッダーにX-Frame-Optionsを出力し、frameやiframe要素による読み込みの制限を行う。
⇒外部サイトから呼び出されることを制限します。

②処理を実行する前にパスワードの入力を求め、パスワードが正しい場合にのみ処理を実行する制限を加える。
⇒処理自体に認証を設定し、制限を行います。

SQLインジェクション

 SQLインジェクションとは、ユーザーの入力内容に不正な文字や値を混入させることで、ユーザーの予期しない行為を実行させる攻撃手法です。

 多くのウェブサイトでは、データベースを利用して、さまざまな情報のやりとりを行っています。データベースとは、大量の情報をしまっておく入れ物のようなもの。データベースで情報を管理することによって、効率よく情報を取り扱うことができます。
 たとえば会員サイトのユーザーの情報やショッピングサイトの商品情報などもデータベースで管理されているのですが、以下のような画面では、ユーザーの入力した内容を元にデータベースへの命令(SQLと呼びます)を作成して、データベースから情報を取り出したり、情報の登録を行っています。

・ログインページのユーザー名・パスワードの入力
・会員登録のプロフィールの入力
・商品検索画面のキーワード入力
・ショッピングサイトの商品ページ
・SNSサイトのメッセージ投稿
・ブログサイトの記事投稿などなど………

 しかし、SQLインジェクションの対策がとられていないと、勝手に不正な文字や値を入力されてしまい、プロフィールを盗み見られたり、情報が削除されてしまったり、情報を盗まれてしまいます。
 こういった被害を受けないためにも、SQLインジェクションの対策が必要となります。

●対策
①入力内容のチェックを行う
⇒住所入力を行う画面であれば(例えば郵便番号の項目など)、正しい形式で入力されているかチェックするとともに、データベースの命令として認識されるような特殊な記述が含まれていないかどうかをチェックする必要があります。

②SQL文の組み立てにプレースホルダー(静的プレースホルダー)を使用する
⇒入力内容を文字列連結によって、データベースへの命令(SQL)を組み立てるのではなく、データベースで用意されたプレースホルダーの仕組みを使って入力内容を取り扱うことで、安全にデータベースを利用することができます。

【プレースホルダーとは】
事前に実行するSQLを確定して、後からパラメーターのみを割り当てる仕組みです。そのためパラメーターに不正なデータベース命令を混入させても、元のSQLを改ざんすることができません。
なお、データベース側の機能によってSQLにパラメーターを割り当てる仕組みを静的プレースホルダーと呼びます。

③ウェブサイトに表示されるエラーメッセージに、システム内部のエラー情報をそのまま表示しない
⇒システム内部のエラーが見えてしまうと、攻撃者に対して不正行為を行う重要なヒントを与えてしまうことになります。

DDoS攻撃(ディードス攻撃)

 DDoS の頭の D をとった「DoS」攻撃とは、「Denial of Service」攻撃の略称で、サーバとなるコンピュータやネットワークに過剰な負荷をかけて、提供されているサービス(例えばオンラインゲームやSNSなど)にアクセスできないように妨害する攻撃です。

 DoS攻撃の手法のひとつに「F5アタック」があります。これば、ウェブブラウザの「F5」ボタンを連打することで、ウェブページをリロードして負荷をかける攻撃です。
 大勢の人を集めて手作業でF5ボタンを連打しなければならないうえに、攻撃元もすぐに特定されてしまう非常に原始的な攻撃手法ですので、DoS攻撃をしようと思ってF5アタックをする攻撃者はおそらくいないでしょう。

 しかし DoS攻撃の先頭に D がつく「DDoS攻撃」(Destributed DoS)は、分散型DoS攻撃と呼ばれ、一気に手法が高度になります。

 DDoS攻撃の手法は、セキュリティ対策がされていないパソコンをウィルスなどに感染させて、利用者にわからないようにDoS攻撃ソフトをインストールしておき(このパソコンを「踏み台」と呼びます)、標的となるサーバーに一斉にDoS攻撃を行います。踏み台となるパソコンは数千台から数万台にも及ぶ場合もありますので、ほぼ確実にサービス停止に追い込まれてしまいます。
 しかも攻撃者は、踏み台となるパソコン経由で攻撃するため、攻撃元を特定することが非常に困難です。

●対策
 DDoS攻撃は、現在でも対策が難しい攻撃です。大手のSNSサービスでもDDoS攻撃によりサービス停止に追い込まれたことがありました。標的となるサービス運営者としての対策は、DDoS攻撃を保護する機能のあるクラウドサービスの導入があげられます。
 また、自分が使っているパソコンにDoS攻撃ソフトを仕込まれないように、ウィルス対策を行うことも重要です。

おしまいに

 Webシステムへの攻撃はさまざまな手法があり、上にあげた三つはほんの一例となります。Webシステムはとても便利なものではありますが、対策を講じていないと簡単に攻撃を受けてしまい、「情報流出」や「データの破壊」、「乗っ取り」等、致命的な結果を生み出します。
 導入の際には、機能面だけではなく、くれぐれもセキュリティ面を疎かにしないようご注意ください。

関連記事

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です