ホーム ブログ UX/UI

よくあるWebサイトの脆弱性と...

よくあるWebサイトの脆弱性と効果的なセキュリティ対策

Rabiloo

2021-11-24

インターネットの発展に伴い、世界中のWebサイトの数も急増し、2021年までに18.3億サイトに達しました。

それに伴い、データ損失やハッカーの攻撃の回避など、Webサイトのセキュリティ問題はWeb担当者にとって常に最重要課題となっています。

Webサイトのセキュリティサービスを検討する前に、自分でまずセキュリティに関するあらゆる脆弱性とその回避方法を知っておくと、Webサイトを守るための知識を身につけることができます。

今回の記事ではWebサイトのセキュリティについての知見をシェアしたいと思います。

Webサイトセキュリティとは?なぜ必要か?

Webサイトがあなたの家であり、ドメイン名が住所であり、データが家の中にある資産であると想像してみてください。

資産である以上、守らなければなりません。

ドアや鍵を補強したり、監視カメラを増設したりすることは、Webサイトのセキュリティをさらに強化することに似ています。

Webサイトがセキュリティホールからハッカーに攻撃される事件は何度も発生しています。

  • 2013年10月、巨大企業のAdobeは、290万人の個人情報、40GBのソースコードデータが流出したことを発表。
  • セキュリティ企業のHold Security社は2014年8月、ロシアのハッカーが世界中の42万のWebサイトで12億のログイン名とパスワードを盗んだことを明らかにした。

安全でないWebサイトは、次のような悪い結果をもたらします。

  • 顧客情報の漏洩
  • Webサイトのダウン、中断、安定した動作ができない
  • ハッキングされたWebサイトの修復に費用がかかり、ハッカーに身代金を要求される
  • Googleのブラックリストに追加されるなど

よくあるWebサイトの脆弱性

    1. SQLインジェクション

SQLインジェクションは、アプリケーションのクエリの脆弱性を利用した攻撃の一種です。SQLインジェクションは、元のクエリを改ざんするSQLフラグメントを挿入することで、データベースのデータを悪用します。

 

アプリケーションが以下のようなクエリを実行するとします。

 

SELECT * FROM tbl_user WHERE username = 'name' and password = 'pwd';

 

ここで、nameとpwdは、Webサイト上の入力ボックスから取得した値です。

このとき、ハッカーは「name」を入力する代わりに、「name' or '1' = '1' 」と入力すると、クエリは次のような形になります。

 

SELECT * FROM tbl_user WHERE username = 'name' or '1' = '1' and password = 'pwd' name' or '1' = '1';

 

上記のクエリは、「'1' = '1'」が常に真であるため、ハッカーはデータベースに簡単に操作を加えるようになります。

 

Security-Vulnerabilities

よくあるWebサイトの脆弱性の一つであるSQLインジェクション

 

  1. クロスサイトスクリプティング(XSS)

XSS攻撃は、悪意のあるスクリプトを送信および挿入することです。これらのスクリプトは通常、Javascriptなどのクライアント側のプログラミング言語で記述されています。

 

XSSの脆弱性は、次の3つのカテゴリーに分類されます。

 

  • 反射型XSS(Reflected XSS): ユーザーのセッションやクッキーを盗用する
  • 蓄積型XSS(Stored XSS): 大量のユーザーのセッションを乗っ取り、悪意のあるコードでコンテンツを送信する
  • DOM XSS: XSSの脆弱性を利用するためにDOM、特にHTMLの構造を変更する

 

XSS攻撃の主な目的は、クッキーやセッショントークンなどのユーザーの個人データを盗むことです。

 

  1. クロスサイトリクエストフォージェリ(CSRF)

CSRFは ユーザーの認証権をWebサイトに対して利用する攻撃方法です。

この脆弱性を利用して、ハッカーはユーザーのクッキー・セッションを使って特定のページへのアクセスを要求し、そのWebサイト上で他の操作を行うことができるようになります。

簡単に言うと、CSRFは不正なアクセスのことです。

  1. 認証・権限付与の脆弱性

この脆弱性は、ログインしていないゲストが使用できる場合( 認証の脆弱性)や、Webサイトがユーザーのアクセス権を指定していない場合(権限付与の脆弱性)に発生します。

インターフェイス上では見えない機能であっても、悪人が偽の要求をすることは十分に可能です。もしあなたのWebサイトが権限付与の設定がないなら、それは本当に危険です。

  1. 機密データの漏洩

これは、リソースや機密情報に関するセキュリティエラーで、パスワード、ログインセッションID、クレジットカード情報などの機密データを漏らしてしまうことです。

