SQLインジェクションからWordPressウェブサイトを保護する方法

公開: 2022-03-09

WordPressは、その幅広い潜在的なアプリケーションのために、最も使用されているWebサイト構築プラットフォームの1つです。 オンラインストアを構築したり、お気に入りの趣味についてのブログをホストしたり、フォーラムを通じてコミュニティを作成したり、大企業を代表したりすることができます。

ただし、どのように使用しても、主な責任はサイトをハッカーから保護することです。 そのため、構造化照会言語(SQL)インジェクション攻撃を防ぐ方法を理解することが重要です。

幸いなことに、この悪意のあるコードからWordPressサイトを保護するために実行できる手順はたくさんあります。 SQLインジェクションを検出、削除、および防止する方法を学ぶことで、貴重なデータを効果的に保護し、攻撃を受けにくくすることができます。

SQLインジェクションとは何ですか?どのように機能しますか?

インジェクションがどのように機能するかを理解するには、最初にSQLとは何かを学ぶことが役立ちます。 これは、データベース開発で使用される一般的な言語です。

Webサイトはこれを使用して、データベースから重要な情報を取得し、動的コンテンツを生成します。 一部のSQLデータベースには、MySQL(WordPressサイト)、MongoDB、およびSQLServerが含まれます。

WordPress Webサイトはデータベースを使用して、ページ、投稿、コメントなど、サイトの重要なデータとコンテンツを管理します。 この情報をテーブルに配置します。

WordPressデータベースのテーブルの表示

データベースは、最も機密性の高いデータが保存される場所です。 したがって、それを公開する攻撃は深刻な結果をもたらす可能性があります。

SQLインジェクション(SQLI)は、サイバー犯罪者がWordPressデータベースに侵入して操作するために使用するハッキング方法の一種です。 基本的に、ハッカーはWebサイトのバックエンドコーディングの抜け穴を悪用し、データ入力フィールドに悪意のあるコードを挿入する可能性があります。

このコードにより、悪意のあるアクターは、クエリ文字列、Cookie、および<input>要素を使用してWebリクエストを介してデータベースサーバーに対してSQLコマンドを実行できます。 これは、WordPressデータベースからデータを作成、アクセス、変更、および削除できることを意味します。

これが発生する可能性のあるさまざまなエントリポイントがあります。 最も一般的に使用される入力フィールドには、サインアップ、ログイン、お問い合わせフォーム、検索バー、ショッピングカートなどがあります。

訪問者が自分の電話番号を入力できるフォームがWebサイトにあるとします。 サイバー犯罪者は、その入力フィールドを使用して、管理者のユーザー名とパスワードを要求する悪意のあるコードを挿入できます。

SQLインジェクションの種類

SQLインジェクションにはいくつかの異なるタイプがあります。 1つのカテゴリは、「インバンド」と呼ばれるものです。 これは最も単純なタイプのインジェクションであり、エラーベースの攻撃が含まれます。

この手法では、ハッカーはインジェクションを使用して、データベース構造とテーブル名に関する詳細を取得します。 たとえば、エラーメッセージがクエリに含まれるテーブル名を提供する場合があります。 次に、ハッカーはこの情報を使用して新しい攻撃を作成できます。

もう1つのタイプは、「ブラインドSQLインジェクション」と呼ばれるものです。 これは、攻撃者がさまざまなクエリをデータベースに送信して、サイトが応答を分析する方法を見つける場合です。 そうすることで、SQLクエリへの応答を調べて潜在的な脆弱性を特定し、データベースにデータを外部ソースに送信するように要求するのに役立ちます。

SQLインジェクションはどのくらい一般的ですか?

残念ながら、SQLインジェクション攻撃が蔓延しています。 実際、アカマイが発行したレポートによると、2017年から2019年の間に、ソフトウェアアプリケーションへの攻撃の約3分の2がSQLインジェクションに起因していました。

別の2020VulnerabilityStats Reportでも、SQLインジェクションが最も一般的な重大な脆弱性の42%を占めていることが明らかになりました。

SQLインジェクションは、WordPressベースのサイトなどのSQLデータベースを使用するすべてのWebサイト、特に連絡先フォームや検索ボックスなどの入力フィールドを持つWebサイトで可能です。

SQLインジェクションが危険な理由

SQLインジェクションは、いくつかの理由で危険です。 まず、ハッカーにログイン資格情報や顧客データなどの機密情報を盗む機会を与えます。

