AI+若依

news/2024/11/28 2:02:38/文章来源:https://www.cnblogs.com/smallfa/p/18570971

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了)
    image

git克隆一把梭出问题时:Maven -- clean清理 -- package打包(重新第三方依赖下载)-- 刷新
image

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

打开数据库的客户端工具:
image

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

右键 -- 执行 sql 脚本
image

启动项目需要连接数据库(连接数据库的配置文件):mybatis -- application-druid.yml
image

启动redis服务
image

配置文件对齐redis密码
image

运行后端项目(找到项目的启动类):ruoyi-admin子模块中,运行RuoYiApplication
image

debug启动类方法
image

  • 搭建前端项目
    git克隆并VScode初始化项目
    image

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

运行前端项目:npm run dev

运行成功后浏览器自动打开后台管理系统的登录页面(前端:后开登录页面)
image

入门案例

  • 前端
    vue中:api放的前端请求的js文件(贵司的api安全),views放的视图组件
    image

  • 后端
    image

  • 准备SQL并导入数据库

  • 配置代码生成信息

代码生成模块:数据库脚本中的字段,对应攻防中的参数fuzz字典思维
image

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

image

功能 - 权限控制

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

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

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

RBAC:红色的五张表(其他绿色表,细颗粒访控)
image

功能 - 数据字典

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

image

功能 - 监控相关

在线用户 - 登录信息查redis缓存(登录token,配置信息等敏感数据)(贵司的webshell流量特征session固定值)
image

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

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

功能 - 定时任务

硬编码定时任务 VS 动态管理任务
image

这里至少你能看见登录后的方法参数控制:
image

功能 - 系统接口

使用的Swagger工具生成API在线文档,提供web界面进行接口调用和测试
image

Swagger配置文件
image

项目结构

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

image

通用工具
image

框架核心
image

系统模块
service业务层,mapper持久层,domain实体类
image

  • 配置文件
    image

文件上传时的保存路径:本地或存储桶OSS
image

服务器性能相关
image

jwt认证设置
image

mybatis的映射配置文件和全局配置文件
image

xss过滤器配置
image

  • 模块依赖关系
    ruoyi-admin模块跑起来,后面的模块就都跑起来了
    image

pom.xml文件看看依赖关系
image

image

  • 前端结构
    image

package.json:第三方依赖的版本信息
image

  • 表结构
    image

源码阅读 - 前端

  • 前置知识:SpringBoot3+Vue3全栈

api接口,vue前端组件
image

简而言之,api接口的js文件里引入了请求类,里面封装了请求响应拦截器工具类等
image

