ESAPI是开源组织owasp,开放的安全开发框架,但百度、google搜索相关的技术文章很少,今天小尝试了一下,分享一下心得。
会话攻击,简单理解就是盗用窃取用户的cookie,伪装成用户,向服务器端发送请求,窃取用户私密信息。
具体如何防止会话攻击,很简单,参照《Web应用安全威胁与防治--基于OWASP TOP 10 与ESAPI》书中介绍的方法,一旦用户登录成功后,马上validate用户的会话,具体步骤如下:
- 用户输入用户名和密码
- 系统对用户进行验证通过
- 已有的会话信息如果仍然需要,则转移到一个临时变量中去
- invalidate当前会话
- 创建一个新会话
- 把临时变量中保存的会话信息恢复到新创建的会话中去
- 用户使用这个新的会话登录到系统中并进行操作
贴出实例
构造一个简单登录页面
- <body>
- <form action="loginServlet" method="post">
- 用户名:<input type="text" name="username" /><br/>
- 密码:<input type="password" name="password"/><br/>
- <input type="submit" value="登录"/>
- </form>
- </body>
验证成功的页面
- <body>
- 欢迎${sessionScope.username }登录
- </body>
然后是一个LoginServlet,其中DefaultHTTPUtilities是ESAPI中org.owasp.esapi.reference.DefaultHTTPUtilities类,该类的changeSessionIdentifier(request),就是实现上述功能。
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- String username = request.getParameter("username");
- String password = request.getParameter("password");
- DefaultHTTPUtilities dhUtil = new DefaultHTTPUtilities();
- try {
- HttpSession session = dhUtil.changeSessionIdentifier(request);
- session.setAttribute("username", username);
- session.setAttribute("password", password);
- request.getRequestDispatcher("/index.jsp").forward(request, response);
- } catch (AuthenticationException e) {
- e.printStackTrace();
- }
- }
贴出changeSessionIdentifier(request)方法源码
- public HttpSession changeSessionIdentifier(HttpServletRequest request) throws AuthenticationException {
- // get the current session
- HttpSession oldSession = request.getSession();
- // make a copy of the session content
- Map<String,Object> temp = new ConcurrentHashMap<String,Object>();
- Enumeration e = oldSession.getAttributeNames();
- while (e != null && e.hasMoreElements()) {
- String name = (String) e.nextElement();
- Object value = oldSession.getAttribute(name);
- temp.put(name, value);
- }
- // kill the old session and create a new one
- oldSession.invalidate();
- HttpSession newSession = request.getSession();
- User user = ESAPI.authenticator().getCurrentUser();
- user.addSession( newSession );
- user.removeSession( oldSession );
- // copy back the session content
- for (Map.Entry<String, Object> stringObjectEntry : temp.entrySet())
- {
- newSession.setAttribute(stringObjectEntry.getKey(), stringObjectEntry.getValue());
- }
- return newSession;
- }
相关推荐
8. **安全的会话管理**:理解如何利用ESAPI来管理和保护Web应用程序的会话,防止会话劫持和固定令牌攻击。 9. **安全的HTTP操作**:ESAPI提供了`HttpUtilities`类,能够帮助你执行安全的HTTP请求,如防止点击劫持和...
**ESAPI 2.1.0.1:安全编程接口详解** `ESAPI`,全称为`Enterprise Security API`,是企业级安全API的一种实现,主要用于帮助开发人员在Java平台上构建更安全的应用程序。这个开源项目由OWASP(开放网络应用安全...
ESAPI是一个开源的安全库,提供了一系列的安全功能,包括输入验证、输出编码、安全随机数生成等。在防止XSS攻击方面,ESAPI的`encodeForHTML()`和`encodeForJavaScript()`方法能够对用户输入进行编码,确保浏览器...
SpringBoot是一个流行的Java微服务框架,而ESAPI(Enterprise Security API)则是一个开源的安全库,旨在提供一种简便的方式来防御多种Web应用安全问题,包括XSS攻击。本实战代码将展示如何结合SpringBoot和ESAPI来...
除了上述核心功能,ESAPI还提供了一些其他有用的服务,如会话管理、安全随机数生成、安全的文件操作等。这些工具可以帮助开发者遵循最佳安全实践,降低Web应用程序的风险。 ### 开发与使用 在使用ESAPI时,开发者...
**ESAPI 1.5 专业版 2013:Web 安全框架详解** ESAPI(Enterprise Security API)1.5 是一个强大的、开源的安全框架,专为 web 应用程序设计,旨在帮助开发者遵循最佳安全实践,降低安全漏洞的风险。这个版本发布于...
**ESAPI for JavaScript 0.1.3:安全编程的基石** ESAPI(Enterprise Security API)是用于构建安全Web应用程序的开源库,它为开发者提供了一组标准接口,以简化安全编码并降低常见Web攻击的风险。ESAPI for ...
ESAPI (Enterprise Security API) 是一个开源项目,由OWASP(Open Web Application Security Project)组织维护,旨在提供一套全面的、统一的安全编程接口,帮助Java开发者编写更安全的应用程序。这个压缩包“esapi-...
ESAPI(Enterprise Security API)是为Web应用程序提供安全功能的一个开源库,其目标是简化安全编码过程,减少由于编程错误导致的安全漏洞。JavaScript版本的ESAPI(ESAPI for JavaScript)是这个概念在客户端脚本...
ESAPI(Enterprise Security API,企业安全API)是一个开源的安全库,设计用于帮助开发人员构建更安全的Web应用程序。它的核心目标是提供一个统一的接口,让开发者能够方便地实现常见安全控制,从而减少因编程错误...
1. `esapi.js`:这是核心的ESAPI库文件,包含了各种安全相关的函数,如输入验证、输出编码等,用于防止XSS攻击。 2. `esapi-compressed.js`:这是一个压缩版的库文件,适用于生产环境,以减小页面加载时间。 3. `...
本书《Web应用安全威胁与防治+基于OWASP+Top+10与ESAPI.pdf》深入探讨了Web应用面临的各类安全威胁,并提供了解决这些问题的方法和策略。 OWASP(Open Web Application Security Project)是一个非营利组织,致力于...
ESAPI(Enterprise Security API)是OWASP(Open Web Application Security Project)组织提供的一款开源的安全框架,主要用于帮助开发者构建更安全的Web应用程序。ESAPI 2.1.0.1 版本是该框架的一个更新迭代,它...
**ESAPI for JavaScript 0.1.3:前端安全防护利器** `ESAPI for JavaScript` 是一个用于增强JavaScript应用程序安全性的库,特别是针对用户界面(UI)层面的跨站脚本(XSS)攻击防护。这个工具包版本为0.1.3,是...
OWASP ESAPI (Enterprise Security API) 是一个开源项目,由开放网络应用安全项目(OWASP)维护,旨在提供一套标准的、易于使用的安全控制措施,帮助开发者构建更安全的Java应用程序。这个压缩包"owasp-esapi-java-...
10. **OWASP TOP10与ESAPI**:OWASP TOP10列出了最常见的Web应用安全问题,而ESAPI提供了一套安全API,帮助开发者编写更安全的代码,覆盖了输入验证、输出编码、身份验证等多个方面。 综上所述,WEB安全编程技术...
同时,还强调了安全编程的原则和背景知识,以及OWASP TOP 10和ESAPI在安全编码中的应用。 首先,规范明确提出了安全编程的范围,这是为了确保在应用开发的安全管理中,能够遵循一套标准化的安全编码要求。规范适用...
对于JAVA,它强调了防止跨站脚本攻击、SQL注入、恶意文件执行、不安全的直接对象引用等问题,并提出了相应的解决方案,例如使用OWASP ESAPI(开放Web应用安全项目的企业安全API)来强化代码安全性。OWASP TOP10是一份...
OWASP Enterprise Security API(ESAPI)项目,它提供了一个可重用的对象库文件,以帮助开发者在代码中应用安全控制。 在具体的编码实践方面,文档详细阐述了多个重要的安全编码领域,比如输入验证、输出编码、身份...