java三大框架之间的关系
1.Struts:基于MVC的充当了其中的视图层和控制器;
2.Hibernate:做持久化的,对JDBC轻量级的封装,使得我们能过面向对象的操作数据库;
3.Spring: 采用了控制反转的技术,管理Bean,降低了各层之间的耦合。
4.Shiro: 验证权限的框架 常和其他框架组合使用
一.Struts框架
struts.xml
//这个文件的核心作用
//个人理解:可以理解为tp框架中的定义路由
//处理方法,8种
1.date-sources元素
配置应用程序所需要的数据源。
<data-source key="a" type="org.apached.commons.dbcp.BasicDataSource">
..</data-source>
2.form-beans元素
配置表单验证的类
3.global-exceptions元素
配置异常处理,exceptions处理全局的异常配置
4.global-forwards元素
用来声明全局的转发关系-->forward标签中的即表示转发。
5.action-mappings元素
特定的请求对应的路径转发关系,这里的转发是局部的转发。
6.controller元素
配置ActionServlet,不是很懂这玩意是完全干啥的。
7.message-resources元素
配置本地消息文本
8.plugin-in元素
配置strtus的差距元素
二.hibernate框架
三.Springboot框架
四.Shiro框架
存在的漏洞
①反序列化漏洞
②shiro权限绕过漏洞-->核心是拦截可绕且springboot解析的匹配模式不同
综合分析
jsp的唯一不同就是框架
①meta-inf
//相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务。其中的 manifest.mf文件,在用jar打包时自动生成。对审计而言没啥意义
②web-inf
java环境的安全目录 是java配置的核心
在web-inf下有个文件很重要
web.xml
//对于代码审计而言这个文件的核心是过滤机制
常用
<filter-mapping>的<url-pattern>
//如 即当是以.action为结尾的请求时 都会调用这个过滤机制
<filter-mapping>
<filter-name>struts2</filter-name>//这个就是过滤器的名字
<filter-class>dckj.c.a</filter-class>//即对应过滤器的java文件
<url-pattern>*.action</url-pattern>
</filter-mapping>
//其余补充
①关闭不安全的http方法用<security-constraint>进行配置
<!-- 关闭不安全的HTTP方法 -->
<security-constraint>
<web-resource-collection>
<web-resource-name>任意名称</web-resource-name>
<url-pattern>/*</url-pattern> #这里是配置哪些请求会经过该服务的
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>HEAD</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>PROPFIND</http-method>
<http-method>COPY</http-method>
<http-method>PATCH</http-method>
<http-method>MOVE</http-method>
<http-method>SEARCH</http-method>
<http-method>MKCOL</http-method>
<http-method>LOCK</http-method>
<http-method>UNLOCK</http-method>
<http-method>PROPPATCH</http-method>
</web-resource-collection>
<auth-constraint></auth-constraint>
</security-constraint>(这里是添加用来注释的*/
②listern请求
Listener可以监听容器中某一执行动作,并根据其要求做出相应的响应。
常用的Web事件的监听接口如下:
ServletContextListener:用于监听Web的启动及关闭
ServletContextAttributeListener:用于监听ServletContext范围内属性的改变
ServletRequestListener:用于监听用户请求
ServletRequestAttributeListener:用于监听ServletRequest范围属性的改变
HttpSessionListener:用于监听用户session的开始及结束
HttpSessionAttributeListener:用于监听HttpSession范围内的属性改变
<listener>
<listener-class>
com.tp.cas.client.logout.SingleSignOutHttpSessionListener
</listener-class>
</listener>