ハッカーはSQLインジェクションを使用してデータを取得および盗むだけでなく、SQLインジェクションを使用してそのデータを削除することもできます。 これは、Webサイトの運営に使用される個人情報や重要な情報を失うリスクがあることを意味します。

さらに、評判の低下や収益の損失のリスクがあります。 データ漏えいはビジネスに悪影響を与える可能性があり、顧客やファンの信頼を失う可能性があります。

さらに、これらの攻撃により、Googleがサイトをブロックリストに登録する可能性があります。 あなたがこのリストに載った場合、多くの潜在的な訪問者はあなたのサイトが安全ではないという警告を受け取ります。 これらの人々のほとんどは引き返し、二度と戻らないかもしれません。 さらに、グーグルはあなたの検索ランキングを大幅に降格させます—それは回復するのが難しい有機的なトラフィックの大規模で長期的な損失につながる可能性があります。

SQLインジェクションを検出する方法

SQLインジェクション攻撃の犠牲になったことを示す可能性のある兆候がいくつかあります。 1つは、サイトの連絡フォームから突然大量のメールを受信して​​いることです。 もう1つの指標は、奇妙なポップアップ、広告、およびエラーメッセージを受信して​​いるかどうか、特にそれらが一見大ざっぱなWebサイトにリダイレクトしている場合です。

残念ながら、SQLインジェクション攻撃の兆候は必ずしも明白ではありません。 前述したように、ハッカーはWebサイトに損害を与えるのではなく、インジェクションを使用して情報を盗もうとすることがあります。 したがって、検出をより困難にするより微妙な方法を使用する場合があります。

SQLインジェクションの検出およびスキャンツール

あなたが標的にされたかどうかを確実に知る唯一の方法は、あなたのウェブサイトでスキャンを行うことです。 幸い、WordPressサイトでSQLインジェクションを検出するのに役立つさまざまなオンラインツールがあります。

たとえば、侵入テストツールを使用して、Webサイトの2つの無料スキャンを実行できます。

PenTestツールのホームページ

ライトスキャンまたはフルスキャンの2つのオプションがあります。 後者の場合は、有料プランにアップグレードする必要があります。 WebサイトのURLを入力し、[ターゲットのスキャン]ボタンをクリックするだけです。 脆弱性が存在する場合、スキャンによりそれらが明らかになります。

WordPressWebサイトからSQLインジェクションを削除する方法

1.バックアップを復元します

SQLインジェクションを削除する最善のオプションは、サイトのバックアップを復元することです。 Jetpack Backupを使用している場合は、アクティビティログを使用して攻撃がいつ発生したかを判断し、その時点より前のバックアップを復元するだけです。 サイトはハッキング前の状態に戻ります。

ただし、場合によっては、SQLインジェクションが時間の経過とともに少しずつ行われることに注意することが重要です。 クリーンなバックアップを見つけるためにかなり遠くまで戻る必要がある場合があります。これにより、データが失われる可能性があります。

また、バックアップを復元するとサイトが再び稼働する可能性がありますが、機密データが盗まれた場合でも、侵害の影響に対処する必要があります。

2.ウェブサイトのクリーニングサービスを使用する

もう1つのオプションは、サードパーティのWebサイトクリーニングサービスを使用してサイトをスキャンし、SQLインジェクションを修正することです。 Sucuriは1つのオプションです—単にあなたのウェブサイトを彼らのチームに提出して、彼らに他のすべての面倒を見てもらいましょう。 彼らは専門家であるため、平均的な開発者よりも効果的にデータベースからマルウェアを削除できます。

3.注射を自分で取り除きます

最後に、MySQLの管理と操作の経験がある場合は、データベースを手動でクリーンアップできます。 ただし、これは高度な手法であり、何をしているのかわからない場合は、変更を加えると問題が発生する可能性があることに注意してください。

将来的にSQLインジェクションを防ぐ方法

サイトが100%安全であることを保証する方法はありませんが、攻撃のリスクを最小限に抑えるために実行できる対策はあります。 WordPressでSQLインジェクションを防ぐために使用できる8つの方法を見てみましょう。

1.データを検証(またはサニタイズ)します

WordPressでSQLインジェクションを防ぐための鍵は、Webサイトにデータやコンテンツを入力するために使用できる入力フィールドを保護することです。 これには、コメントセクションとフォームが含まれます。 したがって、送信時にこれらのフィールドに入力されたデータを検証およびサニタイズすることが重要です。

