Java代码审计的一些基础知识你知道吗

目录
  • JSP生命周期
    • 详细过程:
  • War包结构
  • JAVA 内置对象
  • JAVA 中的危险函数
  • 名词概念
  • 总结

JSP生命周期

关键词Web服务器JSP容器JVM(Java虚拟机)servlet

详细过程:

  • 客户端向Web服务器发起
  • JSP网页请求Web服务器将请求发送给JSP容器(中间件)
  • JSP容器中的 JSP引擎 将 HTTP 请求转化为Servlet
  • JSP引擎再将Servlet编译为 可执行的class类,并将原始请求交给Servlet引擎
  • Web服务器的某组件将会调用servlet引擎,然后载入并执行servlet类。在执行的过程中,servlet产生HTML格式的输出将其内嵌与HTTP 的response上交给Web服务器
  • Web服务器以静态的HTML网页的形式将HTTP的response返回给浏览器

War包结构

在web.xml中 会有此项目的框架信息,三方软件信息,比如Spring,Filter过滤器等等

JAVA 内置对象

Java 内置对象不用new,就可以直接获取对象进行使用。比如 out.print()

request,response,pageContext,session,application,out,config,page,exception

pageContex 方便在 JSP 中直接写 Java代码

application 两个页面交互时共享对象

JAVA 中的危险函数

getParameter()		#获取参数
getcookies()		#直接获取会话
getQueryString()	#获取SQL语句
getHeaders()		#获取HTTP请求头
Runtime.exec()		#执行系统命令
logger.info()		#日志输出,可造成信息泄露的风险

危险关键字:password,upload,download

名词概念

servlet:Java Servlet是运行在Web服务器或应用服务器上的程序,Servlet是一种运行在web服务器上的组件,负责连接客户端请求和服务器数据库(或应用层)

Tomcat 是Web应用服务器,是一个Servlet/JSP容器。

  • Tomcat作为Servlet容器,负责处理客户端的请求(执行java程序),并把请求交给Servlet,并将Servlet的响应传给客户。
  • Tomcat作为JSP容器,…

Servlet 和 JSP的区别

Servlet是在服务器端执行的Java程序,由Servlet容器(其实就是服务器) 负责执行Java程序。而JSP(Java Server Page)则是一个页面, 由JSP容器负责执行。

  • Servlet以Java程序为主, 输出HTML代码时需要使用out.println函数,也就是说Java中内嵌HTML; 而JSP则以HTML页面为主,可以直接插入Java代码, 即HTML中内嵌Java
  • Jsp 就是在HTML中写Java代码,servlet 就是在java代码中写HTML

Tomcat 是容器,是中间件,是web应用服务器。

Servlet 是组件

JSP 是动态网页技术

