Updated 2026年4月10日

このページは、各ステージで繰り返し出てくる考え方を、やさしく説明するためのページです。

クライアントを信用しすぎない

ブラウザで持っている値は、利用者が変えられる可能性があります。
そのため、サーバーは受け取った値をそのまま採用せず、自分で確認する必要があります。

関連ステージ:

認証と認可は別

認証は「誰なのか」を確かめることです。
認可は「その人がその操作をしてよいか」を確かめることです。

ログインしていても、他人のデータや管理機能を触ってよいとは限りません。

関連ステージ:

画面を隠しても守れない

ボタンを隠しただけでは、URL や API を直接呼ばれたときに防げません。
本当に重要なのは、サーバー側で拒否することです。

関連ステージ:

出力も安全にしないといけない

入力値に問題がなさそうに見えても、表示する方法が危険だと問題になります。
保存時だけでなく、表示時も安全であることが必要です。

関連ステージ:

ログイン済みでも状態変更は保護が必要

Cookie ベース認証では、本人のつもりでない送信でも Cookie が付くことがあります。
そのため、状態変更処理には追加の保護が必要です。

関連ステージ:

返さないことも防御

フロントで表示していなくても、API で返していれば取得できます。
必要な項目だけ返すことが大切です。

関連ステージ:

GitHubでこのページを見る GitHubで編集する