入力の検証とサニタイズにより、ユーザーが送信したコマンドを確認できます。 サニタイズでは、コマンドを変更することもできます。 これは、これらのコマンドに悪意のあるコードや文字列が含まれていないことを確認するための効果的な方法です。

検証では、リクエストを処理する前に、フォームに入力された情報がリクエストされた形式と一致することを確認します。 たとえば、電子メールアドレスの入力フィールドがある場合、「@」記号が存在しないとデータは検証されません。

フォームデータの検証を作成する最も簡単な方法は、フォームのルールを確立することです。 そのためのプロセスは、使用している特定のプラグインによって異なります。 たとえば、プレミアムバージョンのFormidable Formsを使用している場合は、独自のカスタム入力マスク形式を追加できます。 テキストフィールド用。

WordPressのフォームフィールドに検証を追加する

入力形式の要件を追加すると、SQLインジェクションのリスクを制限できます。 サニタイズは、入力されたデータが検証された後、安全に処理できるようにするのに役立ちます。

ほとんどのWordPressフォームプラグインは、フォームデータを自動的にサニタイズします。 ただし、セキュリティ対策を追加することはできます。 自由形式の回答ではなく、ドロップダウンメニューと複数選択オプションの使用を検討してください。 特殊文字の使用を制限することもできます。

2.WordPressセキュリティツールをインストールします

JetpackのWordPressセキュリティプラグインは、SQLインジェクションにつながる可能性のある脆弱性についてサイトを監視できます。 これにより、誰かが利用する前にそれらを修正する機会が与えられます。

ダウンタイムの監視により、サイトが2番目にダウンしたことがわかり、迅速に対応できます。 また、リアルタイムバックアップを使用すると、サイトを完全に復元できます。

また、次のようなセキュリティツールも提供します。

  • WordPressファイルのマルウェアスキャンと、問題の大部分をワンクリックで修正
  • コメントとお問い合わせフォームを保護するスパム対策ソリューション
  • ハッカーを締め出すブルートフォース攻撃保護

3.Webサイトとデータベースを常に最新の状態に保ちます

古いソフトウェアやツールを使用すると、ハッカーが悪用する可能性のあるさまざまな脆弱性がサイトに導入される可能性があります。 これが、WordPressWebサイトを常に最新の状態に保つことが重要である理由です。

現在、WordPressのインストールのほぼ半分は最新バージョンを使用していません。 したがって、自動更新を有効にして、常に最新バージョンのWordPressを実行していることを確認することをお勧めします。

コアアップデートでこれを行うには、次の場所に移動します。 Webサイトのルートディレクトリにあるwp-config.phpファイル。 次に、次のコードスニペットをコピーしてファイルに貼り付けます。

 define( 'WP_AUTO_UPDATE_CORE', true );

プラグインに移動すると、プラグインの自動更新を有効にできます 管理ダッシュボードの画面。 次に、をクリックします 右端の列から自動更新を有効にします。

WordPressで自動更新を有効にする

脆弱性を最小限に抑えるために、未使用のプラグインやテーマをサイトから削除することをお勧めします。 SQLバージョンを更新することも賢明です。 ホスティングコントロールパネルにcPanelを使用している場合は、ダッシュボードからMySQLソフトウェアを更新できます。 ホスティングプロバイダーによっては、SQLの自動更新を有効にできる場合があります。

4.WordPressデータベースのプレフィックスを変更します

デフォルトでは、WordPressをインストールするたびに、CMSはデータベースプレフィックスとして「wp_」を使用します。 ハッカーはSQLインジェクションを介して脆弱性を悪用する可能性があるため、これを別のものに変更することを強くお勧めします。

開始する前に、データベースをバックアップする必要があります。 このようにして、問題が発生した場合でも、安全なバージョンを復元できます。

次に、FTPクライアントまたはホストのファイルマネージャーを介してサイトに接続し、サイトのルートディレクトリにあるwp-config.phpファイルを参照します。 ファイルでtable_prefix行を探し、「wp_」を別の行に変更します。

 $table_prefix  = 'wp_a12345_';

完了したら、ファイルを保存します。 それでおしまい!

5.ファイアウォールを使用する

SQLインジェクションから保護するために使用できるもう1つの戦略は、ファイアウォールをインストールすることです。 これは、WordPressサイトに着信するデータを監視および制御するのに役立つネットワークセキュリティシステムです。 これにより、SQLインジェクション攻撃からのコードを含む、悪意のあるコードをキャッチして除外できます。

