セキュリティを整える
中級ログイン画面の守りを整える。
= ID が見えても入られない守り方
⚖ このページは自分のサイトを守る人のための防御教育です。模擬サイトの中で流れを体験し、確かめるのは自分(自社)が管理するサイトだけにしてください。他人のサイトに許可なく試す行為は、不正アクセス禁止法などに触れるおそれがあります。
ID が見えると、何が起きるか(模擬サイト)
架空のサイト example.jp での出来事です。実在のサイトには何も送りません。守りを切り替えて、1手ずつ進めてください。
数字は教材用の仮定です。試せる速さは1秒に10回、「よくある文字列の一覧」は10,000個、一致するのは120番目としています。
回数制限で、どれだけ時間が延びるか
ログイン画面に1回ずつ試される場合の、最後の1つまで試し切る時間の目安です(1秒に10回・制限は5回失敗で15分ロック)。
| 試される範囲 | 制限なし | 制限あり |
|---|---|---|
| よく使われる文字列の一覧(1万個) | 約17分 | 約21日 |
| 数字だけ8桁 | 約116日 | 約571年 |
| 英小文字だけ8文字 | 約662年 | 約119万年 |
| 英数字(大小)10文字・ランダム | 約27億年 | 約4.8兆年 |
| 英数字(大小)16文字・ランダム | 1京年以上 | 1京年以上 |
読み方: 回数制限は「時間を延ばす」ものです。一覧に載る短いパスワードは、制限があっても時間の問題です。長くてランダムなら、制限が無くても現実的ではなくなります。どちらも要り、2段階認証がその保険になります。パスワードの強さも確かめてください。
自分のサイトで確かめる
リンクを作るだけで、totonoe からサイトへは何も送りません。リンクはあなたのブラウザが新しいタブで開きます。
結果の読み方
- /?author=1 を開いて、アドレスが /author/◯◯/ に変わったら、◯◯ は「投稿者スラッグ」です。既定ではログイン名から作られるので、ログイン名と同じことが多くあります。トップのままなら、塞がっている可能性があります(投稿が無いユーザーは転送されません)。
- /wp-json/wp/v2/users は、投稿のあるユーザーの id・name・slug などが JSON で出ます。slug がログイン名と同じなら、ID が見えています。
- 404 や、中身が空の []、認証を求める応答なら、塞がっている可能性があります。別の入口が残っていないかも、セキュリティ担当と見ておきます。
- 見えてしまったら、表示名をログイン名と同じにしないこと、パスワードを長くすること、下の対策を入れることです。
やることと設定を書き出す
あなたのサイトの状況に答えると、やることの一覧と設定例が出ます。貼る前に、必ずファイルのバックアップを取ってください。
サイトの守りのヘッダー(.htaccess)
ログインとは別に、サイト全体の守りとして付けられるヘッダーです。Header always set を使うので、mod_headers が有効な Apache が前提です。選ぶと、貼る文面ができます。
一度出すと、max-age の間は取り消せません。まず5分で試します。
CSP は壊しやすいので、止めずに報告するだけの Report-Only で試してから整えます。
WordPress 以外のログイン画面も点検する
社内システム・会員サイト・クラウドサービスの管理画面など。答えると、点数とやることが出ます。
関連するツール
- パスワードの強さを確かめる:長さと使い回しの目安
- パスワードを作る:長くてランダムなもの
- 確認コード(TOTP):2段階認証のしくみ
- パスキー:パスワードに代わる方法
- .htaccess を整える
- PHP を整える
- HTTP のしくみ:ヘッダーとは
- TLS(鍵マーク):HTTPS のしくみ
- XSS のしくみ
- SQL インジェクションのしくみ
出典・時点(2026年11月時点)
- WordPress 公式「Brute Force Attacks」:長く使い回さないパスワード、2段階認証(本体には付属しない)、回数制限、XML-RPC、IP 制限(wp-login.php と xmlrpc.php に限る)、admin という名前を避ける
- WordPress 公式「Hardening WordPress」:admin のような推測されやすい名前を避ける、強いパスワード、2段階認証、管理画面の保護
- rest_endpoints フィルタ:利用できる REST API の入口の配列を書き換えるフィルタ(4.4.0 から)
- REST API Handbook「Users」:既定の応答は id・name・url・description・link・slug・avatar_urls・meta(username や email は編集用の文脈のみ)
- WP_REST_Users_Controller・redirect_canonical()・wp_insert_user():権限が無いとき投稿のあるユーザーに限る処理、?author=数字(投稿者に投稿が1件以上あるとき)が /author/スラッグ/ へ転送される処理、スラッグの既定がログイン名から作る URL 向けの文字列であること(ソースコードの記述)
- SiteGuard WP Plugin(ログインロック・ログインページ名の変更・CAPTCHA・管理ページの IP フィルタ・XML-RPC の防御・Author クエリのブロックなどが説明に載っています)/Limit Login Attempts Reloaded(既定では WordPress は無制限にログインを試せること、ログイン試行の制限・2段階認証などが説明に載っています)
- MDN Web Docs:Strict-Transport-Security・CSP Report-Only・X-Frame-Options・Referrer-Policy
- 模擬サイトの名前・ユーザー・数字はすべて架空です。回数制限の所要時間は、1秒に10回試せるという仮定の計算です。
このツールについて
「ID は外から見える。だからパスワードは長く・使い回さず・できれば回数制限を」——その理由を、架空のサイトで1手ずつ確かめます。自社サイトで確かめる手順と、設定例、守りのヘッダーの作成まで。入力は外に出ません。
ID は外から見えることがある前提で、長く使い回さないパスワード・回数制限・2段階認証のどこで止まるかを架空のサイトで確かめ、自社サイトの確認手順と設定例を出します。入力は外に出ません。
主な機能
- 架空サイトで、ID が見える入口から入られるまでを1手ずつ体験
- 回数制限・2段階認証・ID 漏れ塞ぎを切り替えて、止まる所を確認
- 回数制限で総当たりの時間がどれだけ延びるかを数字で表示
- 自分のドメインから確認用リンクを作成(サイトへは通信しない)
- functions.php・.htaccess の設定例と、守りのヘッダーの生成(コピー付き)
よくある質問
Q. /?author=1 を付けるとなぜユーザー名が分かるのですか。
A. WordPress は、投稿のあるユーザーを ?author=番号 で指定すると、そのユーザーの投稿者ページ(/author/◯◯/)へ転送します。◯◯は投稿者スラッグで、既定ではログイン名から作られるため、ログイン名と同じことが多くあります。
Q. ID が見えるだけで、入られてしまうのですか。
A. ID が見えること自体は入られることではありません。ただし、パスワードだけを当てればよい状態になります。パスワードが短い・使い回しだと破られやすいので、長くして使い回さず、回数制限や2段階認証を重ねます。
Q. 回数制限があればパスワードは短くてもよいですか。
A. よくありません。回数制限は試す速さを落とすもので、よく使われる文字列に当たるパスワードは、時間がかかっても破られます。長くてランダムなパスワードと2段階認証の組み合わせが基本です。
Q. WordPress には最初からログインの回数制限がありますか。
A. WordPress は、既定では何回でもログインを試せます。回数制限が要る場合は、プラグインやサーバー側の機能で足します。例として SiteGuard WP Plugin や Limit Login Attempts Reloaded があります。
Q. このページに自分のドメインを入れると、サイトに何か送られますか。
A. 送られません。入れたドメインから確認用のリンクを作るだけで、開くのはあなたのブラウザです。自分(自社)が管理するサイトだけで確かめてください。
入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。
続けて整える
この内容は、研修でも扱っています
totonoe.tech を運営する株式会社Koinobori は、法人向けの研修サービス「NOBORIBA®」も運営しています。 ここで手を動かした内容を、講師から教わる形の研修です。このページの道具は無料のまま、登録もいりません。