无需修改代码增强JSP和Servlet的安全性 - 面向对象网,web开发,jsp,学习,对象 - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > Web开发 > Jsp > 正文

无需修改代码增强JSP和Servlet的安全性

来源: www.bianceng.cn 阅读:

编写JSP和Servlet是容易的,但通常我们会面临很多安全问题。当然,我们会在程序中加入大量的安全代 码来解决这个问题,但加入这样的安全硬编码将使程序变得不灵活,而且不易维护。因此,在本文中将给出一 种无需修改代码即可达到安全目的方法,并提供了一个实例进行说明。

在本文中的例子将通过一个用户名和密码以及传输层的SSL来保护应用程序的war文件。用户名和密码以明 文在网络中传输。这一切并不需要编辑应用程序中的Java代码和JSP页。而为了使Servlet和JSP页变得安全, 我们要做的只是配置web.xml文件而已。

一、设置XML文件

配置web.xml文件的第一步是定义一个安全约束,也就是一个<security-constraint>标签。这个标 签将保护响应的URL,以使特定的用户才能访问它。注意我们必须要使用<http-method>标签定义一个或 多个HTTP方法。如果你想让安全约束应用到所有的HTTP方法,那么只要简单的忽略<http-method>标签 即可。

做完上面的设置后,下一步需要设置SSL。我们可以使用<user-data-constraint>标签以及这个标签 的一个子标签<transport-guarantee>来设置。却将<transport-guarantee>的值设置成 CONFIDENTIAL。

最后一步我们需要设置验证方法。这需要设置<login-config>标签以及子标签<auth-method> 。在这里我们将<auth-method>设为BASIC。下面是web.xml文件的部分内容:

<security-constraint>
   < web-resource-collection>
     <web-resource-name>Servlet Application
     </web-resource-name>
     <url-pattern>/*</url-pattern>
   </web-resource-collection>
    <auth-constraint>
     <role-name>ttrole</role-name>
    </auth-constraint>
   <user-data-constraint>
     <transport- guarantee>CONFIDENTIAL
     </transport-guarantee>
   </user-data- constraint>
  </security-constraint>
  <login-config>
   <auth- method>BASIC</auth-method>
   <realm-name>default</realm-name>
  </login-config>
  <security-role>
   <role-name>ttrole</role- name>
  </security-role>

在上述的例子中,只有用户"ttrole"才能访问Servlet和JSP页。

在Java EE环境中将使用这些用户验证,但在许多操作系统环境中,用户和组关联。因此,security-role -mapping在用户头组之间提供了一座桥梁。在Java EE 5应用服务器中,我们可以在sun-application.xml文件 中按如下的方式字义security-role-mapping标签:

<sun-application>
   <security-role-mapping>
    <role- name>myrole</role-name>
    <principal-name>myuser</principal- name>
   </security-role-mapping>
   <security-role-mapping>
    <role-name>ttrole</role-name>
    <group-name>ttgroup</group- name>
   </security-role-mapping>
   <security-role-mapping>
    <role-name>arole</role-name>
    <principal-name>ttuser</principal- name>
   </security-role-mapping>
  </sun-application>

二、运行实例代码

在这一节我们来讲一下如何运行上面的程序。在这里我们使用的集成开发环境是NetBeans IDE 5.5以及 NetBeans企业开发包。在安装完NetBeans后,我们需要进行以下几步来运行这个程序。

1. 首先我们需要下载这个程序,下载连接为:例子代码。 然后将其解压。

2. 启动NetBeans。

3. 打开webann工程(刚才zip文件中的NetBeans工程),如果出现一个" Resolve missing server problem"提示信息,说明应用服务器还没有被加到NetBeans的服务器列表中。我们可以选择Tools > Server Manager,然后将相应的服务器加到列表中。

4. 启动Sun内嵌在NetBeans中的Java System Application Server。我们还可以通过在命令中输入如下的 命令来启动服务器:

<appserv_install_dir>/bin/asadmin start-domain domain1

上面的<appserv_install_dir>是应用服务器的安装目录。

Tags:
相关文章列表: