`
tooby
  • 浏览: 118221 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ESAPI之会话安全

    博客分类:
  • Java
 
阅读更多

ESAPI是开源组织owasp,开放的安全开发框架,但百度、google搜索相关的技术文章很少,今天小尝试了一下,分享一下心得。

会话攻击,简单理解就是盗用窃取用户的cookie,伪装成用户,向服务器端发送请求,窃取用户私密信息。

具体如何防止会话攻击,很简单,参照《Web应用安全威胁与防治--基于OWASP TOP 10 与ESAPI》书中介绍的方法,一旦用户登录成功后,马上validate用户的会话,具体步骤如下:

  1. 用户输入用户名和密码
  2. 系统对用户进行验证通过
  3. 已有的会话信息如果仍然需要,则转移到一个临时变量中去
  4. invalidate当前会话
  5. 创建一个新会话
  6. 把临时变量中保存的会话信息恢复到新创建的会话中去
  7. 用户使用这个新的会话登录到系统中并进行操作

 

贴出实例

构造一个简单登录页面

 

  1. <body>  
  2.     <form action="loginServlet" method="post">  
  3.         用户名:<input type="text" name="username" /><br/>  
  4.         密码:<input type="password" name="password"/><br/>  
  5.         <input type="submit" value="登录"/>  
  6.     </form>  
  7.   </body>  


验证成功的页面

 

 

  1. <body>  
  2.    欢迎${sessionScope.username }登录  
  3.  </body>  


然后是一个LoginServlet,其中DefaultHTTPUtilities是ESAPI中org.owasp.esapi.reference.DefaultHTTPUtilities类,该类的changeSessionIdentifier(request),就是实现上述功能。

 

 

  1. public void doPost(HttpServletRequest request, HttpServletResponse response)  
  2.             throws ServletException, IOException {  
  3.         String username = request.getParameter("username");  
  4.         String password = request.getParameter("password");  
  5.         DefaultHTTPUtilities dhUtil = new DefaultHTTPUtilities();  
  6.         try {  
  7.             HttpSession session = dhUtil.changeSessionIdentifier(request);  
  8.             session.setAttribute("username", username);  
  9.             session.setAttribute("password", password);  
  10.             request.getRequestDispatcher("/index.jsp").forward(request, response);  
  11.         } catch (AuthenticationException e) {  
  12.             e.printStackTrace();  
  13.         }  
  14.     }  


贴出changeSessionIdentifier(request)方法源码

 

 

 

  1. public HttpSession changeSessionIdentifier(HttpServletRequest request) throws AuthenticationException {  
  2.   
  3.         // get the current session  
  4.         HttpSession oldSession = request.getSession();  
  5.   
  6.         // make a copy of the session content  
  7.         Map<String,Object> temp = new ConcurrentHashMap<String,Object>();  
  8.         Enumeration e = oldSession.getAttributeNames();  
  9.         while (e != null && e.hasMoreElements()) {  
  10.             String name = (String) e.nextElement();  
  11.             Object value = oldSession.getAttribute(name);  
  12.             temp.put(name, value);  
  13.         }  
  14.   
  15.         // kill the old session and create a new one  
  16.         oldSession.invalidate();  
  17.         HttpSession newSession = request.getSession();  
  18.         User user = ESAPI.authenticator().getCurrentUser();  
  19.         user.addSession( newSession );  
  20.         user.removeSession( oldSession );  
  21.   
  22.         // copy back the session content  
  23.       for (Map.Entry<String, Object> stringObjectEntry : temp.entrySet())  
  24.       {  
  25.          newSession.setAttribute(stringObjectEntry.getKey(), stringObjectEntry.getValue());  
  26.         }  
  27.         return newSession;  
  28.     }  
分享到:
评论

相关推荐

    ESAPI加使用方法文档

    8. **安全的会话管理**:理解如何利用ESAPI来管理和保护Web应用程序的会话,防止会话劫持和固定令牌攻击。 9. **安全的HTTP操作**:ESAPI提供了`HttpUtilities`类,能够帮助你执行安全的HTTP请求,如防止点击劫持和...

    esapi-2.1.0.1_esapi-2.1.0.1_

    **ESAPI 2.1.0.1:安全编程接口详解** `ESAPI`,全称为`Enterprise Security API`,是企业级安全API的一种实现,主要用于帮助开发人员在Java平台上构建更安全的应用程序。这个开源项目由OWASP(开放网络应用安全...

    SpringBoot +esapi 实现防止xss攻击 实战代码

    ESAPI是一个开源的安全库,提供了一系列的安全功能,包括输入验证、输出编码、安全随机数生成等。在防止XSS攻击方面,ESAPI的`encodeForHTML()`和`encodeForJavaScript()`方法能够对用户输入进行编码,确保浏览器...

    SpringBoot +esapi 实现防止xss攻击 实战代码,满满干货

    SpringBoot是一个流行的Java微服务框架,而ESAPI(Enterprise Security API)则是一个开源的安全库,旨在提供一种简便的方式来防御多种Web应用安全问题,包括XSS攻击。本实战代码将展示如何结合SpringBoot和ESAPI来...

    ESAPI安全编码工具源码包

    除了上述核心功能,ESAPI还提供了一些其他有用的服务,如会话管理、安全随机数生成、安全的文件操作等。这些工具可以帮助开发者遵循最佳安全实践,降低Web应用程序的风险。 ### 开发与使用 在使用ESAPI时,开发者...

    ESAPI 1.5专业版2013 esapi1.5 esAPI1.5 支持更新

    **ESAPI 1.5 专业版 2013:Web 安全框架详解** ESAPI(Enterprise Security API)1.5 是一个强大的、开源的安全框架,专为 web 应用程序设计,旨在帮助开发者遵循最佳安全实践,降低安全漏洞的风险。这个版本发布于...

    esapi for javascript-0.1.3

    **ESAPI for JavaScript 0.1.3:安全编程的基石** ESAPI(Enterprise Security API)是用于构建安全Web应用程序的开源库,它为开发者提供了一组标准接口,以简化安全编码并降低常见Web攻击的风险。ESAPI for ...

    esapi-java-legacysource-esapi-2.1.0.1.zip

    ESAPI (Enterprise Security API) 是一个开源项目,由OWASP(Open Web Application Security Project)组织维护,旨在提供一套全面的、统一的安全编程接口,帮助Java开发者编写更安全的应用程序。这个压缩包“esapi-...

    esapi for javascript 0.1.3

    ESAPI(Enterprise Security API)是为Web应用程序提供安全功能的一个开源库,其目标是简化安全编码过程,减少由于编程错误导致的安全漏洞。JavaScript版本的ESAPI(ESAPI for JavaScript)是这个概念在客户端脚本...

    esapi-2.1.0-dist.zip

    ESAPI(Enterprise Security API,企业安全API)是一个开源的安全库,设计用于帮助开发人员构建更安全的Web应用程序。它的核心目标是提供一个统一的接口,让开发者能够方便地实现常见安全控制,从而减少因编程错误...

    esapi4js-0.1.2.zip下载包

    1. `esapi.js`:这是核心的ESAPI库文件,包含了各种安全相关的函数,如输入验证、输出编码等,用于防止XSS攻击。 2. `esapi-compressed.js`:这是一个压缩版的库文件,适用于生产环境,以减小页面加载时间。 3. `...

    Web应用安全威胁与防治+基于OWASP+Top+10与ESAPI.pdf

    本书《Web应用安全威胁与防治+基于OWASP+Top+10与ESAPI.pdf》深入探讨了Web应用面临的各类安全威胁,并提供了解决这些问题的方法和策略。 OWASP(Open Web Application Security Project)是一个非营利组织,致力于...

    esapi2.1.0

    ESAPI(Enterprise Security API)是OWASP(Open Web Application Security Project)组织提供的一款开源的安全框架,主要用于帮助开发者构建更安全的Web应用程序。ESAPI 2.1.0.1 版本是该框架的一个更新迭代,它...

    esapi for javascript-0.1.3工具.zip

    **ESAPI for JavaScript 0.1.3:前端安全防护利器** `ESAPI for JavaScript` 是一个用于增强JavaScript应用程序安全性的库,特别是针对用户界面(UI)层面的跨站脚本(XSS)攻击防护。这个工具包版本为0.1.3,是...

    owasp-esapi-java:自动从code.google.compowasp-esapi-java导出

    OWASP ESAPI (Enterprise Security API) 是一个开源项目,由开放网络应用安全项目(OWASP)维护,旨在提供一套标准的、易于使用的安全控制措施,帮助开发者构建更安全的Java应用程序。这个压缩包"owasp-esapi-java-...

    WEB安全编程技术规范(V1.0).pdf

    10. **OWASP TOP10与ESAPI**:OWASP TOP10列出了最常见的Web应用安全问题,而ESAPI提供了一套安全API,帮助开发者编写更安全的代码,覆盖了输入验证、输出编码、身份验证等多个方面。 综上所述,WEB安全编程技术...

    web安全编程技术规范V1.0.pdf

    同时,还强调了安全编程的原则和背景知识,以及OWASP TOP 10和ESAPI在安全编码中的应用。 首先,规范明确提出了安全编程的范围,这是为了确保在应用开发的安全管理中,能够遵循一套标准化的安全编码要求。规范适用...

    WEB安全编程技术规范(V1.0).docx

    对于JAVA,它强调了防止跨站脚本攻击、SQL注入、恶意文件执行、不安全的直接对象引用等问题,并提出了相应的解决方案,例如使用OWASP ESAPI(开放Web应用安全项目的企业安全API)来强化代码安全性。OWASP TOP10是一份...

    OWASP_安全编码规范快速参考指南

    OWASP Enterprise Security API(ESAPI)项目,它提供了一个可重用的对象库文件,以帮助开发者在代码中应用安全控制。 在具体的编码实践方面,文档详细阐述了多个重要的安全编码领域,比如输入验证、输出编码、身份...

Global site tag (gtag.js) - Google Analytics