Servlet的部署与安全

 1 Servlet 部署

Servlet规范关于各个东西该放在哪里有许多严格的规则。

1.1 WAR

war文件代表Web归档(Web Archive),war实际就是一个JAR,只不过扩展名是.war而不是.jar。

其采用了一种可移植的压缩形式,把整个Web应用结构(去掉Web应用上下文目录,也就是把WEB-INF之上的一级目录去掉)压缩起来。

1.1.1 声明库依赖性

war独有的特性就是声明库依赖性。

可以在META-INF/MANIFEST.MF文件中声明库依赖性,这样在部署时就能检查容器能否找到应用依赖的包和类,如果没找到,则不能部署。(这样做的好处是,当请求到来时,如果容器在其类路径中没有找到所请求资源需要的特定类,就会出现问题,而通过这个就会将这个问题暴露在部署时,而不是到真正的运行时)

1.2 Servlet映射

WEB-INF 或META-INF下的任何内容都不能直接访问。

ServletContext中的getResource()和getResourceAsStream()两个方法只用于Web应用中未部署在JAR文件中的资源。

1.2.1 映射规则

首先查找完全评判,然后是查找目录匹配,最后才是扩展名匹配。

如果一个请求与多个目录<url-pattern>匹配,容器会选择最长的匹配。

1.3 配置页面

按顺序指定一个页面列表,容器总是按同一个列表查找。对于部分请求指定的目录,容器按你指定的页面顺序在这个目录中查找。

<welcome-file-list>可配置多个文件(不能以斜线开头)

1.3.1 配置错误页面

1,声明一个“普遍”型错误页面

<error-page>

      <exception-type>java.lang.Throwable</exception-type>

      <location>/errorPage.jsp</location>

</error-page>

2,为更明确的异常声明一个错误页面

<error-page>

      <exception-type>java.lang.ArithmeticException</exception-type>

      <location>/ati.jsp</location>

</error-page>

3,根据一个HTTP状态码声明错误页面

<error-page>

      <error-code>404</error-code>

      <location>/noPage.jsp</location>

</error-page>

1.4 DD中配置servlet初始化

servlet默认会在每一个请求到来时初始化。这说明,第一个客户要承受类加载、实例化和初始化等一系列开销,然后容器才能正常工作:分配一个线程,并调用servlet的service()方法。

如果想在部署时加载servlet,可以在DD中使用<load-on-startup>元素。<load-on-starup>非负值意味着要早加载及servlet的加载顺序。

2 web应用安全

servlet安全的四大要素:认证、授权、机密性和数据完整性。

图 第一次发起请求时HTTP的认证步骤

图 携带认证信息发起请求后HTTP的认证步骤

图 没有携带口令发起请求,容器认证授权步骤

图 携带口令发起请求,容器认证授权步骤

2.1 认证

基本BASIC

以一种编码形式(base64未加密)传输登陆信息。安全性很弱。

摘要DIGEST

以一种更安全的方式传输登陆信息。

客户证书CLIENT-CERT

以一种非常安全的形式传输登陆信息,它使用了公共密钥证书。缺点是,你的客户必须先有一个证书才能登陆你的系统。

表单FORM

前面3种认证都使用了浏览器的标准弹出表单来输入用户名和口令。而表单认证允许你利用合法的HTML建立自己的定制登陆表单。

表 4种类型的认证

实现认证:

<web-app…>

  <login-config>

       <auth-method>BASIC</auth-method>

  </login-config>

</web-app>

表单认证实现:

<web-app…>

  <login-config>

       <auth-method>FORM</auth-method>

             <form-login-config>

                    <form-login-page>/loginPage.html</form-login-page>

                <form-error-page>/loginError.html</form-login-page>

       </form-login-config>

  </login-config>

</web-app>

2.2 授权

servlet规范没有指出容器应该如何实现对认证数据(包括用户名和口令)的支持。现在开发中绝大部分是采用将认证数据存储在数据库中的形式。

