Bei der Arbeit mit einer ressourcenbasierten Site (z. B. einer MVC-Anwendung oder einem REST-Service) haben wir zwei Hauptoptionen, wenn ein Client versucht, auf GET
eine Ressource zuzugreifen, auf die er keinen Zugriff hat:
- 403 , die besagt, dass der Client nicht autorisiert ist ; oder
- 404 , die besagt, dass die Ressource nicht vorhanden ist (oder nicht gefunden werden konnte).
Allgemeine Weisheit und übliche Praxis scheinen zu sein, mit der Wahrheit zu antworten - das ist ein 403. Aber ich frage mich, ob dies tatsächlich das Richtige ist.
Sichere Anmeldesysteme geben niemals den Grund für einen Anmeldefehler an. Für den Kunden ist also kein Unterschied zwischen einem nicht vorhandenen Benutzernamen und einem falschen Passwort feststellbar. Damit sollen Benutzer-IDs - oder schlimmer noch E-Mail-Adressen - nicht auffindbar gemacht werden.
Aus Sicht des Datenschutzes erscheint es viel sicherer, einen 404 zurückzugeben. Ich erinnere mich an den Vorfall, bei dem Berichten zufolge jemand die Gewinner einer Reality-Show (Survivor, glaube ich) herausgefunden hat, indem er sich ansah, welche Ressourcen auf der nicht vorhanden waren Seite gegen welche. Ich mache mir Sorgen, dass ein 403 möglicherweise vertrauliche Informationen wie eine Seriennummer oder eine Kontonummer preisgibt.
Gibt es zwingende Gründe , einen 404 nicht zurückzugeben? Könnte eine 404-Richtlinie an anderer Stelle negative Nebenwirkungen haben? Wenn nicht, warum ist die Praxis dann nicht üblicher?