Web制作

  1. ブログトップ
  2. Web制作
  3. 【WordPress】セキュリティ対策ガイド(個人情報保護編)

【WordPress】セキュリティ対策ガイド(個人情報保護編)

高橋 雪

【WordPress】セキュリティ対策ガイド(個人情報保護編)

こんにちは! 株式会社スプールのWebディレクター高橋です。

広く普及しているWordPressですが、個人情報を取り扱う場合は、セキュリティ対策が必要不可欠です。

そこで、今回はWordPressのセキュリティ対策について、個人情報保護を主要範囲としてまとめました。

本ガイドについて

本ガイドでは、WordPressとACF(Advanced Custom Fields)で構築した注文管理サイトの個人情報保護を目的としたセキュリティ対策について、具体的で分かりやすくまとめます。

  • 本ガイドの対策は基本的かつ代表的な内容であり、サイトの環境や業務特性に応じて適宜追加・変更が必要です
  • セキュリティ対策は一度設定すれば終了ではなく、定期的な見直しと継続的な改善が重要です
  • 対策の実施時は必ず事前にバックアップを取り、問題発生時に速やかに復元できるようにしてください
  • 本ガイドの内容は必ずしも完全な安全を保証するものではなく、実際の運用では常に最新の脅威動向を注視し、柔軟な対応が求められます

1. 通信暗号化

