Der erste Schritt, um sicherzustellen, Datei-Datei ist, dass Sie nie für den Benutzer selbst keine IDs haben in die URL Zum Beispiel niemals http://example.com/?user=10
. Sie sollten die Benutzer-ID immer von ihrer Authentifizierung erhalten und nicht von der URL (oder den gebuchten Werten).
Der zweite Schritt besteht darin, diese ID in Ihren Abfragen zu verwenden. Nehmen wir zum Beispiel an, dass sie http://example.com/images/100
suchen, dann sollten Sie in Ihrer Datenbank einen Mechanismus haben, der die Eigentümerschaft des Assets mit dem Benutzer verknüpft, entweder eine Benutzer-ID oder eine Zuordnungstabelle von IDs zu Assets usw. Auf diese Weise, wenn der Benutzer ist kein Zugriff erlaubt, es wird nur eine leere Ergebnismenge zurückgegeben. Es ist unmöglich, dass die Daten zurückgegeben werden, und die leere Ergebnismenge sollte Ihrer Seite mitteilen, dass das Element nicht existiert (nicht unbedingt ein Autorisierungsfehler, nur dass das Objekt nicht existiert).
Drittens sollten alle Seiten, die inhärent über den Benutzer sind, wie z. B. ein Benutzerprofil, eine Kontoseite oder ein Dashboard, in der URL niemals eine ID haben, sondern nur automatisch zur Seite der authentifizierten Benutzer.
Wenn Sie schließlich verhindern müssen, dass der Benutzer auf eine ganze Seite oder einen Seitensatz zugreift, sollten Sie dies im OnAuthorization-Ereignis oder einem ähnlichen Ereignis (benutzerdefiniertes Attribut, Basisklasse usw.) oder mithilfe der integrierten in der Attributautorisierung und verwenden Sie die rollenbasierte Autorisierung. Führen Sie niemals Autorisierung im PageLoad oder einem ähnlichen Ereignis durch (z. B. die Controller-Aktion), da bis zu diesem Zeitpunkt bereits viel Arbeit in der Pipeline passiert ist. Es ist am besten, den Zugriff lange vor dem Einrichten der Seite zu blockieren. Autorisierungsereignisse geschehen am Anfang der Pipeline.
Überprüfen Sie diesen Artikel: https://weblogs.asp.net/jongalloway/asp-net-mvc-authentication-customizing-authentication-and-authorization-the-right-way – TrevorBrooks