1

注釈を使用して、許可されていないユーザーがデータにアクセスするのを阻止しましたが、認証されたユーザーが互いのレコードを編集および削除するのを阻止するという問題に直面しています。これがログオンしたユーザーlocalhost/User / Edit / 43によって入力された場合、レコードが変更される可能性があります。あなたでさえ、レコードはログオンしたユーザーのものではありません。

これは、ログオンしたユーザーだけが自分のレコードを表示できるようにするためにこのクエリに使用したものです。

 var Adverts = from b in db.Adverts
                        .Where(c => c.Customer.Username == User.Identity.Name)
                                         select b;

ユーザーの編集と削除のセキュリティを実装しようとするのが難しい。どんなアドバイスでも大歓迎です

4

2 に答える 2

2

上記で行ったことは正しいですが、実際に変更を適用する前に、このロードを編集および削除してみてください。このようにして、レコードが返されないかどうかを確認し、404(許可されていないのではなく見つからない)を返すことができます。これらは現時点でのデータ読み込みルールです。同じタイプのロジックは、ユーザーID、会社IDなどに基づいてデータをロードするだけのマルチテナントアプリケーションにも適用されます。

テーブルのいくつがユーザーID、会社IDなどを必要とするかがすぐにわかります。

于 2012-04-15T15:11:40.380 に答える
1

まず、ユーザーがレコードに移動する方法を変更できます。現時点では、URLを介して(GETを使用して)お互いのレコードにアクセスできるようにしています。POST(フォーム送信)を介したアクセスのみを許可することで、これをもう少し制限することができます。データが特に機密性の高いものである場合は、この変更を行うことを強くお勧めします。

ただし、いずれにしても、データの機密性が高い場合は、変更しようとしているものを変更する権限があるかどうかを確認する必要があります。これはフレームワークによって提供されません-あなたはそれをコーディングする必要があります。あなたがページを表示する前に、誰がレコードを所有しているかを確認し、彼らがあなたのセキュリティを回避しようとした場合は、401を送り返します。しかし、彼らが変更を見て満足しているかもしれないので、彼らが変更をPOSTしようとするときにこれを行うことを決定するかもしれません。

これがお役に立てば幸いです。

于 2012-04-15T06:39:11.570 に答える