若依(RuoYi)后台管理系统部署后必做的5项安全加固检查(避坑指南)
2026/6/16 16:26:42 网站建设 项目流程

若依(RuoYi)后台管理系统部署后必做的5项安全加固检查(避坑指南)

在企业级后台管理系统的实际部署中,安全配置往往成为最容易被忽视的环节。若依(RuoYi)作为国内广泛使用的开源框架,其默认配置存在多个需要立即处理的安全隐患。本文将聚焦五个关键风险点,提供可立即执行的加固方案。

1. 默认接口路径的访问控制

部署完成后首先需要检查的是各类管理接口的暴露情况。许多企业遭遇安全事件的原因,正是未对以下高危路径做访问限制:

  • /prod-api/druid/login.html- Druid监控面板
  • /dev-api/druid/login.html- 开发环境监控入口
  • /admin-api/druid- 常见管理接口前缀

加固方案

// 在Spring Security配置中添加路径拦截 http.authorizeRequests() .antMatchers("/druid/**").hasRole("ADMIN") .antMatchers("/prod-api/**").authenticated() .antMatchers("/dev-api/**").denyAll();

注意:同时修改application.yml中的druid.stat-view-servlet.enabledfalse可彻底关闭监控面板

2. Swagger文档的环境隔离

开发阶段常用的Swagger UI接口会暴露完整的API结构和参数信息,生产环境必须禁用:

# application-prod.yml spring: swagger: enabled: false

对于必须保留文档的场景,建议增加基础认证:

@Bean public SecurityFilterChain swaggerFilterChain(HttpSecurity http) throws Exception { http.securityMatcher("/swagger*/**", "/v3/api-docs/**") .authorizeHttpRequests(auth -> auth.anyRequest().authenticated()) .httpBasic(withDefaults()); return http.build(); }

3. 中间件安全配置

Redis防护措施

检查redis.conf关键配置项:

配置项安全值风险说明
protected-modeyes禁止外部直接访问
requirepass复杂密码避免未授权访问
bind内网IP限制访问来源
# 通过命令行快速验证 redis-cli -h 127.0.0.1 -a yourpassword --no-auth-warning CONFIG GET requirepass

Zookeeper加固

在zoo.cfg中添加:

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider enforce.auth.enabled=true enforce.auth.schemes=sasl

4. Shiro密钥修改

若依默认使用的rememberMe密钥存在反序列化风险,必须立即更换:

// 在ShiroConfig中重写配置 @Bean public RememberMeManager rememberMeManager() { CookieRememberMeManager manager = new CookieRememberMeManager(); manager.setCipherKey(Base64.decode("新生成的32位随机密钥")); return manager; }

生成新密钥的工具方法:

byte[] key = new byte[32]; new SecureRandom().nextBytes(key); String encodedKey = Base64.encodeToString(key);

5. 认证体系强化

密码策略实施

在application.yml中配置:

ruoyi: password: minLength: 10 maxLength: 20 requireSpecialChar: true requireDigit: true requireUpper: true

传输层防护

强制HTTPS并启用HSTS:

http.requiresChannel() .anyRequest().requiresSecure() .and() .headers() .httpStrictTransportSecurity() .maxAgeInSeconds(31536000) .includeSubDomains(true);

登录接口增加图形验证码和限流:

@PostMapping("/login") @RateLimiter(value = 5, key = "#username") public AjaxResult login( @RequestParam String username, @RequestParam String password, @RequestParam String captcha) { // 验证逻辑 }

持续监控与审计

部署完成后建议建立定期检查机制:

  1. 接口扫描:每月执行自动化测试

    nmap -sV --script=http-vuln* target_ip
  2. 日志分析:重点关注异常登录尝试

    SELECT * FROM sys_logininfor WHERE status = '1' ORDER BY access_time DESC LIMIT 100;
  3. 依赖检查:保持组件更新

    <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.11.0</version> <!-- 确保使用最新稳定版 --> </dependency>

实际运维中发现,90%的安全事件都源于未及时修复的已知漏洞。建议将上述检查项纳入部署checklist,新系统上线前必须全部验证通过。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询