#java #spring #spring-boot #api #spring-security
Вопрос:
Я относительно новичок в spring boot, и недавно я заметил, что переход к моему URL-API позволит любому получить доступ ко всем моим сущностям и профилям сущностей.
Например, собирается api.example.com/exampleEntity
(заменить example.com с моего личного сайта) перечислит все объекты, которые существуют в моей базе данных, и при переходе на api.example.com/profile/exampleEntity
отобразит все выходные данные. Кроме того, переход к api.example.com
покажет такой вывод:
{
"_links" : {
"testEntities" : {
"href" : "http://*redacted*:8080/testEntities"
}
}
}
Теперь, очевидно, мне не нужно объяснять, почему это может быть плохой идеей. Как нам скрыть это, и есть ли какие-либо другие открытые конечные точки, которые открывает spring, о которых я должен знать?
Спасибо!
Ответ №1:
При объявлении вашего репозитория используйте аннотацию
@RestRepositoryResource(exported = false)
вместо @RestRepositoryResource
. Это скроет ваши сущности и все прямые ссылки на них от раскрытия.