it-swarm.com.de

Zugriff verweigert: 403 oder 404?

Welchen Statuscode sollte zurückgegeben werden, wenn jemand Zugriff auf die Entität anfordert, die er nicht sehen darf? Sie werden wahrscheinlich sagen, dass es 403 ist: Verboten. Aber ist es üblich, stattdessen 404 zurückzugeben? Ich möchte nicht, dass jemand weiß, dass diese Entität überhaupt existiert, wenn er es nicht sehen darf. Was denkst du?

11
Robo Robok

Verwenden Sie 404 nicht gefunden.

Der Statuscode 404 kann auch in 403 Szenarien verwendet werden, wenn der Server nicht den Grund zurücksenden möchte, warum er die Anforderung nicht bearbeiten möchte. Ein gutes Beispiel ist, wenn der Server eine Art Angriff feststellt, bei dem es sich möglicherweise um einen Brute-Force-Angriff handelt . In diesem Fall antwortet der Server mit 404 Nicht gefunden anstelle von 403 Verboten und einer Erklärung.

Quelle: Pro ASP.NET-Web-API-Sicherheit

19
Teoman shipahi

403 Forbidden zurückgeben Wenn Sie dies für jede Anfrage zurückgeben, zu der der Client nicht berechtigt ist, und wenn Sie never 404 Not Found angeben, weiß der Client nichts.

Es hängt alles davon ab, wie wichtig dies für Sie ist:

Ich möchte nicht, dass jemand weiß, dass diese Entität überhaupt existiert, wenn er es nicht sehen darf.

Wenn dies wirklich wichtig ist, geben Sie immer 403 Forbidden zurück.

0
user1907906

Es hängt davon ab..

Wenn die URLs der Endpunkte vertrauliche Informationen enthalten (z. B. in der Dropbox-API verweisen Sie auf Dateien anhand ihrer Namen und nicht auf deren IDs - also enthalten die URLs die Dateinamen) - oder verwenden Sie sequentielle IDs (z kann brutal erzwungen werden), Rückgabe 404.

Wenn Sie eine Funktion "Zugriff anfordern" für Ressourcen unterstützen müssen, für die Sie keine Berechtigungen haben, geben Sie 403 zurück, damit der Client den Unterschied erkennen kann.

Wenn Ihre API IDs verwendet und niemals Informationen als Teil ihrer URLs enthüllt und Sie UUIDs als IDs verwenden, würde ich 403 verwenden. Wie bei vielen bekannten und sehr sicheren Anwendungen heutzutage (Google, Microsoft usw.) ..).

0