𝗦𝘁𝗼𝗽 𝗦𝗮𝗮𝗦 𝗗𝗮𝘁𝗮 𝗟𝗲𝗮𝗸𝘀 𝗶𝗻 𝗟𝗮𝗿𝗮𝘃𝗲𝗹

B2B SaaSを運営しているなら、クライアントのデータを分離して管理しなければなりません。

多くの開発者は、テナントフィルターを手動で追加しています。すべてのクエリに where 句を追加するのです。

これがヒューマンエラーを招きます。レポート作成時に開発者が1行書き忘れただけで、クライアントAがクライアントBのデータを見てしまうことになります。これは致命的な事態です。

Global Query Scopesを使って、これを自動化しましょう。

手順は以下の通りです:

  • スコープクラスを構築する。このクラスは現在のテナントIDを特定し、すべてのデータベース検索にフィルターを追加します。

  • Traitを作成する。このTraitはスコープを登録します。また、新しいレコードを作成する際にテナントIDを設定します。

  • モデルでそのTraitを使用する。これにより、コントローラーをクリーンな状態に保てます。

これでゼロトラスト・レイヤーが構築されます。Invoice::all() のような単純な呼び出しであっても、セキュリティが保たれます。

安全性は設計の一部となります。もはや手動のチェックリストではありません。

Source: https://dev.to/iprajapatiparesh/prevent-saas-data-leaks-automated-eloquent-scopes-in-laravel-f6o