Apache Struts

Struts2 S2-052 RCE简单测试

一笑奈何 提交于 2020-11-01 20:02:52
本文由玄魂和 方块K 合写。 不太愿意跟风写类似的文章,网友“方块K” 投了一篇相关文章过来,但是略显简略,我重新进行了扩展。 参考了网上的相关文章,自己重新做 实验,算不上原创。 1.1 简介 2017年9月5日,Apache Struts发布最新安全公告,Apache Struts2的REST插件存在远程代码执行的高危漏洞,该漏洞由lgtm.com的安全研究员汇报,漏洞编号为CVE-2017-9805(S2-052)。Struts2 REST插件的XStream组件存在反序列化漏洞,使用XStream组件对XML格式的数据包进行反序列化操作时,未对数据内容进行有效验证,存在安全隐患,可被远程攻击。 参考: https://cwiki.apache.org/confluence/display/WW/S2-052 https://lgtm.com/blog/apache_struts_CVE-2017-9805 1.2 漏洞分析 根据补丁分析, 构造相对应的漏洞检测数据包。使用调试工具分析,发现Action经过REST插件处理时会被ContentTypeInterceptor这个类拦截,进入intercept方法如下图所示: 这个Intercept拦截方法很重要,分三步: 第一步:getHandlerForRequest方法会判断提交的请求类型

你离BAT之间,只差这一套Java面试题。

て烟熏妆下的殇ゞ 提交于 2020-10-30 09:14:17
你离BAT之间,只差这一套Java面试题。 点击上方“Hollis”关注我,精彩内容第一时间呈现。 全文字数: 5500 阅读时间: 10分钟 最近,各大公司开始了春招,很多人已经开始在准备面试了,特地来总结下初中级程序员应该掌握的面试题目。这篇面试指南,只适用于初中级程序员,其中不涉及分布式等问题。关于中高级的程序员问题,我后面可能再出一篇文章。 对于一个初中级程序员来说,面试问题不仅仅涉及到Java语言,还会包括很多其他知识,比如计算机基础知识(数据结构、计算机网络、操作系统等)、C语言基础、Java底层知识以及一些框架相关知识等。本文几乎覆盖到了所有领域。 ❈ 计算机基础知识 C语言基础 Java基础 Java高级 Java Web 设计模式 知识的综合能力 工具使用 项目相关 技术热情 表达能力 思考方式 其他 推荐阅读 ❈ 还有,我知道很多人会问关于这些题目的答案问题。答案我都有,由于篇幅有限没办法直接贴上来。这些题目的答案我会在我的公众号及知识星球中给出,感谢关注。 我总结的这套题目,总数是280道,道道都是精品必考题。如果这些面试题都能很好的回答上的话,参加国内各大公司的校招基本都没啥问题。 我很难估算一个人要掌握这所有的题目有多难。但是我觉得,如果你是一个有一定的计算机基础知识并且有一定的Java经验。比如一个学习还不错的大三学生

Java面试之SpringMVC面试题

泪湿孤枕 提交于 2020-10-28 07:30:47
SpringMVC是一个模型-视图-控制器(MVC)的Web框架建立在中央前端控制器servlet(DispatcherServlet),它负责发送每个请求到合适的处理程序,使用视图来最终返回响应结果的概念。  1、讲下SpringMvc的核心入口类是什么,Struts1,Struts2的分别是什么   SpringMvc的是DispatchServlet,Struts1的是ActionServlet,Struts2的是StrutsPrepareAndExecuteFilter   2、SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决   是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段   3、SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代   一般用@Conntroller注解,表示是表现层,不能用用别的注解代替.   4、@RequestMapping注解用在类上面有什么作用   用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。   5、怎么样把某个请求映射到特定的方法上面   直接在方法上面加上注解@RequestMapping,并且在这个注解里面写上要拦截的路径   6、如果在拦截请求中,我想拦截get方式提交的方法,怎么配置   可以在

Spring面试题实战整理,Java开发求职BAT的必经之路

