Share
企業のホームページやWebサービスはビジネスの要で、セキュリティ対策をしっかり行うことはビジネスそのものを守ることと同じです。
しかし、社内のWebセキュリティ対策の担当者には
専門知識が足りない
管理の複雑さ
リソース不足
情報漏洩のリスク
など、多くの不安や課題があります。
Webサイトのセキュリティ対策は専門家に任せるべきですが、企業としても社内でしっかりWebサイトのセキュリティに関する基礎知識を共有しておきたいものです。
そこで今回の記事では、ウェブサイトセキュリティ対策の概要と、よくあるWebサイトの脆弱性、また、企業や開発者が行うべきWebセキュリティ対策について詳しく解説します。
Webサイトのセキュリティとは、Webサイトの情報やユーザーの情報が不正アクセスや改ざんから守られることを指します。これは、Webサイトの情報を守るためだけでなく、ユーザーが入力した情報が守られることも含まれます。Webサイトがハッキングされたり、不正な情報が投稿されたりすることは、ビジネスや個人の信用に甚大な影響を及ぼします。
ハッカーはWebサイトに特有の脆弱性をついて攻撃してくるため、対策を行う前にそれらの脆弱性についての知識を得ておく必要があります。
Webサイトの脆弱性とは、Webサイトに存在する技術的な問題や不備などがハッカーや不正者に利用される可能性がある脆弱な部分や状況を指します。
脆弱性があるWebサイトは、ハッカーや不正者によって情報の漏洩やサイトの改ざんなどの攻撃に対して脆弱であると言われます。このような脆弱性を修正することが、Webサイトのセキュリティ対策と呼ばれます。
企業にとってホームページや自社サービスのWebサイトのセキュリティ対策が非常に重要なのはなぜでしょうか。以下の理由が挙げられます。
Webサイトが機能しなくなると、ビジネスは「麻痺」してしまいます。これは、顧客体験や会社の業務に直接影響を及ぼし、ビジネスの収益に大きな損失をもたらします。
特に、Eコマース企業はWebサイトを通じたビジネスが中心になるため、甚大な被害を受けます。
ホームページやWebサイトのセキュリティ上の脆弱性が発見されると、顧客やユーザーからの信頼が損なわれ、ブランドイメージが傷つきます。
セキュリティ対策をしっかり行うことで、企業が保有する顧客情報や個人情報への不正アクセスを防げます。顧客の個人情報、クレジットカード情報は、常にセンシティブな問題です。顧客からの信頼喪失は、ビジネスの命取りになります。
企業が顧客情報を適切に保護することにより、法的責任が回避できます。
Webサイトが攻撃され破壊されると、最悪の場合、システム全体をリセットし、サイトのコンテンツを一から構築しなければなりません。そうなると、それまで築いてきたサイトのコンテンツは失われ、対応にかかる費用と労力は計り知れません。
ここで、ハッカーが攻撃してくるよくあるWebサイトの脆弱性を見ておきましょう。ハッカーがどのようにWebサイトを攻撃するかを、まずしっかり理解することで、セキュリティ対策が考えられるようになります。
SQLインジェクションは、アプリケーションのクエリの脆弱性を利用した攻撃の一種です。SQLインジェクションは、元のクエリを改ざんするSQLフラグメントを挿入することで、データベースのデータを悪用します。
この脆弱性は、プログラマーが文字列を連結してデータベースにクエリを構築する際に悪用されるもので、ユーザーが入力した値である変数を使用する場合も含まれます。ハッカーはQLインジェクションの脆弱性を悪用し、間違った値を入力することで、クエリの構築を論理的に破壊し、開発者の本来の意図とは異なるものにしてしまいます。
攻撃者はWebサイト上のフォームなどから、不正なSQLクエリを送信してデータベースから情報を抜き出したり、不正な情報を挿入したりすることができます。この脆弱性を防ぐためには、Webサイトのコードを正しく記述すること、またはSQL Injection対策用のツールを使用することが重要です。
XSS(クロスサイトスクリプティング)とは、攻撃者が他のユーザーに実行させるスクリプトを挿入できる脆弱性です。
例えば、攻撃対象のユーザーが閲覧するWebページの登録フォームに悪意のあるコードを入力し、システムが保存することにより攻撃します。
これにより、ユーザーのブラウザ上で不正なアクションが実行され、個人情報の漏洩や被害などが引き起こされる可能性があります。
XSS攻撃の主な目的は、cookieやセッショントークンなどユーザーの認証情報を盗んでアクセス権を得たり、ユーザーに対して悪意のある行為を行うことです。
XSSの脆弱性は、次の3つに分類されます。
この脆弱性を防ぐためには、Webサイトのコードを正しく記述すること、またはXSS対策用のツールを使用することが重要です。
CSRF(Cross site request forgery)は、Webサイトに対して攻撃者が不正なリクエストを送信することで、サイトのセキュリティを侵害する脆弱性のことです。簡単に言うと「不正なアクセス」です。
攻撃者は、ユーザーが利用しているWebブラウザを悪用して、ユーザーのアカウントを操作したり、情報を盗み出したりすることができます。例えば、銀行のシステムでは、ハッカーが彼らの口座へ送金を実行するリンクを送ります。ユーザーがそのリンクをクリックすると、意図せず犯罪者の口座にお金を移してしまいます。
これは、リソースや機密情報に関するセキュリティエラーで、パスワード、ログインセッションID、クレジットカード情報などの機密データを漏らしてしまうことです。
これらのデータが暗号化されていない場合、ハッカーは簡単に情報を盗み、悪意のある目的のために使用することができます。
この脆弱性は、ログインしていないゲストが使用できる場合( 認証の脆弱性)や、Webサイトがユーザーのアクセス権を指定していない場合(権限付与の脆弱性)に発生します。
インターフェース上では見えない機能であっても、ハッカーが偽の要求をすることは十分に可能です。もしWebサイトに権限付与の設定がないならとても危険です。
IDOR(Insecure Direct Object Reference)脆弱性とは、Webアプリケーションにおいて、アクセス権限が不十分に制御されているリソース(データベースのレコード、ファイルなど)へのアクセスを脆弱な状態とする脆弱性のことです。
例えば、Webアプリケーションにおいて、ユーザーがアクセス可能なリソースを特定するために使用されるID(例えば、データベースのレコード番号)がURLに含まれている場合、攻撃者が番号を変更してアクセス権限がないリソースにアクセスすることが可能になる場合があります。
例: https://example.com/user/123.
ここで「123」を他の値に置き換えると、他のユーザーの情報やシステム内のデータにアクセスできる可能性があります。
では、ここから社内で行えるWebサイトセキュリティ対策を7つ紹介します。
大文字、小文字、数字、特殊文字などを含む強力なパスワードを設定するのは、最も基本的ですが有効なセキュリティ対策です。
ブルートフォース攻撃(攻撃者が大量のパスワードの候補を順に試してアクセスすること)は古典的な手法ですが、依然として非常に効果的な攻撃方法です。
そのため簡単なパスワードを設定しているなら簡単に破られます。 例: iloveyou、123456、abcxyzなど
さらにパスワードは定期的に変更するようにしてください。
電話番号や電子メールによる2段階認証をオンにすることも、攻撃を防ぐ簡単で効果的な方法の1つです。
データはWebサイトにとって最も重要です。たとえ攻撃を受けても、自動で定期的なバックアップさえとっておけば、Webサイトは簡単にデータを復元できます。
ソフトウェアのバージョンを常に最新のものに更新することは、シンプルですが、有効なセキュリティ対策になります。最新のプラグインによって古いバージョンの脆弱性が修正されます。
使用するサーバーのパワーはWebサイトのセキュリティにおいて重要な役割を果たすことがあります。強力なサーバーは大量のリクエストを処理できるため、DDoS攻撃やブルートフォース攻撃などのネットワーク攻撃に対して防御できます。
また、強力なサーバーは多数のアプリケーションやサービスを実行できるため、Webサイトのセキュリティを確保するためのセキュリティ対策ツールを適切に実行することができます。
これにより、脆弱性の検出や修正、自動的なセキュリティアップデートなどが可能になります。
アクセス権限の管理により、システム内で個々のユーザーが実行できるタスクやアクセスできるリソースを制限することができます。
これにより、不正なアクセスや攻撃からWebサイトを保護することができます。また、アクセス権限の管理により、認証や認可のプロセスが合理的に実行されるようになり、セキュリティ上の問題を未然に防止できます。
すべてのファイルには、システムにとって危険な悪意のあるコードが含まれている可能性があります。
ファイルのアップロードに制限をかけることにより、不正なファイルやマルウェアなどの危険なものがWebサイトにアップロードされることを防止できます。
制限をかける方法として、以下のような方法があります。
ファイルタイプの制限: 特定のタイプのファイルだけを許可するように設定します。例えば、画像ファイルだけを許可するなど。
ファイルサイズの制限: アップロード可能なファイルの最大サイズを設定することで、サイズの大きなファイルのアップロードを防ぎます。
ファイル名の制限: 特定の文字列を含むファイル名を許可しないように設定することで、不正なファイルのアップロードを制限できます。
ファイルスキャン: アップロードされたファイルをウイルススキャンなどでスキャンして、不正なファイルを検出できます。
次に、Webサイトの開発者が行うセキュリティ対策を7つ紹介します。
HTTPSとは、HTTP(HyperText Transfer Protocol)とセキュリティ技術(SSL/TLS)を組み合わせた通信プロトコルです。WebブラウザとWebサーバー間の通信内容が暗号化され、他の誰かがデータを読んだり改ざんすることができないようになります。
HTTPSを使用することで、Webサイト上のユーザーアカウントや個人情報、クレジットカード番号などの情報が安全に送信・受信されることが保証されます。また、Webサイトの正当性も保証されるため、ユーザーが偽のWebサイトにアクセスするリスクを回避することができます。
一般的に、WebブラウザがURLアドレスの接頭辞が "https://" であることを確認することで、HTTPSを使用しているWebサイトとの通信を識別することができます。
さらにSSL(Secure Socket Layer)証明書を取ることもWebサイトの安全性を保つための効果的な方法です。
SSL証明書は、認証局(CA)から発行されます。CAは、Webサイトのオーナーシップを確認するための手続きを行い、正当なWebサイトであることを認証すると、SSL証明書を発行します。
オンラインで公開されているソフトウェア、ライブラリ、プラグインを使用することはWebサイト開発者にとって便利ですが、脆弱性が存在するリスクも伴います。
また未パッチの脆弱性がある第三者のソフトウェアやプラグインを使うと、Webサイトが攻撃を受けやすくなります。開発者は以下の点に注意します。
信頼できるソースからのライブラリやソフトウェアを使用する。
定期的にパッチを適用したバージョンアップを行う。検出されたソフトウェアやライブラリの脆弱性を確実に処理し、防止する。
自己流で実装するよりも、セキュリティが検閲され、広く利用されているソフトウェアを優先して使用する。
インストール時に使用するフレームワークやソフトウェアには、デフォルトの構成があります。本番環境でデフォルトの設定を使用すると、ハッカーや不正アクセスによってシステムが容易に破壊されます。
Webサイトは、クライアントの下に情報を保存するためにcookieを使用しています。認証情報もクッキーに保存されています。
cookieを安全に使用しなければ、cookie内の認証情報が盗まれたり、不正アクセスされたりする可能性があります。
cookieの情報を安全に保つために、開発者は、次のプロパティを設定することができます。
Webサイトを設計する際、開発者は以下のような方法でWebサイトのセキュリティを確保する必要があります。
機密情報・重要情報が漏れないようにする
エンドユーザーにエラーのログを表示しない
保存する前に機密情報を暗号化またはハッシュ化する
SQLインジェクションの脆弱性を防ぐためには、ユーザーからの入力データをチェックする必要があります。この脆弱性を悪用されないようにするために、開発者はクエリを構築する際に文字列の連結を避ける必要があります。
代わりに、ライブラリの組み込み構文を使用して値を割り当て、クエリを構築する必要があります。エスケープシーケンス(特殊文字のエンコード)を使用することで、安全なクエリに変換することができます。
XSSでは、入力情報から原因を判断するだけでなく、特殊文字のエスケープ、HTMLタグの暗号化など、HTMLタグを表示する前の情報を制御する必要があります。
上記のいずれも、手動で行うのではなく、現在ではSpring、React、Laravel、Ruby on Railsといったフレームワークで対応しています。
▶︎SpringフレームワークでWebアプリケーションを開発する理由とは?
日常業務でroot、superアカウントを使用しないようにします。
この操作は、ユーザーまたは開発者がアカウントを使用してWeb サイトで操作するアクティビティのことです。
必要に応じて最小限の権限でアカウントを使用することで、頻繁に使用するアカウント情報が漏れたり、乗っ取られたりした場合にも影響を最小限に抑えることができます。
セキュリティ診断ツールを取り入れることもWebサイトの脆弱性を把握し、セキュリティ対策をする上で役に立ちます。以下のようなツールがあります。
多くの管理者によって使用されるWebサイトセキュリティのツールです。このツールはSpider(システムに関するデータの収集)とIntruder(脆弱性の検出)の組み合わせです。
Webアプリケーションのセキュリティの脆弱性を検出し、攻撃シミュレーションを行うことができます。特にWebアプリケーションの脆弱性診断やペネトレーションテストに役立つツールです。
Nmapは、Webサイトのセキュリティをテストするために無料で人気のツールです。Nmapはネットワークの脆弱性を発見できるため、Webサイト内のデータをより徹底的に保護するのに役立ちます。
PuTTYは、セキュアなリモート接続を提供するために使用されるSSH(Secure Shell)クライアントソフトウェアです。Webサイトのセキュリティ対策を行う上では、リモートサーバーへのセキュアな接続を確立するために役立つことがあります。このような接続を使用することで、Webサイトの構成やデータを保護することができます。また、PuTTYを使用してWebサイトを遠隔操作することもできます。
Webサイトのセキュリティで広く使われている無料のツールです。このツールは、Webサイトのセキュリティシステムの脆弱性を検出でき、WebサイトにアクセスしようとするIPに自動的に対応します。
本記事では、Webサイトのセキュリティ対策のために企業と開発者が行える対策を詳しく解説しました。
企業が提供するWebサービスは、ハッカーの攻撃にさらされています。Webサイトのセキュリティに関する知識は複雑で、企業が使えるリソースも限られています。
Webサイトのセキュリティ対策を任せられるWeb開発企業をお探しですか?
弊社Rabiloo(ラビロー)は、セキュリティの専門家としての知識を備え、安全なWebサイト制作・保守運用サービスを提供しています。
国際規格であるISO9001(品質マネジメントシステム)ならびにISO27001(情報セキュリティマネジメントシステムの認証を取得し、国際基準に則り、セキュリティ対策の整ったプロセスで高品質のWeb開発を請け負っています。
セキュアなWebサイト制作・Webアプリ開発のご相談、お見積もりはいつでもお気軽にお寄せください。迅速にお返事します。
Share