授权步骤是:

1)定义角色。

2)定义资源/方法约束。以声明方式指定一个资源/方法组合,只能由特定角色的用户访问。

图 DD中的<security-constraint>元素

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/159007.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go cpu、内存监控、性能分析:PProf

PProf PProf 是什么 PProf是 golang 官方提供的性能调优分析工具&#xff0c;用于分析和优化Go程序的性能。 PProf通过收集和分析程序的运行时数据来生成性能分析报告。它使用Go语言的运行时特性&#xff0c;如代码注释和特殊的程序运行标记&#xff0c;来收集性能数据。PPr…

【机器学习】sklearn对数据预处理

文章目录 数据处理步骤观察数据数据无量纲化缺失值处理处理分类型特征处理连续型特征 数据处理步骤 数据无量纲化缺失值处理处理分类型特征&#xff1a;编码与哑变量处理连续型特征&#xff1a;二值化与分段 观察数据 通过pandas读取数据&#xff0c;通过head和info方法大致查…

【ppt技巧】ppt里的图片如何提取出来?

之前分享过如何将PPT文件导出成图片&#xff0c;今天继续分享PPT技巧&#xff0c;如何提取出PPT文件里面的图片。 首先&#xff0c;我们将PPT文件的后缀名&#xff0c;修改为rar&#xff0c;将文件改为压缩包文件 然后我们将压缩包文件进行解压 最好是以文件夹的形式解压出来…

数据结构与算法(三)

文章目录 数据结构与算法(三)9 链表及其相关面试题9.1 链表查找9.2 给定一个单链表的头节点head,请判断该链表是否为回文结构9.3 链表的分区9.4 链表的复制10 链表相关面试题(续)、二叉树的常见遍历10.1 判断链表相交10.2 链表删除10.3 二叉树先序、中序、后序的递归遍历和…

C++笔记之std::future的用法

C笔记之std::future的用法 code review! 文章目录 C笔记之std::future的用法1.C中std::future和std::async总是一起出现吗&#xff1f;2.主要特点和用法3.一个完整的例子4.std::future 存放的是一个结果吗&#xff1f;5.cppreference——std::future 1.C中std::future和std::a…

3D 生成重建007-Fantasia3D和Magic3d两阶段玩转文生3D

3D生成重建3D 生成重建007-Fantasia3D和magic3d 文章目录 0 论文工作1 论文方法1.1 magic3d1.2 Fantasia3D 2 效果2.1 magic3d2.2 fantasia3d 0 论文工作 两篇论文都是两阶段法进行文生3d&#xff0c;其中fantasia3D主要对形状和外表进行解耦&#xff0c;然后先对geometry进行…

048:mapboxGL本地上传geojson文件,在map上解析显示图形

第048个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中本地上传geojson文件,通过mapbox加载geojson数据的方法解析,在地图上显示图形。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共112行)相关API…

华为云云耀云服务器L实例评测|华为云耀云服务器L实例评测包管理工具安装软件(六)

七、华为云耀云服务器L实例评测包管理工具安装软件&#xff1a; 根据企业级项目架构图所示&#xff0c;本章主要是安装公司企业项目的基本环境LNMP&#xff0c;相关的包管理器Composer、Node、Npm、Yarn安装&#xff0c;评测一下包管理工具安装软件是否存在问题&#xff0c;如果…

[论文分享] EnBinDiff: Identifying Data-Only Patches for Binaries

EnBinDiff: Identifying Data-Only Patches for Binaries [TDSC 2021] 在本文中&#xff0c;我们将重点介绍纯数据补丁&#xff0c;这是一种不会引起任何结构更改的特定类型的安全补丁。作为导致假阴性的最重要原因之一&#xff0c;纯数据补丁成为影响所有最先进的二进制差分方…

代码生成器实现

