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 映射规则

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

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

1.3 配置页面

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

可配置多个文件(不能以斜线开头)

1.3.1 配置错误页面

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

      java.lang.Throwable

      /errorPage.jsp

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

      java.lang.ArithmeticException

      /ati.jsp

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

      404

      /noPage.jsp

1.4 DD中配置servlet初始化

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

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

2 web应用安全

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

Servlet的部署与安全_第1张图片

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

Servlet的部署与安全_第2张图片

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

Servlet的部署与安全_第3张图片

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

Servlet的部署与安全_第4张图片

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

2.1 认证

基本BASIC

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

摘要DIGEST

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

客户证书CLIENT-CERT

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

表单FORM

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

表 4种类型的认证

实现认证:

  

       BASIC

  

表单认证实现:

  

       FORM

            

                    /loginPage.html

                /loginError.html

      

  

2.2 授权

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

授权步骤是:

1)定义角色。

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

Servlet的部署与安全_第5张图片

图 DD中的元素

你可能感兴趣的:(Head,First,Servlets,&,JSP,servlet,安全)