サイト全体をHTTPS化し、SSL/TLSによる暗号化通信を必須にします。これにより入力フォームや管理画面での顧客データ送受信を保護できます(HTTPのままだと第三者に通信内容を盗聴される恐れがあります​。また、管理画面へのアクセスやAPI通信もすべて暗号化するよう徹底しましょう。

通信暗号化の対策
対策内容目的・詳細対応方法・推奨ツール
全ページのHTTPS化(SSL/TLS)HTTP通信は傍受されるリスクが高いため、顧客情報の漏洩防止のため全通信を暗号化。無料:Let’s Encryptなど
有料:GlobalSignなど
管理画面・API通信のHTTPS必須化管理者やAPIから送信される機密データの保護を強化。同上

サーバ内部で他システムと連携する場合​

加えて、管理画面や顧客情報を扱うページではブラウザとサーバ間だけでなく、サーバ内部で他システムと連携する場合も暗号化や認証による保護を行います。

たとえば、WordPressと外部の在庫管理システムが通信するならAPIキーやトークンで認可し、通信はHTTPSやVPN経由にする、といった具合です。

2. 個人情報保護

WordPressの認証ユーザー(必要最低限の権限を持つユーザー)のみが、閲覧・編集できるようアクセス制御します。

個人情報保護の説明画像
対策内容目的・詳細対応方法・推奨ツール
フォーム入力バリデーションとサニタイズ不正なデータ入力や攻撃(XSS、SQLインジェクション)を防ぐため。WordPress標準、プラグインのサニタイズ関数など
出力時のエスケープ処理(XSS対策)出力データへの悪意あるスクリプト埋め込みを防止。esc_html(), esc_attr()等のWordPress関数
不要な個人情報の非収集・暗号化保存漏洩リスクを軽減するため、収集データを最低限に抑え、万一画面に表示する際は適切にマスキング。重要情報は暗号化。WordPress標準機能、独自実装

顧客の氏名・住所・連絡先などのデータの閲覧・表示

不要な場所で個人情報を表示・出力しないように設計し、万が一、公開ページで表示する場合は適切にマスキングするなど配慮します。

また、必要に応じて個人情報を暗号化してデータベースに保存することも検討します。
(フィールド単位で暗号化しておけば、万一DBが流出しても被害を最小限にできる)

さらに、漏洩リスクを下げるため必要以上の個人情報は収集・保存しないことや、一定期間経過後のデータ削除(または匿名化)などデータライフサイクルを管理することも重要です。

注文フォームや会員登録フォーム

CSRF対策(WordPressの_nonce利用)、入力値のバリデーションとサニタイズを行い、不正なスクリプトやSQLが混入しないようにします。ユーザーから受け取った個人情報は、表示時に必ず適切にエスケープ処理をし、管理画面やメール等で表示・送信する際にXSS脆弱性を防ぎます(フィールド値も出力時にエスケープする​)。

メールで個人情報を通知する機能がある場合

極力詳細な情報を避けるかパスワード付きZIPにするなど配慮します。

3. 脆弱性管理

WordPressコアやテーマ、プラグインにセキュリティ更新が出たら速やかに適用します。開発元は脆弱性を発見すると修正アップデートを公開するため、最新版を保つことで既知の侵入経路を塞ぐことができます。

脆弱性の管理
対策内容目的・詳細対応方法・推奨ツール
WordPress・プラグイン常時最新版化、未使用プラグイン・テーマの削除脆弱性を狙った攻撃防止。常に最新のセキュリティパッチを適用。未使用プラグインやテーマも攻撃の入口となるため、サイト内には必要最小限のものだけを残す。・定期的にWordPress管理画面でアップデートを確認・実施
・WPScan(脆弱性チェックツール)、Patchstack(脆弱性スキャナー)
・手動で不要なプラグイン・テーマを削除
REST API制限・非公開化外部からREST API経由で個人情報を閲覧されるリスクを防ぐため、必要なフィールドのみ公開またはAPI自体の制限を行う。functions.phpによるREST API制限(※プラグインを使用している場合は、プラグイン設定も確認)
フィールド出力時のエスケープ処理フィールド出力時のXSS攻撃防止。esc_html(), esc_attr()の利用
脆弱性スキャンの定期的な実施WordPressやプラグインの脆弱性を定期的に自動スキャンして、問題を早期に発見・対処する。WPScan、Patchstack、Wordfence Security
ファイル改ざんやマルウェアスキャンサイトのファイルが改ざんされると情報漏洩や不正アクセスの入口となるため、定期的にファイル改ざん検知・マルウェアスキャンを実施する。Wordfence Security、その他サイト監視ツール、サーバー独自機能等

4. ログイン対策

ログイン対策
項目対策内容・推奨事項対応方法・推奨ツール
ログインURL変更・WordPress標準のwp-login.phpから独自URLに変更
・変更後URLは担当者以外に非公開とする
・SiteGuard WP Plugin(国産)
・WPS Hide Login(簡単にURL変更可能)
管理者ユーザー名の保護・初期の「admin」は必ず変更する
・推測されにくいユーザー名を使用する
・管理画面上に著者アーカイブを表示させない(URLでID推測防止)
・Edit Author Slug(著者スラッグ変更)
・Username Changer(ユーザー名変更)
ユーザーID流出防止対策・著者ページ(authorページ)の無効化または非公開化
・REST APIからユーザー情報取得を制限する(ID推測防止)
・ユーザーIDに連番を避ける(手動調整)
・Disable REST API(REST API制限)
・Disable Author Archives(著者アーカイブ無効化)
・REST APIの独自調整(functions.phpで実装)
二要素認証(2FA)の導入管理画面ログイン時にパスワード+ワンタイムコードを要求し、不正ログインを防ぐTwo-Factor(公式)、Google Authenticator系、SiteGuard WP Plugin
ログイン試行回数の制限ブルートフォース攻撃(総当りログイン)対策として、一定回数のログイン失敗で一時的にアカウントをロックしたりIPをブロックしたりする仕組みを導入サーバーの独自機能、Limit Login Attempts Reloaded、セキュリティスイートプラグインの設定
ログイン監視と通知管理画面へのログインが発生した際に通知メールを送る、一定回数以上の失敗があれば管理者にアラートを出す等Wordfence、iThemes Security、WP Activity Log(ログ記録プラグイン)
海外IPなどのアクセスをブロックログイン試行が異常に多いIPや海外からのアクセスをブロックするサーバーの独自機能、.htaccess設定
エラーメッセージの制御ログイン失敗時のメッセージでIDやメールアドレスが存在するかどうか特定できないように設定するSiteGuard WP Plugin(エラーメッセージ制御)
管理画面へのIPアドレス制限・管理画面へのアクセスを許可するIPを限定する(海外や外部からの攻撃を防止)
・複数IPからログインする場合はVPN等を利用して限定する
SiteGuard WP Plugin(ログインページへのIP制限).htaccess設定

推奨の具体的施策の例

  • ログインURLの変更例
    https://example.com/wp-login.php

    https://example.com/custom-login
  • ユーザーID推測防止例
    著者ページへのアクセスを無効化し、
    URLパターン https://example.com/author/username などを廃止。
  • REST APIの制限例
    未認証ユーザーからのREST API経由でのユーザー情報取得を無効化
    functions.php に以下を追加)
