如何在Spring Boot中隐藏GET API接口防止公众通过浏览器直接访问
Spring Boot 敏感GET接口防公众访问解决方案
核心问题说明
CORS仅能限制浏览器跨域Ajax请求,对用户直接在地址栏输入接口地址、用接口调试工具构造请求的场景完全无效,因此无法实现接口保护。
最优解决方案:添加身份与权限校验
这是唯一可以从根本上解决问题的方案:
- 引入
Spring Security框架或自定义拦截器,给所有敏感接口添加请求拦截规则 - 常用身份校验方案二选一即可:
- 基于Session/Cookie:用户登录成功后,后端下发加密的身份Cookie,后续前端请求会自动携带,后端校验Cookie有效性,无效直接返回401状态码
- 基于Token:用户登录成功后获取后端返回的JWT/自定义Token,后续请求将Token放在请求Header中携带,后端校验通过才允许访问
- 针对
https://my-api-url.com/employee/all这类高敏感接口,除了登录态校验外,额外增加权限校验逻辑,仅允许具备对应权限的登录用户访问,避免越权问题。
辅助优化方案(不可单独使用)
如果需要临时降低普通用户的误访问概率,可以搭配以下方案使用,注意不能替代授权逻辑:
- 将敏感接口的请求方式从GET调整为POST,普通用户直接在地址栏输入地址无法正常发起请求,仅能防完全不懂技术的用户
- 接口返回数据做最小化处理,仅返回前端必要的字段,避免多余敏感信息泄露。
内容的提问来源于stack exchange,提问作者Matthew Palmer
相关产品推荐
相关产品推荐

