黑马:AI+若依

随笔3个月前发布 冬至
25 0 0

AI+若依
https://www.bilibili.com/video/BV1pf421B71v/?spm_id_from=333.337.search-card.all.click&vd_source=b1acc63fa6d7d73e53111f9e1153f990

若依扫盲

通义灵码(AI)

CRM客户关系管理系统(后台管理系统)
选型与搭建:技术选型,环境搭建,框架整合(AI凉凉)
设计:基于原型设计库表,接口等(AI辅助)
编码:映射设计为实际功能(AI辅助)
部署:测试与生产(AI辅助)

若依:选型与搭建一把梭
RuoYi,javaEE,快速搭建与开发各种管理系统工具,非完整体系,需二次开发业务与逻辑
gitee:若依/RuoYi-Vue
专为后台管理系统设计的快速开发平台

前置
MySQL,Redis,后端(SpringBoot,MyBatis),前端(Vue3,Axios,Element-Plus),工具(IDEA,VSCode,Git)

若依搭建

混乱的框架版本:
RuoYi (SpringBoot+Bootstrap) 多模块版本(前后端同一项目,淘汰)
RuoYi-Vue (SpringBoot+Vue) 前后端分离(中大型项目不行:性能瓶颈,扩展性等,就要选择微服务版本)
RuoYi-cloud(Springcloud+Vue) 微服务
RuoYi-App(Uniapp+Vue) 移动端(未提供后端代码,可适配RuoYi-Vue和RuoYi-cloud)
RuoYi-other(Vue3+ElementPlus+Vite) 其他(第三方开发生态)

RuoYi-Vue版本,前后端分离,单体架构
环境:JDK 11、MySQL 8、Redis 5、Maven 3.6、Node16(Vue3)
技术选型: Spring Boot、Spring Security、MyBatis、Jwt、Vue3、Element-Plus
官方地址: https://gitee.com/y_project/RuoYi-Vue
扩展地址: https://gitee.com/ys-gitee/RuoYi-Vue3

搭建后端项目
IntelliJ IDEA:git克隆一把梭(源码与java包依赖下载,项目文件目录高亮与加粗就OK了)
黑马:AI+若依

git克隆一把梭出问题时:Maven — clean清理 — package打包(重新第三方依赖下载)– 刷新
黑马:AI+若依

MySQL导入与配置:项目目录sql(若依提供的通用sql脚本,需导入数据库里)
黑马:AI+若依

打开数据库的客户端工具:
黑马:AI+若依

右键 — 新建 — schema(数据库):ry-vue

右键 — 执行 sql 脚本
黑马:AI+若依

启动项目需要连接数据库(连接数据库的配置文件):mybatis — application-druid.yml
黑马:AI+若依

启动redis服务
黑马:AI+若依

配置文件对齐redis密码
黑马:AI+若依

运行后端项目(找到项目的启动类):ruoyi-admin子模块中,运行RuoYiApplication
黑马:AI+若依

debug启动类方法
黑马:AI+若依

搭建前端项目
git克隆并VScode初始化项目
黑马:AI+若依

安装依赖:npm install(未配置全局第三方国内镜像源,速度非常慢)
第三方国内镜像源:npm install –registr=https://registry.npmirror.com
黑马:AI+若依

运行前端项目:npm run dev

运行成功后浏览器自动打开后台管理系统的登录页面(前端:后开登录页面)
黑马:AI+若依

入门案例

前端
vue中:api放的前端请求的js文件(贵司的api安全),views放的视图组件
黑马:AI+若依

后端
黑马:AI+若依

准备SQL并导入数据库

配置代码生成信息

代码生成模块:数据库脚本中的字段,对应攻防中的参数fuzz字典思维
黑马:AI+若依

