Apache Struts

上传"定时任务"获取系统权限

允我心安 提交于 2020-11-25 18:28:40
原文来自 SecIN社区 —作者:tkswifty 相关背景   文件上传是系统中比较常见的业务需求,例如上传头像、简历、报表等。但是如果在业务实现过程中没有考虑相关的安全问题(例如没有对用户上传的文件类型做校验或者校验不充分,导致用户可以上传恶意脚本到服务器)便会导致相关的风险。   Java文件类File以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。   一般新建文件是通过将给定路径名字符串转换成抽象路径名来创建一个新File实例: File file = new File("path")   使用File创建文件时,若路径处path写入…/…/穿越符号,是可以跨目录新建文件的:   看一个例子,下面是通过引入…/…/穿越符进行跨目录在上级目录Desktop创建文件:   结合该特点,结合特定的利用场景可以完成相关的权限获取操作。例如: linux写入定时任务、ssh公钥 windows写入自启动脚本、恶意dll … 挖掘过程   一般针对文件上传业务,主要判断是否有检查后缀名,同时要查看配置文件是否有设置白名单或者黑名单,如果没有的话,那么攻击者利用该缺陷上传类似webshell等恶意文件。   目标系统主要是通过commons-fileupload组件来实现文件上传,具体实现如下: DiskFileItemFactory

JavaWeb_(Struts2框架)Struts创建Action的三种方式

妖精的绣舞 提交于 2020-11-25 05:56:54
  此系列博文基于同一个项目已上传至github   传送门   JavaWeb_(Struts2框架)Struts创建Action的三种方式   传送门   JavaWeb_(Struts2框架)struts.xml核心配置、动态方法调用、结果集的处理   传送门   JavaWeb_(Struts2框架)Log4j的配置以及解决中文乱码   传送门   JavaWeb_(Struts2框架)参数传递之接收参数与传递参数   传送门   JavaWeb_(Struts2框架)Ognl小案例查询帖子   传送门   JavaWeb_(Struts2框架)Action中struts-default下result的各种转发类型   传送门   JavaWeb_(Struts2框架)拦截器interceptor   传送门      第一种DefaultAction什么都没有干   第二种实现了Action接口   第三种继承了ActionSupport类【常用】   目录结构    package com.Gary.web; public class DefaultAction { public String execute() { System.err.println( "这是一个普通的action" ); return null ; } } DefaultAction.java

JavaWeb_(Struts2框架)Action中struts-default下result的各种转发类型

强颜欢笑 提交于 2020-11-24 14:21:33
  此系列博文基于同一个项目已上传至github   传送门   JavaWeb_(Struts2框架)Struts创建Action的三种方式   传送门   JavaWeb_(Struts2框架)struts.xml核心配置、动态方法调用、结果集的处理   传送门   JavaWeb_(Struts2框架)Log4j的配置以及解决中文乱码   传送门   JavaWeb_(Struts2框架)参数传递之接收参数与传递参数   传送门   JavaWeb_(Struts2框架)Ognl小案例查询帖子   传送门   JavaWeb_(Struts2框架)Action中struts-default下result的各种转发类型   传送门   JavaWeb_(Struts2框架)拦截器interceptor   传送门   result是用于做输出的组建,用于向页面输出一些内容,转发重定向可以理解为特殊方式的输出,每一个result就是一个类   这些类都实现了共同的接口Result,struts2预置了10种类型的result,他们都被定义在struts-default.xml种   SSH项目->Referenced Libraries->struts2-core-2.5.16.jar中找到struts-default.xml,struts-default

各大互联网企业Java面试题汇总,看我如何成功拿到百度的offer

