2017-01-05 3 views
0

Angenommen, in meinem System möchte ein Benutzer sein Passwort ändern. Er sendet eine PUT Anfrage, die dann UserRepository.save() aufruft. Wenn er in die Anfrage eingreift, kann er [user].admin_rights=1 oder ähnliches setzen.Wie verhindere ich Sicherheitsrisiken mit Spring JPA speichern?

Jetzt konnte ich wahrscheinlich @Column(updatable=false) auf das jeweilige Feld hinzufügen:

@Entity public class User { 
    @Column(updatable=false) private Boolean admin_rights; 
    // .... 

, aber ein Admin erfordern möglicherweise dieses Feld 1 Tag zu aktualisieren!

Muss ich eine benutzerdefinierte Abfrage schreiben, die angibt, welche Spalten aktualisiert werden sollen? Oder gibt es eine Möglichkeit, dieses Berechtigungsproblem innerhalb der User Einheit zu lösen?

+0

Sehen Sie sich die Federsicherheit an, besonders vielleicht mit einem '@ PreAuthorize'-Abschnitt. – CollinD

Antwort

3

Es liegt in der Verantwortung der Anwendung, Berechtigungen wie diese durchzusetzen. Auf Ihrem Endpunkt sollten Sie überprüfen, ob die eingehende Entität gültig ist, bevor Sie versuchen, sie zu speichern. In diesem Fall bedeutet "gültig", dass der Benutzer nicht versucht, seine Rechte unangemessen zu erhöhen. Die Anwendung sollte nie blindlings Daten vertrauen, die von den Benutzern gesendet werden.

Verwandte Themen