cfe8bc06d84b05197f0bb92ed99dd2e81f090f189b0a5e9b1ce7b5ee17877767c30429196d9853d25e8b17919a9842c48d16f4744d5b442b8e10a2a58652964b4bc1c6873b99873ec38987b726b64d2834f161074fd04ee8f731e481bc867d96ee0a84f2cb0cc6801c992df92dffd50dd54daa94f300ff8cfee8573a8e7a727c39cd4eeba0c8f37aefeb7837caeee57f65a0d8234ee30f8b1c792930e3cb4c7271780e8d0a666607c0c30c4072e81b03ee10d45c8830d03e8048d7ef67df8f6b672c0ec2b0ae12f9bafe4226c8ef992dd7d86db4c1a6b66661e85f03c30e5ba614012702c1a07e2484623ca192b204a3e14603435d3f8b077 ...
cfe8bc06d84b05197f0bb92ed99dd2e8f3cfc2adecb247a825b8c6fab0339414a27b921e5f87f6925073dcea9622a37bab7ff69c6bbd410ad995b524dd79dd071f69455bbf9e59ac7124d6172359e0ed85cc1215e025f365b1dcd2bfc944564442cb80ffc8ed5f971392f3be92b4db2055286b17695a366ec5948c361bb66c74ac55b26280014f9190eec17cd857550ffef9ddbc4bdaa5807ca1cf67ef45313fc79081104237a20a11ee7fc6e383d8f8191a75d265ea6cc91db17716b199e20059e9bdcd21f3b88e15194592ac70e1d32d49361944900e59a7c60696db170f84947d3d0fba85cfddd9dcdfb557b141c21f12d8c3b79ea0bdc ...
1.开发测试环境搭建(审计环境)1.1.开发环境
RuiYi历史版本下载地址
安装IDEA
配置Maven
安装Mysql
创建数据库ry
运行下载源码中的sql
获得如下表
修改连接数据库的用户名密码、路径
启动redis
运行环境
1.2.linux生产环境
文件路径更改为linux的文件上传路径(任意)
使用Maven插件打包为jar
ruoyi-admin.jar移至linux环境
使用命令java -jar ruoyi-admin.jar前台运行程序,或者使用命令 nohup java -jar ruoyi-admin.jar >log.txt 2>&1 & 后台运行
访问地址:80端口即可。
2.历史漏洞2.1. Shiro反序列化(RuoYi<V-4.6.2)
该漏洞原理简单来说就是Shiro将用户认证信息存储到remeberme字段中,后端读取该字段是将该字段在服务器反序列化并通过可利用的gadget实现RCE漏洞。虽然shiro使用了AES加密remeberme字段信息,但是由于sh ...
1.修改注册表
快捷键◀Win+R打开运行命令窗口
输入regedit打开注册表
依次找到如下键值路径
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings
找到FlightSettingsMaxPauseDays键值双击打开
如果是新版本的Win10删除了该FlightSettingsMaxPauseDays键,那就新建一个就OK
新建一个DWORD32位值,然后改名为FlightSettingsMaxPauseDays即可。
修改基数十进制计数,输入3650(表示最大暂停天数,也可以输入其他的值)
到这一步我们只是修改了最大暂停天数,这个时候我们需要设置实际的暂停天数
2.修改暂停天数
打开windows设置,选择更新和安全
点击高级选项
在这就可以选择实际暂停的天数了
1.守护进程1234root@user-ubantu:~# ps -ef | grep nginxroot 6905 1 0 10:36 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;www-data 6907 6905 0 10:36 ? 00:00:00 nginx: worker processwww-data 6908 6905 0 10:36 ? 00:00:00 nginx: worker process
master主进程
worker子进程
2.查看端口占用情况12345678root@user-ubantu:~# lsof -i:80COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEnginx 6905 root 6u IPv4 51224 0t0 T ...
1.axios请求拦截器判断请求类型
当请求为get请求时拼接请求参数
src\utils\request.js
12345678910//初始化data,data为需要进行签名的字符串let data = config.urlif (config.method === 'get' && config.params) { data += '?' for (let key in config.params) { data += (key + "=" + config.params[key]+ "&") } //删除多余的& data = data.slice(0, -1);}
当请求为post时拼接请求参数
src\utils\request.js
12345if (config.method === 'post' && (typeof con ...
具体实现细节链接地址:
项目简介
密钥交换和用户认证
敏感数据加密传输
传输签名校验
数据库用户密码加密
配置文件加密
项目仓库链接地址
前端VUE
后端SpringBoot
项目演示链接地址
LOGIN-DEMO
默认用户名密码:admin,admin123
1.项目简介1.1.密钥交换和用户认证
前端请求后端获取SM2公钥
前端随机生成SM4密钥(key+iv)
用户认证(用户输入用户名和密码)
前端分别使用SM2公钥加密(用户密码、key、iv)
后端使用SM2私钥解密获得(用户密码、key、iv)
用户认证成功将key、iv存入loginUser然后存入redis
生成JWT,请勿将key、iv存入JWT (JWT只能保证数据完整性)
返回前端存入sessionStorage (完成用户认证和密钥交互)
使用sm4密钥加密业务数据进行传输
1.2.敏感数据加密传输
前端从sessionStorage中获取sm4密钥和iv
加密敏感数据发送至后端
后端使用从JWT中获取到redisKey获取该登陆会话的loginUser,并从loginUser中获取到 ...
1.实现PasswordEncoder接口
通过实现PasswordEncoder接口设置自定义的密码加密规则和匹配规则
实现三次带盐的SM3加密
实现逻辑为SM3(SALT+SM3(SALT+SM3(SALT+PASSWORD)))
com/gaomu/utils/crypto/SM3PasswordEncoder.java
123456789101112131415161718192021public class SM3PasswordEncoder implements PasswordEncoder {//密码加密规则 @Override public String encode(CharSequence rawPassword) { String pwdDigest = rawPassword.toString(); for (int i = 0; i < 3; i++){ pwdDigest = SM3Util.passwordDigest(pwdDigest); ...
1.前端SM4加密
从sessionStorage中获取key和iv加密手机号
src\views\Home.vue
123456this.homeForm.phoneNumber = this.tempPhomeNumberSM4Data.key = sessionStorage.getItem("secretKey")SM4Data.iv = sessionStorage.getItem("iv")SM4Data.originalData = this.homeForm.phoneNumberencryptSM4(SM4Data)this.homeForm.phoneNumber = SM4Data.encryptedData
发送给密文到后端
src\views\Home.vue
1this.axios.get('/getApiTest', { params: this.homeForm })
2.后端读取SM4密钥
后端j接口处获取到加密后的请求数据
com/gaomu/co ...
1.导入jasypt坐标
添加jasypt依赖坐标
pom.xml
12345<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.4</version></dependency>
2.实现自定义配置文件加密算法
实现接口PBEStringEncryptor
com/gaomu/utils/crypto/SM4YmlEncryptor.java
1234567891011121314151617181920212223242526272829303132333435public class SM4YmlEncryptor implements PBEStringEncryptor { private String password; //密钥key不可硬编 ...