【基础概念大总结】— 网络安全 Java 基础知识大汇总_java网络安全_罗四强的博客-程序员秘密

技术标签: java  运维  linux  后端  大数据  

这一篇,我们介绍一下:Java语言中存在有哪些安全漏洞。

我们在渗透测试中,可以如何利用这些漏洞。

那这一篇,首先全面总结一下JAVA中的基础概念。

上课了~~~上课了~~·

目录

JVM

JDK

JMX

JNI

JNA

OGNL

IO模型

BIO

NIO

AIO

反射

简介

 相关类

 Class相关

 Field相关

 Method相关

 Constructor


JVM

JVM是Java平台的核心,以机器代码来实现,为程序执行提供了所需的所有基本功能,例如字节码解析器、JIT编译器、垃圾收集器等。由于它是机器代码实现的,其同样受到二进制文件受到的攻击。

JCL是JVM自带的一个标准库,含有数百个系统类。默认情况下,所有系统类都是可信任的,且拥有所有的特权。

JDK

Java开发工具包(Java Development Kit,JDK)是Oracle公司发布的Java平台,有标准版(Standard Edition,Java SE)、企业版(Enterprise Edition,Java EE)等版本。

在最开始,JDK以二进制形式发布,而后在2006年11月17日,Sun以GPL许可证发布了Java的源代码,于是之后出现了OpenJDK。

JMX

JMX(Java Management Extensions,Java管理扩展)是一个为应用程序植入管理功能的框架,主要为管理和监视应用程序、系统对象、设备和面向服务的网络提供相应的工具。JMX可以远程读取系统中的值、调用系统中的方法。在JMX未配置身份验证或JDK版本过低存在反序列化漏洞时,可能会导致远程代码执行。

JNI

JNI (Java Native Interface) 是Java提供的和其他语言交互的接口。

JNA

JNA (Java Native Access) 是在JNI上的框架,用于自动实现Java接口到native function的映射,而不需要另外编写JNI代码。

OGNL

OGNL(Object-Graph Navigation Language,对象导航语言)是一种功能强大的表达式语言,通过简单一致的表达式语法,提供了存取对象的任意属性、调用对象的方法、遍历整个对象的结构图、实现字段类型转化等功能。

Struts2中使用了OGNL,提供了一个ValueStack类。ValueStack分为root和context两部分。root中是当前的action对象,context中是ActionContext里面所有的内容。

IO模型

Java 对操作系统的各种 IO 模型进行了封装,形成了不同的API。

BIO

BIO (Blocking I/O) 是同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。

NIO

NIO (New I/O) 是一种同步非阻塞的I/O模型,在Java 1.4中引入,对应 java.nio 包,提供了 Channel , Selector,Buffer等抽象。

AIO

AIO (Asynchronous I/O) 在 Java 7 中引入,是NIO的改进版,是异步非阻塞的IO模型,基于事件和回调机制实现。

反射

简介

Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能被称为语言的反射机制。

 相关类

类名 用途
Class 类的实体
Field 类的成员变量
Method 类的方法
Constructor 类的构造方法

 Class相关

  • asSubclass(Class<U> clazz)

    • 把传递的类的对象转换成代表其子类的对象
  • Cast

    • 把对象转换成代表类或是接口的对象
  • getClassLoader()

    • 获得类的加载器
  • getClasses()

    • 返回一个数组,数组中包含该类中所有公共类和接口类的对象
  • getDeclaredClasses()

    • 返回一个数组,数组中包含该类中所有类和接口类的对象
  • forName(String className)

    • 根据类名返回类的对象
  • getName()

    • 获得类的完整路径名字
  • newInstance()

    • 创建类的实例
  • getPackage()

    • 获得类的包
  • getSimpleName()

    • 获得类的名字
  • getSuperclass()

    • 获得当前类继承的父类的名字
  • getInterfaces()

    • 获得当前类实现的类或是接口
  • getField(String name)

    • 获得某个公有的属性对象
  • getFields()

    • 获得所有公有的属性对象
  • getDeclaredField(String name)

    • 获得某个属性对象
  • getDeclaredFields()

    • 获得所有属性对象
  • getAnnotation(Class<A> annotationClass)

    • 返回该类中与参数类型匹配的公有注解对象
  • getAnnotations()

    • 返回该类所有的公有注解对象
  • getDeclaredAnnotation(Class<A> annotationClass)

    • 返回该类中与参数类型匹配的所有注解对象
  • getDeclaredAnnotations()

    • 返回该类所有的注解对象
  • getConstructor(Class...<?> parameterTypes)

    • 获得该类中与参数类型匹配的公有构造方法
  • getConstructors()

    • 获得该类的所有公有构造方法
  • getDeclaredConstructor(Class...<?> parameterTypes)

    • 获得该类中与参数类型匹配的构造方法
  • getDeclaredConstructors()

    • 获得该类所有构造方法
  • getMethod(String name, Class...<?> parameterTypes)

    • 获得该类某个公有的方法
  • getMethods()

    • 获得该类所有公有的方法
  • getDeclaredMethod(String name, Class...<?> parameterTypes)

    • 获得该类某个方法
  • getDeclaredMethods()

    • 获得该类所有方法
  • isAnnotation()

    • 如果是注解类型则返回true
  • isAnnotationPresent(Class<? extends Annotation> annotationClass)

    • 如果是指定类型注解类型则返回true
  • isAnonymousClass()

    • 如果是匿名类则返回true
  • isArray()

    • 如果是一个数组类则返回true
  • isEnum()

    • 如果是枚举类则返回true
  • isInstance(Object obj)

    • 如果obj是该类的实例则返回true
  • isInterface()

    • 如果是接口类则返回true
  • isLocalClass()

    • 如果是局部类则返回true
  • isMemberClass()

    • 如果是内部类则返回true

 Field相关

  • equals(Object obj)

    • 属性与obj相等则返回true
  • get(Object obj)

    • 获得obj中对应的属性值
  • set(Object obj, Object value)

    • 设置obj中对应属性值

 Method相关

  • invoke(Object obj, Object... args)

    • 传递object对象及参数调用该对象对应的方法

 Constructor

  • newInstance(Object... initargs)

    • 根据传递的参数创建类的对象

 

 推荐阅读

