【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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1025203.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LobeChat能否部署在树莓派上?边缘设备运行可行性测试

LobeChat 能否部署在树莓派上&#xff1f;边缘设备运行可行性深度实测 你有没有想过&#xff0c;用一台百元级的树莓派&#xff0c;搭出一个完全离线、不联网也能对话的大模型助手&#xff1f;不需要依赖 OpenAI 云服务&#xff0c;所有聊天记录都留在家里&#xff0c;还能语音…

【光子 AI】执行命令: marker_single 报错:IndexError: index is out of bounds for dimension with size 0 Recognizi

执行命令: marker_single pdf/Build_a_Large_Language_Model__From_Scratch__Sebastian_Raschka__2024.pdf --output_dir marker_output Recognizing Text: 0%| | 0/98 [00:00<?, ?it/s]Error: command buffer exited with error status.The Metal Performanc…

uniapp+springboot基于微信小程序的南京博物馆文创系统的设计与实现

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 同行可拿货,招校园代理 uniappSpringboot 基于微信小程序的南京博物馆文创系…

LLaMA-Factory分布式训练实战指南

LLaMA-Factory分布式训练实战指南 在大模型落地日益成为AI工程核心命题的今天&#xff0c;如何高效、稳定地完成微调任务&#xff0c;是每个开发者绕不开的挑战。尤其当模型参数从7B跃升至13B甚至更高时&#xff0c;显存压力和训练效率问题便接踵而至。LLaMA-Factory 作为当前最…

PowerShell一键测试Seed-Coder-8B-Base本地运行

PowerShell一键测试Seed-Coder-8B-Base本地运行 在调试一段核心业务逻辑的Python函数时&#xff0c;你是否曾犹豫过&#xff1a;要不要把它发给云端AI助手&#xff1f;那个看似便捷的“智能补全”&#xff0c;背后可能是敏感代码外泄的风险。更别提网络延迟带来的卡顿——一次…

Qwen-Image-Edit-2509显存优化与推理加速实战

Qwen-Image-Edit-2509显存优化与推理加速实战&#xff1a;让专业级图像编辑“跑得更快、吃得更少”&#x1f680; 你有没有这样的体验&#xff1f;刚拿到一个功能强大的AI图像编辑模型&#xff0c;兴致勃勃地准备上手实验&#xff0c;结果还没开始生成图片&#xff0c;系统就弹…

Qwen3-14B本地部署与Function Calling实战

Qwen3-14B本地部署与Function Calling实战&#xff1a;打造企业级AI智能体的黄金组合 &#x1f9e0;&#x1f527; 在不少企业尝试引入AI时&#xff0c;总会遇到一个两难问题&#xff1a;用公有云大模型吧&#xff0c;合同、客户数据上传心里发慌&#xff1b;自研训练吧&#x…

ssm基于微信小程序的汽车维修报销管理系统的设计与实现_k716u2bu

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 同行可拿货,招校园代理 springbssm_k716u2bu 基于微信小程序的汽车维修报销管…

Qwen3-32B推理延迟优化:响应速度提升50%

Qwen3-32B 推理延迟优化&#xff1a;响应速度提升50%的实战秘籍 &#x1f680; 你有没有这样的体验——明明选了 Qwen3-32B 这种性能逼近第一梯队的“大杀器”&#xff0c;结果一上线&#xff0c;用户却抱怨&#xff1a;“怎么又卡住了&#xff1f;” &#x1f623; 尤其是处理…

springboot基于微信小程序的膳食营养管理系统django_bq4798nf

文章目录 具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 同行可拿货,招校园代理 springbSpringbootdjango_bq798nf 基于微信小程序…

springboot基于SpringBoot的短视频平台小程序_p24dr1oi

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 同行可拿货,招校园代理 springbootSpringBoot_pdroi 的短视频平台小程序基于…

一键部署LobeChat:无需编码也能拥有现代化AI聊天界面

一键部署LobeChat&#xff1a;无需编码也能拥有现代化AI聊天界面 在今天&#xff0c;几乎每个开发者、产品经理甚至普通用户都体验过大语言模型的强大能力。无论是写代码、润色文案&#xff0c;还是解答技术难题&#xff0c;像 GPT、Claude 或 Llama 这类模型已经不再是实验室里…

海外社交媒体获客平台哪家好?2025一站式出海营销推广服务商宝藏清单,涵盖Facebook、LinkedIn、TikTok、INS、Google多平台 - 品牌2026

一、2025 出海营销市场趋势:多平台协同成破局关键​随着全球化数字化进程加速,中国出海营销市场规模持续扩大,预计 2025-2029 年复合增长率将达 24.3%,2029 年市场规模有望增至 1237 亿美元。在这一背景下,单一平…

Qwen-Image-Edit-2509:用自然语言编辑图像

Qwen-Image-Edit-2509&#xff1a;用自然语言编辑图像 &#x1f5bc;️&#x1f4ac; 你有没有试过为了改一张图里的文字&#xff0c;反复调整字体、颜色、对齐方式&#xff0c;折腾半小时还没搞定&#xff1f; 或者面对上百张产品图需要统一换色、替换标签时&#xff0c;只能…

主流大模型推理框架全景解析与选型指南

主流大模型推理框架全景解析与选型指南 在大语言模型&#xff08;LLM&#xff09;从实验室走向真实生产环境的进程中&#xff0c;推理部署框架已成为决定系统性能、成本和可扩展性的关键一环。随着模型参数规模持续攀升至百亿甚至千亿级别&#xff0c;原始PyTorch等训练框架已难…

springboot基于微信小程序的旧物二手物品上门回收系统设计django_k4g7s76n

文章目录 具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 同行可拿货,招校园代理 Springbootdjango_kg7s76n 基于微信小程序的旧物二…

用Wan2.2-T2V-A14B打造智能短视频脚本生成器

用Wan2.2-T2V-A14B打造智能短视频脚本生成器 你有没有过这样的经历&#xff1a;脑子里闪过一个绝妙的短视频创意——“暴雨夜&#xff0c;便利店门口两个陌生人共撑一把伞”&#xff0c;画面感十足&#xff0c;情绪拉满。可当你坐下来想把它拍出来时&#xff0c;却发现要写脚本…

PaddlePaddle在云服务器上的ubuntu安装完整步骤详解

PaddlePaddle在云服务器上的Ubuntu安装完整步骤详解 在AI工程化落地日益加速的今天&#xff0c;越来越多的企业选择将深度学习模型部署到云端&#xff0c;以实现弹性计算、高可用服务和团队协作开发。而面对TensorFlow、PyTorch等主流框架之外的选择&#xff0c;PaddlePaddle&…

Langflow RAG 技术架构与实现深度解析

Langflow RAG 技术架构与实现深度解析 在大语言模型&#xff08;LLM&#xff09;应用快速落地的今天&#xff0c;如何高效构建稳定、可解释、可维护的 RAG&#xff08;检索增强生成&#xff09;系统&#xff0c;已成为开发者面临的核心挑战之一。传统方式依赖大量胶水代码串联组…

2026年技术管理者面临双重挑战:83%企业遭遇技术与管理的双重困境,薪资涨幅高达60-90%!

技术浪潮奔涌&#xff0c;而你还在岸边观望&#xff1f; “深夜&#xff0c;你正在评审团队的技术方案&#xff0c;在系统复杂性、团队能力和业务需求之间寻找最佳平衡。”作为开发经理或技术总监&#xff0c;你是否意识到&#xff0c;技术管理者的角色正被大模型重新定义。 行…