下载代码并导入项目
main:包含java的三层代码(Controller表现层(请求与响应),Service业务层(请求之后进行业务逻辑处理),Mapper DAO持久层(业务逻辑处理之后要不要增删改查等))以及domain(比如数据库在项目中的实体类)
理解一把梭:视图,请求,数据交换(已SQL注入为例的理解,寻找表现层中的登录框,在username注入payload,请求传入到业务层代码,最终汇聚到持久层的数据库拼接语句,传入数据库中执行SQL,导致SQL注入漏洞)
黑马:AI+若依

黑马:AI+若依

功能 – 权限控制

若依内置权控系统,为企业级提供通用的解决方案
超级管理员(看所有),市场专员(看自己的呗),销售专员(看自己的呗)
SDLC,等保,渗透,代审前期调研一把梭:不同权限账号各一个,方便进行横纵向基线对比。

权限控制前置思维:RBAC,基于角色访控(用户,角色,权限)
比如N个员工中的M个账号(用户) –> 市场专员(角色) –>访问市场功能菜单(权限):知道越权的poc怎么越了吧
黑马:AI+若依

图上的设计都是数据:用户表,角色表,功能菜单表
数据之间都是存在多对多的权限关联的:中间表维护权限关系(用户表–角色表);中间表维护权限关系(角色表–功能菜单表)【越权的初始点参数和值,懂了吧】

RBAC:红色的五张表(其他绿色表,细颗粒访控)
黑马:AI+若依

功能 – 数据字典

若依内置数据字典:用于维护系统常见的静态数据(性别、状态等的增删改查)
数据字典存入数据库中,复用性:多功能菜单引用同一个静态数据(多个功能点下的,状态使用同一个静态数据(启用,停用))

黑马:AI+若依

功能 – 监控相关

在线用户 – 登录信息查redis缓存(登录token,配置信息等敏感数据)(贵司的webshell流量特征session固定值)
黑马:AI+若依

缓存监控:客户端连接数(连接数Dos),使用内存,CPU(利用率Dos),网络出入口kps(带宽Dos),贵司所谓的验证码(Dos:内存,网络出入口)

数据监控:若依集成了德鲁伊(druid)的web监控工具

功能 – 定时任务

硬编码定时任务 VS 动态管理任务
黑马:AI+若依

这里至少你能看见登录后的方法参数控制:
黑马:AI+若依

功能 – 系统接口

使用的Swagger工具生成API在线文档,提供web界面进行接口调用和测试
黑马:AI+若依

Swagger配置文件
黑马:AI+若依

项目结构

后端结构
RuoYiApplication:Springboot+内置tomcat直接运行
RuoYiServletlnitializer:将Springboot打成war包,用外置的Servlet容器来执行

黑马:AI+若依

通用工具
黑马:AI+若依

框架核心
黑马:AI+若依

系统模块
service业务层,mapper持久层,domain实体类
黑马:AI+若依

配置文件
黑马:AI+若依

文件上传时的保存路径:本地或存储桶OSS
黑马:AI+若依

服务器性能相关
黑马:AI+若依

jwt认证设置
黑马:AI+若依

mybatis的映射配置文件和全局配置文件
黑马:AI+若依

xss过滤器配置
黑马:AI+若依

模块依赖关系
ruoyi-admin模块跑起来,后面的模块就都跑起来了
黑马:AI+若依

pom.xml文件看看依赖关系
黑马:AI+若依

黑马:AI+若依

前端结构
黑马:AI+若依

package.json:第三方依赖的版本信息
黑马:AI+若依

表结构
黑马:AI+若依

源码阅读 – 前端

前置知识:SpringBoot3+Vue3全栈

api接口,vue前端组件
黑马:AI+若依

简而言之,api接口的js文件里引入了请求类,里面封装了请求响应拦截器工具类等
黑马:AI+若依

源码阅读 – 后端

不严谨但很实用,简单一把梭:控制着请求(get或post等url API),进行处理服务(后端代码),接着存取可选(数据库),最后可选的返回响应
Controller控制层–>service 业务服务层–>Mapper 数据持久层:接收前段请求,调用service处理业务逻辑(看看是否需要进行数据存取)并返回结果。

