API保護
API保護は、WordPress REST API および XML-RPC のセキュリティを強化する機能群です。不要なエンドポイントの無効化、レート制限、ユーザー列挙防止を管理画面から設定できます。
なぜAPI保護が重要なのか
REST API 診断で問題が検出された場合、そのまま放置するとセキュリティリスクになります。しかし REST API を完全に無効化すると、Gutenberg エディタやプラグインの動作に支障が出ます。
API保護は、必要なAPIは残しつつ、危険なエンドポイントだけを選択的にブロックするアプローチです。
機能一覧
1. エンドポイント制御
個別のREST APIエンドポイントの有効/無効を設定できます。
| 保護対象 | 説明 | デフォルト |
|---|---|---|
| /wp/v2/users | ユーザー一覧の取得をブロック | ブロック |
| /wp/v2/users/me | ログインユーザー自身の情報 | 許可 |
| ?author=N | Author IDによるユーザー列挙 | ブロック |
| oEmbed Author | oEmbedレスポンスの著者名 | 削除 |
2. XML-RPC 制御
| 設定 | 説明 | デフォルト |
|---|---|---|
| XML-RPC 完全無効化 | xmlrpc.php へのアクセスを遮断 | 有効(推奨) |
| Pingback 無効化 | pingback.ping メソッドのみ無効 | 有効 |
| アプリケーションパスワード | REST API のアプリケーションパスワード | 無効化 |
3. レート制限
APIエンドポイントへのリクエスト数を制限し、API経由の自動化された攻撃を防止します。
| 設定項目 | 説明 | デフォルト |
|---|---|---|
| 最大リクエスト数 | 時間枠あたりの最大リクエスト | 60回/分 |
| ブロック時間 | レート超過時のブロック時間 | 5分 |
| 除外パス | レート制限から除外するパス | /wp/v2/posts(管理画面用) |
設定方法
- SentinelSecurity → REST API → API保護 を開きます
- 各保護項目のトグルスイッチで有効/無効を切り替えます
- レート制限のパラメータを設定します
- 保存 をクリックします
ユーザー列挙防止の仕組み
ユーザー列挙防止は複数の経路を同時に保護します。
| 列挙手法 | 対策 |
|---|---|
| /wp/v2/users | エンドポイント自体をブロック |
| ?author=1, ?author=2... | Author Archives リダイレクトを無効化 |
| oEmbed | レスポンスから author 名を削除 |
| RSS Feed | feed からの author 情報を削除 |
Gutenberg・プラグインとの互換性
API保護を有効にしても、認証済みユーザー(ログイン済み管理者など) からのAPIリクエストは制限されません。
- Gutenberg エディタ: 正常動作(認証済みリクエストは許可)
- WooCommerce REST API: 正常動作(認証付きリクエスト)
- Contact Form 7: 正常動作
- Jetpack: XML-RPC を無効化した場合、一部機能に制限あり
注意事項
- XML-RPC を使用するアプリケーション(旧式のモバイルアプリなど)がある場合は、XML-RPC の無効化を慎重に検討してください
- レート制限は、正当な大量APIリクエスト(一括インポートなど)にも適用されます。一時的に解除が必要な場合は設定で調整してください