喜欢而已 提交于 2020-10-25 13:34:51
Spring 概述 什么是 Spring? Spring 是个 Java 企业级应用的开源开发框架。Spring 主要用来开发 Java 应用,但是有些扩展是针对构建 J2EE 平台的 web 应用。Spring 框架目标是简化 Java 企业级应用开发,并通过 POJO 为基础的编程模型促进良好的编程习惯。 使用 Spring 轻量:Spring 是轻量的,基本的版本大约 2MB。 控制反转:Spring 通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP): :Spring 支持面向切面的编程,并且把应用业务逻辑和系统服务分开容器:Spring 包含并管理应用中对象的生命周期和配置。 MVC 框架:Spring 的 WEB 框架是个精心设计的框架,是 Web 框架的一个很好的替代品。 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。 异常处理: :Spring 提供方便的 API 把具体技术相关的异常(比如由 JDBC,Hibernate or JDO抛出的)转化为一致的 unchecked 异常。 Spring 由哪些模块组成? 以下是 Spring 框架的基本模块: Core module Bean module Context module Expression

Mock测试学习

不想你离开。 提交于 2020-10-22 14:15:03
Mock 测试就是在测试过程中,对于某些不容易构造(如 HttpServletRequest 必须在Servlet 容器中才能构造出来)或者不容易获取的比较复杂的对象(如 JDBC 中的ResultSet 对象),用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法。 比如说你需要调用C服务,可是C服务还没有开发完成,那么你就可以将调用C服务的那部分给Mock掉,并编写你想要的返回结果。使得自动化测试提前。 单元测试 SSH框架下的单元测试 对Action进行了单元测试 需要用到的jar包: junit,mockito-core,struts2-junit-plugin,spring-test 大概原理应该是模拟action,设置request 对Service 进行了单元测试,通过mock的方式实现。 需要用到的jar包: powermock-module-junit4,powermock-api-mockito Service类是spring ioc 容器生成并注入的,@InjectMocks注解来mock我们需要测试的业务类。 Spring Boot框架下的web项目单元测试 需要的jar包: spring-boot-starter-test,spring-boot-starter-parent Service 层 使用@Autowired注解来自动注入被测试类

我用Python实现了一个小说网站雏形

安稳与你 提交于 2020-10-22 08:59:32
前言 前段时间做了一个爬取妹子套图的小功能,小伙伴们似乎很有兴趣,为了还特意组建了一个Python兴趣学习小组,来一起学习。十个python九个爬,在大家的印象中好像Python只能做爬虫。然而并非如此,Python 也可以做Web开发,接下来给大家展示一下如何做一个小说站点。 相关软件 软件 版本 功能 地址 Python 3.7.1 脚本语言 https://www.python.org/ Django 2.1.3 Web框架 https://www.djangoproject.com/ PyCharm 2018.2.4 可视化开发工具 http://www.jetbrains.com/pycharm/ 环境搭建说明: http://www.runoob.com/python3/python3-install.html 爬取数据 做一个小说网站,内容是必须的,首先我们爬取一本小说《星辰变》到数据库。 创建一个简单的数据库表: CREATE TABLE `novel` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键', `title` varchar(100) NOT NULL COMMENT '标题', `content` text NOT NULL COMMENT '内容', PRIMARY KEY (`id`) )

蘑菇街大牛熬夜整理的Spring MVC知识点总结(思维导图+源码笔记),免费分享文档资料

