2026年9月12日
2026年9月12日
WordPressのSQLインジェクション対策
はじめに
WordPressは世界で最も人気のあるオープンソースのCMSです。しかし、その普及とともにSQLインジェクションなどのセキュリティ上の脅威も増加しています。SQLインジェクションとは、Webアプリケーションを通じて悪意のあるSQLコードが実行される攻撃方法であり、データベースへの不正アクセスや情報漏洩を引き起こす可能性があります。この記事では、WordPressサイトの管理者がSQLインジェクション対策を講じるための基本的なステップと設定方法について説明します。
症状・背景
このテーマが必要になる主な場面:
- WordPressサイトへのアクセスに問題がある場合
- ユーザーからのフィードバックで不審なエラーメッセージが表示される場合
- 他のサーバー上のサイトのデータベースが影響を受けた場合
- 定期的なセキュリティスキャンやオペレーションレビューを通じて脆弱性が見つかった場合
手順・設定方法
ステップ1: パスワード管理と更新
# サイト管理者用の強力なパスワードを設定します。
wp user update <ユーザーID> --user_pass=<新しいパスワード>
# データベース接続情報も定期的に更新します。
wp config create --dbname=<データベース名> --dbuser=<DBユーザ名> --dbpass=<新パスワード>
ステップ2: SQLインジェクション対策プラグインのインストール
# ScanWPなどのセキュリティスキャンと防御機能を含むプラグインをインストールします。
wp plugin install scanwp --activate
# プラグインを更新して最新の脆弱性対策を適用します。
wp plugin update scanwp
ステップ3: wp-config.phpファイルへのセキュリティ設定
# データベース接続情報を暗号化するためのSaltキーを追加します。
echo "define('AUTH_KEY', '密鍵1'); // 定義されたキー" >> wp-config.php
echo "define('SECURE_AUTH_KEY', '密鍵2');" >> wp-config.php
echo "define('LOGGED_IN_KEY', '密鍵3');" >> wp-config.php
# データベース接続情報の保護を強化します。
sed -i 's/database_name_here/<データベース名>/g' wp-config.php
sed -i 's/username_here/<ユーザー名>/g' wp-config.php
ステップ4: FTP/SFTPアクセス権限の管理
# WordPressがFTP/SFTPアクセスを必要とする場合、適切な認証情報を設定します。
wp option update fileupload_url "ftp://<ユーザー名>:<パスワード>@<ホスト>/"
# 既存のファイルパーミッションを確認し、修正します。
find . -type f -exec chmod 644 {} \;
注意事項
- パスワードは定期的に変更し、強力なものを使用すること(例:大文字と小文字、数字、特殊記号の混在)
- セキュリティプラグインは最新版を使用する
- wp-config.phpファイルは他の公開ディレクトリとは別に保管することを検討する
- FTP/SFTPアクセス権限が不要な場合、その機能を無効化することが推奨される
まとめ
1. パスワード管理: 強力なパスワードと定期的な更新は基本中の基本です。
2. セキュリティプラグイン: セキュリティスキャンや防御機能が搭載されたプラグインを活用しましょう。
3. wp-config.phpの設定: Saltキーの追加やデータベース接続情報の暗号化は重要な手順です。
4. FTP/SFTPアクセス権限管理: 必要最小限に制限し、適切な認証情報を使用します。
5. 定期的な監査: セキュリティ対策を常に最新かつ効果的に保つためにも、定期的なレビューが必要です。
関連記事: