JWT:https://cloud.tencent.com/developer/article/1460770
jwt有三个部分:
123头部(header)载荷(payload)签证(signature)
jwt解密网站:https://jwt.io/
JwtController.java12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182package cn.xiaodi.testjwt.demos.web;import com.auth0.jwt.JWT;import com.auth0.jwt.JWTVerifier;import com.auth0.jwt.algorithms.Algorithm;import com.auth0.jwt.interfaces.DecodedJWT;import org.sprin ...
SpringBoot Actuator模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP跟踪等,帮助我们监控和管理Spring Boot应用。
SpringBoot-监控系统-Actuator
创建一个新项目。
引入依赖,当创建项目时未选择 actuator 依赖时,可在配置文件 pom.xml 中自行引入
1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency>
这个选项参数是暴露所有节点参数的,里面包含了计算机本地的一些环境信息,其中比较敏感的信息就是:
1234/actuator/env 和 /actuator/heapdumphttp://localhost:8080/actuator/envhttp://localhost:8080/actuator/heapdump
这个 ...
Spring Boot 之所以成为当前 Java 生态中适用面最广的开发框架,核心在于它解决了传统 Java 开发的痛点,同时顺应了现代软件架构的需求,其优势体现在开发效率、生态兼容、场景适配等多个维度。
创建一个springboot的项目
在最顶端的这个服务器URL地址这里:
1234服务器url可以选择两个:https://start.spring.iohttps://start.aliyun.com
编写一个静态页面:
如果端口有冲突,就可以修改这里的端口就行。
拼接路径xiaodi,得到刚刚编写的return yatming。
使用get和post的提交代码:
12345678910111213141516171819package com.yatming.springboot_demo.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import ...
JNDI注入的版本限制:
演示案例:JNDI 注入-RMI&LDAP 服务
JNDI 注入-FastJson 漏洞结合
JNDI 注入-JDK 高版本注入绕过
jndi.java12345678910import javax.naming.InitialContext;import javax.naming.NamingException;public class jndi { public static void main(String[] args) throws NamingException { String uri = "rmi://127.0.0.1:1099/work"; InitialContext initialContext = new InitialContext();//得到初始目录环境的一个引用 initialContext.lookup(uri);//获取指定的远程对象 }}
这里的这个远程地址,可以使用上一节使用的那个jar包。
1 ...
Maven配置:https://www.jb51.net/article/259780.htm
Log4jTest.java123456789101112131415161718import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;public class Log4jTest { //使用Log4j 实现错误日志输出 private static final Logger logger = LogManager.getLogger(Log4jTest.class); public static void main(String[] args) { //如果这个code变量是可控的 String code="${java:os}"; logger.error("{}",code); }}
L ...
为什么需要序列化序列化和反序列化的设计就是用来传输数据的。
当两个进程进行通信的时候,可以通过序列化和反序列化来进行传输。
能够实现数据的持久化,通过序列化可以把数据永久的保存在硬盘上,也可以理解为通过序列化将数据保存在文件中。
应用场景:
123(1)想把内存中的对象保存到一个文件中或者是数据库当中。(2)用套接字在网络上传输对象。(3)通过 RMI 传输对象的时候。
简单理解序列化和反序列化
12序列化:将内存中的对象压缩成字节流反序列化:将字节流转换成内存中的对象
几种创建的序列化和反序列化协议
12345678java内置的writeObject() / readObject()java内置的XMLDecoder() / XMLEncoder()还有第三方的(这也就是为什么会有fastjson这样的漏洞)XstreamSnakeYamlFastJsonJackson
为什么会出现反序列化安全问题123456789内置原生写法分析• 重写readObject方法• 输出调用toString方法反序列化利用链(1) 入口类的readObject直接调用危险方法(2) 入口参数 ...
1. 类加载与 Class 对象当 Java 程序运行时,每个类都会被 JVM 加载到内存中,并生成一个对应的Class对象(类似于类的 “元数据模板”)。这个Class对象包含了该类的所有信息:字段、方法、构造器等。类比:就像建筑图纸(Class对象)包含了建筑物(类)的所有设计细节,程序可以通过图纸了解建筑物的结构。
2. 获取 Class 对象的三种方式程序可以通过以下方式获取Class对象:
类名.class:Class<?> clazz = Person.class;
对象.getClass ():Class<?> clazz = personInstance.getClass();
全类名反射:Class<?> clazz = Class.forName("com.example.Person");
类比:就像通过建筑物的名字、实际建筑或地址来获取对应的图纸。
3. 通过 Class 对象访问类成员一旦获得Class对象,就可以获取类的各种成员(字段、方法、构造器)的 “反射对象”:
获取字段:Field f ...
内存马介绍:https://blog.csdn.net/weixin_39190897/article/details/137379027?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172200720616800185891520%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172200720616800185891520&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-4-137379027-null-null.142%5Ev100%5Epc_search_result_base7&utm_term=%E5%86%85%E5%AD%98%E9%A9%AC&spm=1018.2226.3001.4187
sql查询危险的写法123456789101 ...
新建一个项目运行Tomcat
这里1.8的版本是稳定的版本,我这里使用的tomcat是直接小迪课件中打包的,如果是正常来说去官网下载一个tomcat就行。可能报错 javaee9 至少需要 java11 支持,直接将 javaee9 换为 javaee8 即可..
**Facet 的作用:**简单来说,Facet 的核心作用就是对软件的功能进行分类和组织,让开发者能够从不同的角度去看待和管理软件系统,从而提升开发和维护的效率。
这里点击应用之后,创建成功后,我们下面添加javaEE相关的jar包,首先新建一个名为lib的目录。然后将需要的jar包复制到这个目录下,复制之后这个jar不能直接使用。
需要点击文件菜单栏中的项目结构:
这里选择库,然后点击+然后选择java。
这里选择刚刚复制的jar包。
点击确定,然后应用就行了。
配置Tomcat
这里选择本地的tomcat。
然后发现这里有个修复,点击修复(其实就是没有加载项目):
加载完项目之后,直接应用就行。然后运行的时候,报错了:说什么maven没有,然后从上图可以看到右下角有个找到Maven d ...
打包器-WebPack-使用&安全123参考:https://mp.weixin.qq.com/s/J3bpy-SsCnQ1lBov1L98WAWebpack是一个模块打包器。在Webpack中会将前端的所有资源文件都作为模块处理。它将根据模块的依赖关系进行分析,生成对应的资源。
五个核心概念:
【入口(entry)】:指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。
【输出(output)】:在哪里输出文件,以及如何命名这些文件。
【Loader】:处理那些非JavaScript文件(webpack 自身只能解析 JavaScript和json)。webpack 本身只能处理JS、JSON模块,如果要加载其他类型的文件(模块),就需要使用对应的loader。
【插件(plugins)】:执行范围更广的任务,从打包到优化都可以实现。
【模式(mode)】:有生产模式production和开发模式development。
12345使用:1、创建需打包文件2、安装 webpack 库3、创建 webpack 配置文件4、运行 webpack 打包命令
...