源码阅读 - 后端

  • 不严谨但很实用,简单一把梭:控制着请求(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并返回。
image

具体实现:CourseMapper.java中实现的,与service的实现类(CourseServicelmpl.java)一一对应
image

具体每个方法对应的SQL语句,在CourseMapper.xml中实现的
image
image

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

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

继承类的属性方法(什么getUserId,这些属性方法对应渗透测试的字典fuzz)
image

image

分页拦截器 PageHelper:自动对SQL分页进行拦截,实现分页的拦截逻辑
image

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

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

image

第三步的分页结果返回
image

源码阅读 - 权限注解

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

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

干掉权限字符(未匹配到权限标识,权限不足)
image

image

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

源码阅读 - 前后端交互

image

image

  • vue.js Axios工具(请求响应拦截器,增强请求响应)
    image

image

image

项目工程里配置文件拼接前缀:dev-api 开发,生产,测试等
image

前后端分离:请求,代理转发,实现跨域访问
image

拦截 /dev-api 前缀进行跨域访问(target);重写(rewrite),匹配 /dev-api,替换为空
image

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

二开 - 新建业务模块

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

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

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

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

相关文章

ETL数据采集之Sqoop的安装部署及操作

ETL数据采集 数据采集也叫数据集成 ,我们常说的爬虫也是数据采集的一种方式 。 常用的数据采集工具分为两大类:离线数据采集(批量数据采集),实时数据采集(增量数据采集),这次我们分别来学习一下这俩种采集方式的常用工具 离线数据采集 常用工具有Sqoop、DataX、Kettle …

CTF学习(19)MISC(面具下的flag)

1.解压后发现为.jpg格式的文件--->使用010editor打开后搜索flag发现存在两个疑似flag文件的标识 第一处:第二处:2.在kali使用binwalk发现藏有两个文件--->爆破zip文件(无果,可能是伪加密?)分离后的文件:3.检查文件头加密部分(偶数,无加密)--->检查文件尾加密部分 09 …

差旅费报销管理信息系统进度1(2022java期末考试练习)接上题目

目前做了第一个表出差申请的增删改查项目结构mapper中放sql语句 service写函数定义 web写具体servlet操作 前端用html+jsp

2024.11.26总结

DrRatio本文于 github 博客同步更新。 A: 学生大战一个半小时未果,结束前半小时发现是打表找规律。 就是分讨一下,首先大于 \(1\) 的数不能超过两个,若有两个则其中一个必定为 \(2\),然后看一下 \(1\) 的个数是不是 \(3\) 的倍数即可。 B: 拆贡献,分为 \(u\rightarrow l…

五款GIS工具箱推荐:GISBox、Global Mapper等如何选择?

概述 GIS工具箱在地理信息数据的管理、分析和可视化中扮演着至关重要的角色。本文介绍了包括GISBox在内的五款GIS工具箱,分别是GISBox、Global Mapper、QGIS、Whitebox GAT和MapWindow GIS,并从功能特点、用户体验和应用场景等方面分析了它们的优缺点,帮助用户选择适合自身需…

TIA使用SCL写FB做交通信号灯控制练习

这个练习尝试使用SCL编程,按照第一个交通信号灯的要求写控制程序。因为我是初学者,所以做出来的东西可能不是最简洁最优的,只是当学习体验做一个记录而已。 在前面的程序基础上新建一个FB,使用SCL编程方式,先建立变量如下:写下面的SCL程序,其中TON这样的功能块通过从右边…

app搭建笔记(18)

一、app自动化测试环境和用途: 主要用于做app端UI自动化,熟悉adb命令(a表示安卓,d表示debug,b表示桥) adb是连接手机设备 二、搭建环境的工具 (1)jdk 已安装,java的一种编译器 (本地windows安装) jdk安装和配置环境变量(2)查看jdk版本如果如果配置好,就要配置…

IDEA如何整理代码格式,格式化代码,去除无效依赖,自动缩进等

前言 大家好,我是小徐啊。我们在IDEA中,经常是需要格式化代码的,这样代码才能好看一点。今天,我就来介绍下如何在IDEA中格式化代码,让代码看起来更加好看整洁一点。 如何格式化代码 首先,我们打开要格式化代码的文件。然后,鼠标右击下。然后,点击下重新格式化代码,或者…

『模拟赛』多校A层冲刺NOIP2024模拟赛26

『模拟赛记录』多校A层冲刺NOIP2024模拟赛26Rank 有点唐A. 随机游走 签。 重要的就后两句话。题意由此转化成:到每一个节点时,先后遍历其所有子节点的子树,使得 \(\sum t_i\times w_i\) 最小。 提前 dfs 一遍处理出便利完某棵子树所需要的总时间和子树总价值,容易发现对于两…

强化学习交易应用相关

FinRL尝试 这是第一个开源的金融强化学习框架,FinRL已经发展成为一个包含丰富资源的生态系统,为金融强化学习的研究和应用提供了强大的支持。 项目地址:https://github.com/AI4Finance-Foundation/FinRL个人使用体验:可能因为维护不及时,示例代码无法顺利运行,需要各种修…

24. 两辆交换链表中的节点

题目 卡哥的讲解很详细了 卡哥视频讲解一如既往的把小细节都讲到了 跟着卡哥的代码敲了下 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next…

jenkins搭建和使用_(17)

Jenkins操作手册 =================================================================== 一、jenkins介绍 1、持续集成(CI) Continuous integration 持续集成 团队开发成员每天都有集成他们的工作,通过每个成员每天至少集成一次,也就意味着一天有可 能多次集成。在工作中我…