前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >T系列项目讲解笔记2:后端的白名单机制和静态文件过滤

T系列项目讲解笔记2:后端的白名单机制和静态文件过滤

作者头像
Designer 小郑
发布2024-07-08 10:33:27
820
发布2024-07-08 10:33:27
举报
文章被收录于专栏:跟着小郑学JAVA

一、免登白名单机制

1.1 原理

Java免登白名单机制是一种安全策略,旨在限制Java应用程序在执行时访问系统资源和网络的能力。通过创建一个白名单,开发者可以明确指定哪些Java类和方法被允许执行,从而降低恶意代码对系统的潜在风险。这种机制通常通过安全管理器(SecurityManager)实现,它可以对Java应用程序的运行时行为进行监控和控制。开发者可以在安全管理器中配置白名单,确保只有经过验证的代码才能访问敏感资源。这样,即使Java应用程序被恶意攻击,也能在一定程度上保护系统安全。

在项目中,我们封装了一个 @IgnoreAuth 注解,源代码如下。

代码语言:javascript
复制
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface IgnoreAuth {

}

对于项目的所有请求,首先判断是否为接口方法,如果是接口方法则判断是否加了 @IgnoreAuth 注解,源代码如下。

代码语言:javascript
复制
IgnoreAuth annotation;
if (handler instanceof HandlerMethod) {
    annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
} else {
    return true;
}

如果加了则放行,不加则继续判断 Token 值,源代码如下。

代码语言:javascript
复制
//从header中获取token
String token = request.getHeader(LOGIN_TOKEN_KEY);

/**
 * 不需要验证权限的方法直接放过
 */
if(annotation!=null) {
    return true;
}

TokenEntity tokenEntity = null;
if(StringUtils.isNotBlank(token)) {
    tokenEntity = tokenService.getTokenEntity(token);
}
// ......

1.2 测试实践

运行后端项目后,首先可以先访问一个没有添加 @IgnoreAuth 注解的接口,如下图所示。

代码语言:javascript
复制
http://localhost:8080/springbootrd362/banjileixing/lists
代码语言:javascript
复制
/**
 * 列表
 */
@RequestMapping("/lists")
public R list( BanjileixingEntity banjileixing){
    EntityWrapper<BanjileixingEntity> ew = new EntityWrapper<BanjileixingEntity>();
    ew.allEq(MPUtil.allEQMapPre( banjileixing, "banjileixing")); 
    return R.ok().put("data", banjileixingService.selectListView(ew));
}

接着我们添加 @IgnoreAuth 注解,代码如下。

代码语言:javascript
复制
/**
 * 列表
 */
@IgnoreAuth
@RequestMapping("/lists")
public R list( BanjileixingEntity banjileixing){
    EntityWrapper<BanjileixingEntity> ew = new EntityWrapper<BanjileixingEntity>();
    ew.allEq(MPUtil.allEQMapPre( banjileixing, "banjileixing"));
    return R.ok().put("data", banjileixingService.selectListView(ew));
}

二、静态资源文件鉴权过滤

Java静态资源文件鉴权过滤是一种在Web应用程序中保护静态资源(如图片、CSS、JavaScript等)的技术,通过实现特定的过滤器(Filter)来对访问这些资源的请求进行权限验证。这种技术可以确保只有经过授权的用户才能访问特定的资源,从而提高应用程序的安全性。在实现过程中,开发者需要定义一个继承自Filter接口的类,并重写doFilter方法,以实现对请求的拦截和处理。在doFilter方法中,可以检查用户的认证信息,如session、token等,以确定用户是否有权访问请求的资源。如果用户未授权,可以返回错误响应或重定向到登录页面。通过这种方式,Java静态资源文件鉴权过滤能够有效地保护Web应用程序中的静态资源,防止未授权访问。

T 系列项目中对应代码如下。

代码语言:javascript
复制
/**
 * springboot 2.0配置WebMvcConfigurationSupport之后,会导致默认配置被覆盖,要访问静态资源需要重写addResourceHandlers方法
 */
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
	registry.addResourceHandler("/**")
	.addResourceLocations("classpath:/resources/")
	.addResourceLocations("classpath:/static/")
	.addResourceLocations("classpath:/admin/")
	.addResourceLocations("classpath:/front/")
	.addResourceLocations("classpath:/public/");
	super.addResourceHandlers(registry);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、免登白名单机制
    • 1.1 原理
      • 1.2 测试实践
      • 二、静态资源文件鉴权过滤
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档