WordPressのSQLインジェクション対策:サイトを完全に守るための徹底ガイド
もしかすると、あなたのWordPressサイトは今この瞬間も、「SQLインジェクション」と呼ばれる攻撃によって、アクセス数や売上、そして顧客からの信頼を失い続けているかもしれません。
なぜそんなことが起きるのでしょうか?
理由はシンプルです。あるハッカーが、あなたのビジネスへのアクセスを横取りして、次のようなサイトへ誘導しようと考えたのです。
- アダルトサイト
- 違法ドラッグ関連サイト
- 宗教広告サイト
- その他の悪意あるサイト
その結果、あなたのサイトはGoogleでブラックリストに登録され、「偽装サイトの可能性があります」「このサイトはハッキングされている可能性があります」といった警告が検索結果に表示され、顧客やコミュニティからの信頼を失ってしまいます。
最悪なのは何でしょうか?
それは、名前も素性も分からないハッカーが、「あなたにはどうすることもできない」と思っていることです。
気づけば、サイトは奇妙なポップアップ、不正なリダイレクト、スパムキーワード、403エラーに悩まされることになります。
私たちは10年以上にわたり100万以上のWordPressサイトと関わり、こうしたハッキング事例に数多く遭遇してきました。そして、数百ものサイトからSQLインジェクションによるマルウェアを、被害が拡大する前に除去するお手伝いをしてきました。
本記事では、このハッキングを取り除き、サイトをできるだけ早く元の状態に戻すための具体的な方法をご紹介します。
TL;DR(要点): サイトからSQLインジェクションを除去するには、MalCareをインストールしてください。60秒以内にサイトをクリーニングできます。その後、MalCareのセキュリティ強化機能を使えば、今後のSQLインジェクション攻撃からサイトを守ることができます。
SQLインジェクション攻撃とは?
WordPressサイトは、投稿、固定ページ、コメントなどのデータを管理するためにデータベースを使用しています。これらのデータはすべて、整理された形でデータベースのテーブルに保存されています。

ハッカーは、SQLインジェクション攻撃によってこのデータベースへのアクセスを試みます。
では、なぜ誰かがあなたのデータベースにアクセスしようとするのでしょうか?
良い質問です。
ハッカーがサイトへの侵入を試みる目的は、主に2つあります。ログイン情報やクレジットカード情報といった機密データを盗むこと、あるいはサイトに損害を与えることです。
データを盗み出す目的で悪意のあるコードがデータベースに挿入される場合、これはインバンド型SQLインジェクションと呼ばれます。一方、データベースからコンテンツを削除するなどしてサイトに損害を与えることが目的の場合は、ブラインド型SQLインジェクション攻撃と呼ばれます。
ここで疑問に思うのは、「なぜSQLインジェクション攻撃と呼ばれるのか?」ということでしょう。
サイトがデータベースにデータを保存するには、データベースとやり取りできる必要があります。SQLは、サイトがデータベース内のデータを追加・更新・削除・検索するために使う言語です。ハッカーは、この同じ言語を使ってデータベースへの侵入を試みます。
彼らは、お問い合わせフォームや検索バーなど、サイト上の入力フィールドを悪用して、悪意のあるスクリプトをデータベースに注入します。だからこそ「SQLインジェクション(注入)攻撃」と呼ばれるのです。
WordPressサイトからSQLインジェクションを除去する方法
以下のような症状に心当たりはありませんか?
- お問い合わせフォームから、わずか数分の間に数百件のメールが届く
- 広告が不審なウェブサイトへリダイレクトされる
- 一部のページに奇妙なポップアップが表示され、別のページではエラーが発生する
これらはSQLインジェクションハッキングの典型的な症状です。
ただし、この種のハッキングは目に見えないこともあります。ハッカーは単に情報を盗むためにサイトを乗っ取っているだけの場合があり、サイト自体に変更を加える必要はないからです。
つまり、サイトが一見正常に見えていても、実際にはハッキングされている可能性があります。確信を持つには、サイトをスキャンする必要があります。
スキャナーには多くの選択肢がありますが、多くのスキャンプラグインは、新種の複雑なマルウェアや高度に隠蔽されたマルウェアを検出できません。私たちがおすすめするのはMalCareです。その理由は以下の通りです。
- MalCareはパターンマッチングに頼らず、コードの挙動を評価するインテリジェントなシグナルを備えているため、新種・複雑な悪意あるコードも検出できます。
- WordPressファイルだけでなくデータベースもスキャンし、隅々までマルウェアや悪意あるコードを見つけ出します。
- スキャンは自社サーバー上で実行されるため、あなたのサイトに負荷がかかりません。
- プラグインは毎日自動でサイトをスキャンし、マルウェアを検出したときだけ通知します。
MalCareでハッキングを検出するには、以下の手順を実行します。
ステップ1: MalCareのWordPressマルウェアスキャナーにサインアップし、サイトにプラグインをインストールして有効化します。その後、MalCareのダッシュボードにサイトを追加します。
すぐにスキャンが開始されます。
サイトがハッキングされていると検出されれば、通知が届きます。
同じツールを使って、そのままサイトをクリーニングすることも可能です。
多くの方が、バックアップを復元して感染を除去することを考えるかもしれません。しかし、それは機能しません。バックアップの復元は既存ファイルを置き換えるだけで、ハッカーが追加した悪意あるファイルは削除されないのです。

