【代码审计-JAVA】基于javaweb框架开发的

简介: 【代码审计-JAVA】基于javaweb框架开发的

一、javaweb三大框架


java web常用的三大框架:Spring、Struts、Hibernate(SSH)

(注:介绍来自百度百科)


1、Spring(开源分层的框架)


它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。Spring的优点有,方便解耦,简化开发 (高内聚低耦合);AOP编程的支持;声明式事务的支持;方便程序的测试;方便集成各种优秀框架;降低JavaEE API的使用难度。

7a6fb56cd2514d088a332dcd4659c4bc.png


.
|  mvnw
|  mvnw.cmd
|  pom.xml
|  README.md
|  .gitignore
└─ src
│   ├─main
│   │  ├─java
│   │  │  ├─com.example.demo
│   │  │  │  gApplication.java
│   │  │  │  
│   │  │  │  ├─controller
│   │  │  │  │  ├─UserController.java
│   │  │  │  │
│   │  │  │  ├─domain
│   │  │  │  │  ├─User.java
│   │  │  │  │
│   │  │  │  ├─service
│   │  │  │  │  ├─UserService.java
│   │  │  │  │  │
│   │  │  │  │  ├─impl
│   │  │  │  │  │  ├─UserServiceImpl.java
│   │  │  │  │
│   │  │  │  ├─repository
│   │  │  │  │  ├─UserRepository
│   │  │  │  │
│   │  │  │  ├─dto
│   │  │  │  │  ├─UserDTO.java
│   │  │  │  │
│   │  │  │  ├─vo
│   │  │  │  │  ├─UserVO.java
│   │  │  │  │
│   │  │  │  ├─utils
│   │  │  │  │  ├─EncryptUtil.java
│   │  │  │  │
│   │  │  │  ├─config
│   │  │  │  │  ├─QuartzJob.java
│   │  │  │  │
│   │  ├─resources
│   │  │  ├─static
│   │  │  │  ├─css
│   │  │  │  ├─js
│   │  │  ├─templates
│   │  │  ├─application.properties
│   │
│   ├─test
│   │  ├─java
│   │  │  ├─com.example.demo
│   │  │  │  ├─controller
│   │  │  │  │  ├─UserControllerTests.java

2、Struts(MVC设计模式)


Struts定义了通用的Controller,通过配置文件(通常是Struts -config.xml)隔离Model和View,以Action的概念以对用户请求进行了封装,使代码更加清晰易读。Struts还提供了自动将请求的数据填充到对象中以及页面标签等简化编码的工具。Struts能够开发大型Java Web项目。

8b9825f3dbd049cfb9e04772acc654c8.png

apps    用于存放官方提供的 Struts2 示例程序,这些程序可以作为学习者的参考资料。各示例均为 war 文件,可以通过 zip 方式进行解压。
docs    用于存放官方提供的 Struts2 文档,包括 Struts2 的快速入门、Struts2 的文档,以及 API 文档等内容。
lib     用于存放 Struts2 的核心类库,以及 Struts2 的第三方插件类库。
src     用于存放该版本 Struts2 框架对应的源代码。


3、Hibernate(开源的对象关系映射框架)


它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。Hibernate的API有:Session、SessionFactory、Transaction、Query、Criteria和Configuration。通过这些接口,可以对持久化对象进行存取、事务控制。

aab6415e6c604b2eb452345daba12c85.png


documentation          存放了 Hibernate 的相关文档,包括 Hibernate 的参考文档和 API 文档等。
lib                    该路径下存放了 Hibernate 3 的核心类库,以及编译和运行所依赖的第三方类库。其中 lib 路径下的 required子目录中包含了运行 Hibernate 3 所必须的 JAR 包。
project                存放了 Hibernate 各种相关项目的源代码。
changelog.txt          升级日志
hibernate_logo.gif     hibernate logo
lgpl.txt               开源许可证内容


二、特征


1、结构


