Java EE

JAVA安全之JAVA服务器安全漫谈

試著忘記壹切 提交于 2020-10-28 06:00:40
0x00 前言 本文主要针对JAVA服务器常见的危害较大的安全问题的成因与防护进行分析,主要为了交流和抛砖引玉。 0x01 任意文件下载 示例 以下为任意文件下载漏洞的示例。 DownloadAction为用于下载文件的servlet。 #!html < servlet > < description > </ description > < display-name > DownloadAction </ display-name > < servlet-name > DownloadAction </ servlet-name > < servlet-class > download.DownloadAction </ servlet-class > </ servlet > < servlet-mapping > < servlet-name > DownloadAction </ servlet-name > < url-pattern > /DownloadAction </ url-pattern > </ servlet-mapping > 在对应的download.DownloadAction类中,将HTTP请求中的filename参数作为待下载的文件名,从web应用根目录的download目录读取文件内容并返回,代码如下。 #!java protected

我们如何学好Java?

不打扰是莪最后的温柔 提交于 2020-10-28 03:51:26
正在学习Java 计算机语言并且打算作为自己今后的发展方向,不幸的是你在学习中遇到了比较困惑而又不能解决的问题, 你必需要明确以下几个很重要的问题和掌握相对正确和适合自己学习编程的方法,从而为自己解惑并不断的提高自己,最终达到一个多数企业入职的基本标准。 首先,你要清楚自己学习Java的真正目标是否明确,学习Java的想法是否是成熟的。对于这个问题可能很多人都会不屑一顾,凭借我多年从事Java开发及在工作中接触的多数搞Java开发的人经验而言,最终能够把Java 语言学好,多数人都是将Java作为自己以后从事此项工作为目标,这个目标一旦明确则给与自己无尽的动力和压力,没有动力和压力人就有各种借口遇到困难而退缩甚至放弃。 其次,在你有了非常明确的目标后,而为之努力学习过程中,你必需清楚多数企业对于Java 开发人员的基本入职要求和需要掌握哪些常用技术。当然不同企业要求是由些差异的,不过对于一个初学Java的人而言,通常应该知道以下是大多数企业对于初级程序员的基本要求,可以从以下几个技术方面审核自己的技术水平。 一、任何Java开发方向都必需要将Java SE基础核心理论知识及实用技术牢牢掌握,从Java角度讲无论什么样的所谓高级Java技术都建立在Java SE核心基础之上,譬如Jsp 动态网页技术,Servlet Java EE标准核心控制器, freemarker 模板技术,

Spring Boot如何支持嵌入式Servlet容器【详解】

