2017-01-05 2 views
0

Предполагая, что в моей системе пользователь хочет изменить свой пароль. Он отправляет запрос PUT, который затем вызывает UserRepository.save(). Если он взломает запрос, он может установить [user].admin_rights=1 или аналогичный.Как предотвратить риски безопасности, используя сохранение Spring JPA?

Теперь я мог бы добавить @Column(updatable=false) в соответствующее поле:

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

, но администратор может потребовать, чтобы обновить это поле один день!

Должен ли я написать собственный запрос для этого, указав, какие столбцы нужно обновить? Или есть способ решить эту проблему разрешения в объекте User?

+0

Проверьте весеннюю безопасность, особенно, возможно, используя перехват '@ PreAuthorize'. – CollinD

ответ

3

Ответственность за применение таких прав лежит на приложении. На конечной точке вы должны убедиться, что входящий объект действителен, прежде чем пытаться его сохранить. В этом случае «действительный» означает, что пользователь не пытается ненадлежащим образом поднять свои права. Приложение никогда не должно слепо доверять данным, которые отправляются от пользователей.

Смежные вопросы