谁说我不能喝 提交于 2020-11-21 03:33:42
前言 本人Java开发,5年经验,7月初来到帝都,开启面试经历,前后20天左右,主面互联网公司,一二线大公司或者是融资中的创业公司都面试过,拿了一些offer,其中包括奇虎360,最后综合决定还是去百度了。 首先不同面试官面试风格一定不同,我这里就是总结这些天面试Java开发过程中的大多数问题,综合分类有Java基础,框架,多线程,网络通信,数据库,设计模式,算法,等几个模块,由于问题太多,下面先列出问题,之后有时间在写文章解答,或者网上有很多答案,可以自行搜索。 关于专业技能 写完项目接着写写一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容。我这里要说明一下,以下列举的内容不是都要会的东西----但是如果你掌握得越多,最终能得到的评价、拿到的薪水势必也越高。 1、基本语法 一、Java基础 1.String类为什么是final的。 2.HashMap的源码,实现原理,底层结构。 3.反射中,Class.forName和classloader的区别 4.session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。 5.Java中的队列都有哪些,有什么区别。 6.Java的内存模型以及GC算法 7.Java7、Java8的新特性(baidu问的,好BT) 8.Java数组和链表两种结构的操作效率

终于开放了!腾讯内部Java程序员必备SpringMVC实战架构文档,首发限时下载!!

回眸只為那壹抹淺笑 提交于 2020-11-20 16:13:02
Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。 其中核心类是DispatcherServlet,它是一个Servlet,顶层是实现的Servlet接口。 Spring MVC框架提供了构建web应用程序的全功能MVC模块,使用了Spring可插入架构,可以选择是使用内置的Spring web框架还是struts这样的web框架,通过接口,Spring 框架是高度可配置的,而且包含多种视图技术,Spring MVC 在实践和面试中也会常遇到。 Spring MVC原理图 下面给大家分享的正是Spring MVC源代码分析和实践,这份PDF真的是很全面了,几乎包括了spring MVC中所有操作。 由于篇幅有限,笔记只能截图展示, 有需要Spring MVC核心笔记完整文档可三连后 私信关键词【进阶】或者查看下方即可免费领取! 闲话少说 直击目录: 内容展示: 篇幅有限,整个文档的内容太多太全了,需要的小伙伴可以三连一下,直接扫描下方 即可免费领取。 来源: oschina 链接: https://my.oschina.net/u/4385759/blog/4727427

框架的认识

♀尐吖头ヾ 提交于 2020-11-18 04:25:37
参考: 框架的认识 框架: 1.是什么:框架就是一套规范。既然是规范,你使用这个框架就要遵守这个框架所规定的约束。在Java开发中, 框架是用一套规则 + 一群jar包来表示的 。 内容理解:框架是一套规范。具体到Java,是一套规则+一群jar包。 2.为什么:我们为什么要使用框架? (1)原因:在我们的开发中,如果一个类的名字,A同学起名字叫A.java B同学起名教B.java,可是其实这两个类的功能是一样的,但是就是因为没有规范,所以造成了混乱,不利于 团队合作与开发 ,如果使用了框架,框架就会对类的名字有约束,比如Struts,控制类我们都起名字叫**Action 这样很容易让人看明白功能。 (2)意义:框架不仅仅只完成这些简单的约束,更重要的是,框架为我们 封装好了一些冗余 ,且重用率低的代码。并且使用反射与动态代理机制,将 代码实现了通用性 。比如如果你说servlet开发,你需要在servlet获取表单的参数,每次都要获取很麻烦,而struts底层就使用反射机制和拦截器机制帮助我们获取表单的值,我们就不用每次都手写那些代码了,简化了开发,当然你必须遵守一些规定来配置。还有比如hibernate,它提供了一些通用性很强的对数据库的增删改差,如果你使用jdbc每次做一些简单的crud的时候都必须写sql,但使用hibernate就不需要这么麻烦了,直接save

公司不用 Spring Boot,果断离职了!