注意: スキャナーは無料ですが、MalCareのマルウェア除去はプレミアム機能です。サイトをクリーニングするにはアップグレードが必要です。
ハッキングをクリーニングするには、以下の手順に従ってください。
ステップ2: MalCareがサイトのハッキングを検出すると、ダッシュボード上で通知されます。

通知のすぐ下に「Auto-Clean(自動クリーニング)」ボタンが表示されるので、クリックします。
ステップ3: 次に、FTP認証情報を入力します。FTP認証情報が何かわからない場合や見つけ方がわからない場合は、ガイドや動画を参考にしてください。

ステップ4: 続いて、WordPressサイトが保存されているフォルダを選択するよう求められます。通常はpublic_htmlフォルダです。
セキュリティ上の理由からサイトを別の場所に移動させているオーナーもいます。クライアントのサイトを管理している場合は、サイトが実際にpublic_htmlフォルダにあるか確認しておくとよいでしょう。

フォルダを選択すると、MalCareによるサイトのクリーニングが始まります。
マルウェアの除去には数分ほどかかります。
MalCare以外にも、サイトの検出とクリーニングに役立つセキュリティプラグインは多数あります。Wordfence、WebARXSecurity、Astra Security、Sucuriなどが挙げられます。ぜひ試してみてください。
WordPressはSQL攻撃にどう対処しているのか?
長年にわたり、WordPressはSQLインジェクション攻撃からデータベースを守るために多大な努力を重ねてきました。
この種の攻撃からWordPressサイトを保護するには、入力フィールドが、ユーザーから提供されたデータをデータベースに挿入する前に必ず検証する必要があります。
WordPressには、入力フィールドに挿入されるデータを無害化(サニタイズ)する関数群が用意されており、悪意のあるスクリプトの挿入を不可能にしています。
しかし、WordPressサイトはテーマやプラグインに大きく依存しています。SQLインジェクションは、脆弱性のあるテーマやプラグインを通じて実行されるのです。詳細は次のセクションで説明します。
SQLインジェクション攻撃はどのように行われるのか?
ハッカーは、サイトに存在する脆弱性を悪用してアクセスを得ます。
SQLインジェクション攻撃の場合、ハッカーはお問い合わせフォーム、ログインボックス、登録フォーム、コメント欄、さらには検索バーといった入力フィールドの脆弱性を突き、悪意のあるPHPスクリプトをデータベースに挿入します。

