OWASP EJSF Project
Modern web application frameworks have made it easy to develop high quality web applications, but developing a secure application still requires programmers to possess a deep understanding of security vulnerabilities and attacks. Sometimes it is difficult for an experienced developer to find and eliminate all the vulnerabilities. This demo represents the JSF-ESAPI framework based on JSF2.0 and OWASP ESAPI. It helps developers write a secure and lower-risk JSF based on a web application with minimal configuration and without extensive prior knowledge of the web security. The figure below shows a complete integration of the JSF-ESAPI framework with JSF2.0 and ESAPI. It works as a middleware and consists of four important modules. ESAPI Validation is the first module which verifies the user input as given in the XSS prevention cheat sheet provided by OWASP. It consists of many user-defined validator tags and generates appropriate error messages if the user input is not valid. In this way it performs a strong validation. There are also some tags available in the correspondence validators in ESAPI, and they also filter the XSS relevant code from the input. The file-based authorization module simplifies the user’s role, such as admin, user, etc. and gives the permission to visualize certain components at the presentation layer based on assigned roles. ESAPI Filtering layer compares the valid form token with tokens stored in the session for that user. If the token is mitigated or changed by man in the middle during the process of a request-response exchange, it will give the appropriate exception. The last module is a render module, which renders the output after filtering the XSS content and encodes the vulnerable characters such as <,>,”,’ etc. as given in the XSS prevention cheat sheet provided by OWASP. This framework will help developers to prevent a myriad of security problems including cross-site scripting, cross-site request forgery, automatic input validation, and automatic output validation with escaped “true” or without this parameter, authorization. All the features are included in one framework. Advantages:
- It requires minimal configuration to use the framework.
- It ensures retrofit security in the existing application.
- It provides the same performance as JSF framework.
- Automatic filtering of the XSS vulnerable code from output takes place when escape equals true” or “false”.
- The input validation is easy and no additional coding is required.
- It has a layered architecture. It uses what you need and leaves what you don’t need at the moment.
- One framework includes the most secure features."
This project is a continuation of the Master thesis Master Thesis - Applied Computer Science Albert-Ludwigs-Universität Freiburg im Breisgau - "Development of the Security Framework based on OWASP ESAPI for JSF2.0" by Rakeshkumar Kachhadiya) created in May 2012.
The goal is to improve more security on the ‘File based authorization’ module.
The 'File based authorization' module gives permission to visualize some areas or pages at the presentation layer as per given user rights.
It’s responsible to maintain the user information in the file with their assigned roles but also setting the rendering components false if the accessible user tries to retrieve the page.
- Download jar file
- Download all external librairies in the 'Downloads' section. No all librairies are required!
- Download the three files (taglib.xml, faces-config.xml, web.xml) available in this archive
- Add all librairies to your JSF project buildpath
- Make the same with the esapi.jar file, this jar archive contain all important classes and a generated Javadoc
- Copy the three files (taglib.xml, faces-config.xml, web.xml) to your web/WEB-INF directory of your JSF project
PDF file containing a presentation and a demonstration of a 'file based authorization' attack and a solution to protect it.
Zip file containing the sources of the project and a build.xml file
Two examples are available.
| PROJECT INFO
What does this OWASP project offer you?
| RELEASE(S) INFO|
What releases are available for this project?