本系列文章使用SpringBoot+Mybaits的小型商城作为本次代码审计的目标,项目地址:https://github.com/newbee-ltd/newbee-mall
SpringBoot+Mybatis这套架构使用较为广泛,相比于SpringMVC,SpringBoot简化了很多配置,更易上手使用。并且该项目属于小型系统,程序逻辑较为简单,作者编码规范,搭建也非常方便,只需要配置数据库(MySQL)和商品图片资源,SpringBoot自带中间件,无需额外配置中间件,方便调试,代码中没看懂的逻辑,下断点上手调试非常便捷,非常适合新手入门代码审计。
代码配置
从项目地址:https://github.com/newbee-ltd/newbee-mall 下载代码,在IntelliJ IDEA中导入pom.xml
,IDEA会以maven项目打开并自动下载依赖包。
Spring属性文件路径:/src/main/resources/application.properties
,其中可修改端口和mysql数据库地址
1 | 8089 = |
配置文件路径:/src/main/java/ltd/newbee/mall/config/NeeBeeMallWebMvcConfigurer.java
,其中配置了图片路径
1 | public void addResourceHandlers(ResourceHandlerRegistry registry) { |
此时是没有测试数据的,需要将/src/main/resources/upload.zip
压缩包中的测试商品数据解压出来,放到任意的目录中。此处作为学习测试使用,可以直接解压在当前路径下,正式系统中一定要存放在非项目路径下。
在文件src/main/java/ltd/newbee/mall/common/Constants.java
中,变量FILE_UPLOAD_DIC
为当前上传图片路径,将其更改为我们解压upload.zip
的绝对路径
1 | public class Constants { |
MySQL数据库配置
过程中使用docker来快速搭建测试所需的数据库,docker方便更改测试过程中使用到的各组件版本,并且测试结束后可删除容器而不对本地环境造成任何影响。
使用其他方法安装mysql数据库也行,记得要在配置文件中更改mysql地址。代码部署在docker内也是可以的,不过考虑调试方便,还是建议直接本地运行代码,有远程调试经验的同学可以尝试将代码一同布置在docker内。
拉取mysql(latest为最新版本,需要其他版本可将lastest改为具体版本号即可)
1 | docker pull mysql:latest |
运行(因为仅作为测试环境,并且在容器里,所以将mysql密码设置为简单密码,非测试环境慎重)
1 | docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql |
进入容器,确定MySQL正常运行
1 | docker exec -it mysql /bin/bash |
另起一个终端,将sql文件复制到容器内(8d3b6661cdd2是容器ID)
1 | docker cp /some_path/newbee-mall/src/main/resources/newbee_mall_schema.sql 815203ed6f5a:/root |
回到容器,建立数据库(如果这里更改了数据库名,需要同时修改application.properties
中mysql连接的数据库名)
1 | root:/# mysql -u root -p |
执行sql文件
1 | root:/# mysql -u root -p newbee_mall_db</root/newbee_mall_schema.sql |
进行简单的数据库查询,校验是否成功导入SQL。
1 | mysql> use newbee_mall_db; |
看到能成功查询我们导入的SQL,配置成功~(中文字符没显示出来,被?
代替)
启动项目
以上步骤完成后,在IntelliJ IDEA中运行项目,访问在application.properties
中配置的端口就能看到项目。