SpringBoot安全验证之Referer拦截器
自定义Referer拦截器
public class RefererInterceptor extends HandlerInterceptorAdapter {// URL匹配器private AntPathMatcher matcher = new AntPathMatcher();@Autowiredprivate RefererProperties properties;@Overridepublic boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception {String referer = req.getHeader("referer");String host = req.getServerName();// 只验证POST请求if ("POST".equals(req.getMethod())) {if (referer == null) {// 状态置为404resp.setStatus(HttpServletResponse.SC_NOT_FOUND);return false;} java.net.URL url = null;try {url = new java.net.URL(referer);} catch (MalformedURLException e) {// URL解析异常,也置为404resp.setStatus(HttpServletResponse.SC_NOT_FOUND);return false;}// 首先判断请求域名和referer域名是否相同if (!host.equals(url.getHost())) {// 如果不等,判断是否在白名单中if (properties.getRefererDomain() != null) {for (String s : properties.getRefererDomain()) {if (s.equals(url.getHost())) {return true;}}}return false;}}return true;}
}
配置白名单Referer域名
@Component
@ConfigurationProperties(prefix = "referer")
public class RefererProperties {// 白名单域名private List<String> refererDomain;//setter,getter方法
}
yml配置
referer:refererDomain:- baidu.com- pibigstar.com- mxspvip.cn
SpringBoot安全验证之Referer拦截器相关推荐
- springboot中的过滤器、拦截器、监听器整合使用
文章目录 controller层 过滤器 拦截器 拦截器介绍 使用拦截器 监听器 监听器介绍 使用监听器 修改启动类 controller层 用于测试 @RestController public c ...
- springboot二:过滤器、拦截器、静态资源访问
一:springboot中的过滤器 过滤器是什么? 它是基于Servlet 技术实现的, 简单的来说,过滤器就是起到过滤的作用,在web项目开发中帮我们过滤一些指定的 url做一些特殊的 处理. 过滤 ...
- springBoot 2.x过滤器--监听器--拦截器
springboot 2.x过滤器 1.什么是 springboot 2.x过滤器 类似于检票员,检验游客的门票 2.springboot里的过滤器 ApplicationContextHeaderF ...
- springboot _配置过滤器、拦截器、使用原生servlet
配置过滤器.拦截器.使用原生servlet 过滤器和拦截器的根本区别 过滤器是servlet规范规定的,只能用于web程序中,而拦截器是在spring容器中,它不依赖servlet容器. 拦截器属于S ...
- 【springboot 踩坑记录】拦截器中无法注入bean
原因: 注册拦截器的时候是new出来的,spring没有管理.所以无法注入对象 @Beanpublic AgentInterceptor agentInterceptor(){return new A ...
- SpringBoot指南(五)——拦截器、原生组件
文章目录 1 拦截器 2 Filter 3 Servlet 4 Listener 5 使用RegistrationBean配置 1 拦截器 实现HandlerInterceptor,写拦截器 实现We ...
- 【SpringBoot】十八、拦截器 interceptor
拦截器的特性 拦截器可以拦截controller请求 拦截器可以中断请求轨迹 请求之前如果该请求配置了拦截器,则请求会先经过拦截器,拦截器放行之后执行请求的controller,controller执 ...
- SpringBoot整合Swagger2/Swagger3之拦截器配置,无token放行swagger路径
1. swagger2.0 1.1 POM依赖 <dependency><groupId>io.springfox</groupId><artifactId& ...
- SpringBoot整合Swagger2/Swagger3之拦截器配置
1. swagger2.0 1.1 POM依赖 <dependency><groupId>io.springfox</groupId><artifactId& ...
最新文章
- MySQL下备份和恢复简单介绍
- Design Pattern - Factory Method(C#)
- Web 设计中的 5 个最具争议性的话题
- 015:字符串:格式化
- [蛋蛋の插画日记]囧...居然漏了一期《可爱100》!
- 经常需要在开发中使用Excel COM,为简化使用写了这个类,感觉还是不太方便
- 【ZOJ - 2955】Interesting Dart Game(背包,结论,裴蜀定理,数论)
- 首款搭载鸿蒙os的设备,华为发布会配件汇总,首款搭载 鸿蒙OS 的设备来了
- 亚马逊云基础架构:一场从未停歇的技术创新革命
- PHP 8 中确认支持 JIT!
- 数学与编程——概率论与数理统计
- 单片机音乐倒数计时器c语言,基于单片机音乐倒数计时器设计.doc
- C语言:快速排序(详解)
- java中apache和tomcat的区别和联系
- 计算机恢复出场设置,小白教你电脑恢复出厂设置
- 算法—青蛙跳台阶问题汇总
- PageRank实践-博客园用户PageRank排名
- Hadoop系列之什么是Hadoop(1)
- HTML 与HTML5 常用标签
- android x86占比,不输主流安卓机 Android x86系统体验分享(附性能对比)