java审计入门(一)

写在前面

这几天一直陆陆续续在学java的代码审计,但是总感觉学的不是很顺畅,所以去《代码审计》星球看了一个入门的panda师傅写的java审计,一开始的基础知识就跟着打一遍吧

基础知识

1.包的命名规范

(1)indi:

个体项目:指个人发起,但非自己独立完成的项目,可公开或私有项目,copyright主要属于发起者
包名为:indi.发起者名.项目名.模块名.。。。

(2)pers:

个人项目:指个人发起,独自完成,可分享的项目,copyright主要属于个人。
包名为pers.个人名.项目名.模块名.。。。

(3)priv:

私有项目:指个人发起,独立完成,非公开的私人使用的项目,copyright属于个人
包名为priv.个人名.项目名.模块名.。。。

(4)onem:

与indi 相同,推荐使用indi

(5)team:

团队项目,指由团队发起,并由该团队开发的项目,copyright属于该团队所有
包名为:team.团队名.项目名.模块名.。。。

(6)com:

公司项目,copyright由项目发起的公司所有
包名为:com.公司名.项目名.模块名.。。。

持久层:dao、persist、mapper
实体类:entity、model、bean、javabean、pojo
业务逻辑:service、biz
控制器:controller、servlet、action、web
过滤器:filter
异常:exception
监听器:listener
在不同的框架下一班包的命名规则不同,但大概如上,不同功能的java文件放在不同的包中,根据java文件的功能统一安放及命名。

2.servlet

什么是servlet?

java Servlet是运行在web服务器或应用服务器上的程序,它是作为来自web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。

Servlet执行以下任务:

  • 读取客户端(浏览器)发送的显示的数据,包括网页上的HTML表单,或者也可以是来自applet或自定义的HTTP客户端程序的表单。

  • 读取客户端(浏览器)发送的隐式的HTTP请求数据。这包括cookies、媒体类型和浏览器能理解的压缩格式等

  • 处理数据并生成结果,这个过程可能需要访问数据库,执行RMI或CORBA调用,调用web服务,或者直接计算得出对应的响应。

  • 发送显示的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(html或xml)、二进制文件(GIF图像)、excel等。

  • 发送隐式的http响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(如html),设置cookies和缓存参数,以及其他类似的任务。

Servlet 生命周期

Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:

  • Servlet 通过调用 init () 方法进行初始化。
  • Servlet 调用 service() 方法来处理客户端的请求。
  • Servlet 通过调用 destroy() 方法终止(结束)。

最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

这里主要介绍一下service() 方法。

service() 方法是执行实际任务的主要方法,Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。

public void service(ServletRequest request, ServletResponse response) 
throws ServletException, IOException{
...
}

以上代码,即为一个service()方法的特征

Author

vague huang

Posted on

2022-03-14

Updated on

2022-03-14

Licensed under

Comments