优质资源

python实战

【pygame游戏开发专栏,获取完整源码+教程】

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42350212/article/details/123283139

智能推荐

CSS实现九宫格布局方法_css宫格_不爱吃鱼的L猫的博客-程序员秘密

在实际开发中经常会遇到九宫格布局,所以总结几种利用CSS实现九宫格布局的方法,仅供参考...目录: 利用grid创建网络布局 利用display:table 利用absolute方位值 利用float 利用flex弹性布局 方法一:利用grid创建网络布局网络布局(grid)是最强大的CSS布局方案。它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了。参考文档:

ESXi upgrade 6.0 To 6.7_weixin_33873846的博客-程序员秘密

VMware Workstation Pro更改你的啟動順序,默認是HDD直接啟動來到Boot將CDROM移到頂端,按F10,保存重啟。我的ESXi6.0是廠商定製版,而我更新的是官方版本,所以不會出現 Upgrade字眼,直接安裝,選擇第一個,等同於重新安裝ESXi,至於是否會覆蓋原來的虛擬機,我相信是會的,所以Upgrade之前請注意,這個是不可挽回的錯誤!!!直接安裝提...

c++中左值和右值是什么意思_C++右值引用_weixin_39580124的博客-程序员秘密

码字不易,欢迎给个赞!右值引用应该是C++11引入的一个非常重要的技术,因为它是移动语义(Move semantics)与完美转发(Perfect forwarding)的基石:移动语义:将内存的所有权从一个对象转移到另外一个对象,高效的移动用来替换效率低下的复制,对象的移动语义需要实现移动构造函数(move constructor)和移动赋值运算符(move assignment operato...

三大迹象露端倪!“312暴跌”之后,数字货币市场发生了这些变化_火星财经的博客-程序员秘密

“到目前为止,崩盘后的很多数据都表现出了相对强劲的复苏。”本文谨代表作者个人观点,不代表火星财经立场,该内容旨在传递更多市场信息,不构成任何投资建议。作者|Nate Maddrey...

Install Linux on Windows with WSL2 (使用 WSL2 在 Windows 上安装 Linux)_Yongqiang Cheng的博客-程序员秘密

Install Linux on Windows with WSL2 (使用 WSL2 在 Windows 上安装 Linux)

随便推点

黑马程序员_毕向东_Java基础视频教程学习笔记(八)_escdelete的博客-程序员秘密

数组:同一种类型数据的集合,其实数组就是一个容器。格式一:元素类型 [] 数组名=new 元素类型 [元素个数或数组长度]int [] x=new int [2];x是数组类型的,而不是int类型的。数组中的元素才是int类型的。int  []  x=new  int  [3];int [] y=x;y[1]=89;x[1]=

密码验证合格程序_hutongling的博客-程序员秘密

密码要求:1.长度超过8位2.包括大小写字母.数字.其它符号,以上四种至少三种3.不能有相同长度超2的子串重复说明:长度超过2的子串输入描述: 一组或多组长度超过2的子符串。每组占一行 输出描述: 如果符合要求输出:OK,否则输出NG 示例1 输入021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000 输出OK NG NG OKimport

DVWA SQL注入之手工注入_dvwa 手注_马赛克|的博客-程序员秘密

本次使用的靶机是看雪论坛为我们提供的在线靶机地址:http://43.247.91.228:81账号:admin密码:password一:Low级别注入1. 先在文本框中输入1,单击submit,查看效果手注的思路:确定页面使用了多少个字段,然后确定各个字段的位置,最后构造SQL语句进行注入2. 在文本框中输入 1' order by 2#返回正常 1...

黑马程序员——Java基础学习笔记(四)_nasuf的博客-程序员秘密

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------46. (1)多态的体现:父类的引用指向自己的子类对象(父类的引用也可以接收自己的子类对象);(2)多态的前提:必须是类与类之间有关系,继承或者实现;通常还有一个前提,即存在覆盖;(3)多态的好处:多态的出现提高了程序的可扩展性;(4)多态的弊端:提高了扩展性,但只能使用父类的引用访问父类

wsl+可视化界面+ros、rviz安装显示-程序员秘密

wsl+可视化界面+ssh远程连接+ros/rviz安装显示

使用gdiplus显示gif图片_zhuiyuanqingya的博客-程序员秘密

使用gdiplus显示gif图片需求在没有MFC上下文的windows环境下实现gif图片的显示; 可以根据文件名来显示gif图片;gif图片集成到可执行程序中。 实现思路windows api并不支持gif图片的显示,不过从XP之后,windows自带的库gdi++支持gif、png等各种格式的图片。因此,这里使用了gdi++的库来实现。 想要把...

推荐文章

热门文章

相关标签