`
superzhouych
  • 浏览: 22729 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

SCWCD之路——Web应用的安全性

阅读更多

概述

 

        Servlet技术规范规定了两种由容器实现的Web应用程序的安全模型,分别是:

        1)声明性安全模型:指可以在部署的时候由部署者为Web应用的资源配置安全限制,比如我们可以将用户放到特定权限的组里和为特定的资源配置身份认证等,这些工作都可以在web.xml中配置完成。

        2)程序性安全模型:指由程序员在代码中使用特定的方法来限制某些资源的访问,但是注意的是如果安全规则发生了变化,就必须重新修改代码并编译,比较麻烦,所以使用的不多。

 

 

由一个例子说开

 

        虽然在前面的《SCWCD之路——Web应用的结构和部署》 一文中已经讲述过如何在web.xml中配置各种安全描述符,但是零散,下面给出一个比较具体的例子:考虑有一个admin.jsp的页面,这个页面必须有一定权限才可以访问,假设访问的用户角色必须是administrator,并且这个角色组中有一个用户名就是administrator。

        1)编写访问受限的页面admin.jsp

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Admin Page</title>
    </head>
    <body>
        <h1>Hello, Administrator</h1>
    </body>
</html>

         2)配置web.xml,限制admin.jsp页面的受访问(节选)

<web-app>
    <security-constraint>
        <display-name>Test</display-name>
        <web-resource-collection>
            <web-resource-name>AdminPage</web-resource-name>
            <description/>
            <url-pattern>/admin.jsp</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
        </web-resource-collection>

        <auth-constraint>
            <role-name>administrator</role-name>
        </auth-constraint>
    </security-constraint>

    <login-config>
        <!--这里采用基本的登录配置-->
        <auth-method>BASIC</auth-method>
        <realm-name>Welcome to administrator page</realm-name>
    </login-config>
</web-app>

        3)配置角色及属于该角色的用户(角色是administrator,用户名是administrator),这里以Tomcat为例子,修改Tomcat的tomcat-user.xml文件,在其中添加如下内容

<tomcat-users>
    <!--定义角色-->
    <role rolename="administrator" />
    <!--定义用户-->
    <user name="administrator" password="123" roles="administrator" />
</tomcat-users>

        4)这个时候在浏览器的地址栏里输入admin.jsp的地址,将会出现验证的对话框,如下图

        5)在对话框中输入用户名administrator和密码123即可看到admin.jsp页面。(修改tomcat-user.xml后可能需要重启Tomcat)

 

        6)在上面的操作中是直接修改Tomcat下的tomcat-user.xml文件的,这样可能会给其他的用户造成不便,不是好办法。可以在该项目的WEB-INF文件夹下新建一个用户文件(如web-user.xml),然后在该文件中加入如下内容:

<tomcat-users>
    <!--定义角色-->
    <role rolename="administrator" />
    <!--定义用户-->
    <user name="administrator" password="123" roles="administrator" />
</tomcat-users>

        这个时候还需要告诉Tomcat在项目启动的时候加载这个文件,到该项目的META-INF文件夹下修改context.xml文件如下:

<Context antiJARLocking="true" path="/WebTest">
    <!--注意pathname必须正确,否则可能报告找不到该文件-->
    <Realm className="org.apache.catalina.realm.MemoryRealm" pathname="webapps/WebTest/WEB-INF/web-user.xml" />
</Context>

         之后再在浏览器里输入admin.jsp页面的地址,照样会看到验证的对话框。

 

        7)在上面的步骤中,密码都是采用明文的形式保存的,这可能会给程序留下安全隐患。所以有的时候需要对这些密码进行加密处理。使用Tomcat 6.0中提供的库文件catalina.jar(位于Tomcat安装目录的lib目录下)即可方便地获取字符串的MD5值,所以这里使用MD5来对密码进行处理。(使用catalina.jar还需要另一个库文件tomcat-juli.jar的支持,位于Tomcat安装目录的bin目录下,附件中有这两个文件),使用如下命令获取123的MD5值,如:

        可以得知123的MD5值是202cb962ac59075b964b07152d234b70,可以用这个来代替原来的明文密码,修改web-user.xml文件的内容为

<tomcat-users>
    <!--定义角色-->
    <role rolename="administrator" />
    <!--定义用户-->
    <user name="administrator" roles="administrator" password="202cb962ac59075b964b07152d234b70" />
</tomcat-users>

         并且修改context.xml的内容为

<Context antiJARLocking="true" path="/WebTest">
    <Realm className="org.apache.catalina.realm.MemoryRealm" pathname="webapps/WebTest/WEB-INF/web-user.xml" digest="MD5" />
</Context>

        之后再在浏览器里输入admin.jsp页面的地址,照样会看到验证的对话框,至此,全部工作完成。

 

 

安全配置中的登录配置

 

        在上面的例子中使用了基本的登录配置,其实验证方法一共有四种,这里来系统地讲述下。

        1)BASIC验证:该验证方法比较简单且使用较为广泛,形式是当你要访问某受限资源时会弹出一个对话框要求你输入用户名和密码,在这里用户名采用明文方式发送,而密码则采用Base64编码发送,安全性较低。

        2)DIGEST验证:该验证方法与BASIC基本一致,不同的是它预先在服务器端存放了用户名和密码的MD5值,在网络上传输的也是MD5值,传到服务器后才与服务器进行对比,所以安全性较高。

        3)FORM验证:该验证方法由程序员来指定一个登录的表单页面,当用户需要访问受限资源时则出现提示用户输入用户名和密码,包括一个出错页面,安全性也比较低,但是在考试的时候出现比较多。下面给出一个例子,如:

        编写包含Form的页面auth.jsp(节选)

<form action="j_security_check" method="post">
    userName:<input type="text" name="j_username" /><br />
    password:<input type="text" name="j_password" /><br />
    <input type="submit" value="authenticate">
</form>

        上面的代码中需要注意的是action必须为j_security_check,用户框名是j_username,密码框名是j_password

        然后修改web.xml,添加如下内容

<web-app>
    <login-config>
        <auth-method>FORM</auth-method>
        <realm-name>Welcome to administrator page</realm-name>
        <form-login-config>
            <form-login-page>/auth.jsp</form-login-page>
            <form-error-page>/error.jsp</form-error-page>
        </form-login-config>
    </login-config>
<web-app>

        4)CLIENT-CERT验证:该验证方法需要和SSL及数字证书来一起使用,考试时不怎么出现,这里给个思路:可以使用JDK提供的keytool工具来生成自己的密钥文件,再根据密钥文件输出数字证书,然后使用浏览器(如IE)导入数字证书,之后再去Tomcat中开启https协议(默认是注释掉的,内容如下)

    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

        重启Tomcat后,如果证书成功,则会出现如下提示:

        如果浏览器没有导入证书,则会出现如下提示:

 

 

总结

 

        安全配置在考试中同样占有一定的分量,但是平常的资料却很少提及,希望这篇文章能给予大家一些帮助。

  • 大小: 20.5 KB
  • 大小: 16.7 KB
  • 大小: 20 KB
  • 大小: 24.8 KB
1
0
分享到:
评论

相关推荐

    SCWCD之路——结束语

    标题“SCWCD之路——结束语”表明这是一个关于SCWCD认证学习的总结或结语。SCWCD,全称Sun Certified Web Component Developer,是Oracle(原Sun Microsystems)推出的一个Java Web开发领域的专业认证,主要考察...

    SCWCD之路——前言

    标题“SCWCD之路——前言”暗示了这是一个关于SCWCD(Sun Certified Web Component Developer)认证的学习历程或指南的开篇部分。SCWCD是Java EE(现在称为Jakarta EE)开发人员的一个专业认证,它专注于Web组件的...

    SCWCD之路——标准标签库开发

    "SCWCD之路——标准标签库开发"是一个关于Java Web开发中的重要主题,特别是与Servlet、JSP和自定义标签库相关的知识。SCWCD(Sun Certified Web Component Developer)是Oracle公司提供的一个Java Web开发认证,它...

    SCWCD资料 scwcd认证

    SCWCD(Sun Certified Web Component Developer)是Oracle公司(原Sun Microsystems)提供的一个Java Web开发领域的专业认证,全称为“Sun Certified Web Component Developer for Java EE”。这个认证主要针对那些...

    SCWCD

    标题:SCWCD 描述与知识点详述: ### SCWCD概述 SCWCD,全称为Sun Certified Web Component Developer,是Sun ...通过深入理解和掌握Servlets、JSP以及相关技术,开发者可以构建出更高效、更安全的Web应用程序。

    SCWCD第三轮复习

    SCWCD,全称Sun Certified Web Component Developer,是Oracle(原Sun Microsystems)推出的Java EE(企业版)认证考试之一,主要考察开发者在构建Web应用程序方面的能力,包括Servlet、JSP、JSTL、EL表达式语言等...

    SCWCD Exam Study Kit Java Web Component Develop及笔记

    SCWCD(Sun Certified Web Component Developer)是Oracle公司(原Sun Microsystems)提供的一个Java Web组件开发认证考试。这个考试主要针对那些希望证明自己在构建基于Java EE(企业版)平台的Web应用程序方面具有...

    scwcd国际认证题库

    SCWCD证书证明了持有者具备创建动态Web应用程序的能力。 一、Servlet技术 Servlet是Java编程语言中的一个接口,用于扩展服务器的功能,尤其在Web应用中。Servlet可以处理HTTP请求,生成响应,并与服务器的数据存储...

    scwcd.rar_scwcd

    10. **性能和可扩展性**:学习如何通过调整Servlet和JSP配置来优化应用性能,以及设计可扩展的Web架构。 通过SCWCD认证的考生通常能掌握创建高效、可维护的Java Web应用程序所需的技能。提供的压缩包资源,尤其是...

    scwcd-2 英文原版考试题

    【SCWCD(Sun Certified Web Component Developer)模拟试题2】主要关注的是Web应用程序中的用户自定义功能和事件监听器的应用。题目中提到,网站允许用户定制字体和颜色偏好,IT部门已经利用Java SE平台的lang.util...

    SUN SCWCD认证考试真实题目一(有答案)

    6. **会话管理**:理解和掌握如何在Web应用中创建、跟踪和销毁session,以及session超时和安全性相关的策略。 7. **错误和异常处理**:理解错误页面的配置,以及如何在Servlet和JSP中捕获和处理异常。 8. **MVC...

    SCWCD Exam Study Kit

    5. **MVC(Model-View-Controller)设计模式**:理解并应用MVC模式在web应用程序中的重要性,如Struts或Spring MVC框架。 6. **JavaServer Pages标准标签库(JSTL)**:JSTL提供了一组预定义的标签,简化了JSP页面...

    head_first_scwcd.rar 复习scwcd资料 英文版

    同时,安全性也是Web开发的重点,书中会讲解如何实施基本的安全策略,如SSL加密、身份验证和授权。 总之,《Head First SCWCD》是一本全面而实用的教材,它不仅覆盖了SCWCD考试的所有核心知识点,而且通过独特的...

    SCWCD study guide

    SCWCD(Sun Certified Web Component Developer)是Oracle公司(原Sun Microsystems)推出的针对J2EE平台的Web组件开发的专业认证,对于希望深入理解和熟练掌握Java Web应用开发的开发者来说,这是一个重要的里程碑...

    SCWCD Exam Notes.doc

    SCWCD(Sun Certified Web Component Developer)是Java Web开发领域的一个认证,主要考察开发者对Servlet和JSP(JavaServer Pages)的理解与应用能力。以下是一些关键知识点的详细解释: 1. **Servlet API** a) *...

Global site tag (gtag.js) - Google Analytics