news 2026/7/7 9:40:37

【038-安全开发篇】JavaEE应用SpringBoot框架MyBatis注入Thymeleaf模版注入

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【038-安全开发篇】JavaEE应用SpringBoot框架MyBatis注入Thymeleaf模版注入

思维导图


知识点:

1、JavaEE-SpringBoot-WebAPP&路由
2、JavaEE-SpringBoot-Mybatis&注入
3、JavaEE-SpringBoot-Thymeleaf&SSTI

章节点

3、Java:
功能:数据库操作,文件操作,序列化数据,身份验证,框架开发,第三方库使用等.
框架库:MyBatis,SpringMVC,SpringBoot,Shiro,Log4j,FastJson等
技术:Servlet,Listen,Filter,Interceptor,JWT,AOP,反射机制待补充
安全:SQL注入,RCE执行,反序列化,脆弱验证,未授权访问,待补充
安全:原生开发安全,第三方框架安全,第三方库安全等,待补充

演示案例: SpringBoot-Web应用-路由响应 SpringBoot-数据库应用-Mybatis SpringBoot-模版引擎-Thymeleaf

Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能,降低了复杂性,同时支持基于JVM的多种开源框架,可以缩短开发时间,使开发更加简单和高效。

SpringBoot-Web应用-路由响应

参考:https://springdoc.cn/spring-boot/
1、路由映射
@RequestMapping @GetMapping
2、参数传递
@RequestParam
3、数据响应
@RestController @Controller
@RestController注解相当于@ResponseBody+@Controller合在一起的作用。

@RestControllerpublicclassHelloController{//无参数访问响应@RequestMapping("/xiaodi")publicStringhello(){return"hello xiaodi";}//无参数指向GET方法访问响应@RequestMapping(value="/get",method=RequestMethod.GET)publicStringhelloGet(){return"hello get xiadi";}//有参数指向GET方法访问响应@RequestMapping(value="/getp",method=RequestMethod.GET)publicStringhellogetp(Stringname){return"hello get "+name;}//有参数指向POST方法访问响应@RequestMapping(value="/getpost",method=RequestMethod.POST)publicStringhelloGetParameters(Stringname){return"hello POST "+name;}}

SpringBoot-数据库应用-Mybatis

操作步骤:

0、数据库先创建需操作的数据

1、项目添加Mybatis&数据库驱动

-pom.xml

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency>

2、项目配置数据库连接信息
-application.yml

spring:datasource:url:jdbc:mysql://localhost:3306/demo01 username:root password:123456driver-class-name:com.mysql.cj.jdbc.Driver

3、创建User类用来操作数据库数据
-com.example.demo.entity.User

set get toString方法

4、创建Mapper动态接口代理类实现
-com.example.demo.mapper.UserMapper

@MapperpublicinterfaceUserMapper{@Select("select * from admin where id like '%${id}%'")//模糊查询,有安全危险publicList<User>findAll(Integerid);}

5、创建Controller实现Web访问调用
-com.example.demo.controller.UserController

@RestControllerpublicclassUserController{@AutowiredprivateUserMapperuserMapper;@RequestMapping(value="/getdata",method=RequestMethod.GET)//@ResponseBodypublicList<User>getdata(Integerid){List<User>all=userMapper.findAll(id);System.out.println(all);returnall;}}

可以在csdn搜索mybatis中SQL注入的文章,虽然有这种漏洞的可能性小,但是还是有可能

SpringBoot-模版引擎-Thymeleaf

  • 不安全的模版版本
    日常开发中:语言切换页面,主题更换等传参导致的SSTI注入安全问题(只有3.0.0到3.0.11版本有,后面就被修复了)
    漏洞参考:https://mp.weixin.qq.com/s/NueP4ohS2vSeRCdx4A7yOg

配置application.properties指向模版页面
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html

@RequestMapping(value="/")publicStringindex(Modelmodel){model.addAttribute("data","hello xiaodi");return"index";}@GetMapping("/path")publicStringthymeleaf(Stringlang){returnlang;}<?xml version="1.0"encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.springframework</groupId><artifactId>java-spring-thymeleaf</artifactId><version>1.0</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><!--latest--><version>2.2.0.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency></dependencies><properties><java.version>1.8</java.version></properties><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 6:44:10

YOLOv5详解:高效目标检测的实践指南

YOLOv5&#xff1a;从原理到落地的高效目标检测实战解析 在智能摄像头能自动识别行人、车辆甚至细小缺陷的今天&#xff0c;背后往往离不开一个高效而可靠的目标检测模型。而在众多候选方案中&#xff0c;YOLOv5 凭借其“开箱即用”的工程化设计和出色的性能平衡&#xff0c;已…

作者头像 李华
网站建设 2026/7/7 7:12:54

某物流企业AI战略落地全记录:AI应用架构师的8个关键动作

物流企业AI战略落地实战指南&#xff1a;AI应用架构师的8个关键动作与全景实践 关键词 物流AI战略、AI应用架构师、物流数字化转型、AI落地方法论、智能物流系统、数据驱动决策、AI项目管理、物流技术创新 摘要 在数字化浪潮席卷全球的今天&#xff0c;物流行业正面临前所未…

作者头像 李华
网站建设 2026/7/7 16:04:02

32、FreeBSD 窗口管理器与桌面环境及生产力应用指南

FreeBSD 窗口管理器与桌面环境及生产力应用指南 1. 窗口管理器与桌面环境概述 在 FreeBSD 系统中,KDE 是最受欢迎的桌面环境之一,但并非唯一选择。还有许多其他选择,从简单到复杂各不相同。 1.1 窗口管理器与桌面环境的区别 桌面环境(如 KDE)通常比单纯的窗口管理器功…

作者头像 李华
网站建设 2026/7/7 15:37:59

ChatTTS与GPT-SoVITS语音合成技术对比分析

ChatTTS 与 GPT-SoVITS 语音合成技术对比分析 你有没有想过&#xff0c;AI 能用你的声音读完一本小说&#xff1f;或者让一个虚拟助手在说话时“嗯”一下&#xff0c;像是真的在思考&#xff1f;这不再是科幻桥段——如今开源社区中&#xff0c;ChatTTS 和 GPT-SoVITS 正悄然改…

作者头像 李华
网站建设 2026/7/7 18:14:37

YOLO-V5学习路线与开源项目掌握指南

YOLO-V5 深度解析&#xff1a;从零掌握工业级目标检测的实践之路 在自动驾驶、智能监控、工业质检等现实场景中&#xff0c;实时准确地“看见”物体是AI落地的核心能力。而提到高效的目标检测方案&#xff0c;YOLO-V5 几乎成了绕不开的名字——它不是论文里的理论模型&#xf…

作者头像 李华
网站建设 2026/7/7 9:31:28

39、FreeBSD文件共享:NFS与Samba配置指南

FreeBSD文件共享:NFS与Samba配置指南 1. NFS概述 NFS(Network File System)允许用户在网络上共享特定的文件系统文件夹。一台机器可以将其文件夹导出,另一台机器则可以连接到该机器并请求访问这些共享文件夹。客户端将所需的共享文件夹挂载到自己的文件系统中,就像NFS共…

作者头像 李华