ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Java WEB开发实战 之 第三部分:Servlet开发(5)【私塾在线原创】【私塾在线原创】

Java WEB开发实战 之 第三部分:Servlet开发(5)【私塾在线原创】【私塾在线原创】

原创 Linux操作系统 作者:啸傲1 时间:2012-02-29 14:53:40 0 删除 编辑
Servlet存在并发问题,多个同类线程同时运行,可共享同一个Servlet实例,如果共享的数据和资源未合理同步,可能引起数据冲突
如何处理并发问题呢?——synchronized
Web应用中有六种属性范围
1:局部变量
 线程安全?是
 使用:任何对Servlet方法的局部处理
 说明:局部变量对每个请求线程是唯一的
2:实例变量
 线程安全?否
 使用:
 存储的数据涉及给定Servlet的多个请求
 存储初始化参数(通常只读)
 说明: 实例变量在给定servlet实例的每个请求间共享

java代码:
•doPost(){
•//1
•String zy = req.getParameter("zy");
•//2
•
•//3
•if("1".equals(zy)){
      this.doWork = this. doWork + 1;
•}else if("2".equals(zy)){
•this.notDoWork++;
•}else if("3".equals(zy)){
•this.bothSir++;
•}
•
•
•}
3:类变量
 线程安全?否
 使用:存储跨多个servlet定义的数据
 说明:类变量在每个servlet实例的所有请求间共享
 
4:请求范围
线程安全?是
 使用:将数据从控制器移动到用于表现的视图
 API:ServletRequest接口
getAttributeNames() :Enumeration
getAttribute(name:String) :Object
setAttribute(name:String, value:Object)
removeAttribute(name:String)
 
5:会话范围
           线程安全?否
  使用:存储一个Web会话中通用的数据
  说明:用户可能有多个浏览器活动,访问同一个Web应用
  API:HttpSession接口
 
6:应用范围
  线程安全?否
  使用:Web应用中所有servlet共用的资源
  API:ServletContext接口
 
Web应用存在安全问题
比如:认证、授权、维护数据完整性、跟踪访问(审计)、处理恶意代码、处理Web攻击等等
先一起来了解一下这些安全问题

认证是验证用户身份的过程,通常使用用户名和口令
可配置四种认证技术
BASIC – Web浏览器接收用户名和口令,将其以明码方式发送给Web服务器
DIGEST – Web浏览器接收用户名和口令,使用加密算法将此数据发送给Web服务器
FORM. – Web应用提供发送给Web浏览器的HTML form
CLIENT-CERT – Web容器使用SSL验证用户
 
Web服务器会提供一组通用的安全服务,来帮助解决这些问题
授权
授权是根据用户角色划分Web资源的过程,其标识Web应用中的安全域。
Web容器使用厂商指定的机制验证用户角色
维护数据完整性
为维护数据完整性,可以使用加密方式传送保密数据,比如HTTPS
访问跟踪
访问跟踪,也称审计,是为Web应用的每次访问保留记录的过程,也就是审查日志信息
处理恶意代码
恶意代码是出于破坏系统的目的而设计的代码,Web容器可以使用Java的SecurityManager来隔离Web应用
处理Web攻击
Web攻击是外界想破坏服务器的企图,在Servlet规范中没有防止Web攻击的保护,可使用防火墙来避免此类问题
 
实现声明性授权,必须实现以下的工作
1:标识Web资源集
2:标识角色
3:将Web资源集映射到角色
4:标识每个角色中的用户
Web资源集定义示例:

java代码:

myRes
Javass Test
/javass/*
POST
GET
声明安全角色示例:

java代码:


myRes
/javass/*
POST
GET


student

安全角色定义示例:

java代码:

test role
student
 
安全领域( Security Realm )
1:Security realm是将用户与角色相匹配的软件组件,其也验证用户口令
2:每个Web容器必须包括一个security realm,但该机制与厂商相关
3:可以不配置,使用服务器缺省的实现,比如普通文件的方式
使用部署描述符可声明Web应用的认证技术:
BASIC
auth-method元素可取如下四值之一:BASIC、DIGEST、FORM、CLIENT-CERT
基于Form的认证
在web.xml中的配置如下所示:

java代码:

FORM
Constraint

/login/form.html
/login/error.html


 
还需要自己编写form登录页面,要注意里面名称的写法:

java代码:

User Name:
Password:
Web容器截获j_security_check动作,并处理认证,不需要自己编码
在tomcat里面的配置:

java代码:
在tomcat的\conf目录下找到tomcat-users.xml文件,在其中增加


 
然后尝试访问/javass/下面的任何页面试试看
生成keystore
使用JDK自带的keytool来生成一个证书。
比如:keytool -genkey -alias javass  -keyalg  RSA -keystore c:\javass.keystore
注意:tomcat的密码和keystore的密码必须一样
修改tomcat的server.xml,找到ssl配置的地方,去掉注释,修改成如下:

java代码:
如果是tomcat7和win7的系统,需要修改protocol。另外两个属性为新添加的。
可以以https去访问了,注意端口号是8443了
强制使用https的配置

java代码:

一样的

CONFIDENTIAL


 
  
 CLIENT-CERT
  Constraint
 
要注意一点,这里并没有真正实现CLIENT-CERT,因为CLIENT-CERT对客户端的认证需要数字证书,过程较为繁琐,这里就不去讲述了。
专业的数字证书通常是收费的,一个客户端一个,而且价格不菲,比如国内的CA证书、国际上的Verisign、GeoTrust、Thawte等等。
 
视频配套PPT,视频地址【  Java WEB开发实战视频课程 】
  

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26715443/viewspace-717366/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-29

  • 博文量
    11
  • 访问量
    4588