Я использую симпатичную настройку vanilla spring-boot-starter-data-rest
и включил метод PATCH
. Все работает, но у меня есть проблема с безопасностью и задаюсь вопросом, какой рекомендуемый способ ее смягчить.
Проблема заключается в том, что PATCH
path
позволяет обновлять объекты, доступные для доступа, с другой конечной точки. Итак, предположим, что у меня есть конечная точка comments
и конечная точка article
. У каждого комментария есть одна ассоциация со своей статьей. Пользователь, имеющий разрешение на редактирование комментария, может тогда сделать что-то вроде этого:
PATCH http://some.domain.foo/api/comments/1234
Content-Type: application/json-patch+json
[
{ "op": "replace", "path": "/article/title", "value": "foobar2" }
]
и тем самым изменить заголовок статьи.
Ясно, что это не хорошо.
В этом случае для других частей API связь с "статьей" должна быть обходимой. Но он должен быть доступен только для чтения.
Итак... как это сделать в Spring?
Перехватить запрос? Внедрить метод обработчика? Создать собственный контроллер с нуля?
Спасибо!