Скрытие профилей и данных сущностей в открытом API

#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 . Это скроет ваши сущности и все прямые ссылки на них от раскрытия.