私は、自動車ディーラーが自動車在庫を管理するウェブサイトを持っていると言います。各自動車販売店にはそれぞれcompany_id
があり、そのスタッフはstaff_id
のスタッフアカウントを使用します。ユーザーはデータベースクエリのアクセス権を持っていますか?
スタッフメンバーがページにあるときhttp://sellcarsfaster.com/inventory/car/jdksf9843
彼らは会社の車にidが表示されるはずです。彼らがこのURLをコピーして仲間のスタッフに送ったら、その他のスタッフは車を見ることができるはずです。しかし、URLがスタッフ以外のメンバーに送信された場合、そのユーザーは車を見ることができません。車は、その自動車販売店のスタッフにのみアクセス可能である必要があります。
これをさらに進めていくと、さまざまな関係のあるさまざまなアセットの多種多様な可能性のあるデータベースクエリのアクセス権を確認するにはどうすればよいでしょうか?このような次のように:
http://sellcarsfaster.com/inventory/car/jdksf9843/tires/93sl9843
http://sellcarsfaster.com/insurance/2djlasd8
http://sellcarsfaster.com/history/event/8o4jsdfj
は、このようなアプリで表示権限をチェックするためのベストプラクティスはありますか?バックエンドで何をすべきか?認証には計算量の多いデータベースクエリを実行する必要がありますか?各データベースクエリに対してカスタム認証関数を記述する必要がありますか? staff_id
またはcompany_id
に基づいて認証するのは安全ですか?
誰かが正しい方向に私を指し示すことができれば、それは非常に感謝しています!
P.S. 私は現在、バックエンドにJSON Webトークン認証を持っていますが、異なる企業のスタッフがurlだけでインベントリを見ることはできません。あなたは、あなたが直接IAMポリシーを使用して、エンドポイントを認可することができ、APIゲートウェイを介して公開AWS CognitoとNodeJSバックエンドを使用することを計画している場合は、ユーザ認証
問題は、これらのすべての異なるクエリがテーブルの 'company_id'にアクセスできないということです。例えば。 'タイヤ 'には' company_id'はありませんが 'car'には' company_id'があります – Kangzeroo