# common **Repository Path**: xgwlb/common ## Basic Information - **Project Name**: common - **Description**: 基础项目-包含springboot3和security mybatis-plus mysql8 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-03 - **Last Updated**: 2025-12-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring Boot 3 + Security + MyBatis-Plus 项目 这是一个标准的Spring Boot 3项目,集成了Spring Security、MyBatis-Plus和MySQL 8,并实现了XSS攻击和SQL注入防护。 ## 技术栈 - **Spring Boot 3.2.0** - **Spring Security** - 安全框架 - **MyBatis-Plus 3.5.5** - ORM框架 - **MySQL 8.0.33** - 数据库 - **Java 17** - JDK版本 ## 安全特性 ### 1. XSS攻击防护 - **XssFilter**: 请求过滤器,对所有请求参数进行XSS过滤 - **XssHttpServletRequestWrapper**: 请求包装器,自动转义危险字符 - 设置安全响应头(X-Content-Type-Options、X-Frame-Options等) ### 2. SQL注入防护 - **SqlInjectionInterceptor**: 拦截器,检测并阻止SQL注入攻击 - 使用正则表达式匹配常见的SQL注入模式 - 自动拒绝包含SQL注入关键词的请求 ### 3. Spring Security配置 - BCrypt密码加密 - 基于角色的访问控制(RBAC) - 无状态会话管理(适合JWT) ## 项目结构 ``` src/ ├── main/ │ ├── java/ │ │ └── com/example/common/ │ │ ├── CommonApplication.java # 主启动类 │ │ ├── config/ │ │ │ ├── SecurityConfig.java # Security配置 │ │ │ ├── MyBatisPlusConfig.java # MyBatis-Plus配置 │ │ │ └── SqlInjectionConfig.java # SQL注入防护配置 │ │ ├── filter/ │ │ │ ├── XssFilter.java # XSS过滤器 │ │ │ └── XssHttpServletRequestWrapper.java # XSS请求包装器 │ │ ├── interceptor/ │ │ │ └── SqlInjectionInterceptor.java # SQL注入拦截器 │ │ ├── entity/ │ │ │ └── User.java # 用户实体 │ │ ├── mapper/ │ │ │ └── UserMapper.java # Mapper接口 │ │ ├── service/ │ │ │ ├── UserService.java │ │ │ └── impl/ │ │ │ └── UserServiceImpl.java │ │ └── controller/ │ │ ├── UserController.java # 用户控制器 │ │ └── PublicController.java # 公开接口 │ └── resources/ │ ├── application.yml # 应用配置 │ ├── mapper/ # MyBatis XML映射文件 │ └── db/ │ └── schema.sql # 数据库脚本 ``` ## 快速开始 ### 1. 环境要求 - JDK 17+ - Maven 3.6+ - MySQL 8.0+ ### 2. 数据库配置 1. 创建数据库(或使用schema.sql中的脚本) 2. 修改 `application.yml` 中的数据库连接信息: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/common_db?... username: your_username password: your_password ``` ### 3. 运行项目 ```bash mvn clean install mvn spring-boot:run ``` ### 4. 测试接口 - 健康检查(公开接口): `GET http://localhost:8080/api/public/health` - 查询用户(需要认证): `GET http://localhost:8080/api/user/{id}` ## 安全配置说明 ### XSS防护 - 自动过滤所有请求参数中的危险脚本标签 - HTML转义特殊字符(&, <, >, ", ', /) - 设置安全响应头防止XSS攻击 ### SQL注入防护 - 检测常见的SQL注入模式(UNION SELECT、OR 1=1等) - 自动拒绝包含SQL注入关键词的请求 - 返回403状态码和错误信息 ### Spring Security - 默认所有接口需要认证(除了/public/**路径) - 使用BCrypt进行密码加密 - 支持方法级权限控制(@PreAuthorize) ## 注意事项 1. **密码加密**: 示例数据中的密码是BCrypt加密后的"123456",实际使用时请使用PasswordEncoder进行加密 2. **JWT集成**: 当前配置为无状态会话,可以轻松集成JWT Token认证 3. **权限配置**: 根据实际需求修改SecurityConfig中的权限规则 4. **SQL注入检测**: 如果业务需要包含某些关键词,需要调整SqlInjectionInterceptor的检测规则 ## 开发建议 1. 添加JWT Token认证机制 2. 实现用户登录/注册接口 3. 完善异常处理机制 4. 添加API文档(Swagger/OpenAPI) 5. 添加单元测试和集成测试