注解,接收前端请求
@get/post/put/deleteMapping
查询功能:123456页面(get,代码逻辑,数据库里的表)
导出功能:比如导出xlsx文件(post,代码逻辑,数据库里的表)
获取资源功能:获取详细信息等(get id值等,代码逻辑,数据库里的表)
增加功能:新建(post,代码逻辑,数据库里的表)
修改功能:修改(put,代码逻辑,数据库里的表)
删除功能:删除(delete,代码逻辑,数据库里的表)

service方法定义:ICourseService.java

service的实现类:CourseServicelmpl.java
重写了所有的实现方法,调用Mapper完成数据库的相关操作:以下courseMapper就表示从数据库里直接查询id并返回。
黑马:AI+若依

具体实现:CourseMapper.java中实现的,与service的实现类(CourseServicelmpl.java)一一对应
黑马:AI+若依

具体每个方法对应的SQL语句,在CourseMapper.xml中实现的
黑马:AI+若依
黑马:AI+若依

实体类继承基类:Course.java
与数据库一一对应,完成xml的自动映射封装
黑马:AI+若依

@PreAuthorize:Spring sec框架提供的权限校验

继承类的属性方法(什么getUserId,这些属性方法对应渗透测试的字典fuzz)
黑马:AI+若依

黑马:AI+若依

分页拦截器 PageHelper:自动对SQL分页进行拦截,实现分页的拦截逻辑
黑马:AI+若依

分页拦截器 第一步开启分页 startPage()去拦截第二步(//2.查询课程列表)的SQL语句:

startPage()拦截 --> select * from 课程表 where xxx(拆成总记录数查询(截取* 改成 count(*)得到总记录数),和拆成list集合查询(拼接limit ?,? 得到分页的查询 ))

黑马:AI+若依

第三步的分页结果返回
黑马:AI+若依

源码阅读 – 权限注解

Spring Security框架中的权限注解:@PreAuthorize

不管是什么花里胡哨的语言(漏洞原理的底层思维不会变,比如SQL注入的漏洞原理就是拼接,这放到什么具体语言中还是拼接),学技术(SQL注入如何拼接),而不是学技巧(java SQL注入怎么代审?怎么发现?)。未授权访问,同理。
一把梭,匹配权限标识
黑马:AI+若依

干掉权限字符(未匹配到权限标识,权限不足)
黑马:AI+若依

黑马:AI+若依

获取左边图里的用户登录信息(比如权限集合,权限注解匹配是否在权限集合中存在,存在则放行。不存在则拦截,权限不足)
黑马:AI+若依

源码阅读 – 前后端交互

黑马:AI+若依

黑马:AI+若依

vue.js Axios工具(请求响应拦截器,增强请求响应)
黑马:AI+若依

黑马:AI+若依

黑马:AI+若依

项目工程里配置文件拼接前缀:dev-api 开发,生产,测试等
黑马:AI+若依

前后端分离:请求,代理转发,实现跨域访问
黑马:AI+若依

拦截 /dev-api 前缀进行跨域访问(target);重写(rewrite),匹配 /dev-api,替换为空
黑马:AI+若依

基于跨域的蜜罐或溯源(还有基于客户端漏洞比如浏览器,基于VPS的基础设施比如反渗透VPS或域名找回等手机号数据关联,基于本地文件读取的配置硬编码比如某个生活应用下的ID号等中间关联数据,基于反向钓鱼比如需要先”安装”什么才能访问资产等)
黑马:AI+若依

二开 – 新建业务模块

https://www.bilibili.com/video/BV1pf421B71v?p=17&vd_source=b1acc63fa6d7d73e53111f9e1153f990

后面的开发视频有个勾八好看的,半小时速度快进所有好吧。懂?

存储桶存于本机的环境变量中(因为阿里云OSS官网文档有这个,所以信息收集带上)
黑马:AI+若依

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...