代码生成器实现 实现封装元数据的工具类实现代码生成器的代码编写掌握模板创建的 构造数据模型 需求分析 借助Freemarker机制可以方便的根据模板生成文件&#xff0c;同时也是组成代码生成器的核心部分。对于Freemarker而 言&#xff0c;其强调 数据模型 模板 文件 的思…

Java idea查看自定义注解的调用地方

Java idea查看自定义注解的调用地方

学信息系统项目管理师第4版系列27_项目集管理和项目组合管理

1. 项目集发起人 1.1. 负责承诺将组织的资源应用于项目集&#xff0c;并致力于使项目集取得成功的人 1.2. 典型职责 1.2.1. 为项目集提供资金&#xff0c;确保项目集目标与战略愿景保持一致&#xff1b; 1.2.2. 使效益实现交付 1.2.3. 消除项目集管理与交付的困难和障碍 …

Qt 布局(QLayout 类QStackedWidget 类) 总结

一、QLayout类(基本布局) QLayout类是Qt框架中用于管理和排列QWidget控件的布局类。它提供了一种方便而灵活的方式来自动布局QWidget控件。QLayout类允许您以一种简单的方式指定如何安排控件&#xff0c;并能够自动处理控件的位置和大小&#xff0c;以使其适应更改的父窗口的大…

排序优化:如何实现一个通用的、高性能的排序函数?

文章来源于极客时间前google工程师−王争专栏。 几乎所有的编程语言都会提供排序函数&#xff0c;比如java中的Collections.sort()。在平时的开发中&#xff0c;我们都是直接使用&#xff0c;这些排序函数是如何实现的&#xff1f;底层都利用了哪种排序算法呢&#xff1f; 问题…

WPF DataGrid详细列表手动显示与隐藏

设置显示序号与折叠显示样式 <DataTemplate x:Key"dtNum"><Button BorderBrush"Transparent" Style"{x:Null}" Click"BtnRowDetail_ShowHideClick" FontSize"16" Background"Transparent"><Stack…

【ELK 使用指南】ELK + Filebeat 分布式日志管理平台部署

ELK和EFLK 一、前言1.1 日志分析的作用1.2 需要收集的日志1.3 完整日志系统的基本特征 二、ELK概述2.1 ELK简介2.2 为什么要用ELK?2.3 ELK的组件 三、ELK组件详解3.1 Logstash3.1.1 简介3.1.2 Logstash命令常用选项3.1.3 Logstash 的输入和输出流3.1.4 Logstash配置文件 3.2 E…

零代码编程:用ChatGPT批量采集bookroo网页上的英文书目列表

bookroo网页上有很多不错的英文图书书目。比如这个关于儿童花样滑冰的书单&#xff1a; https://bookroo.com/explore/books/topics/ice-skating 怎么批量下载下来呢&#xff1f; 这个网页是动态网页&#xff0c;要爬取下来比较麻烦&#xff0c;可以先查看源代码&#xff0c;…

Leetcode622.设计循环队列

本专栏内容为&#xff1a;leetcode刷题专栏&#xff0c;记录了leetcode热门题目以及重难点题目的详细记录 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;Leetcode &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &…

第五十六章 学习常用技能 - 执行 SQL 查询

文章目录 第五十六章 学习常用技能 - 执行 SQL 查询执行 SQL 查询检查对象属性 第五十六章 学习常用技能 - 执行 SQL 查询 执行 SQL 查询 要运行 SQL 查询&#xff0c;请在管理门户中执行以下操作&#xff1a; 选择系统资源管理器 > SQL。如果需要&#xff0c;请选择标题…

苹果修复了旧款iPhone上的iOS内核零日漏洞

导语 近日&#xff0c;苹果发布了针对旧款iPhone和iPad的安全更新&#xff0c;回溯了一周前发布的补丁&#xff0c;解决了两个被攻击利用的零日漏洞。这些漏洞可能导致攻击者在受影响的设备上提升权限或执行任意代码。本文将介绍这些漏洞的修复情况以及苹果在修复漏洞方面的持续…