add_filter('rest_endpoints', function($endpoints) {
    if (!is_user_logged_in()) {
        unset($endpoints['/wp/v2/users']);
    }
    return $endpoints;
});

これらの対策を併用し、管理画面への不正ログインやユーザーIDの流出を防止できます。

5. アクセス管理

対策内容目的・詳細対応方法・推奨ツール
管理画面のIPアドレス制限指定IPやVPN経由のみに管理画面へのアクセスを限定。不正アクセス防止。SiteGuard WP Plugin、.htaccess設定

6. バックアップ管理

対策内容目的・詳細対応方法・推奨ツール
定期バックアップ実施(DB・ファイル)万が一の事故や攻撃によるデータ損失からの復旧。サーバー側バックアップ機能、UpdraftPlus、BackWPup、VaultPress
バックアップデータの暗号化・安全管理バックアップ自体の流出や悪用防止。同上
復元テストの定期実施バックアップデータが正常に復旧可能であることを確認。運用上の定期実施

7. 監査・ログ管理

対策内容目的・詳細対応方法・推奨ツール
ユーザー操作履歴ログの記録不審な活動の監視、不正アクセス早期発見。WP Activity Log、Simple History
定期的なログレビューと監視体制構築異常や問題行動の早期発見・対応のため。同上+定期運用

8. 内部管理体制

対策内容目的・詳細対応方法・推奨ツール
権限管理の徹底(最小権限原則)不必要な権限による情報漏洩リスク削減。User Role Editor、Members
担当者変更時の迅速なアカウント管理異動・退職後のアカウント悪用防止。内部運用で徹底
社内端末セキュリティ管理(PC・モバイル)管理画面への不正アクセスやマルウェア感染防止。社内のエンドポイントセキュリティソリューション
定期的な社員教育とポリシー策定社員のセキュリティ意識向上、事故予防。インシデント対応計画を作成。社内研修、eラーニング

まとめ

WordPressのセキュリティ対策は多岐に渡りますが、セキュリティ対策をすべて実施することは現実的に難しく、また厳重な対策をしすぎると、管理者や利用者の利便性が低下することがあります。

ここで重要なポイントは、「すべてを守ろうとするのではなく、リスクの大きさに応じた優先順位をつけること」です。セキュリティ対策を検討する際には、「何を守る必要があるか」を明確にし、その上で対策のレベルを調整することが重要です。

例えば、個人情報(顧客の氏名、住所、連絡先など) は漏洩すると重大な事故となるため、最優先で保護します。

リスクが高いものほど厳しく、そうでないものほど緩やかに対応する「リスクベース・アプローチ」を採用しましょう。

最後に

株式会社スプールでは、個人情報保護にも柔軟に対応できるカスタムオーダーシミュレーターの開発を行っております。
カスタムオーダーシミュレーターの制作をご検討中でしたら、ぜひ一度ご相談下さい。

▼ユニフォームに特化したカスタムオーダーシミュレーター
カスタムオーダーシミュレーター「MyCOS(マイコス)」

▼アイテムやグッズに特化したカスタムオーダーシミュレーター
カスタムオーダーシミュレーター「MyCOS GOODS(マイコスグッズ)」

▼3Dモデルを利用したカスタムオーダーシミュレーター
3Dシミュレーターシステム「MyCOS 3D(マイコススリーディー)」

TOP