This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit https://owasp.org

Difference between revisions of "Category:OWASP Enterprise Security API"

From OWASP
Jump to: navigation, search
m (// fix typo)
m (Update Javadoc link on main tab to reference 2.2.0.0 release.)
 
(180 intermediate revisions by 22 users not shown)
Line 1: Line 1:
{{ProjectTabs |  
+
= Home  =
Proj_About=  
+
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
  
<table width="100%" valign="top"><tr><th width="50%"> </th><th> </th></tr><tr valign="top"><td>
+
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
''OWASP Tools Project''
+
| valign="top" style="border-right: 1px dotted gray;padding-right:25px;" |
  
'''Enterprise Security API (ESAPI)'''
+
ESAPI (The OWASP Enterprise Security API) is a free, open source, web application security control library that makes it easier for programmers to write lower-risk applications. The ESAPI libraries are designed to make it easier for programmers to retrofit security into existing applications. The ESAPI libraries also serve as a solid foundation for new development.
  
OWASP Enterprise Security API Toolkits help software developers guard against security-related design and implementation flaws. Just as web applications and web services can be Public Key Infrastructure (PKI) enabled (PK-enabled) to perform for example certificate-based authentication, applications and services can be OWASP ESAPI-enabled (ES-enabled) to enable applications and services to protect themselves from attackers. Further development of ESAPI occurs through mailing list discussions and occasional workshops, and suggestions for improvement are welcome. For more information, please [mailto:[email protected] contact us].
+
Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design:  
  
'''ESAPI Toolkits'''
+
*'''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls.
  
{{#switchtablink:Java EE|Java EE}}<br>
+
*'''There is a reference implementation for each security control.''' The logic is not organization‐specific and the logic is not application‐specific. An example: string‐based input validation.
{{#switchtablink:.NET|.NET}}<br>
 
{{#switchtablink:Classic ASP|Classic ASP}}<br>
 
{{#switchtablink:PHP|PHP}}<br>
 
{{#switchtablink:ColdFusion.2FCFML|ColdFusion & CFML}}<br>
 
{{#switchtablink:Python|Python}}<br>
 
{{#switchtablink:Haskell|Haskell}}<br>
 
  
 +
*'''There are optionally your own implementations for each security control.''' There may be application logic contained in these classes which may be developed by or for your organization. An example: enterprise authentication.
  
'''How ESAPI Works'''
+
This project source code is licensed under the [http://en.wikipedia.org/wiki/BSD_license BSD license], which is very permissive and about as close to public domain as is possible. The project documentation is licensed under the [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons] license. You can use or modify ESAPI however you want, even include it in commercial products.
  
ESAPI Toolkits are designed to automatically take care of many aspects of application security, making these issues invisible to the developers.  
+
The following organizations are a few of the many organizations that are starting to adopt ESAPI to secure their web applications: [http://www.americanexpress.com/ American Express], [http://www.apache.org/ Apache Foundation], [http://www.boozallen.com Booz Allen Hamilton], [http://www.aspectsecurity.com/ Aspect Security], [http://www.coraid.com Coraid], [http://www.thehartford.com/ The Hartford], [http://www.infinitecampus.com Infinite Campus], [http://www.lockheedmartin.com/ Lockheed Martin], [http://cwe.mitre.org/top25/index.html MITRE], [http://enterprise.spawar.navy.mil/ U.S. Navy - SPAWAR], [http://www.worldbank.org/ The World Bank], [http://www.sans.org/top25errors/ SANS Institute].  
  
[[Image:Esapi-before-after.JPG|550px]]
+
Please let us know how your organization is using OWASP ESAPI. Include your name, organization's name, and brief description of how you are using it. The project co-leads can be reached  [mailto:[email protected] here] and [mailto:[email protected] here].
 +
| valign="top"  style="padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;" |
  
</td><td>
+
== Let's talk here ==
   
 
<br>'''Latest News'''
 
  
<twitter>90496975</twitter>
+
[[Image:Asvs-bulb.jpg]]'''ESAPI Communities'''
  
 +
Further development of ESAPI occurs through mailing list discussions and occasional workshops, and suggestions for improvement are welcome. For more information, please subscribe to one of the lists below.
  
'''Sample Application - ESAPI Swingset'''
+
*[https://lists.owasp.org/mailman/listinfo/esapi-dev esapi-dev mailing list (this is the main list)]
* The [[ESAPI_Swingset | ESAPI Swingset]] sample application is under development.
+
*[https://lists.owasp.org/mailman/listinfo/esapi-user esapi-user mailing list]
** Many lessons have been completed that demonstrate how to leverage ESAPI to protect a web application.
+
*[https://lists.owasp.org/mailman/listinfo/esapi-php esapi-php mailing list]  
** It also demonstrates the flaws web applications can have if they are not ESAPI-enabled.
+
*[https://lists.owasp.org/mailman/listinfo/esapi-python esapi-python mailing list]  
</td></tr>
+
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-ruby esapi-ruby mailing list]
</table>
+
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-swingset esapi-swingset mailing list]
 +
*[http://groups.google.com/group/cfesapi esapi-coldfusion mailing list]
  
|
+
IRC Chat
  
Proj_Documentation=  
+
If you would rather chat with us about your problem or thoughts - you can join us in our IRC channel using an [http://www.google.com/search?q=irc+client IRC Client] or using FreeNode's [http://webchat.freenode.net WebChat] client.
'''More About OWASP ESAPI'''
 
  
* '''ESAPI Datasheet ([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF], [http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word])'''
+
*Server: irc.freenode.net
 +
*Channel: #esapi
  
* ESAPI interface documentation ([http://owasp-esapi-java.googlecode.com/svn/trunk_doc/index.html JavaDocs])
+
== Got developer cycles? ==
* Project presentation ([http://owasp-esapi-java.googlecode.com/svn/trunk/documentation/OWASP%20ESAPI%20Overview.pptx PowerPoint])
 
* Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])
 
* One Page Datasheet ([http://www.owasp.org/images/3/31/ESAPI_One_Page_Handout.pdf PDF], [http://www.owasp.org/images/d/d0/ESAPI_One_Page_Handout.doc Word])
 
* One page technical explanation of how ESAPI works ([http://www.owasp.org/images/a/a3/How_ESAPI_Works.pdf PDF])
 
* LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF])
 
* Getting started designing for a level of assurance ([http://www.owasp.org/images/0/01/Getting_started_designing_for_a_level_of_assurance.pdf PDF])
 
* ESAPI documentation plan ([http://www.owasp.org/index.php/File:ESAPI_Documentation_Plan.doc Word])
 
* ESAPI design patterns (not language-specific): [http://www.owasp.org/index.php/File:Esapi-design-patterns.pdf (PDF, ][http://www.owasp.org/index.php/File:Esapi-design-patterns.doc Word, ][http://www.owasp.org/images/8/87/Esapi-design-patterns.ppt PPT)]
 
* Old datasheet ([http://www.owasp.org/images/3/31/ESAPI_One_Page_Handout.pdf PDF], [http://www.owasp.org/images/d/d0/ESAPI_One_Page_Handout.doc Word])
 
* How ESAPI works out of the box ([http://www.owasp.org/index.php/File:How-esapi-works-out-of-the-box.JPG JPG])
 
 
 
'''Related projects'''
 
 
 
* [[Top Ten|OWASP Top Ten]]
 
* [[ASVS|OWASP Application Security Verification Standard]]
 
* [[XSS (Cross Site Scripting) Prevention Cheat Sheet]]
 
 
 
 
 
 
 
====Java EE====
 
 
 
'''Java Edition of the OWASP ESAPI Toolkit - '''[[:Category:OWASP Project Assessment#Release Quality Tool Criteria|Release Quality]]
 
 
 
* The Java EE version of ESAPI is being lead by [[User:Jeff Williams|Jeff Williams]]. Feel free to contact [mailto:[email protected] him] for further details.
 
 
 
We are seeking organizations willing to pilot ESAPI and work with us to make this library better. Please contact [email protected] for more information.  If you're interested in application security, please join the [http://lists.owasp.org/mailman/listinfo/owasp-esapi OWASP ESAPI mailing list] and help make ESAPI better!
 
 
 
<br/>'''Welcome to the ESAPI Java Edition'''
 
 
 
This document provides information about the Java Edition of OWASP ESAPI. The topics below cover system requirements, additional product information, and application notes. For information about the new features of this release, known issues, resolved issues, and limitations, refer to the Release notes.
 
 
 
<br/>'''Current Releases'''
 
 
 
* ESAPI 1.4 - [http://owasp-esapi-java.googlecode.com/files/owasp-esapi-full-java-1.4.jar jar] (Java 1.4+)
 
* ESAPI 2.0 rc4 - [http://owasp-esapi-java.googlecode.com/files/ESAPI-2.0-rc4.zip complete zip] (Java 1.5+)
 
 
 
For all downloads and project files, please click [http://code.google.com/p/owasp-esapi-java/downloads/list here]
 
 
 
* Problems with the ESAPI may be reported [http://code.google.com/p/owasp-esapi-java/issues/list here]
 
* To build ESAPI 2.0rc3 see [[ESAPI-Building]] or [[ESAPI-BuildingWithEclipse]]
 
* Here are the latest [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/index.html Javadocs for ESAPI 2.0 rc4]
 
* Here are the [http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4/index.html Javadocs for ESAPI 1.4]
 
 
 
<br/>'''Running Demo App'''
 
 
 
The ESAPI Demo application has been named [[ESAPI_Swingset|''The ESAPI Swingset'']].  More information about Swingset is available [[ESAPI_Swingset | here]].
 
 
 
 
 
<br>'''ESAPI SVN Repository'''
 
<br>Checkout ESAPI source from its home on [http://code.google.com/p/owasp-esapi-java/source/checkout Google code]
 
 
 
<br>'''System Requirements'''
 
 
 
Any webserver that has approximately six megabytes of available disk space, and properly supports Java, such as Apache or Internet Information Services (IIS). The following is required to be installed on the server:
 
 
 
Java v1.4 or higher is required for ESAPI 1.4.<br/>
 
Java v1.5 or higher is required for ESAPI 2.0.
 
 
 
There are no settings that are required to be set correctly in your properties files to use ESAPI.
 
 
 
<br>'''Dependencies'''
 
 
 
There are no dependencies on the ESAPI '''interfaces''' other than standard Java EE. However, the reference implementation does have dependencies that are detailed below. The reference implementation takes advantage of a few existing libraries:
 
 
 
*DefaultAccessController needs…
 
**Commons-Configuration 1.5
 
 
 
* DefaultValidator needs…
 
** AntiSamy 1.2  (there may be a few transitive dependencies here)
 
** NekoHTML 0.9.5
 
** Xerces 2.9.1
 
 
 
* Log4J Logger needs…
 
** Log4j 1.2.12
 
 
 
* DefaultHTTPUtilities needs…
 
** Commons-FileUpload 1.2
 
 
 
* WAF needs
 
** XOM 1.0 (there may be a few transitive dependencies here)
 
** Commons-FileUpload 1.2
 
 
 
<br>'''Roadmap'''
 
 
 
The ESAPI Java Roadmap can be found [http://www.owasp.org/index.php/ESAPI_Roadmap here]
 
 
 
====.NET====
 
'''.NET Edition of the OWASP ESAPI Toolkit - Version 0.2 is released'''
 
 
 
* The .NET version of ESAPI is being lead by Alex Smolen. Feel free to contact him at (me AT AlexSmolen DOT com) for more information.
 
* If you're interested in application security, please join the [http://lists.owasp.org/mailman/listinfo/owasp-esapi OWASP ESAPI mailing list] and help make ESAPI better!
 
 
 
<br>
 
----
 
'''OWASP ESAPI - .NET Edition ReadMe'''
 
 
 
Release 0.2: August 2009
 
 
 
<br>'''Welcome to the .NET Edition of OWASP ESAPI v0.2'''
 
 
 
This document provides information about the .NET Edition of OWASP ESAPI. The topics below cover system requirements, additional product information, and application notes.
 
 
 
The code for the ESAPI is currently in [http://code.google.com/p/owasp-esapi-dotnet/ Google Code].
 
 
 
Download the latest .NET ESAPI library binary from Google Code [http://owasp-esapi-dotnet.googlecode.com/files/Esapi.zip here].
 
 
 
Download the latest .NET ESAPI documentation from Google Code [http://owasp-esapi-dotnet.googlecode.com/files/Esapi_Documentation.zip here]. It is a zipped .chm (help) file.
 
 
 
You can also browse the .NET ESAPI documentation [http://alexsmolen.com/dotnetesapidoc/index.html here]
 
 
 
To download and work with the source you must use an SVN tool.
 
 
 
[http://ankhsvn.open.collab.net/ AnkhSVN] is a free SVN tool that integrates with Visual Studio.
 
 
 
You can also [http://code.google.com/p/owasp-esapi-dotnet/source/browse browse the source].
 
 
 
<br>'''System Requirements'''
 
 
 
The solution is created with VS 2008 and .NET 3.5. However, the actual code should be compatible with .NET 2.0, so it should be simple to get the code to compile in most environments.
 
 
 
<br>'''Other Requirements'''
 
 
 
The .NET Edition of OWASP ESAPI includes a reference implementation which may be tailored or replaced, according to your organization's needs.
 
 
 
You must also download download and install the latest version of the [http://www.codeplex.com/AntiXSS AntiXss] library.
 
 
 
 
 
<br>'''Server Recommendations'''
 
 
 
None
 
 
 
<br>'''Obtaining the .NET Edition of OWASP ESAPI'''
 
 
 
There are a couple of ways to get started with the .NET ESAPI.
 
 
 
If you simply want to start using the functionality, you can download the assembly from [ Google Code]. You will also need to add the appropriate configuration (see here).
 
 
 
You can download the solution from Google Code with SVN.
 
 
 
You will need to download and install the AntiXss library separately, in order to respect the code licensing.
 
 
 
The SwingSet application requires you to login - just register a username and go. You also need to supply a SMTP host in the web.config file in SwingSet in order to register a user, so that you can get an activation email. I might change this in the released version, since it's sort of a pain. You can just use the external SMTP server for an email account you own and use that - i.e.
 
 
 
    <mailSettings>
 
      <smtp from="[email protected]">
 
        <network
 
            host="you fill this part in, for example d.mx.mail.yahoo.com for a yahoo.com mail account"
 
            port="25"
 
            />
 
      </smtp>
 
    </mailSettings>
 
 
 
 
 
<br>
 
----
 
'''OWASP ESAPI - .NET Edition Release Notes'''
 
 
 
Release 0.2
 
 
 
August 2009
 
 
 
<br>'''Welcome to the .NET Edition of OWASP ESAPI v0.2'''
 
 
 
This document provides information about .NET Edition of OWASP ESAPI v0.2. Browse through the topics below to find out about new features, known issues and limitations for this release.
 
 
 
Information specific to the changes in this release are captured in this document set. For all other information and for feature details, see the ESAPI <version> programming manual.
 
 
 
<br>'''New features'''
 
 
 
This release improve significanlty on the first release. The following components have been redesigned and reimplemented:
 
 
 
* AccessController
 
* AccessReferenceMap
 
* Encoder
 
* Encryptor
 
* Esapi
 
* HttpUtilities
 
* IntrusionDetector
 
* Logger
 
* Randomizer
 
* SecurityConfiguration
 
* Validator
 
 
 
The SwingSet application has also been introduced, to demonstrate how to use the ESAPI as well as showcase other ASP.NET security best practices.
 
 
 
<br>'''Fixed in this release'''
 
 
 
* All components have been redesigned - there have been major changes since v0.1.
 
 
 
<br>'''Known issues'''
 
 
 
* Canonicalization support is incomplete - only some Codecs support decoding.
 
* There are only a few ValidationRules.
 
* AccessController implementation does not provide policy storage.
 
<br>'''Upgrading from earlier releases'''
 
 
 
* This version is an entirely different code base. Please completely upgrade all existing implementations.
 
 
 
<br>
 
 
 
====Classic ASP====
 
'''Classic ASP Edition of the OWASP ESAPI Toolkit - Alpha release is released'''
 
* The Classic ASP version of ESAPI is being lead by Juan C Calderon. Feel free to contact him at johnccr (at) yahoo.com
 
* join our [https://lists.owasp.org/mailman/listinfo/owasp-classic-asp-security-project OWASP Classic ASP Security Project Mailing List] to be posted on the progress of the project or to contact us.
 
* We are working on minor fixes and documentation to release the first beta version of the software. Volunteers wanted!
 
<br>
 
----
 
'''OWASP ESAPI - Classic ASP Edition ReadMe'''
 
 
 
Release 0.9
 
 
 
March 2009
 
<br>'''Welcome to the Classic ASP Edition of OWASP ESAPI v0.9'''
 
 
 
This document provides information about the Classic ASP Edition of OWASP ESAPI. The topics below cover system requirements, additional product information, and application notes.
 
 
 
For information about the new features of this release, known issues, resolved issues, and limitations, refer to the Release notes.
 
 
 
<br>'''System Requirements'''
 
 
 
*Microsoft .NET Framework 2.0
 
 
 
<br>'''Other Requirements'''
 
 
 
The Classic ASP Edition of OWASP ESAPI includes a reference implementation (look for <code>default.asp.zip</code> file at [[Classic_ASP_Security_Project]]) which may be tailored or replaced, according to your organization's needs.
 
 
 
<br>'''Server Recommendations'''
 
 
 
There is no specific recommendation
 
 
 
<br>'''Obtaining the Classic ASP Edition of OWASP ESAPI'''
 
 
 
You can download the latest release of the Classic ASP Edition of OWASP ESAPI from the [http://code.google.com/p/owasp-esapi-classicasp/ Google Code download page]
 
 
 
When you download the source files, make sure that you keep the directory structure.
 
 
 
<br>
 
----
 
'''OWASP ESAPI - Classic ASP Edition Release Notes'''
 
 
 
Release 0.9
 
 
 
March 2009
 
 
 
<br>'''Welcome to the Classic ASP Edition of OWASP ESAPI v0.9'''
 
 
 
This document provides information about Classic ASP Edition of OWASP ESAPI v0.9. Browse through the topics below to find out about new features, known issues and limitations for this release.
 
 
 
<br>'''New features'''
 
 
 
This release includes the following new features:
 
 
 
* Implementation of most of the ESAPI .NET version for Classic ASP technology, including those for Access Control, Encoding, Input Validation, Encryption and much more (Authentication class was fully implemented yet)
 
* Sample Classic ASP page demonstrating the use of the different classes and methods
 
 
 
<br>'''Fixed in this release'''
 
 
 
* Not applicable. This is the first release!
 
 
 
<br>'''Known issues'''
 
 
 
* You might receive a compilation error when instantiating the <code>AccessController</code> class
 
* You have to copy the web.config file to the IIS worker folder. For example to <code>C:\Windows\System32\inetsrv\w3wp.exe.config</code> in Windows Vista
 
 
 
<br>'''Upgrading from earlier releases'''
 
 
 
* Not applicable. This is the first release!
 
<br>
 
 
 
====PHP====
 
[[Image:Esapi-for-php-googlecode.JPG]]
 
'''The first release is under development!'''
 
* Who is working on this
 
** Project lead: [[User:Vanderaj|Andrew van der Stock]] [mailto:[email protected] email]
 
** Project manager: [[User:mike.boberski|Mike Boberski]] [mailto:[email protected] email] ''-- Email Mike if you would like to contribute to the project''
 
** Development team: details [http://code.google.com/p/owasp-esapi-php/people/list here].
 
* Where the code and documentation is and its current status
 
** Google Code repository: [http://code.google.com/p/owasp-esapi-php/ here].
 
* Additional information
 
** mailing list [mailto:[email protected] here]
 
** roadmap: [http://code.google.com/p/owasp-esapi-php/wiki/RoadMap here].
 
  
 +
[[Image:Asvs-waiting.JPG]]'''ESAPI Coding'''
  
 +
The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles.
 +
 +
*ESAPI for other languages developer onboarding instructions -- coming soon!
  
====ColdFusion/CFML====
+
== Project Sponsors ==
  
'''ColdFusion/CFML Edition of the OWASP ESAPI Toolkit - First release is under development'''
+
The ESAPI project is sponsored by {{MemberLinks|link=http://www.aspectsecurity.com|logo=Aspect_logo_owasp.jpg}}
* The ColdFusion/CFML version of ESAPI is being lead by Jason Dean (jason at 12robots dot com) and Bill Shelton (billshelton at comcast dot net). Feel free to contact either person for further details.
 
<br>
 
----
 
'''OWASP ESAPI - ColdFusion/CFML Edition''' <br />
 
Release (TBD): May, 2009
 
  
<br>'''Welcome to the ColdFusion/CFML Edition of OWASP ESAPI (v.TBD)'''
+
|}
  
The ColdFusion/CFML edition of ESAPI will provide ESAPI functionality for developers using CFML. It is
+
= Downloads  =
the project's intent to support Adobe ColdFusion, Railo, and Open BlueDragon. Development focus will
+
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|2400x160px|link=]]</div>
be placed on CFML frameworks wishing to integrate CFESAPI.
 
  
'''Status'''<br />
+
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
Development is currently underway. Roadmap and preliminary source code will be available shortly at the Google Code
+
| valign="top"  style="border-right: 1px dotted gray;padding-right:25px;" |
[http://code.google.com/p/owasp-esapi-coldfusion/ project home].
 
  
'''Contribute'''<br />
+
[[Image:Asvs-step1.jpg]]'''1. About ESAPI'''  
Any developers, framework providers, or CFML engine contributors interested in contributing, using and testing, please contact the project owners above and join the Google
 
[http://groups.google.com/group/cfesapi mailing list].
 
  
 +
*Data sheet([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF],[http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word])
 +
*Project presentation ([http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt PowerPoint])
 +
*Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])
  
 +
| valign="top"  style="padding-left:25px;width:33%;border-right: 1px dotted gray;padding-right:25px;" |
  
====Python====
+
[[Image:Asvs-step2.jpg]]'''2. Get ESAPI'''
  
'''Python Edition of the OWASP ESAPI Toolkit - First release is in beta'''
+
*[https://search.maven.org/#search|ga|1|esapi ESAPI for Java Downloads (binaries)]  
* The Python version of ESAPI is being lead by [[User:Craig Younkins|Craig Younkins]]. Feel free to contact [mailto:[email protected] him] for further details.
+
*[https://github.com/ESAPI/esapi-java-legacy ESAPI for Java (source)]<br>
* We are currently looking for contributors. If you are interested in working on ESAPI on Python, please join our [http://lists.owasp.org/mailman/listinfo/esapi-python mailing list] or send me an [mailto:[email protected] email].
+
*[https://github.com/ESAPI/owasp-esapi-js ESAPI for Javascript]<br>
* [http://code.google.com/p/owasp-esapi-python/ Google Code]
 
* [http://owasp-esapi-python.googlecode.com/hg/doc/index.html Documentation]
 
* [http://code.google.com/p/owasp-esapi-python/issues/list Bugs]
 
<br>
 
----
 
'''OWASP ESAPI - Python Edition'''
 
  
<br>'''Python Edition of OWASP ESAPI v1 BETA Has Been Released'''
+
'''No longer supported versions'''. If you absolutely need to download one of those, it is suggested that you search the [https://archive.org/ Internet Archive Wayback Machine] or [https://github.com/ GitHub] for someone who may have mirrored it:
  
I'm pleased to announce that a beta of version 1 has been released. To get a copy, go to our [http://code.google.com/p/owasp-esapi-python/ Google Code] site to [http://code.google.com/p/owasp-esapi-python/source/checkout clone the Mercurial repository] or [http://code.google.com/p/owasp-esapi-python/downloads/list download an archive]. Documentation for the API is available [http://owasp-esapi-python.googlecode.com/hg/doc/index.html here].
+
* ESAPI for .NET
 +
* ESAPI for Classic ASP
 +
* ESAPI for PHP
 +
* ESAPI for ColdFusion & CFML
 +
* ESAPI for Python
  
This beta has been tested on Python 2.6 on Windows and Linux, but other versions have not been tested. If you take a look, I would appreciate it if you would send me an [mailto:[email protected] email] about your experience.
 
  
<br>'''README'''
+
| valign="top"  style="padding-left:25px;width:33%;" |
  
Requirements:
+
[[Image:Asvs-step3.jpg]]'''3. Learn ESAPI'''
  
''If you have setuptools installed, you should be able to install all except KeyCzar and Visual C++ 2008 by doing 'easy_install <packagename>' in a shell or command prompt.''
+
*ESAPI design patterns (not language-specific): [http://www.owasp.org/images/8/82/Esapi-design-patterns.pdf (PDF], [http://www.owasp.org/index.php/File:Esapi-design-patterns.doc Word], [http://www.owasp.org/images/8/87/Esapi-design-patterns.ppt PPT)]
 +
*The [[ESAPI Swingset|ESAPI Swingset]] sample application demonstrates how to leverage ESAPI to protect a web application.
 +
*LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF])
 +
*ESAPI for Java interface documentation ([http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.2.0.0 JavaDocs])
  
* PyCrypto 2.01 - http://www.amk.ca/python/code/crypto
+
|}
** PyCrypto requires a C Compiler. Windows users can us Visual C++ 2008 Express Edition - http://www.microsoft.com/express/vc/#webInstall
 
* KeyCzar 0.6b - http://www.keyczar.org/
 
** KeyCzar requires PyASN1 - http://pypi.python.org/pypi/pyasn1
 
** and simplejson, which is standard in 2.6 - http://pypi.python.org/pypi/simplejson
 
* PyLint 0.18.1 - Only needed for static analysis. - http://pypi.python.org/pypi/pylint
 
* Coverage module by Ned Batchelder v3.0.1 - Only needed if you want coverage analysis - http://pypi.python.org/pypi/coverage/3.0.1
 
* Nose 0.11.1 - Only needed if you want to run unit tests together and combine it with coverage analysis - http://pypi.python.org/pypi/nose/0.11.1
 
  
 +
= What I did with ESAPI  =
 +
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
  
Installation:
+
*I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --[mailto:jeff.williams@owasp.org Jeff]
* Install any of the missing dependencies listed above.
 
* Extract the ESAPI on Python package.
 
* Add the extracted folder to your Python path. One way to do this is to create a text file, such as 'esapi.pth', in your Python installation's Lib\site-packages folder. Copy the path of the folder you extracted into this text file. The path should have the 'esapi' folder inside.
 
* Start a new interactive Python console and enter 'import esapi'. If you get no output, it ran successfully. If you got "ImportError: No module named esapi", double check the step above.
 
* By default, ESAPI is set up for Linux. If you are running ESAPI on Windows, you will need to modify the Encryptor_KeysLocation and Executor_WorkingDirectory settings in esapi/conf/settings.py. You should use forward slashes in the paths.
 
* See "To set up a crypto keyring" to generate the keys necessary for crypto.
 
* Run the unit tests by opening a shell or command prompt in esapi/test and running runTests.bat or runTests.sh, depending on your platform. If you get around 7 errors relating to crypto, please ensure you have followed the steps under "To set up a crypto keyring".
 
* '''Note''': Running all tests may appear to block or pause, particularly on Windows. This may be be due to exhaustion of the entropy pool. If it blocks, try moving the mouse, typing, or generating some disk activity.
 
  
 +
*I used ESAPI for PHP with a custom web 2.0 corporate knowledge management application, made up of many open source and commercial applications integrated to work together. I added an organization- and application-specific "Adapter" control to wrap calls to the other ESAPI controls. --[mailto:[email protected] Mike]
  
To adapt and integrate with your project:
+
*I used ESAPI for Java’s "Logger" control to make it easier for a US Government customer to meet C&amp;A requirements. --[mailto:dave.wichers@owasp.org Dave]
* You can use as much or as little of ESAPI as you would like. You'll want to do a 'from esapi.core import ESAPI' and use the methods that class provides.
 
  
 +
*I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --[mailto:[email protected] Jim]
  
To set up a crypto keyring:
+
*I used ESAPI for Java's "Authenticator" to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific "Adapter" pattern mentioned by Mike above. The organization also uses the ESAPI Encryptor as an interface to a hardware security module. --[mailto:roman.hustad@yahoo.com Roman]
* Select a root directory for your keyring, like /esapi/keyring/, and set Encryptor_KeysLocation in settings.py to this string if you have not already.
 
* Open a python interactive shell and execute:
 
** from esapi.core import ESAPI
 
** ESAPI.encryptor().gen_keys()
 
* Modify esapi/conf/settings.py according to the output by replacing the Encryptor_MasterSalt line with the one given.
 
  
 +
*I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --[mailto:[email protected] Yair]
  
To enable internationalization:
+
*I use ESAPI for Java to educate developers about application security principals at several of the world’s largest organizations. --[mailto:jim.manico@owasp.org Jim]<br>
* Set the 'LANGUAGE' environment variable with your locale
 
* On *nix: export LANGUAGE=en_US
 
* On Windows: set LANGUAGE=en_US
 
   
 
* Please note that as of this writing, no translation files are available. A GNU gettext .po file is available in esapi/conf/locale .
 
  
====Haskell====
+
= Should I use ESAPI?  =
'''Haskell Edition of the OWASP ESAPI Toolkit - First release is under development'''
+
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
 +
[NOTE: The heretical opinions on this ESAPI tab are 100% my own and do not necessarily reflect the rest of other ESAPI contributors or the OWASP staff, leadership, community. --kevin wall]
  
* The Haskell version of ESAPI is being lead by Sigbjorn Finne. Feel free to contact him at sof 'AT' galois.com for further details.
+
Or, specifically, "Should I use ESAPI for Java?" since that's the only one run by OWASP that still shows any semblance of life.
* Details below will be filled in as work progresses. Volunteers wanted!
+
Maintenance activities is down, way down in fact of its peak development activities. Some of us are still trying and haven't given up and volunteers are still welcome. But without active contributors, projects make slow progress.
<br>
 
----
 
'''OWASP ESAPI - Haskell Edition ReadMe'''
 
  
Sigbjorn (and Galois, who is his employer) are contributors to the core Haskell language. The intent of this effort is to make ESAPI for Haskell part of Haskell itself.
+
The first question to ask is, are you already using ESAPI in your project, and if so, do you have a lot vested in it? If so, then the answer to "Should I use ESAPI?" probably is "yes". The second question you should ask, if I'm using it, why am I not contributing to it in some manner? But we won't go there.
  
|
+
If you are starting out on a new project or trying for the first time to secure an existing project, then _before_ you consider ESAPI, you should consider these possible alternatives:
 +
* Output encoding: [https://www.owasp.org/index.php/OWASP_Java_Encoder_Project OWASP Java Encoder Project]
 +
* General HTML sanitization: [https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project OWASP Java HTML Sanitizer]
 +
* Validation: [http://beanvalidation.org/ JSR-303/JSR-349 Bean Validation]
 +
*Strong cryptography: [https://github.com/google/tink Google Tink], [https://github.com/google/keyczar Keyczar]
 +
* Authentication / authorization: [https://shiro.apache.org/ Apache Shiro]
 +
* CSRF protection: [https://www.owasp.org/index.php/Category:OWASP_CSRFGuard_Project OWASP CSRFGuard Project] or [https://www.owasp.org/index.php/CSRFProtector_Project OWASP CSRFProtector Project]
  
Proj_Mail= '''Project News'''
+
Note that this is not to suggest that ESAPI is dead, but rather to acknowledge the fact that it isn't being as well-maintained as most F500 companies would like for their enterprise software. There may be alternatives, such as companies that you can purchase ESAPI support from. Those are not being considered here for various reasons, not the least of which is to remain vendor neutral. Rather, instead these recommendations should be taken as possible alternatives to secure your application. It is not a perfect world that we live in, but I would be remiss as an appsec guy if I were to plug ESAPI over other good security solutions simply because of my contributions to / involvement with ESAPI. I think that ESAPI has it's place and I will do my best to maintain it, but not to the exclusion of my family or day job. If you would like to volunteer to help, you know where to find me.
* ESAPI Python version project possibly starting up. Please contact [email protected] for more information.
 
* ESAPI Java 2.0 is nearing completion. Release in a few weeks. Please check SVN and send any last minute requests to the ESAPI list.
 
* We've had a request for an ESAPI ColdFusion edition. If there are any interested developers, please contact [email protected] to volunteer.
 
* ESAPI has been through a line-by-line review by a major systems integrator. We will post all the findings soon but they are pretty minor.
 
* OWASP ESAPI has been integrated into the [[OWASP Secure Software Contract Annex]] in the [[OWASP Legal Project]].
 
* OWASP ESAPI is presented by [[User:Jeff Williams|Jeff Williams]] at [http://www.owasp.org/index.php/OWASP_Software_Assurance_Day_DC_2009 OWASP Software Assurance Day DC 2009] in conjunction with the Software Assurance Forum sponsored by the US Department of Homeland Security, Department of Defense and National Institute of Standards and Technology.
 
<br>'''Project Mail List'''<br>[http://lists.owasp.org/mailman/listinfo/owasp-esapi Subscribe here]<br>[mailto:[email protected] Use here]
 
  
'''Weekly Status'''
+
-[mailto:kevin.w.wall@gmail.com kevin wall]
* [http://www.owasp.org/images/d/d8/ESAPI_Doc_Weekly_Status_2009-11-20.pdf ESAPI Doc Weekly Status 2009-11-20]
 
* [http://www.owasp.org/images/c/c7/ESAPI_Doc_Weekly_Status_2009-11-13.pdf ESAPI Doc Weekly Status 2009-11-13]
 
* [http://www.owasp.org/images/9/92/ESAPI_Doc_Weekly_Status_2009-11-06.pdf ESAPI Doc Weekly Status 2009-11-06]
 
* [http://www.owasp.org/images/8/82/ESAPI_PHP_Weekly_Status_2009-11-27.pdf ESAPI PHP Weekly Status 2009-11-27]
 
* [http://www.owasp.org/images/3/34/ESAPI_PHP_Weekly_Status_2009-11-20.pdf ESAPI PHP Weekly Status 2009-11-20]
 
* [http://www.owasp.org/images/5/5f/ESAPI_PHP_Weekly_Status_2009-11-13.pdf ESAPI PHP Weekly Status 2009-11-13]
 
* [http://www.owasp.org/images/6/6e/ESAPI_PHP_Weekly_Status_2009-11-06.pdf ESAPI PHP Weekly Status 2009-11-06]
 
  
 +
= Glossary  =
 +
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
 +
[[Image:Asvs-letters.jpg]]'''ESAPI Terminology'''
  
|
+
*'''adapter''' - There are optionally your own implementations for each security control. There may be application logic contained in these classes which may be developed by or for your organization. The logic may be organization-specific and/or application-specific. There may be proprietary information or logic contained in these classes which may be developed by or for your organization.
 +
*'''built-in singleton design pattern''' - The "built-in" singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact.
 +
*'''codec''' - ESAPI encoder/decoder reference implementations.
 +
*'''core''' - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core.
 +
*'''exception''' - ESAPI exception reference implementations.
 +
*'''extended factory design pattern''' - The "extended" factory design pattern refers to the addition of a new security control interface and corresponding implementation, which in turn calls ESAPI security control reference implementations and/or security control reference implementations that were replaced with your own implementations. The ESAPI locator class would be called in order to retrieve a singleton instance of your new security control, which in turn would call ESAPI security control reference implementations and/or security control reference implementations that were replaced with your own implementations.
 +
*'''extended singleton design pattern''' - The "extended" singleton pattern refers to the replacement of security control reference implementations with your own implementations and the addition/modification/subtraction of corresponding security control interfaces.
 +
*'''ES-enable (or ESAPI-enable)''' - Just as web applications and web services can be Public Key Infrastructure (PKI) enabled (PK-enabled) to perform for example certificate-based authentication, applications and services can be OWASP ESAPI-enabled (ES-enabled) to enable applications and services to protect themselves from attackers.
 +
*'''filter''' - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls.
 +
*'''interfaces''' - There is a set of security control interfaces. There is no application logic contained in these interfaces. They define for example types of parameters that are passed to types of security controls. There is no proprietary information or logic contained in these interfaces.
 +
*'''locator''' - The ESAPI security control interfaces include an "ESAPI" class that is commonly referred to as a "locator" class. The ESAPI locator class is called in order to retrieve singleton instances of individual security controls, which are then called in order to perform security checks (such as performing an access control check) or that result in security effects (such as generating an audit record).
 +
*'''reference implementation''' - There is a reference implementation for each security control. There is application logic contained in these classes, i.e. contained in these interface implementations. However, the logic is not organization-specific and the logic is not application-specific. There is no proprietary information or logic contained in these reference implementation classes.
 +
*'''Web Application Firewall (WAF)''' - In ESAPI for Java, there is additionally a Web Application Firewall (WAF) that can be called separately from the other controls.
  
Proj_Related= [[Top Ten|OWASP Top Ten]] |
+
<br>
  
Proj_Contributors=
+
= Java EE  =
<table width="100%" valign="top"><tr><th width="50%"> </th><th> </th></tr><tr valign="top"><td>
+
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
'''Project Leader'''<br>[[:User:Jeff Williams|Jeff Williams]]<br><br>'''Project Contributors'''<br>[[User:Jmanico|Jim Manico (Project Manager)]] <br>[[User:Wichers|Dave Wichers]]<br> [[User:Arshan|Arshan Dabirsiaghi]] <br> [[User:Jerryhoff|Jerry Hoff]]<br>[[User:Chris Schmidt|Chris Schmidt]]<br>[[User:Kevin W. Wall|Kevin W. Wall]]<br>[[User:Mike.boberski|Mike Boberski (Documentation Lead)]]
 
  
'''The ESAPI project is sponsored by:'''
+
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version | OWASP Project Identification Tab}}
<br>
 
[http://www.aspectsecurity.com/ http://www.owasp.org/images/d/d1/Aspect_logo.gif]
 
<br>
 
</td><td>
 
'''Users and Adopters'''
 
  
The following organizations are a few of the many organizations that are starting to adopt ESAPI to secure their web applications:
 
* [http://www.americanexpress.com/ American Express]
 
* [http://www.apache.org/ Apache Foundation]
 
* [http://www.boozallen.com Booz Allen Hamilton]
 
* [http://www.aspectsecurity.com/ Aspect Security]
 
* [http://www.galois.com Galois]
 
* [http://www.foundstone.com Foundstone(McAfee)]
 
* [http://www.thehartford.com/ The Hartford]
 
* [http://www.infinitecampus.com Infinite Campus]
 
* [http://www.lockheedmartin.com/ Lockheed Martin]
 
* [http://cwe.mitre.org/top25/index.html MITRE]
 
* [http://www.nationwide.com/ Nationwide Insurance]
 
* [http://enterprise.spawar.navy.mil/ U.S. Navy - SPAWAR]
 
* [http://www.worldbank.org/ The World Bank]
 
* [http://www.sans.org/top25errors/ SANS Institute]
 
  
Please let us know how your organization is using OWASP ESAPI. Include your name, organization's name, and brief description of how you are using it. The project lead can be reached [mailto:jeff.[email protected] here].
+
= Project Details  =
 +
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
 +
{{:GPC_Project_Details/OWASP_Enterprise_Security_API | OWASP Project Identification Tab}}
  
</td></tr>
+
__NOTOC__ <headertabs /> <br>
</table>
 
  
}} ''This project licensed under the [http://en.wikipedia.org/wiki/BSD_license BSD license], which is very permissive and about as close to public domain as is possible. You can use or modify ESAPI however you want, even include it in commercial products.''
+
{{OWASP Builders}}
 +
[[Category:Popular]]
 +
[[Category:SAMM-SA-3]]

Latest revision as of 17:39, 28 June 2019

OWASP Project Header.jpg

ESAPI (The OWASP Enterprise Security API) is a free, open source, web application security control library that makes it easier for programmers to write lower-risk applications. The ESAPI libraries are designed to make it easier for programmers to retrofit security into existing applications. The ESAPI libraries also serve as a solid foundation for new development.

Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design:

  • There is a set of security control interfaces. They define for example types of parameters that are passed to types of security controls.
  • There is a reference implementation for each security control. The logic is not organization‐specific and the logic is not application‐specific. An example: string‐based input validation.
  • There are optionally your own implementations for each security control. There may be application logic contained in these classes which may be developed by or for your organization. An example: enterprise authentication.

This project source code is licensed under the BSD license, which is very permissive and about as close to public domain as is possible. The project documentation is licensed under the Creative Commons license. You can use or modify ESAPI however you want, even include it in commercial products.

The following organizations are a few of the many organizations that are starting to adopt ESAPI to secure their web applications: American Express, Apache Foundation, Booz Allen Hamilton, Aspect Security, Coraid, The Hartford, Infinite Campus, Lockheed Martin, MITRE, U.S. Navy - SPAWAR, The World Bank, SANS Institute.

Please let us know how your organization is using OWASP ESAPI. Include your name, organization's name, and brief description of how you are using it. The project co-leads can be reached here and here.

Let's talk here

Asvs-bulb.jpgESAPI Communities

Further development of ESAPI occurs through mailing list discussions and occasional workshops, and suggestions for improvement are welcome. For more information, please subscribe to one of the lists below.

IRC Chat

If you would rather chat with us about your problem or thoughts - you can join us in our IRC channel using an IRC Client or using FreeNode's WebChat client.

  • Server: irc.freenode.net
  • Channel: #esapi

Got developer cycles?

Asvs-waiting.JPGESAPI Coding

The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles.

  • ESAPI for other languages developer onboarding instructions -- coming soon!

Project Sponsors

The ESAPI project is sponsored by Aspect_logo_owasp.jpg       

OWASP Project Header.jpg

Asvs-step1.jpg1. About ESAPI

Asvs-step2.jpg2. Get ESAPI

No longer supported versions. If you absolutely need to download one of those, it is suggested that you search the Internet Archive Wayback Machine or GitHub for someone who may have mirrored it:

  • ESAPI for .NET
  • ESAPI for Classic ASP
  • ESAPI for PHP
  • ESAPI for ColdFusion & CFML
  • ESAPI for Python


Asvs-step3.jpg3. Learn ESAPI

  • ESAPI design patterns (not language-specific): (PDF, Word, PPT)
  • The ESAPI Swingset sample application demonstrates how to leverage ESAPI to protect a web application.
  • LAMP should be spelled LAMPE (PDF)
  • ESAPI for Java interface documentation (JavaDocs)
OWASP Project Header.jpg
  • I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --Jeff
  • I used ESAPI for PHP with a custom web 2.0 corporate knowledge management application, made up of many open source and commercial applications integrated to work together. I added an organization- and application-specific "Adapter" control to wrap calls to the other ESAPI controls. --Mike
  • I used ESAPI for Java’s "Logger" control to make it easier for a US Government customer to meet C&A requirements. --Dave
  • I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --Jim
  • I used ESAPI for Java's "Authenticator" to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific "Adapter" pattern mentioned by Mike above. The organization also uses the ESAPI Encryptor as an interface to a hardware security module. --Roman
  • I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --Yair
  • I use ESAPI for Java to educate developers about application security principals at several of the world’s largest organizations. --Jim
OWASP Project Header.jpg

[NOTE: The heretical opinions on this ESAPI tab are 100% my own and do not necessarily reflect the rest of other ESAPI contributors or the OWASP staff, leadership, community. --kevin wall]

Or, specifically, "Should I use ESAPI for Java?" since that's the only one run by OWASP that still shows any semblance of life. Maintenance activities is down, way down in fact of its peak development activities. Some of us are still trying and haven't given up and volunteers are still welcome. But without active contributors, projects make slow progress.

The first question to ask is, are you already using ESAPI in your project, and if so, do you have a lot vested in it? If so, then the answer to "Should I use ESAPI?" probably is "yes". The second question you should ask, if I'm using it, why am I not contributing to it in some manner? But we won't go there.

If you are starting out on a new project or trying for the first time to secure an existing project, then _before_ you consider ESAPI, you should consider these possible alternatives:

Note that this is not to suggest that ESAPI is dead, but rather to acknowledge the fact that it isn't being as well-maintained as most F500 companies would like for their enterprise software. There may be alternatives, such as companies that you can purchase ESAPI support from. Those are not being considered here for various reasons, not the least of which is to remain vendor neutral. Rather, instead these recommendations should be taken as possible alternatives to secure your application. It is not a perfect world that we live in, but I would be remiss as an appsec guy if I were to plug ESAPI over other good security solutions simply because of my contributions to / involvement with ESAPI. I think that ESAPI has it's place and I will do my best to maintain it, but not to the exclusion of my family or day job. If you would like to volunteer to help, you know where to find me.

-kevin wall

OWASP Project Header.jpg

Asvs-letters.jpgESAPI Terminology

  • adapter - There are optionally your own implementations for each security control. There may be application logic contained in these classes which may be developed by or for your organization. The logic may be organization-specific and/or application-specific. There may be proprietary information or logic contained in these classes which may be developed by or for your organization.
  • built-in singleton design pattern - The "built-in" singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact.
  • codec - ESAPI encoder/decoder reference implementations.
  • core - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core.
  • exception - ESAPI exception reference implementations.
  • extended factory design pattern - The "extended" factory design pattern refers to the addition of a new security control interface and corresponding implementation, which in turn calls ESAPI security control reference implementations and/or security control reference implementations that were replaced with your own implementations. The ESAPI locator class would be called in order to retrieve a singleton instance of your new security control, which in turn would call ESAPI security control reference implementations and/or security control reference implementations that were replaced with your own implementations.
  • extended singleton design pattern - The "extended" singleton pattern refers to the replacement of security control reference implementations with your own implementations and the addition/modification/subtraction of corresponding security control interfaces.
  • ES-enable (or ESAPI-enable) - Just as web applications and web services can be Public Key Infrastructure (PKI) enabled (PK-enabled) to perform for example certificate-based authentication, applications and services can be OWASP ESAPI-enabled (ES-enabled) to enable applications and services to protect themselves from attackers.
  • filter - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls.
  • interfaces - There is a set of security control interfaces. There is no application logic contained in these interfaces. They define for example types of parameters that are passed to types of security controls. There is no proprietary information or logic contained in these interfaces.
  • locator - The ESAPI security control interfaces include an "ESAPI" class that is commonly referred to as a "locator" class. The ESAPI locator class is called in order to retrieve singleton instances of individual security controls, which are then called in order to perform security checks (such as performing an access control check) or that result in security effects (such as generating an audit record).
  • reference implementation - There is a reference implementation for each security control. There is application logic contained in these classes, i.e. contained in these interface implementations. However, the logic is not organization-specific and the logic is not application-specific. There is no proprietary information or logic contained in these reference implementation classes.
  • Web Application Firewall (WAF) - In ESAPI for Java, there is additionally a Web Application Firewall (WAF) that can be called separately from the other controls.


OWASP Project Header.jpg


PROJECT INFO
What does this OWASP project offer you?
RELEASE(S) INFO
What does this OWASP project release offer you?
what is this project?
OWASP ESAPI for Java EE

Purpose: This is the Java EE language version of OWASP ESAPI. The ESAPI for Java EE is the baseline ESAPI design.

License: BSD license

who is working on this project?
Project Leader: Kevin Wall & Matt Seil @

Project Maintainer: ESAPI-Dev mailing list @

Project Contributor(s):

how can you learn more?
Project Pamphlet: N/A

3x slide Project Presentation: N/A

Mailing list: Subscribe or read the archives

Project Roadmap: N/A

Main links:

Project Health: Yellow button.JPG Not Reviewed (Provisional)
To be reviewed under Assessment Criteria v2.0

Key Contacts
  • Contact Kevin Wall & Matt Seil @ to contribute, review or sponsor this project
  • Contact the GPC to report a problem or concern about this project or to update information.
current release
2.2.0.0 - June 25, 2019 - (download)

Release Leader: N/A

Release details: N/A :

Rating: Yellow button.JPG Not Reviewed
To be reviewed under Assessment Criteria v2.0



OWASP Project Header.jpg
PROJECT INFO
What does this OWASP project offer you?
what is this project?
OWASP Enterprise Security API

Purpose: ESAPI (The OWASP Enterprise Security API) is a free, open source, web application security control library that makes it easier for programmers to write lower-risk applications. The ESAPI libraries are designed to make it easier for programmers to retrofit security into existing applications. The ESAPI libraries also serve as a solid foundation for new development. Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design:

  • There is a set of security control interfaces. They define for example types of parameters that are passed to types of security controls.
  • There is a reference implementation for each security control. The logic is not organization‐specific and the logic is not application‐specific. An example: string‐based input validation.
  • There are optionally your own implementations for each security control. There may be application logic contained in these classes which may be developed by or for your organization. An example: enterprise authentication.

License: BSD license

who is working on this project?
Project Leader: Kevin W. Wall and Matt Seil @

Project Maintainer:

Project Contributor(s):

  • Jeremiah J. Stacey
  • Chris Schmidt @
  • Jeff Williams
  • Dave Wichers
  • John Steven
how can you learn more?
Project Pamphlet: View

3x slide Project Presentation: View

Mailing list: Subscribe or read the archives

Project Roadmap: N/A

Main links:

Project Health: Yellow button.JPG Not Reviewed (Provisional)
To be reviewed under Assessment Criteria v2.0

Key Contacts
  • Contact Kevin W. Wall and Matt Seil @ to contribute, review or sponsor this project
  • Contact the GPC to report a problem or concern about this project or to update information.

This project is part of the OWASP Builders community.
Feel free to browse other projects within the Defenders, Builders, and Breakers communities.