You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何隐藏Spring Boot暴露的API实体、Profile数据及敏感端点?

问题解决方案

你当前遇到的是Spring Data REST默认自动暴露所有Repository接口导致的安全风险,对应的解决方案如下:

  • 调整Repository暴露策略
    在application配置文件中添加如下配置,仅允许显式标注了@RepositoryRestResource的Repository被暴露:
    spring.data.rest.detection-strategy=annotated
    
    如果完全不需要Spring Data REST的功能,直接删除项目中spring-boot-starter-data-rest依赖即可从根源解决该问题。
  • 禁用/调整Profile和根路径接口
    可以直接关闭Profile端点的暴露:
    spring.data.rest.profiles.enabled=false
    
    如果需要保留部分Spring Data REST接口,可统一修改所有接口的根路径为内部非公开路径,避免对外暴露:
    spring.data.rest.base-path=/internal-api/rest
    
  • 新增接口权限校验
    引入spring-boot-starter-security依赖,给所有接口添加权限校验,默认引入后所有接口都需要登录才可访问,可根据业务需求自定义放行公开接口,其余接口仅允许认证后的用户调用。
Spring Boot需重点关注的默认暴露端点

Spring Data REST相关默认暴露内容

  • 所有继承了CrudRepository/JpaRepository的Repository对应的实体增删改查接口,支持分页、排序、关联查询
  • 所有实体的元数据Profile端点,路径格式为/profile/{实体名},返回实体的字段定义、支持的操作等完整元数据
  • 服务根路径的接口列表,返回所有已暴露的REST接口的访问链接

Spring Boot Actuator相关默认暴露端点

如果项目引入了spring-boot-starter-actuator依赖,默认会对外暴露/actuator/health和/actuator/info两个低风险端点,若配置了management.endpoints.web.exposure.include=*会暴露所有actuator端点,其中高风险端点包括:

  • /actuator/env:返回应用所有环境变量、配置参数,包含数据库密码、加密密钥等敏感信息
  • /actuator/beans:返回Spring容器中所有Bean的实例信息
  • /actuator/mappings:返回应用所有接口的路径映射规则
  • /actuator/loggers:支持查看和动态修改应用日志级别
  • /actuator/heapdump:支持下载应用的堆内存快照,可从中提取敏感业务数据
  • /actuator/shutdown:支持远程关闭应用,默认关闭,手动开启后风险极高

生产环境建议遵循最小暴露原则:不需要的功能直接移除对应依赖,必须保留的接口统一添加权限校验,避免自动配置导致的未知接口泄露。

内容的提问来源于stack exchange,提问作者Jason Chan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:36:02