﹥>﹥吖頭↗ 提交于 2020-10-28 02:44:08
前言: 这篇文章主要介绍了Spring Boot如何支持嵌入式Servlet容器,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下。如果需要其他学习资料或教程的,可以 点击进入,暗号:csyy ,绝对免费提供!因为资料太多无法全部展示,这只是其中的一点点,需要学习的朋友,可以进来和其他小伙伴一起探讨学习! Spring Boot支持Tomcat、Jetty和Undertow三种Servlet容器嵌入到Web应用程序中,开发者使用starter即可方便嵌入,默认情况下,嵌入服务器的访问端口为8080。 1、Servlets、Filters & Listeners 这些组件可以同组件扫描注册,即把他们定义为Spring Bean。 默认情况下,如果只有一个servlet,则把它映射到/;如果有多个servlet,则加上bean name作为前缀然后映射到/*。 如果默认策略不能满足你,你可以通过ServletRegistrationBean、FilterRegistrationBean和ServletListenerRegistrationBean来完全控制。 如果Filter需要按顺序执行,则可以通过@Order注解定义Filter的顺序,或者实现Ordered接口。 容器初始化 嵌入式容器不会直接执行Servlet 3.0+ javax.servlet

IDEA 社区版使用maven 和 tomcat7-maven-plugin运行servlet demo程序

风格不统一 提交于 2020-10-28 02:42:06
STEP1: 选择创建Maven项目,勾选Create from archetype中的org.apache.maven.archetype:maven archetype-webapp 选择maven settings.xml文件的位置 构建好的项目结构如下图所示: STEP2 在pom.xml文件中添加tomcatc插件 <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>8080</port> <path>/</path> <uriEncoding>UTF-8</uriEncoding> <server>tomcat7</server> </configuration> </plugin> 除此以外,添加上servlet的jar包 <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency>

BAT大厂Java面试必备:Java开发岗位面试题归类汇总

醉酒当歌 提交于 2020-10-27 18:30:26
前言 相信每个程序员,都有一个进大厂的梦,但是很多小伙伴都败在了面试的路上,这里,小编总结了一些BAT大厂Java面试必备的知识点,分享给大家,希望大家能早日进入自己理想的公司~~ 一、Java基础 String类为什么是final的 HashMap的源码,实现原理,底层结构。 说说你知道的几个Java集合类:list、set、queue、map实现类。 描述一下ArrayList和LinkedList各自实现和区别 Java中的队列都有哪些,有什么区别。 反射中,Class.forName和classloader的区别。 Java7、Java8的新特性 Java数组和链表两种结构的操作效率,在哪些情况下(从开头开始,从结尾开始,从中间开始),哪些操作(插入,查找,删除)的效率高。 Java内存泄露的问题调查定位:jmap,jstack的使用等等。 string、stringbuilder、stringbuffer区别 hashtable和hashmap的区别 异常的结构,运行时异常和非运行时异常,各举个例子。 String 类的常用方法 Java 的引用类型有哪几种 抽象类和接口的区别 java的基础类型和字节大小 Hashtable,HashMap,ConcurrentHashMap底层实现原理与线程安全问题。 如果不让你用Java Jdk提供的工具,你自己实现一个Map

3. DispatcherServlet 初始化

我与影子孤独终老i 提交于 2020-10-27 18:27:57
看看 handlermapping 和 handleradapter都是怎么初始化的 HttpServletBean public final void init() throws ServletException { ....... //在这里 this.initServletBean(); } servlet的初始化方法 在HttpServletBean 实现了 FrameworkServlet.initServletBean 初始化了springcontext环境 protected final void initServletBean() throws ServletException { ....... try { //初始化WebApplicationContext this.webApplicationContext = this.initWebApplicationContext(); this.initFrameworkServlet(); } catch (RuntimeException | ServletException var4) { this.logger.error("Context initialization failed", var4); throw var4; } . ....... } protected

【JSP+Spring】使用Servlet开发用户登录功能 => spring

与世无争的帅哥 提交于 2020-10-27 16:16:47
使用Servlet开发用户登录功能 => spring 改造前 目录 user.java package com.bean; public class user { private Integer u_id; private String u_username; private String u_password; public user(String u_username, String u_password) { this.u_username = u_username; this.u_password = u_password; } public user() { } public Integer getU_id() { return u_id; } public void setU_id(Integer u_id) { this.u_id = u_id; } public String getU_username() { return u_username; } public void setU_username(String u_username) { this.u_username = u_username; } public String getU_password() { return u_password; } public void setU_password

逐行精读Java代码(基础篇)——Java简介

本小妞迷上赌 提交于 2020-10-27 14:24:21
叫我“大黑”就好。 我是一名计算机专业大数据方向在校本科生。 写博客主要是记录下自己的学习过程,博客的内容主要是对源码的分析和自己的一些看法。 但由于水平有限,出现错误还恳请各位大佬不吝赐教。 关于博客的建议,批评,指正或者有感兴趣的,想相互交流的朋友,欢迎在博客下留言或在邮箱留言。 博客主页: https://blog.csdn.net/qq_32278887 邮箱:1424343532@qq.com 文章目录 前言 1. Java简介 1.1 Java主要特性 1.2 Java和C++的异同 2. 运行一个Java程序 2.1 public static void main(String[] args)到底是什么 2.2 理解含义 2.3 为什么?那如果不呢? 2.4 回到原点 总结 前言 “逐行精读JAVA代码”是大黑计划做的第一个专题 该专题分为基础篇和进阶篇,不会有太多的篇幅介绍Java语法,主要是博主回过头来再次学习Java语言时,对java源码的分析和对知识点的一些理解。 如有误,恳请指正。 1. Java简介 Java分为三个体系: JavaSE(Java平台标准版) JavaEE(Java平台企业版) JavaME(Java平台微型版) 1.1 Java主要特性 简单 Java语言语法和C和C++很接近,也丢弃了一些C++中很少使用,难以理解的特性

Shiro 组件漏洞与攻击链分析

本秂侑毒 提交于 2020-10-27 12:00:55
作者:深信服千里目安全实验室 原文链接: https://mp.weixin.qq.com/s/j_gx9C_xL1LyrnuFFPFsfg 1 组件介绍 Apache Shiro是一个功能强大且易于使用的Java安全框架,功能包括身份验证,授权,加密和会话管理。使用Shiro的API,可以轻松地快速地保护任何应用程序,范围包括小型的移动应用程序到大型的Web和企业应用程序。以下是Shiro的结构图。 Shiro提供了应用安全API(被Shiro框架开发团队成为安全四大基石的Authentication(认证), Authorization(授权), Session Management(会话管理), Cryptography(加密)) Authentication(认证): 证明用户身份,通常称之为“登录”。 Authorization(授权) : 访问控制。 Cryptography(加密) : 保护或隐藏数据,防止数据被窃取。 Session Management(会话管理) : 管理每一个用户的会话状态。 在概念层,Shiro 架构包含三个主要的理念:Subject,SecurityManager和 Realm。 Subject:当前用户,Subject 可以是一个人,但也可以是第三方服务、守护进程帐户、时钟守护任务或者其它–当前和软件交互的任何事件。