一曲冷凌霜 提交于 2020-11-15 05:01:49
面试问到离职原因,我想这是很多面试者的痛,包括我自己,曾经也被离职原因所坑过。 面试回答离职原因简直特么就是巨坑,我也因此在微信公众号 “Java技术栈” 写了这篇文章《 过了所有技术面,却倒在 HR 一个问题上。。 》,希望可以给职场小白一点点经验,少走弯路。 话说最近栈长面试了个两三年的 Java 开发程序员,离职原因说出来就是砸自己的脚,真是感慨万千啊,且听我慢慢道来。 我让他做个简单的自我介绍,叽里咕噜一大堆,持续好些分钟,我实在没耐心听下去了,但也不好强行打断,中间趁他换气还是插了句话让他停止自我介绍了。 从头到尾表现出一股很强烈的学习欲望,说他很爱好学习,平时还自建 Demo 学习 Spring Boot、Spring Cloud 相关技术什么的。然而,当我问到一些相关的知识点时,又吱吱唔唔了。 最有意思的是,居然主动说了离职原因,他说公司项目没用 Spring Boot,他觉得 Spring Boot 又是最主流的技术,果断离职出来找个用这个技术的公司学习一下。 最后的面试结果就是等通知了,不懂其背后的演义的的可以阅读微信公众号 “Java技术栈” 此文第1点: 为什么面试完,总是让你回去等通知? 这离职原因说出来让我有点想笑,站在面试官的角度,他表现的非常热爱技术和强烈的学习欲望是好事,但确实是好事吗?就因为公司没用 Spring Boot 就要离职么

struts2框架学习笔记2:配置详解

六眼飞鱼酱① 提交于 2020-11-11 03:25:13
核心配置文件: <? xml version="1.0" encoding="UTF-8" ?> <! DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd" > < struts > <!-- package:将Action配置封装.就是可以在Package中配置很多action. name属性: 给包起个名字,起到标识作用.随便起.不能其他包名重复. namespace属性:给action的访问路径中定义一个命名空间 extends属性(必填): 继承一个 指定包(这里使用的是默认) abstract属性(补充):包是否为抽象的; 标识性属性.标识该包不能独立运行.专门被继承 --> < package name ="hello" namespace ="/hello" extends ="struts-default" > <!-- action元素:配置action类 name属性: 决定了Action访问资源名,注意不是标识作用 class属性: action类的完整类名 method属性: 指定调用Action类中的哪个方法来处理请求 --> < action

java架构师

那年仲夏 提交于 2020-11-10 02:47:11
如果你来到我们团队,那么你的职责可能包括但不限于: 1. 负责Alibaba客户服务相关的产品研发 2. 深入发掘和分析业务需求,撰写技术方案和系统设计 3. 核心代码编写、指导和培训工程师、不断进行系统优化 4. 参与或领导跨团队的研发项目 岗位要求: 1. JAVA基础扎实,理解io、多线程、集合等基础框架,对JVM原理有一定的了解; 2. 5年及以上使用JAVA开发的经验,对于你用过的开源框架,能了解到它的原理和机制;对Spring,ibatis,struts等开源框架熟悉; 3. 熟悉分布式系统的设计和应用,熟悉分布式、缓存、消息等机制;能对分布式常用技术进行合理应用,解决问题; 4. 掌握多线程及高性能的设计与编码及性能调优;有高并发应用开发经验; 5. 掌握Linux 操作系统和大型数据库(Oracle、MySql);对sql优化有丰富的经验; 6. 学习能力强,适应能力好;具备耐心/细心的品质; 7. 喜欢去看及尝试最新的技术,追求编写优雅的代码,从技术趋势和思路上能影响技术团队 某上海一线大厂,职位对标阿里P7-P9 来源: oschina 链接: https://my.oschina.net/u/4128502/blog/3045870

「2020最新」Spring最易学习教程—IOC 以及 整合Struts2

笑着哭i 提交于 2020-11-08 05:51:28
0 复习 工厂设计模式 使用工厂代替new模式创建对象,目的:解耦合 Spring工厂的使用 applicationContext.xml中配置 bean标签 编码:创建工厂,从工厂中获取对象 Spring中属性注入 简单类型(基本类型+包装类+String) < bean id = "标识名" class = "全类名" > < property name = "属性" > < value > 值 </ value > </ property > < property name = "属性" value = "值" /> </ bean > 对象类型 < bean id = "a" class = "Address的全类名" > < property name = "属性1" value = "值1" /> < property name = "属性2" value = "值2" /> </ bean > < bean id = "p" class = "Person全类名" > < property name = "addr" > < ref bean = "a" /> </ property > </ bean > < bean id = "p2" class = "Person全类名" > < property name = "addr" ref = "a" /> </