WAR包:一个 Java项目都是以War包的形式发布到中间件。能拿到WAR包在反编译就能进行代码审计

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • php代码审计比较有意思的例子

    代码审计比较有意思的例子貌似是去年 ecshop支付漏洞偶然出来的一个例子,感觉不错.分享下 复制代码 代码如下: <?php$a=addslashes($_GET['a']);$b=addslashes($_GET['b']);print_r($a.'<br>');print_r($b.'<br>');print_r(str_replace($a,'',$b));//seay?> 成功转义反斜杠(\)使得单引号报错.导致注入产生. 来源:http://www.moon

  • 基于Spring Data的AuditorAware审计功能的示例代码

    Spring Data提供支持审计功能:即由谁在什么时候创建或修改实体.Spring Data提供了在实体类的属性上增加@CreatedBy,@LastModifiedBy,@CreatedDate,@LastModifiedDate注解,并配置相应的配置项,即可实现审计功能,有系统自动记录 createdBy CreatedDate lastModifiedBy lastModifiedDate 四个属性的值,下面为具体的配置项. 示例 创建一个实体类 package com.hfcsbc.i

  • Java中16条的代码规范

    目录 一.MyBatis 不要为了多个查询条件而写 1 = 1 二. 迭代entrySet() 获取Map 的key 和value 三.使用Collection.isEmpty() 检测空 四.初始化集合时尽量指定其大小 五.使用StringBuilder 拼接字符串 六.若需频繁调用Collection.contains 方法则使用Set 七.使用静态代码块实现赋值静态成员变量 八.删除未使用的局部变量.方法参数.私有方法.字段和多余的括号. 九.工具类中屏蔽构造函数 十.删除多余的异常捕获并

  • Java代码审计的一些基础知识你知道吗

    目录 JSP生命周期 详细过程: War包结构 JAVA 内置对象 JAVA 中的危险函数 名词概念 总结 JSP生命周期 关键词:Web服务器,JSP容器,JVM(Java虚拟机),servlet 详细过程: 客户端向Web服务器发起 JSP网页请求Web服务器将请求发送给JSP容器(中间件) JSP容器中的 JSP引擎 将 HTTP 请求转化为Servlet JSP引擎再将Servlet编译为 可执行的class类,并将原始请求交给Servlet引擎 Web服务器的某组件将会调用servle

  • Java Swing最详细基础知识总结

    一.简介 Swing 是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. Swing提供许多比AWT更好的屏幕显示元素.它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT.它们是JFC的一部分.它们支持可更换的面板和主题(各种操作系统默认的特有主题),然而不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们.这意味着你可以在任意平台上使用JAVA支持的任意面板.轻量级

  • java二维数组基础知识详解

    目录 1. 查找 2. 顺序查找 3. 二分查找 4. 多维数组 4.1 二维数组 175 4.2 二维数组细节 5. 二维数组的使用方式 176 6. 二维数组的动态初始化 1.先声明:类型 数组名[][]; 再定义(开辟空间) 数组名 = new 类型[大小][大小] 2.动态初始化-列数不确定 178 7. 二维数组的静态初始化 179 8. 二维数组练习 180 8.1 int arr[][]={{4,6},{1,4,5,7},{-2}}; 遍历该二维数组,并得到和 1. 查找 1) 顺

  • Java中的数组基础知识学习教程

    数字 通常情况下,当我们处理数字时,使用原始数据类型,如 byte,int,long,double 等. 示例 int i = 5000; float gpa = 13.65; byte mask = 0xaf; 然而,在开发中,我们会遇到需要使用对象而不是原始数据类型的情况.为了实现这个, Java 为每个原始数据类型提供包装类. 所有的包装类 (Integer, Long, Byte, Double, Float, Short) 是抽象类 Number 的子类. 这种包装是由编译器处理,这个

  • 深入学习java位运算的基础知识

    相信大家和我一样,接触java这门语言的时候就听过java位运算的鼎鼎大名,当然也仅限于听说过.日常开发过程中使用过么?使用位运算的好处是什么? 想要真正理解java位运算,首先要搞清楚,这个"位"代表的含义. 一切的起源:二进制 位:二进制位,简称"位".是二进制记数系统中表示小于2的整数的符号,一般用1或 0表示,是具有相等概率的两种状态中的一种.二进制位的位数可表示一个机器字的字长,一个二进制位包含的信息量称为一比特(bit). 举个栗子: int占4个字节(

  • java RocketMQ快速入门基础知识

    如何使用 1.引入 rocketmq-client <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.1.0-incubating</version> </dependency> 2.编写Producer DefaultMQProducer produce

  • 一些java二进制的相关基础知识

    说明 任何东西都有规范,提到JAVA就会提到2个规范,JAVA语言规范.JVM规范.JAVA语言规范主要定义JAVA的语法.变量.类型.文法等等,JVM规范主要定义Class文件类型.运行时数据.帧栈.虚拟机的启动.虚拟机的指令集等等. JAVA语言规范主要定义什么是JAVA语言. JVM规范主要定义JVM内部实现,二进制class文件和JVM指令集等. 规范中数字的内部表示和存储 JAVA八种基本数据类型: 整形:byte,short,int,long 浮点型:float,double 布尔型

  • 简单了解Java中多态的基础知识

    一.多态 多态分为两种:(1)引用的多态.(2)方法的多态 引用的多态: 父类的引用可以指向本类的对象: 父类的引用可以指向子类的对象: 注意:子类的对象不可以指向父类的对象,如下图所示 方法的多态: 创建本类对象时,调用的方法为本类的方法: 创建子类对象时,调用的方法为子类重写的方法或者继承的方法: 注意:父类的引用调用的方法不能是子类独有的方法,必须是从父类继承的方法或重写父类的方法.. 二.多态中的引用类型转换 1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换.不存在风险.

  • Java基础知识汇总

    Java基础知识 1.Java语言的优点: 1)Java是纯面向对象语言 2)与平台无关性,一次编译到处运行 3)Java提供了狠多内置类库 4)提供了对web应用的支持 5)具有较好的安全性(数组边界检测.Bytecode检测)和健壮性(强制型机制.垃圾回收器.异常处理) 6)去除c++难以理解的一些特性(头文件 指针 运算符重载 多重继承) 2.java与c++的异同: 1)Java为解释型语言,c++为编译型语言,java会慢但是跨平台 2)Jave为纯面向对象,c++既面向对象又能面向过

  • Java基础知识精选 你答对了几道?

    没有技术深度是大多程序员的一种常态. 但是当你成为一个资深的工程师的时候,很多公司并不希望你还是那样平庸,没有深度.虽然你会纳闷,我就算有深度你们也不一定用得上呀?然而到了这个级别的人需求量并不像初中级开发那么多,公司更理性和稳妥的做法是选择有深度的人,不是吗? Integer比较 看下面这段有意思的代码,对数字比较敏感的小伙伴有没有发现异常? public static void main(String[] args) { Integer a = 128,b=128; Integer c =

随机推荐