2026年6月2日
2026年6月2日
WordPressのRSS・APIを認証済みユーザーのみに制限する方法
はじめに
本記事では、WordPressサイトのRSSフィードとREST APIを認証済みユーザーのみが利用できるように制限する方法について紹介します。この設定は、公開情報に対するアクセスを厳格化し、サイトのセキュリティを向上させるのに役立ちます。
症状・背景
- 不特定多数によるRSSフィードのスクラビング: ユーザーがいないときにサイトのRSSフィードを大量にスクレイピングされると、サーバーリソースの浪費やSEOの問題につながる可能性があります。
- APIエンドポイントへの非認証アクセス: REST APIは便利ですが、公開されている場合、攻撃者が利用する可能性があります。特にwp-jsonというデフォルトのエンドポイントは注意が必要です。
- データプライバシーの保護: 特定のユーザーがアクセスすべきコンテンツをRSSフィードで共有する場合、その情報を誰もが閲覧できるのは問題となります。
手順・設定方法
ステップ1: RSSフィードの公開範囲を調整
# wp-config.phpファイルを開き、以下の行を追加または編集します。
define('DISALLOW_FILE_EDIT', true);
define('WP_CACHE', true);
# 保護されたRSSフィードを作成するには、次のフィルターファンクションをfunctions.phpに追加します。
function restrict_rss_feed($query) {
if (!is_user_logged_in() && $query->get( 'feed' )) {
wp_die('ログインが必要です。', 401);
}
}
add_filter('pre_get_posts', 'restrict_rss_feed');
ステップ2: REST APIのアクセスを制限
# REST APIへの認証が必要なエンドポイントのみにアクセスできるようにするには、wp-jsonディレクトリで.htaccessファイルを作成または編集します。
AuthUserFile /path/to/htpasswd-file
AuthName "Protected WordPress REST API"
AuthType Basic
<FilesMatch "\.(json|php)$">
Require valid-user
</FilesMatch>
# ユーザーとパスワードを生成するには、以下のコマンドを使用します。ここで「username」と「password」は適切な値に変更してください。
htpasswd -b /path/to/htpasswd-file username password
ステップ3: カスタムプラグインの追加
# wp-cliを用いてREST APIアクセス権限の制御を行うカスタムプラグインをインストールします。以下はその一例です。
wp plugin install rest-api-authentication --activate
# プラグインが適切にインストールされたことを確認し、設定ページから必要なアクセス権限をユーザー毎に割り当てます。
ステップ4: 定期的な監視とログのレビュー
# SSHを使用してサーバーへ接続し、ログファイルを定期的にチェックします。例えば、Apacheのエラーログは以下のように確認できます。
tail -f /var/log/apache2/error.log
# また、アクセスログにも目を通すことで、不審なアクセスパターンを見つけ出すことができます。
注意事項
- サイト全体への影響: RSSフィードやAPIを非公開にすると、その情報を必要とするユーザーがアクセスできなくなる可能性があります。必ず必要な変更だけを行い、他の機能には影響を与えないように注意してください。
- ユーザーエクスペリエンスの低下: 認証が必要なRSSフィードやAPIは、匿名ユーザーにとっては不便です。適切な対策を講じて、ユーザー体験を損なわないよう配慮しましょう。
- セキュリティ上の注意: 上記の方法で設定を行った後も、定期的なセキュリティチェックとアップデートを忘れずに実施してください。
- パフォーマンス/運用上の注意: 大規模なサイトでは、これらの設定がサーバーの負荷に影響を与える可能性があります。適切な監視と最適化を行うことが重要です。
まとめ
1. RSSフィードの保護: RSSフィードを認証済みユーザーのみに公開することで、不正アクセスやスクラビングからサイトを守ることができます。
2. REST APIへのアクセス制限: REST APIエンドポイントに対しては、必要最小限のアクセス権限を与えることでセキュリティを強化します。
3. カスタムプラグインの利用: プロフェッショナルなプラグインを利用することで、より柔軟で安全な設定が可能です。
4. 定期的な監視とログレビュー: 安全性を維持するためには、サイトの状態を常時確認し、不審な動きがあれば速やかに対応することが大切です。
5. ユーザーエクスペリエンスとのバランス: セキュリティとユーザー体験のバランスを取りながら設定を行いましょう。
関連記事: