打印本文 打印本文 关闭窗口 关闭窗口
Java Servlet, JSP的安全性实现
作者:武汉SEO闵涛  文章来源:敏韬网  点击数625  更新时间:2009/4/23 10:54:46  文章录入:mintao  责任编辑:mintao
  一个web application 拥有能够被共享多种资源。经常有许多敏感的信息在没有保护措施的情况下在开放性网络上传输。在这种环境下,实际上许多web application有一定程度的安全性要求。大多数的servlet containers有明确的机制和结构来达到这种要求。虽然保证和执行的细节可能有些不同,但是,都具有下面的特点:

1.Authentication:通讯实体相互验证对方的行为是以一个明确的身份在进行的一种机制。

2.Access control for resources:对某组用户来说,对数据库的某些操作是受到限制的,或对有些程序强调可用性,完整性或保密性的一种机制。

3.Data Integrity:数据在传递过程中保证不被第三方修改的一种机制。

4.Confidentiality or Data Privacy:保证数据只被那些授权使用的用户使用,能被安全传递的一种机制。

Java Servlet, JSP中安全性通过如下几各方式实现:

一、 Declarative Security
  Declarative security指的是表达一个应用的安全结构,包括角色,存取控制,和在一个应用的外部表单所要求的验证。在web application中发布描述器是实施declarative security的一种主要的工具。

  发布者把application所要求的逻辑完整性映射为在特定运行环境下的安全策略。在运行时,servlet container使用这些策略来强迫验证。

二 、Programmatic Security
  当declarative security不能够完全表达一个application的安全模型时,就可以使用programmatic Security。Programmatic Security包括HttpServletRequest接口的下列方法:

getRemoteUser

isUserInRole

getUserPrincipal

  getRemoteUser方法返回经过客户端验证的用户名。IsUserInRole向container的安全机制询问一个特定的用户是否在一个给定的安全角色中。GetUserPrinciple方法返回一个java.security.Pricipal对象。这些APIs根据远程用户的逻辑角色让servlet去完成一些逻辑判断。它也可以让servlet去决定当前用户的主要名字。如果getRemoteUser返回null值(这意味着没有用户被验证),那么isUserInRole就总会返回false,getUserPrinciple总会返回null。

打印本文 打印本文 关闭窗口 关闭窗口