jsp程序设计入门沈泽刚、秦玉平主编的javaweb第二版第09章Web安全性入门讲义.ppt
文本预览下载声明
第9章Web安全性入门 此文档下载自官网,除本页,其余未修改,可直接删除本页 本章内容 9.1 Web安全性措施 9.2 安全域模型 9.3 定义安全约束 9.4 编程式的安全 9.5 小 结 9.1 Web安全性措施 Web应用程序通常包含许多资源,这些资源可被多个用户访问,有些资源要求用户必须具有一定权限才能访问。可以通过多种措施来保护这些资源。 9.1.1 理解验证机制 Web应用的安全性措施主要包括下面4个方面: 1. 身份验证 2. 授 权 3. 数据完整性 4. 数据保密性 9.1.2 验证的类型 在Servlet规范中定义了如下4种用户验证的机制: ① HTTP Basic 验证; ② HTTP Digest 验证; ③ HTTPS Client 验证; ④ HTTP FORM-based 验证。 1. HTTP Basic 验证 这种验证称为HTTP基本验证。当浏览器请求任何受保护资源时,服务器都要求一个用户名和口令。如果用户输入了合法的用户名/口令,服务器才发送资源。 优点:实现较容易,所有的浏览器都支持。 缺点:不能自定义对话框的外观。 2. HTTP Digest 验证 这种验证称为HTTP摘要验证,它除了口令是以加密的方式发送的,其他与基本验证都一样,但比基本验证安全。 缺点:它只能被IE 5以上版本支持;许多Servlet容器不支持,因为规范并没有强制要求。 3. FORM-based 验证 这种验证称为基于表单的验证,它类似于基本验证,但它使用用户自定义的表单来获得用户名和口令而不是使用浏览器的弹出对话框。 优点:所有的浏览器都支持,且很容易实现,客户可以定制登录页面的外观(Look And Feel)。 缺点:不安全。 4. HTTPS Client 验证 这种验证称为客户证书验证,它采HTTPS传输信息。 优点:它是4种验证类型中最安全的;所有常用的浏览器都支持这种验证。 缺点:它需要一个证书授权机构(如VeriSign)的证书;它的实现和维护的成本较高。 9.1.3 基本验证的过程 (1)浏览器向某个受保护资源(Servlet或JSP)发送请求,浏览器并不知道资源是受保护的,所以它发送的请求是一般的HTTP请求,例:GET /login.do HTTP/1.1 (2)当服务器接收到对资源的请求后,首先在访问控制列表(ACL)中查看该资源是否是受保护资源,如果不是,服务器将该资源发送给用户。如果发现该资源是受保护的,它并不直接发送该资源,而是向客户发送一个401 Unauthorized(非授权)消息。 (3)当浏览器收到上面响应,打开一个对话框提示输入用户名和密码。 (4)用户一旦输入了用户名和密码并单击【确定】按钮,浏览器再次发送请求并在名为Authorization的请求头中传递用户名和密码的值。 (5)当服务器接收到该请求,它将在访问控制列表中检验用户名和密码,如果是合法用户它将发送资源并在浏览器中显示出来,否则浏览器再一次显示对话框。 9.1.3 基本验证的过程 9.1.4 声明式安全与编程式安全 在Servlet规范中提到,实施Web应用程序的安全性可以有两种方法:声明式安全和编程式安全。 所谓声明式安全(declarative security)是一个应用程序的安全结构。包括角色、访问控制及验证需求都在应用程序外部表示。 编程式安全(programmatic security)主的有关方法实现。在9.4节将介绍编程式安全。 9.2 安全域模型 9.2.1 安全域概述 9.2.2 定义角色与用户 9.2.1 安全域概述 安全域是Web服务器保护Web资源的一种机制。所谓安全域(realm)是标识一个Web应用程序的合法的用户名和口令的“数据库”,其中包括与用户相关的角色。 角色的概念来自于现实世界,例如,一个公司可能只允许销售经理访问销售数据,而销售经理是谁没有关系。实际上,销售经理可能更换。任何时候,销售经理实际是一个充当销售经理角色的用户。 9.2.1 安全域概述 每个用户可以拥有一个或多个角色,每个角色限定了可访问的Web资源。在Web应用中,对资源的访问权限一般是分配给角色而不是实际的用户。把权限分配给角色而不是用户使对权限的改变更灵活。一个用户可以访问其拥有的所有角色对应的Web资源。 Tomcat的安全域类型 安全域类型 类名 说明 内存域 MemoryRealm 在Tomcat服务器初始化阶段,从一个XML文档中读取验证信息,并把它们以一组对象的形式存放在内存中 JDBC域 JDBCRealm 通过JDBC驱动程序访问存放在数据库中的验证信息 数据源域 DataSourceRealm 通过JNDI数
显示全部