两盒软妹~` 提交于 2020-10-22 08:55:18
今天给大家分享一份新鲜出炉的、来自腾讯T4大牛熬夜肝出来的《Spring MVC源码笔记》,转发+关注,然后添加VX(tkzl6666)即可获得免费领取方式! 下面就来介绍一下《Spring MVC源码笔记》的大概内容吧! 一、认识SpringMVC 1、什么是SpringMVC? SpringMVC是Spring家族的成员员,Spring是将现在开发中流行的组件进行组合而成的一个框架!它用在基于MVC的表现层开发,类似于struts2框架 2、为什么要使用SpringMVC? 我们在之前已经学过了Struts2这么一个基于MVC的框架....那么我们已经学会了Struts2,为啥还要学习SpringMVC呢??? 3、回顾Struts2开发 如果没接触过Struts2的,这里可以跳过。Struts2可以不学 4、Struts2的工作流程 5、SpringMVC快速入门 6、SpringMVC工作流程 7、 AbstractCommandController 8、小总结 二、参数绑定、数据回显、文件上传 这里主要讲解的知识点如下: 参数绑定 数据回显 文件上传 1、参数绑定 我们在Controller使用方法参数接收值,就是把web端的值给接收到Controller中处理,这个过程就叫做参数绑定 2、数据回显 其实数据回显我们现在的话就一点也不陌生了...

学Java必会的70个常见Spring面试题(带答案)

时光总嘲笑我的痴心妄想 提交于 2020-10-10 08:34:31
这篇文章主要介绍了70个学Java必会的常见Spring面试题,主要包括Spring、Spring boot、Spring Cloud、Spring MVC、MongoDB、MyBatis、微服务实战,Spring 全家桶等,感兴趣的朋友可以了解一下! 由于篇幅有限,以下只展示小部分面试题,有需要完整版的朋友可以点一点链接跳转领取: 链接: 点这里!!! 暗号:CSDN Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用Spring框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约2MB。 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 容器:Spring 包含并管理应用中对象的生命周期和配置。 MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务

SpringMVC01_入门案例

浪尽此生 提交于 2020-10-08 08:57:16
本教程源码请访问: tutorial_demo 一、MVC模型和三层架构 1.1、MVC模型 MVC的全程是Model View Controller,是模型(Model)-视图(View)-控制器(Controller)的缩写,是一种用于设计创建Web应用程序的模式 。每个部分有专门的功能: Model(模型) :指的就是我们的数据模型。一般情况下用于封装数据。 View(视图) :用于展示数据,包括我们之前学习的JSP和HTML,也就是用户“看得到”的内容。 Controller(控制器) :处理用户交互的部分,可以认为是我们之前学习的Servlet,用来控制页面跳转,把特定的页面展示给用户。 这是传统的开发方式,在此基础上通过迭代,出现了JavaWeb经典的三层架构。 1.2、三层架构 我们的开发架构一般都是基于两种形式,一种是C/S(客户端/服务器)架构,另一种是B/S(浏览器/服务器)架构。在JavaWeb开发中,几乎全都是基于B/S架构的开发。那么在B/S架构中,通过不断迭代,出现了经典的三层架构,包括:表现层、业务层、持久层。三层架构在实际开发中使用的非常多,接下来我们看一下每一层都负责哪些方面: 表现层 : 也被称为Web层; 负责接收客户端请求,向客户端响应结果,通常客户端使用http协议请求web层, web需要接收http请求,完成http响应;

单体架构,分布式系统的差别在哪里?

梦想的初衷 提交于 2020-10-05 17:47:08
前言 随着技术日新月异的发展,最近几年微服务和分布式技术成为主流。每一个好的解决方案不一定是直接设计出来的,但每一个优秀的架构都必须承受得住业务的考验和需求驱动的积累。最初我们开发系统都是在单个的应用上进行开发、测试、部署和运维等。每次新的需求迭代都将可能涉及到整个系统的修改,尤其是庞大而臃肿的业务系统需要进行大量的数据增删改查操作,开发起来变得非常麻烦。为了应对更高的并发和业务需求,解决单个应用的缺点,把庞大复杂的单体应用按照业务拆分成多个子业务模块,可进行垂直拆分或水平拆分,从而达到更高效的开发、更好的管理和维护的目的,这就是所谓的分布式系统。 一、单体架构是什么? 1.1 定义 一个归档包(可以是JAR、WAR、EAR或其它归档格式)包含所有功能的应用程序,通常称为单体应用。而架构单体应用的方法论,就是单体应用架构。 1.2 单体应用举例 单体应用集成了前端页面和后端接口服务及业务逻辑和数据操作于一体的单个完整系统,Struts1、Struts2及SSH、SSM架构的系统等,单个应用囊括了所有业务模块。 1.3 单体架构示意图 1.4 单体应用优缺点 1.4.1 优点 易于集中式开发、测试、管理、部署。 无需考虑跨语言。 能避免功能重复开发(相对分布式)。 1.4.2 缺点 团队合作困难 代码的维护、重构、部署都比较难。 稳定性、可用性(停机维护)、扩展性不高。