Lassen Sie uns diesen Anwendungsfall betrachten:API-Design - Ist es in Ordnung, Benutzerdaten vom Authentifizierungs-Token abzurufen?
1) Ich meine API Login Endpunkt mit Benutzername und Passwort nennen und meine Auth-Token bekommen, dass ich zu jedem aufeinander folgenden Anforderung an den Header als Authorization: Bearer <token>
hinzufügen.
2) Ich rufe /current-user
Endpunkt mit keine Parameter, nur mit Authorization-Header. Der Server autorisiert den Benutzer mit dem Token und erhält die Benutzer-ID von diesem Token. Dann findet er den Benutzer nach ID in der Datenbank und gibt seine Daten zurück.
Meine Frage ist, ob dieser Ansatz nicht unsicher ist. Ich frage mich, was wäre, wenn ich ein Angreifer wäre und /current-user
Endpunkt mit zufällig generierten Tokens aufrufen würde. Sobald ich gelegentlich echte Token übereinstimmte, würde der Server mir die Daten anderer Benutzer zurückgeben.
Ist es nicht notwendig, die Benutzer-ID auf dem Client zusammen mit den Token- und Anrufanforderungen zu speichern? Z.B. /user?id=<stored user id>
mit Autorisierung Header und loswerden /current-user
Endpunkt? Danach würde eine Art ACL auf dem Server feststellen, ob das verwendete Token den Zugriff auf den Benutzer mit der übergebenen Benutzer-ID erlaubt hat.
(Ich fand es gibt auch Token JWT, aber ich sehe das gleiche Problem. Als Angreifer würde ich irgendwie andere Benutzer-Token und Server mir würde zurückkehren, um seine Daten zu erraten verwalten)
Hm hm ich verstehe. Also mache ich das Token im Grunde lange genug. BTW: Es wird nicht "n + m" sein, sondern mehr, weil er die Kombination erraten muss, die ich denke (?) – simPod