使用できるWordPressファイアウォールツールにはさまざまなものがあります。 人気のあるオプションには、WordfenceとSucuriがあります。 これらのツールは、攻撃者がコマンドを送信するのを防ぐことはできませんが、実際にサイトにアクセスするのを阻止するのに役立ちます。

6.使用しているWordPressのバージョンを非表示にします

WordPressサイトのバージョンを公開すると、各バージョンに独自のセットが付属しているため、攻撃者が既知の脆弱性を悪用しやすくなります。 したがって、サイトを保護するために、使用しているバージョンを非表示にすることをお勧めします。

そうすることは迅速かつ簡単です。 開始するには、次のコードスニペットをコピーするだけです。

 remove_action('wp_head', 'wp_generator');

次に、現在のWordPressテーマのfunctions.phpファイルに移動します。 これは、WordPressのテーマエディターから直接、FTPクライアントを使用して、またはホストのファイルマネージャーを使用して行うことができます。 ファイル内にコードを貼り付けてから、変更を保存します。

7.不要なデータベース機能を排除します

WordPressデータベースの機能が多ければ多いほど、攻撃を受けやすくなります。 SQLインジェクションのリスクを最小限に抑えるには、データベースを正規化し、不要な関数やコンテンツを削除することを検討してください。

一言で言えば、データベースの正規化とは、データを整理するプロセスを指します。 これを行う目的は、データベース内の冗長データを排除し、すべてのデータ依存関係が適切であることを確認することです。 これを行うには、データベースを第一正規形にします。

WordPressデータベースをクリーンアップするためのより初心者向けのオプションが必要な場合は、プラグインを使用できます。 WP-Optimizeのように、選択できる確かなオプションがいくつかあります。

このフリーミアムプラグインは、phpMyAdminを介してSQLコマンドを手動で実行しなくてもデータベースをクリーンアップするのに役立ちます。 代わりに、WordPressダッシュボードから直接データベースを最適化するために使用できます。

データベーステーブルの最適化オプション

ゴミ箱や未承認のコメントなど、不要な情報をすべてデータベースから削除します。 WP-Optimizeを使用すると、シングルクリックでMySQLデータベーステーブルを最適化することもできます。

8.ユーザーのアクセスとアクセス許可を制限する

WebサイトでWordPressユーザーにさまざまな役割を割り当てることができます。 これらは、サブスクライバーから管理者まで、どこにでも及ぶ可能性があります。 各役割で、許可されるアクセスの量と、それらに付与される「機能」を制御できます。

セキュリティを強化するには、完全な管理者アクセスとユーザー権限を持つ役割の数を制限するのが最善です。 データを変更および入力できる人が少なければ少ないほど、SQLインジェクション攻撃に直面する可能性は低くなります。

WordPressでユーザーの役割と権限をカスタマイズするには、[ユーザー]→[すべてのユーザー]に移動します。

ダッシュボードのWordPressユーザー

次に、アクセスとアクセス許可を制限するユーザーの名前の下にある[編集]リンクをクリックします。 次の画面で、ドロップダウンの[役割]メニューを使用して役割を変更できます。

WordPressのユーザーロールを管理するときは、使用されなくなったアカウントも削除することをお勧めします。 古くなった役割を排除することで、脆弱性を最小限に抑えることができます。

9.nullプラグインの使用は避けてください

ヌルプラグインは、盗まれて無料で提供されるプレミアムツールです。 彼らは大したことのように見えるかもしれませんが、あなたは彼らの仕事にお金を払わないことによって元の開発者を傷つけているだけでなく、ハッキングの危険もあります。

ヌルのプラグインは、ハッカーにサイトへの簡単なゲートウェイを提供する悪意のあるコードやバックドアでいっぱいになることがよくあります。 それらを絶対に避け、代わりに、信頼できるソースからのプラグインを使用してください。

WordPressサイトをSQLインジェクションから保護します

サイバー犯罪者の脅威からWebサイトとデータを保護するには、サイトにアクセスするために使用される最も一般的な方法のいくつかに注意することが重要です。 データベースのセキュリティを強化することになると、これはSQLインジェクションに精通していることを意味します。

この投稿で説明したように、SQLインジェクションは、機密データの公開からコンテンツと収益の損失まで、WordPressサイトに悪影響を与える可能性があります。 幸いなことに、インジェクション攻撃を検出、削除、および防止するために実行できる手順はいくつかあります。

完全に安全なWebサイトはありませんが、上記のヒントと手法に従うことで、SQLインジェクションの犠牲になる可能性を大幅に減らすことができます。