これらのデータが暗号化されていない場合、ハッカーは簡単に情報を盗み、悪意のある目的のために使用することができます。

  1. 安全でない直接オブジェクト参照(IDOR)

安全でない直接オブジェクト参照(IDOR)はOWASP ※のトップ 4 に入っています。Webサイトがユーザーが提供したデータを介してリソース(ファイル、データ)に不正にアクセスすることを許可する場合に発生します。

※ソフトウェアやウェブアプリケーションのセキュリティの向上を専門にした非営利団体。

例えば、あるWebサイトのユーザー情報は、次のような URL 形式になっています。

https://example.com/user/123. 

ここで「123」を他の値に置き換えると、他のユーザーの情報も表示されてしまい、大変なことになります。

  1. 安全性の低いライブラリやプラグインの使用

オンラインで公開されている無料のソフトウェア、ライブラリ、プラグインを使用することはWebサイト開発者にとって便利ですが、脆弱性が存在するリスクも伴います。

サードパーティーのソフトウェアやプラグインに未パッチの脆弱性があると、Webサイトが攻撃を受けやすくなります。

効果的なセキュリティ対策

    1. SSL証明書のインストール、HTTPSの使用

SSL(Secure Socket Layer)セキュリティ証明書をインストールすることはWebサイトの安全性を保つための効果的な方法です。SSLは、Webブラウザーとサーバー間の情報暗号化メカニズムに基づいており、ユーザーの機密情報をより安全に送信するのに役立ちます。

また、HTTPSを使用すると、ブラウザやウェブ上での通信や操作が、安全かつ確実に行われるようになります。HTTPSの活用によってWebサイトに対するお客様の信頼性が高まり、Webサイトの順位が上がり、SEOにも良い効果があります。

Security-Vulnerabilities02

HTTPプロトコル+SSL証明書=HTTPSプロトコル

  1. 強力なフレームワークによるSQLインジェクション、XSSの排除

SQLインジェクションの脆弱性を防ぐためには、ユーザーからの入力データをチェックする必要があります。エスケープシーケンス(特殊文字のエンコード)を使用することで、安全なクエリに変換することができます。

XSSでは、入力情報から原因を判断するだけでなく、特殊文字のエスケープ、HTMLタグのエンコードなど、HTMLタグを表示する前の情報を制御する必要があります。

上記のいずれも、手動で行うのではなく、現在ではSpring、React、Laravel、Ruby on Railsといったほとんどのフレームワークが対応しています。

関連記事: SpringフレームワークでWebアプリケーションを開発する理由とは?

  1. ソースコード、ソフトウェア、プラグインの管理

ソフトウェアのバージョンを常に更新することで最新のプラグインによって古いバージョンの脆弱性が修正されます。これはシンプルですが、サイバー攻撃からWebサイトを守るために有効な方法です。

さらに、セキュリティを高めるためには、Webサイトのログを記録したり、ユーザーの権限を設定したり、重要なリソースへのアクセスを制限したりすることが大切です。

  1. 強力なサーバーの使用

サーバーがスムーズに動作することに加えて、問題が発生した際の冗長性やデータ処理能力も考慮してサーバーを選定すべきです。

  1. Webサイトセキュリティツール・サービスの利用

以下のようなセキュリティツールがWebサイトのセキュリティをより効果的にするのに役立ちます。

  • Burp Suite: 多くの管理者によって使用されているWebサイトセキュリティのツールです。このツールはSpider(システムに関するデータの収集)とIntruder(脆弱性の検出)を統合したものです。
  • NMAP: セキュリティテスト用の無料で人気のウェブサイトセキュリティツールです。NMAPは、ネットワーク全体やネットワークサービスの脆弱性を発見し、ウェブサイト内のデータをより徹底的に保護するのに役立ちます。
  • PuTTY: システム構成に関する警告機能を備えたWebサイトセキュリティのツールです。
  • SQLmap: Webサイトのセキュリティで広く使われている無料のオープンソースツールです。このツールは、Webサイトのセキュリティシステムの脆弱性を検出し、Webサイトにアクセスしようとする奇妙なIPを自動的に処理するのに役立ちます。

こうしたセキュリティ施策を自社で施すのには非常に手間がかかります。時間やリソースを節約するために、評判の良いWebサイト開発会社のパッケージまたはウェブサイトセキュリティサービスを使用を検討することもできます。

まとめ

Webサイトを構築することは難しいことではありませんが、安全性を確保し、新たなサイバー攻撃に立ち向かうことは非常に困難です。この記事でご紹介したWebサイトのセキュリティに関する情報がご参考になれば幸いです。

テクノロジーに関する他の記事をご覧になりたい方は、是非Rabilooのお役立ち情報にアクセスしてください。