1、分层架构:
视图层(View 视图)
控制层(Controller、Action 控制层)
服务层(Service)
业务逻辑层BO(business object)  
实体层(entity 实体对象、VO(value object) 值对象 、模型层(bean)
持久层(dao- Data Access Object 数据访问层、PO(persistant object) 持久对象)


c6393e0a32e740548cb9363e620cfc5a.png

2、模块化开发

90f46fe5a27546b5ab9b17d316bd1596.png


2、Servlet


Java Web容器上运行的程序,处理服务器端的业务逻辑

Servlet3.0之前:在web.xml中配置

Servlet3.0之后(Tomcat7+):可以使用注解方式配置Servlet


3、程序入口


(路由、接收处理参数的方法)


servlet    全局搜doGet()、doPost()
spring     匹配注解@RequestParam(value=”参数名”,required=true/false,defaultValue=””)
struts2    根据web.xml匹配路径与类名,寻找action


三、重要文件


1、web.xml


web.xml是web项目的配置文件,主要配置Filter,Listener,Servlet等(但是web.xml并不是必须的)


1、schema(模式文件)
使用的模式文件都必须标明在根元素<web-app>中,其他元素在<web-app></web-app>中
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.4" 
    xmlns="http://……" 
    xmlns:xsi="http://……"
    xsi:schemaLocation="http://……
        http://……">
</web-app>
2、<display-name>Web应用名称</display-name>
3、<discription>Web应用描述</disciption>
4、<context-param>上下文参数</context-param>
5、<filter>过滤器</filter>
6、<listerner>监听器</listener>
7、<servlet>servlet是运行在服务器端的小程序</servlet>
8、<session-config>会话超时配置</session-config>
9、<welcome-file-list>欢迎文件页</welcome-file-list>
10、<jsp-config>设置jsp</jsp-config>


2、pom.xml


全称:Project Object Model,是Maven项目中的文件,使用XML表示,项目的maven坐标,依赖关系,项目授权、项目的url,开发者需要遵循的规则,缺陷管理系统,组织和licenses,配置文件、开发者的信息和角色,以及其他所有的项目相关因素(project必须包含pom.xml文件)


3、web.xml与pom.xml区别


pom.xml(必须):根目录里面(作用于整个项目的一些信息)


web.xml(非必须):隐藏的(如:webapp里的WEB-INF文件内,写注册的功能,像servlet despatcher filter 等,并都加一个mapping与之对应)

 
         

4、Filter(过滤器)


通过对过滤器分析,可以知道过滤规则,以及可以最终筛选出未使用过滤器的URL


web.xml中
<filter>
    <filter-name>xsscheck</filter-name>//名字
    <filter-class>com.anbai.sec.XssFilter</filter-class>//class
</filter>
<filter-mapping>
    <filter-name>xsscheck</filter-name>//名字
    <url-pattern>*.jsp</url-pattern>//路由
</filter-mapping>


5、框架+组件


通过了解了开发的框架以及组件以后,可以扩大攻击面


查看配置文件web.xml和外部引用库,确定当前引用框架名称和版本


框架确定:
1、maven(查看pom.xml关键字)
spring-core/ springframework.core    spring框架
struts2-core                         struts2框架
springframework.boot                 srping-boot框架
servlet-api                          原生servlet
2、lib(查看jar包名称)
spring-core/springframework.core    spring框架
struts2-core                        struts2框架
spring-boot                         srping-boot框架
servlet-api                         原生servlet


配置文件:
Struts2     struts.xml
Spring      applicationContext.xml
Spring MVC  spring-mvc.xml
Hibernate   Hibernate.cfg.xml
Mybaits     mybatis-config.xml


目录
相关文章
|
1月前
|
Java 数据库
在Java中使用Seata框架实现分布式事务的详细步骤
通过以上步骤,利用 Seata 框架可以实现较为简单的分布式事务处理。在实际应用中,还需要根据具体业务需求进行更详细的配置和处理。同时,要注意处理各种异常情况,以确保分布式事务的正确执行。
|
1月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
1月前
|
监控 Java API
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
|
2天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
25天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
46 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
12天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
71 13
|
17天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
52 10
|
10天前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
48 2
|
20天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
26天前
|
存储 缓存 安全
Java 集合框架优化:从基础到高级应用
《Java集合框架优化:从基础到高级应用》深入解析Java集合框架的核心原理与优化技巧,涵盖列表、集合、映射等常用数据结构,结合实际案例,指导开发者高效使用和优化Java集合。
37 4