Ich arbeite an einer typischen CRUD-Anwendung in ASP.NET MVC, wo es mehrere Benutzerkonten und jeder wird eine Reihe von Elementen haben.
Wenn ein Benutzer einen Artikel bearbeitet, tut er dies über eine URL wie /edit/5 wobei die Zahl die ID der Zeile in der Datenbank darstellt.
Ich habe Bedenken, dass ein Benutzer die ID einfach in die ID eines Artikels eines anderen Benutzers umwandelt und sie dann ändern kann. Um die ID zu schützen, habe ich mir folgende Lösungen überlegt:
- Verschlüsseln Sie es, damit es nicht so leicht verändert werden kann - aber dann brauche ich natürlich einen Code, um es jedes Mal zu entschlüsseln, wenn es zurückgeschickt wird.
- Ändern Sie das Datenbankschema so, dass neben der ID auch eine GUID erzeugt wird und diese in der URL verwendet wird.
-
Lassen Sie die lesbare ID wie sie ist, und schließen Sie die UserID des angemeldeten Benutzers in Abfragen für das Element ein, so dass die Abfragen wie folgt aussehen würden:
database.Items.SingleOrDefault(c => c.UserID == [aktuell eingeloggte Benutzer-ID] && c.ID == itemID);
Vielleicht gibt es einen besseren Weg oder einen Weg, an den ich noch nicht gedacht habe. Was ist Ihre bevorzugte Methode zum Schutz vor diesem Problem?