当前位置: 首页 > news >正文

济南网站建设伍际网络b2b平台营销

济南网站建设伍际网络,b2b平台营销,wordpress密码重设链接无效,做网站最好的公司简介 https://openjdk.org/jeps/290 Filter Incoming Serialization Data过滤传入的序列化数据 JEP290是Java官方提供的一套来防御反序列化的机制,其核心在于提供了一个ObjectInputFilter接口,通过设置filter对象,然后在反序列化&#xff…

简介

https://openjdk.org/jeps/290

Filter Incoming Serialization Data过滤传入的序列化数据

JEP290是Java官方提供的一套来防御反序列化的机制,其核心在于提供了一个ObjectInputFilter接口,通过设置filter对象,然后在反序列化(ObjectInputStream#readObject)的时候触发filter的检测

JEP 290 在 JDK 9 中加入,但在 JDK 6,7,8 一些高版本中也添加了:

Java? SE Development Kit 8, Update 121 (JDK 8u121)Java? SE Development Kit 7, Update 131 (JDK 7u131)Java? SE Development Kit 6, Update 141 (JDK 6u141)

处理

我这里的JDK是 8u202版本

ObjectInputStream

对于ObjectInputStream类来说,主要的过滤方法为filterCheck

image-20221009185828921.png

根据注释,我们知道这个方法主要是当序列化过滤器不为空的时候触发该过滤器

其中反序列化过滤器就为serialFilter属性值,跟进一下

image-20221009190023383.png

这是一个ObjectInputFilter接口,根据注释我们知道从流中读取类的类描述符和类的过滤器,可以不进行配置

我们看看该类的构造方法

image-20221009190254010.png

默认会对serialFilter属性进行赋值操作,跟进ObjectInputFilter.Config.getSerialFilter()方法的调用

image-20221009190420085.png

获取的是ObjectInputFilter中的内部静态类ConfigserialFilter属性

跟下来回到filterCheck方法的分析

image-20221009190703164.png

首先就会判断是否具有serialFilter这个过滤器,如果不为空,将会调用过滤器的checkInput方法进行过滤处理,传入了clazz / arrayLength / depth等信息

image-20221009191015234.png

这个方法返回的是一个ObjectInputFilter.Status,这是一个枚举类型

image-20221009191057036.png

接下来回到filterCheck方法

如果返回的状态为null/REJECTED两个之一,将会抛出异常

所以,对于过滤器的设置,我们可以通过创建一个ObjectInputFilter实例,并重写他的checkInput方法,在其中实现我们的过滤逻辑,之后通过调用ObjectInputStream#setInternalObjectInputFilter进行为stream添加过滤器

image-20221009191546558.png

ObjectInputFilter$Config

在这个类中,存在有一个静态代码块

image-20221009194839656.png

在调用该类的时候就会为serialFilter属性赋值,跟进到configuredFilter属性的来源

image-20221009194957544.png

主要是获取jdk.serialFilter属性值,之后通过调用createFilter方法进行过滤器的创建

跟进一下createFilter方法的调用

image-20221009195401018.png

这个方法将会调用ObjectInputFilter.Config.Global.createFilter方法进行创建

ObjectInputFilterConfigConfigConfigGlobal

接着上面的分析,我们跟进该类的createFilter方法

image-20221009195813279.png

将传入的JEP规则字符串var0传入Global内部静态类的构造方法中,创建了一个Golbal对象,进行返回,所以前面在ObjectInputStream类的构造方法中主要是为serialFilter赋值的是一个Global类

查看官方文档,我们知道JEP 290的编写规则为

  1. 如果模式以“!”开头,如果模式的其余部分匹配,则该类被拒绝,否则被接受

  2. 如果模式包含“/”,则“/”之前的非空前缀是模块名称。如果模块名称与类的模块名称匹配,则剩余模式与类名称匹配。如果没有“/”,则不比较模块名称。

  3. 如果模式以“.**”结尾,则它匹配包和所有子包中的任何类

  4. 如果模式以“.*”结尾,它匹配包中的任何类

  5. 如果模式以“*”结尾,它匹配任何以该模式为前缀的类。

  6. 如果模式等于类名,则匹配。

  7. 否则,状态未定

  • If the pattern starts with “!”, the class is rejected if the rest of
    the pattern matches, otherwise it is accepted

  • If the pattern contains “/”, the non-empty prefix up to the “/” is the
    module name. If the module name matches the module name of the class then
    the remaining pattern is matched with the class name. If there is no “/”,
    the module name is not compared.

  • If the pattern ends with “.**” it matches any class in the package and
    all subpackages

  • If the pattern ends with “.*” it matches any class in the package

  • If the pattern ends with “*”, it matches any class with the pattern as
    a prefix.

  • If the pattern is equal to the class name, it matches.

  • Otherwise, the status is undecided.

接下来看看Global构造方法中是如何进行解析的

image-20221009201153578.png

首先是通过传入的规则var1,将其根据;进行分割,并初始化filters属性为ArrayList数组

image-20221009201516961.png

首先判断是否以*结尾,进而判断是否是.*结尾,如果是以!开头的话成功匹配的话,将会通过lambada的格式调用this.filters.addStatus放置于filters属性中,这里举个例子就行了,后面就也就是同样的格式,进行filters属性的添加

我们看看filters属性是个什么东西?

image-20221009202802332.png

这是一个函数列表

这样成功设置了过滤器,当我们调用的时候将会调用

ObjectInputStream#filterCheckObjectInputFilter$Config$Global#checkInput

image-20221009203807974.png

主要是根据遍历filters属性通过反序列化的类进行获取对应的Status状态

过滤器

全局过滤器

通过前面的分析,我们可以知道在ObjectInputFilter$Config类中属性configuredFilter中获取了jdk.serialFilter属性值,这里就是全局过滤器

对于该属性值的设置有两种方式

  1. 配置JVM的jdk.serialFilter

  2. 配置%JAVA_HOME%\conf\security\java.security中的jdk.serialFilter字段

局部过滤器

同样有着两种方法进行设置

  1. 在创建ObjectInputStream对象之后通过调用其setInternalObjectInputFilter方法进行设置

  2. 又或者是调用Config#setObjectInputFilter方法进行设置

中的jdk.serialFilter字段

局部过滤器

同样有着两种方法进行设置

  1. 在创建ObjectInputStream对象之后通过调用其setInternalObjectInputFilter方法进行设置

  2. 又或者是调用Config#setObjectInputFilter方法进行设置

最后

分享一个快速学习【网络安全】的方法,「也许是」最全面的学习方法:
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

在这里插入图片描述

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k。

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!
扫下方二维码,免费领取

有了这些基础,如果你要深入学习,可以参考下方这个超详细学习路线图,按照这个路线学习,完全够支撑你成为一名优秀的中高级网络安全工程师:

高清学习路线图或XMIND文件(点击下载原文件)

还有一些学习中收集的视频、文档资源,有需要的可以自取:
每个成长路线对应板块的配套视频:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,需要的可以【扫下方二维码免费领取】

http://www.hengruixuexiao.com/news/8336.html

相关文章:

  • 高端网站开发企业产品营销策划
  • 了解网站建设管理网站怎么优化seo
  • asp网站配色关键词排名零芯互联关键词
  • 东莞常平火车站叫什么个人免费开发app
  • 温州建网站百度识图扫一扫
  • discuz 门户网站模板潍坊百度网站排名
  • 手机微信网站怎么做的磁力蜘蛛种子搜索
  • 网站建设 验收意见惠州seo按天计费
  • 什么网站可以做机票行程单网推接单平台
  • 网站推广营销案例北京关键词优化服务
  • 做公司 网站建设价格低网页设计代做
  • 品牌设计网站公司站内seo的技巧
  • 淄博张店网站建设厦门排名推广
  • 余姚做轴承网站百度收录提交
  • 网站切换语言怎么做百度快照seo
  • 山西网站群建设搜索引擎优化需要多少钱
  • 网站上线需要怎么做杭州最好的seo公司
  • 两学一做网站视频最新疫情最新数据
  • 网站添加地图导航谷歌首页
  • 青浦网站建设公司软文推广文章
  • 网站建设的软文怎么写企业营销管理
  • 泰安网站制作哪里有网络营销活动策划方案
  • 门户网站建设意义福清市百度seo
  • 建设网站报价seo如何去做优化
  • 现在淘客做网站还行吗电商网站大全
  • 用自己照片做衣服_杯子的是哪个网站怎样做好竞价推广
  • 网站制作软件手机版大型网站建设方案
  • 长沙网站优化步骤做app推广去哪找商家
  • 东莞网站建设 信科网络关键词排名优化易下拉排名
  • 天津 网站设计昆明优化网站公司