ということは、入力フィールドがあること自体が危険なのでしょうか?
答えはイエスでもありノーでもあります。
コメント欄やお問い合わせフォームのような入力フィールドは、プラグインやテーマによって動作しています。他のソフトウェアと同様に、プラグインやテーマにも脆弱性が生じることがあり、ハッカーはそれを悪用してSQLインジェクション攻撃を実行します。
すべてのプラグインやテーマが、WordPressの手法に倣ってSQLインジェクション攻撃を防いでいるかどうかを保証することは不可能です。
フォームプラグインを例にとって考えてみましょう。
フォームプラグインに入力された情報は、データベースに保存する前に、必ず検証および無害化されるべきです。
では、なぜ検証と無害化が必要なのでしょうか?
データ検証: データが特定の形式で受け取られていることを確認します。電話番号を受け付けるフォームプラグインなら、訪問者が数字のみを入力していることを確認すべきです。
データ無害化: 必要以上のデータが挿入されないようにします。フォームプラグインは、訪問者が10文字以上入力できないよう制限すべきです。
プラグインが訪問者の入力をチェックしていなければ、悪意のあるコード列をフォームに簡単に挿入できてしまいます。
フォームはそのデータをデータベースに保存するため、ハッカーにデータベースへのアクセスを許すことになるのです。
ほとんどのWordPressユーザーにとって、インストール済みのプラグインやテーマがユーザーデータを適切にフィルタリングしているかどうかを知ることは困難です。
とはいえ、今後のSQLインジェクション攻撃からサイトを守り続けるための方法はあります。再感染防止の詳細については、該当セクションをご覧ください。
SQLインジェクション攻撃がサイトに与える影響
SQLインジェクション攻撃が成功した場合の結果は深刻です。以下のような影響の一部またはすべてを受ける可能性があります。
1. 機密データの流失
Yahoo、Twitter、Adobeなどでの大規模なデータ漏洩により、数百万人のアカウントが危険にさらされたニュースを耳にしたことがあるでしょう。
あなたのサイトはTwitterほど大きくなくても、機密情報を含んでいます。それが盗まれれば、信頼の損失、評判の低下、さらには法的責任といった深刻な問題につながります。
ECサイトでは財務記録が、医療サイトでは健康記録が盗まれる可能性があります。
ハッカーは、これらの記録をオンラインで売却したり、身代金を要求したりする可能性もあります。
2. サイトデータの喪失
サイトが侵害された後、ハッカーにとって最大の懸念は捕まることです。
そのため、彼らは慎重にサイト内を移動しながら、静かに活動を行います。
しかし時に、データベースに変更を加えてしまうことがあります。ミスで情報を削除してしまうケースもあれば、サイトに損害を与えることを目的とした意図的な行為の場合もあります。
その結果、あなたはサイトのコンテンツを失うことになります。
3. 信頼の損失と評判の低下
データ漏洩は、顧客があなたのビジネスをどう見るかに影響し、今後もあなたのビジネスに依存し続けるかどうかを左右します。
2018年のCambridge Analyticaデータ漏洩スキャンダルでは、多くの人々がFacebookアカウントを削除しました。
顧客が、自分の健康記録や財務記録を保護できていなかったことを知れば、二度とあなたと取引したいとは思わなくなるでしょう。
データ損失については法的責任を問われる可能性もあり、それは間違いなく評判を汚すことになります。
4. Googleブラックリスト登録とホスティング停止
ハッカーは捕まらないよう最善を尽くし、慎重かつ秘密裏に活動を続けます。
多くの場合、ハッキングの兆候は目に見えません。そのため、サイトがハッキングされていることに気づくまでに時間がかかることがあります。
検索エンジンやホスティングサーバーは、WordPressサイトにおける悪意ある活動を素早く検知します。そして検知すると、自社のユーザーを保護し、あなたのサイトへのアクセスを防ぐために、迅速にサイトを停止させます。

