`

Click Framework最佳实践-安全

阅读更多
水平有限

于应用安全来说,推荐使用声明式的安全模型。(For application security it is highly recommended that you use the declarative JEE Servlet path role based security model. 不会译)而Click pages提供一个onSecurityCheck()方法让你使用编程的方式控制安全模型,声明式的JEE模型有很多优势。
这些优势包括:
  • 它是业界的标准模式,使开发和维护更简单。
  • 应用服务器通常提供多种安全基础结构的集成方式,包括LDAP目录和关系型数据库。
  • Servlet安全模型支持用户bookmark页面,当用户以后访问这些页面时,容器会在允许他们访问这些资源之前,自动的认证他们。
  • 使用声明式安全模型,可以使你的Page类不需要关心安全问题。这使代码的重用性更高,或者至少更容易编写。

如果你的应用有更高的安全要求,你可以混合使用声明式和编程式来达到你的要求。在这样的情况下,推荐使用声明式控制粗粒度的访问和编程式控制细粒度的访问(In these cases its recommended you use declarative security for course grained access and programmatic security for finner grained access control.)。

声明式
这种方式需要用户被认证并且是合适的角色,在他们可以访问受保护的资源。和许多JEE相比,Servlet安全模型是出奇的简单。
例如限制admin页面,在web.xml中加入安全限制。这要求用户是admin角色,在他们可以访问admin目录下的任何资源。
<security-constraint>
   <web-resource-collection>
      <web-resource-name>admin</web-resource-name>   
      <url-pattern>/admin/*</url-pattern>
   </web-resource-collection>
   <auth-constraint>
      <role-name>admin</role-name>
   </auth-constraint>
</security-constraint> 

应用的用户角色在web.xml中定义,使用security-role元素。
<security-role>
   <role-name>admin</role-name>
</security-role>  

Servlet安全模型支持3种不同的认证方法:
  • BASIC- 只推荐在安全不重要的内部应用中使用。这是最简单的认证方法,在用户可以访问受限资源前,会显示一个对话框要求认证用户。BASIC方法是相对不安全的,因为用户名和密码会被转为64位编码传回服务器。
  • DIGEST-推荐在安全程度适中的内部应用中使用。和BASIC方式一样,在用户可以访问受限资源前,会显示一个对话框要求认证用户。不是所有的应用服务器都支持DIGEST认证,只有最近的版本的Apache Tomcat支持。
  • FORM-推荐使用在需要定制登录页面的应用中。需要高安全度的应用推荐使用在HTTPS上的FORM方式。

认证方式使用<login-method>元素指定。例如使用BASIC方式你可以这样指定:
<login-config>
   <auth-method>BASIC</auth-method>
   <realm-name>Admin Realm</realm-name>
</login-config>

使用FORM方式,也需要指定登录页面和登录错误页面的路径:
<login-config>
   <auth-method>FORM</auth-method>
   <realm-name>Secure Realm</realm-name>
   <form-login-config>
      <form-login-page>/login.htm</form-login-page>
      <form-error-page>/login.htm?auth-error=true</form-error-page>
   </form-login-config>
</login-config> 

在login.htm页面你需要包括一个特殊的有j_username和j_password输入字段的j_security_check表单,例如:
#if ($request.getParameter("auth-error"))
<div style="margin-bottom:1em;margin-top:1em;color:red;">
  Invalid User Name or Password, please try again.<br/>
  Please ensure Caps Lock is off.
</div>
#end

<form method="POST" action="j_security_check" name="form">
<table border="0" style="margin-left:0.25em;">
 <tr>
   <td><label>User Name</label><font color="red">*</font></td>
   <td><input type="text" name="j_username" maxlength="20" style="width:150px;"/></td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><label>User Password</label><font color="red">*</font></td>
   <td><input type="password" name="j_password" maxlength="20" style="width:150px;"/></td>
   <td><input type="image" src="$context/images/login.png" title="Click to Login"/></td>
  </tr>
</table>
</form>

<script type="text/javascript">
  document.form.j_username.focus(); 
</script> 

在使用基于FORM方式的认证不要把应用逻辑写在Click的登录Page类中,因为它的角色只是简单的呈现登录表单。如果你试图把跳转逻辑放入,JEE容器可能会忽略或抛出错误。
把下面的是web.xml的片段,制定在admin和user路径下的安全限制。使用FORM方式认证,
并会将未认证的请求(403)转发到/not-authorized.htm。
<web-app>

    ..

    <error-page>
        <error-code>403</error-code>
        <location>/not-authorized.htm</location>
    </error-page>	

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>admin</web-resource-name>   
            <url-pattern>/admin/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>admin</role-name>
        </auth-constraint>
    </security-constraint>

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>user</web-resource-name>   
            <url-pattern>/user/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>admin</role-name>
            <role-name>user</role-name>
        </auth-constraint>
    </security-constraint>

    <login-config>
        <auth-method>FORM</auth-method>
        <realm-name>Secure Zone</realm-name>
        <form-login-config>
            <form-login-page>/login.htm</form-login-page>
            <form-error-page>/login.htm?auth-error=true</form-error-page>
        </form-login-config>
    </login-config>

    <security-role>
        <role-name>admin</role-name>
    </security-role>

    <security-role>
        <role-name>user</role-name>
    </security-role>

</web-app>


可选的安全方案
也有可选的安全方案提供额外的JEE中不可用的特性,像RememberMe功能,更好的资源映射和支持Post Logon Page。(Post Logon Page允许用户成功登陆后会被转发到一个指定默认的URL,这个特性允许把登录表单嵌在所有非受限页面,并且在成功认证后,用户会进入他们的主页面。)
可用的可选的安全方案:

资源
关于安全的更多的信息资源:






分享到:
评论

相关推荐

    Python库 | robotframework_browser-2.4.1-py3-none-any.whl

    6. **最佳实践** - 使用变量存储重复使用的URL和元素选择器,提高代码可读性和可维护性。 - 编写清晰的测试步骤,每个步骤对应一个关键字,便于理解测试流程。 - 结合Robot Framework的其他库,如`...

    Microsoft .NET Framework 2.0 - Distributed Application Development (70-529) Mega Guide

    本文将深入探讨Microsoft .NET Framework 2.0版本在分布式应用程序开发中的核心概念、技术和最佳实践,主要针对70-529考试进行详尽解析。这个框架是微软提供的一套全面的开发平台,它极大地简化了构建、部署和管理...

    Microsoft .Net Framework-Application Development Foundation(Second Edition)

    5. **性能优化**:针对.NET Framework应用程序,本书提供了一些关于如何提高性能的建议和最佳实践。 通过以上对本书核心知识点的详细解析,读者不仅能够系统地学习.NET Framework 3.5版本的应用开发技术,还能为...

    MCTS .NET Framework 2.0 Windows Applications

    - **最佳实践**:分享在实际开发过程中积累的经验教训,帮助读者避开常见的陷阱并提升开发效率。 通过以上内容,我们可以看出《MCTS .NET Framework 2.0 Windows Applications》是一本全面覆盖.NET Framework 2.0...

    MS Press - Applied Microsoft .Net Framework Programming

    通过阅读《MS Press - 应用微软.NET框架编程》,开发者不仅可以掌握.NET Framework的核心概念和技术,还能学习到最佳实践,以提升软件开发的效率和质量。书中的案例和实践指导将帮助读者将理论知识转化为实际开发...

    Click N Mix - PHP Solution Framework-开源

    Click N Mix是一个基于PHP...综上所述,Click N Mix是一个以用户友好和开发者便利为核心的PHP框架,它利用开源精神推动了代码质量和功能的持续提升,同时也强调了Clean Code的最佳实践,以实现高效、可维护的项目开发。

    Robot+Framework+WD+培训-吴穹++ChinaTest2012.pdf

    吴穹作为培训师,可能会介绍最佳实践、常见问题和解决策略。 【标签】"RFS"可能是指Robot Framework Suite,它是一组相关的测试套件,组织成一个可执行的测试结构。在Robot Framework中,测试套件是最高级别的组织...

    UIKit Framework

    #### 五、最佳实践 - **遵循 Human Interface Guidelines**:确保应用程序界面简洁明了,易于理解和使用。 - **优化性能**:减少不必要的视图重绘和计算开销,避免内存泄漏等问题。 - **国际化与本地化**:支持多种...

    通过PrototypeJS的Apache Click Framework PickList控制客户端JavaScript

    文件“Apache-Click-Framework-PickList-control-client-Jav.pdf”可能详细介绍了如何在实际项目中运用PrototypeJS和Apache Click框架来实现PickList的客户端控制,包括具体的代码示例、配置方法和最佳实践。...

    Smart Client系列课程(1):智能客户端开发概览

    通过学习这个系列课程,开发者将掌握智能客户端开发的关键技术和最佳实践,从而能够构建出满足用户需求、性能优越的桌面应用程序。此外,课程可能还会讨论如何将现有Web应用迁移到智能客户端模型,以及如何在团队中...

    Smart Client系列课程(6):分布式智能客户端应用程序开发最佳实践

    **分布式智能客户端应用程序开发最佳实践** 在现代软件开发领域,智能客户端应用程序因其高效、离线功能和丰富的用户体验而备受青睐。本系列课程聚焦于“Smart Client”技术,旨在帮助开发者掌握构建分布式智能...

    .NET Framework 2.0 系列课程(4):Office Development 和 .NET Framework 2.0.zip

    4. **Office 开发的最佳实践**:讨论在 Office 开发中需要注意的性能优化、错误处理和调试技巧,确保解决方案既高效又稳定。此外,还会涉及安全性问题,如代码签名和权限管理。 5. **案例研究**:通过实际的项目...

    Wrox.Professional.Visual.Basic.2010.and.NET.4

    - 安全编程的最佳实践 **章节33:并行编程使用任务与线程** - **知识点**: - 并行计算与多核处理器 - Task Parallel Library (TPL) - 并发集合与同步上下文 - 异步编程模型 (APM) **章节34:部署** - **...

    mcts-self-paced-training-kit-exam-70-511-windows-application-development

    10. **设计模式和最佳实践**:书中可能涵盖了一些常见的设计模式,如工厂模式、单例模式等,以及.NET开发的最佳实践,以提高代码的可维护性和可扩展性。 通过这个自学习课程,读者将不仅能够准备考试,还能获得实际...

    002RobotFramework测试框架使用手册.zip

    通过阅读这份手册,用户将能深入了解Robot Framework的工作原理,并掌握实际操作中的技巧和最佳实践。 总而言之,Robot Framework结合了Python语言的优势,提供了一种高效、灵活且易于理解的自动化测试解决方案。...

    Greetr ---实践框架-jQuery

    2. **阅读文档**:如果有的话,文档会介绍框架的使用方法、API接口以及最佳实践。 3. **学习示例**:通过运行和修改示例代码,了解框架的工作原理和使用方式。 4. **分析源码**:如果框架没有提供详尽的文档,可以...

    70-431Part2 题库

    综上所述,这部分考试内容涵盖了SQL Server的视图操作、CLR函数的安全配置、SSMS的使用技巧以及数据库安全的最佳实践。理解并熟练掌握这些知识点对于通过MCTS 70-431考试以及日常的数据库管理工作至关重要。

    intellibot 0.10.143.381

    5. **最佳实践** - 定义清晰的测试套件结构,将相关测试用例组织在一起。 - 编写可重用的关键字,提高代码复用性。 - 制定良好的命名规范,使测试用例易于理解和维护。 - 利用Robot Framework的报告和日志功能,...

    Pro.NET 2.0 Code and Design Standards in C#, 3rd Edition

    它不仅详细介绍了 .NET 2.0 平台的各项特性和 C# 语言的最佳实践,还深入探讨了设计模式、测试方法以及安全性和性能优化等方面的知识。通过阅读本书,开发者可以提升自己的技能水平,构建出更加高效、稳定的应用程序...

Global site tag (gtag.js) - Google Analytics