← デモ一覧 / デモ03
DEMO 03

番号を変えると、
他人の注文が見える

ログイン中の自分の注文ページです。URLの注文番号を1つ変えるだけで、ほかの人の注文まで表示されてしまうことがあります。 保存先のデータベースに「誰が読めるか」のルールがないと起きる問題です。

教材デモです。人物・住所・電話番号はすべて架空です。サーバーとデータベースの動きも、このページの中で再現しています。

1. 注文番号を変えてみる

注文ページ

  1. アドレスバー風の欄の最後にある 1001 を 1002 に書き換えて、Enter を押します。
  2. 1003 も試してみましょう。
  3. 次に「対策後のデータベース」に切り替えて、同じことをしてみましょう。

データベースの中

注文番号持ち主商品

2. 何が違ったのか

対策前

データベースは、頼まれた番号の注文をそのまま返していました。画面には自分の注文しか出ていなくても、番号を変えれば他人の分まで取り出せます。

対策後

データベースそのものに「読めるのは自分の注文だけ」というルールがあります。番号を変えても、他人の注文は返ってきません。

3. ポイント

  1. サーバーを通すだけでは安全にならない。「誰の、どの情報か」を確かめなければ、正規の画面を通らずに取り出せてしまいます。
  2. 保存先に「誰が読めるか・書けるか」のルールを置く。会員情報・注文・投稿など、人によって見せてよい範囲が違う情報は特に大切です。
  3. Supabase や Firebase では特に注意。ブラウザから直接データベースにつながる構成では、データベース側のルール(Supabase の RLS、Firebase のセキュリティルールなど)が守りの要になります。直接つながること自体が悪いのではなく、ルールを正しく設定することが大切です。
  4. 番号を推測しにくくするのは補助。注文番号をランダムな文字列にすると当てずっぽうは難しくなりますが、番号を知られたら終わりです。本命はルールです。

教材用の安全なデモです。人物・住所・電話番号・注文はすべて架空のダミーで、外部への送信は一切行いません。 「サーバー」と「データベース」の動きは、説明のためにこのページの中で再現したものです。