5. クリーニング費用
ハッキングされたサイトのクリーニングは決して簡単ではありません。手作業では不可能です。
専門サービスに依頼することもできますが、高額で時間のかかる作業になります。
繰り返し感染するようであれば、膨らみ続ける請求書を支払う十分な資金が必要になるでしょう。
幸い、MalCareのようなセキュリティサービスなら、1サイトあたり年額99ドルで無制限のクリーニングを提供しています。まだであれば、MalCareの料金プランをぜひご確認ください。
再感染からサイトを守るには?
あなたのWordPressサイトは、プラグインまたはテーマの脆弱性が原因でハッキングされました。
サイトをクリーニングした後は、ハッカーを寄せ付けず、再感染を防ぐための対策を講じる必要があります。
1. テーマとプラグインを慎重に選ぶ
テーマやプラグインをサイトにインストールする前に、ユーザーのレビューを読みましょう。
脆弱性が原因でサイトがハッキングされる事例が繰り返されているツールは、使用しないでください。
よく作られたツールであれば、頻繁に脆弱性が発生することはありません。
仮に脆弱性が見つかったとしても、責任感のある開発者チームが迅速に改良版をリリースしてくれるはずです。
そうすることで、サイトの安全を保てます。
2. サイトを常に最新の状態に保つ
SQLインジェクション攻撃が成功するのは、テーマ、プラグイン、またはコアに脆弱性が存在するからです。
その脆弱性により、ハッカーはサイトに悪意あるコードを注入し、データベースへのアクセスを得られるのです。
こうした脆弱性は、アップデートを適用することで修正できます。
開発者は、ツールの脆弱性を把握すると、アップデートとしてパッチをリリースします。
そのアップデートを適用すれば、サイトはSQLインジェクション攻撃から守られます。
テーマ、プラグイン、そしてWordPressコア自体を常に最新の状態に保つことが重要です。
プロのヒント: WordPressの自動更新が有効になっていることを確認しましょう。2017年、WordPressはSQL脆弱性を修正するアップデートをリリースしましたが、自動更新が無効になっていたために、依然として多くのサイトがハッキングされました。
3. データベーステーブルの接頭辞を変更する
これにより、ハッカーがデータベースにアクセスするのが難しくなります。
どのようにしてでしょうか?
あなたのデータベースには、「wp_」で始まるテーブルがあります。
接頭辞を変更すれば、テーブルの場所を特定しにくくなります。
プロのヒント: まず最初にサイトのバックアップを取得してください。このステップは絶対に省略しないでください。サイトのバックエンドを変更するのは危険です。問題が発生した場合に備えて、復元用のコピーを残しておきましょう。
> ホスティングアカウント経由でwp-configファイルにアクセスします。
> ホスティングアカウントにログインし、cPanel > ファイルマネージャーに移動します。
> wp-config.phpファイルを見つけて開きます。
> $table_prefix = 'wp_'; の行にある wp_ を別の文字列に置き換えます。保存して終了します。

4. ファイアウォールを利用する
ファイアウォールは、WordPressサイトをハッカーから守ります。
サイトを訪れるすべての人を調査し、悪意ある活動の履歴がある者をブロックします。
Astra Securityのようなファイアウォールは、ユーザーの入力を分析してSQLインジェクション攻撃を検出・防止します。
MalCareでサイトをクリーニングした場合は、ファイアウォールプラグインの追加インストールを心配する必要はありません。MalCareファイアウォールが自動的に悪意あるトラフィックをブロックします。
次に何をすべきか?
WordPressサイトは、データベースといくつかのファイルで構成されています。
データベースと同様に、WordPressファイルもハッキングの標的になり得ます。
ハッカーやボットからファイルを守るための対策も必要です。「WordPressサイトのセキュリティ強化ガイド」が参考になります。
さまざまなセキュリティ対策がありますが、絶対に欠かせないのがセキュリティプラグインの導入です。
MalCareのようなセキュリティプラグインは、毎日サイトをスキャンし、ハッキングされていれば即座に通知し、60秒以内にサイトのクリーニングを支援し、将来のハッキング攻撃からサイトを守ります。
MalCareセキュリティプラグインで24時間365日サイトを守りましょう
-
WordPressプラグイン「WP Statistics」に深刻なSQLインジェクションの脆弱性が発見
WordPressは、TechCrunch、The New Yorker、Sony、MTVなど数多くの有名サイトを含む、10億以上のウェブサイトを支える圧倒的なシェアを誇るCMSです。しかし、その人気の高さゆえに、セキュリティの観点では攻撃者の標的になりやすいという側面も抱えています。近年、WordPressを代表する人気プラグインの一つである「WP Statistics」に欠陥が発見され、約30万のウェブサイトがオンライン上の攻撃者による悪用の危険にさらされました。 今回発見されたのは、「WP Statistics」におけるSQLインジェクションの脆弱性です。これを悪用すると、リモートから
-
WordPressハッキング対策完全ガイド:検出から除去・再発防止までの全手順
WordPressサイトがハッキングされ、異常な挙動や改ざんの兆候が現れていませんか? ハッキングの正確な検出と除去は決して簡単ではありません。そこで本記事では、WordPressサイトへの不正侵入(ハッキング)を迅速に検出し、除去するための包括的なガイドをご紹介します。ハッキングの症状、検出方法、除去手順に加え、被害の原因や攻撃の種類についても詳しく解説します。すぐに除去手順を確認したい方は、こちらへお進みください。 ハッキングされたWordPressサイトの症状 サイトの改ざんなど目立つ被害であれば気づきやすいですが、中には一見すると分かりにくい微細な兆候もあります。こうした兆候は一般ユー