思维导图
见 22安全开发
知识点:
- 44、JavaEE-SpringBoot-WebAPP&路由
- 45、JavaEE-SpringBoot-Mybatis&注入
- 46、JavaEE-SpringBoot-Thymeleaf&SSTI
章节点
- 1、PHP:
功能:新闻列表,会员中心,资源下载,留言版,后台模块,模版引用,框架开发等
技术:输入输出,超全局变量,数据库操作,逻辑架构,包含上传&下载删除;
技术:JS&CSS混用,Cookie,Session操作,MVC架构,ThinkPHP引用等。
安全:原生PHP开发安全,模版引用安全,第三方插件安全,TP框架安全等 - 2、JS:
功能:登录验证,文件操作,SQL操作,云应用接入,框架开发,打包器使用等
技术:原生开发,DOM,常见库使用,框架开发(Vue,NodeJS),打包器(Webpack)等
安全:原生开发安全,NodeJS安全,Vue安全,打包器Webpack安全,三方库安全问题等 - 3、Java:
功能:数据库操作,文件操作,序列化数据,身份验证,框架开发,第三方库使用等.
框架库:MyBatis,SpringMVC,SpringBoot,Shiro,Log4j,FastJson等
技术:Servlet,Listen,Filter,Interceptor,JWT,AOP,待补充
安全:SQL注入,RCE执行,反序列化,脆弱验证,未授权访问,待补充
安全:原生开发安全,第三方框架安全,第三方库安全等,待补充
SpringBoot
Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能,降低了复杂性,同时支持基于JVM的多种开源框架,可以缩短开发时间,使开发更加简单和高效。
SpringBoot-Web应用-路由响应
参考:https://springdoc.cn/spring-boot/
- 1、路由映射
1
@RequestMapping @GetMapping等
- 2、参数传递
1
@RequestParam
- 3、数据响应
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
return时使用) 注解相当于 + 合在一起的作用。 (需要
public class HelloController {
//无参数访问响应
public String hello() {
return "hello xiaodi";
}
//无参数指向GET方法访问响应
public String helloGet(){
return "hello get xiadi";
}
//有参数指向GET方法访问响应
public String hellogetp(String name){
return "hello get "+name;
}
//有参数指向POST方法访问响应
public String helloGetParameters(String name){
return "hello POST "+name;
}
}
SpringBoot-数据库应用-Mybatis
1、数据库先创建需操作的数据
2、项目添加Mybatis&数据库驱动
1
2
3
4
5
6
7
8
9
10
11-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>3、项目配置数据库连接信息
1
2
3
4
5
6
7-application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/demo01
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver4、创建User类用来操作数据库数据
-com.example.demo.entity.User
set get toString方法5、创建Mapper动态接口代理类实现
1
2
3
4
5
6-com.example.demo.mapper.UserMapper
public interface UserMapper {
public List<User> findAll(Integer id);
}6、创建Controller实现Web访问调用
1
2
3
4
5
6
7
8
9
10
11
12
13-com.example.demo.controller.UserController
public class UserController {
private UserMapper userMapper;
//@ResponseBody
public List<User> getdata(Integer id) {
List<User> all = userMapper.findAll(id);
System.out.println(all);
return all;
}
}
SpringBoot-模版引擎-Thymeleaf
-不安全的模版版本
日常开发中:语言切换页面,主题更换等传参导致的SSTI注入安全问题
漏洞参考:https://mp.weixin.qq.com/s/NueP4ohS2vSeRCdx4A7yOg
(Thymeleaf漏洞参考)
配置application.properties指向模版页面
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
1 |
|