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

Category:OWASP Enterprise Security API

From OWASP
Revision as of 15:27, 10 March 2010 by Deleted user (talk | contribs)

Jump to: navigation, search

Home

Don’t write your own security controls! Reinventing the wheel when it comes to developing security controls for every web application or web service leads to wasted time and massive security holes. OWASP Enterprise Security API (ESAPI) Toolkits help software developers guard against security‐related design and implementation flaws. ESAPI is designed to make it easy to retrofit security into existing applications, as well as providing 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.

Esapi-sponsors.PNG

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 contact us.

Got developer cycles?

Asvs-waiting.JPGESAPI Coding

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

Related resources

Asvs-satellite.jpgOWASP Resources

Did you know...

Asvs-handshake.JPGESAPI Users

The following organizations are a few of the many organizations that are starting to adopt ESAPI to secure their web applications:

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 here.

Downloads

Asvs-step1.jpg1. About ESAPI

Asvs-step2.jpg2. Get ESAPI

Asvs-step3.jpg3. Learn ESAPI

  • ESAPI design patterns (not language-specific): (PDF, Word, PPT)
  • ESAPI for .NET design notes (Blog)
  • 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)


Glossary

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.


Java EE

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



Java Edition of the OWASP ESAPI Toolkit - Release Quality

  • The Java EE version of ESAPI is being lead by Jeff Williams, Jim Manico and Mike Boberski
  • We are seeking organizations willing to pilot or sponsor ESAPI and work with us to make this library better. Please contact Jeff for more information.

Current Releases

Important Links

ESAPI email lists

Dependencies and Requirements

Running Demo App

The ESAPI Demo application has been named The ESAPI Swingset. More information about Swingset is available here.

.NET

PROJECT INFO
What does this OWASP project offer you?
what is this project?
OWASP ESAPI for .NET

Purpose: This is the .NET language version of OWASP ESAPI.

License: BSD license

who is working on this project?
Project Leader: None

Project Maintainer: Michael Weber @

Project Contributor(s):

  • Paul Apostolescu @
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 None to contribute, review or sponsor this project
  • Contact the GPC to report a problem or concern about this project or to update information.


.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 OWASP ESAPI mailing list and help make ESAPI better!



OWASP ESAPI - .NET Edition ReadMe

Release 0.2: August 2009


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 Google Code.

Download the latest .NET ESAPI library binary from Google Code here.

Download the latest .NET ESAPI documentation from Google Code here. It is a zipped .chm (help) file.

You can also browse the .NET ESAPI documentation here

To download and work with the source you must use an SVN tool.

AnkhSVN is a free SVN tool that integrates with Visual Studio. Point your SVN tool at http://owasp-esapi-dotnet.googlecode.com/svn/trunk. Anonymous checkout is supported.

You can also browse the source.


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. Troubleshooting


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 AntiXss library.



Server Recommendations

None


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>




OWASP ESAPI - .NET Edition Release Notes

Release 0.2

August 2009


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.


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.


Fixed in this release

  • All components have been redesigned - there have been major changes since v0.1.


Known issues

  • Canonicalization support is incomplete - only some Codecs support decoding.
  • There are only a few ValidationRules.
  • AccessController implementation does not provide policy storage.


Upgrading from earlier releases

  • This version is an entirely different code base. Please completely upgrade all existing implementations.


Classic ASP

PROJECT INFO
What does this OWASP project offer you?
what is this project?
OWASP ESAPI for Classic ASP

Purpose: This is the Microsoft Classic ASP 3.x language version of OWASP ESAPI.

  • The current release of this project is not suitable for production use

License: BSD license

who is working on this project?
Project Leader: Juan Carlos Calderon @

Project Maintainer: Juan Carlos Calderon @

Project Contributor(s): N/A

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

3x slide Project Presentation: N/A

Mailing list: Subscribe or read the archives

Project Roadmap: [[:ESAPI for Classic ASP is currently "mounted" on ESAPI for .NET using interop, however the prevalence of random errors in the technology had make it non usable in real world. Starting on December 2010, the API will be re-written completely to ActiveX objects to avoid any issue related to interop and to other dependencies (.NET Framework) | To view, click here]]

Main links:

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

Key Contacts
  • Contact Juan Carlos Calderon @ to contribute, review or sponsor this project
  • Contact the GPC to report a problem or concern about this project or to update information.


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 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!



OWASP ESAPI - Classic ASP Edition ReadMe

Release 0.9

March 2009
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.


System Requirements

  • Microsoft .NET Framework 2.0


Other Requirements

The Classic ASP Edition of OWASP ESAPI includes a reference implementation (look for default.asp.zip file at Classic_ASP_Security_Project) which may be tailored or replaced, according to your organization's needs.


Server Recommendations

There is no specific recommendation


Obtaining the Classic ASP Edition of OWASP ESAPI

You can download the latest release of the Classic ASP Edition of OWASP ESAPI from the Google Code download page

When you download the source files, make sure that you keep the directory structure.



OWASP ESAPI - Classic ASP Edition Release Notes

Release 0.9

March 2009


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.


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


Fixed in this release

  • Not applicable. This is the first release!


Known issues

  • You might receive a compilation error when instantiating the AccessController class
  • You have to copy the web.config file to the IIS worker folder. For example to C:\Windows\System32\inetsrv\w3wp.exe.config in Windows Vista


Upgrading from earlier releases

  • Not applicable. This is the first release!


PHP

PROJECT INFO
What does this OWASP project offer you?
what is this project?
OWASP ESAPI for PHP

Purpose: This is the PHP language version of OWASP ESAPI.

  • The current release of this project is not suitable for production use

License: BSD license

who is working on this project?
Project Leader: Andrew van der Stock @

Project Maintainer:

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 Andrew van der Stock @ to contribute, review or sponsor this project
  • Contact the GPC to report a problem or concern about this project or to update information.

ColdFusion/CFML

PROJECT INFO
What does this OWASP project offer you?
what is this project?
OWASP ESAPI for ColdFusion/CFML

Purpose: This is the ColdFusion/CFML language version of OWASP ESAPI.

License: BSD license

who is working on this project?
Project Leader: Jason Dean @

Project Maintainer:

Project Contributor(s):

  • Bill Shelton @
how can you learn more?
Project Pamphlet: N/A

3x slide Project Presentation: N/A

Mailing list: N/A

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 Jason Dean @ to contribute, review or sponsor this project
  • Contact the GPC to report a problem or concern about this project or to update information.


ColdFusion/CFML Edition of the OWASP ESAPI Toolkit - First release is under development

  • 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.



OWASP ESAPI - ColdFusion/CFML Edition
Release (TBD): May, 2009


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 the project's intent to support Adobe ColdFusion, Railo, and Open BlueDragon. Development focus will be placed on CFML frameworks wishing to integrate CFESAPI.

Status
Development is currently underway. Roadmap and preliminary source code will be available shortly at the Google Code project home.

Contribute
Any developers, framework providers, or CFML engine contributors interested in contributing, using and testing, please contact the project owners above and join the Google mailing list.


Python

PROJECT INFO
What does this OWASP project offer you?
what is this project?
OWASP ESAPI for Python

Purpose: This is the Python language version of OWASP ESAPI.

  • The current release of this project is not suitable for production use

License: BSD license

who is working on this project?
Project Leader: Craig Younkins @

Project Maintainer:

Project Contributor(s): N/A

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

3x slide Project Presentation: N/A

Mailing list: N/A

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 Craig Younkins @ to contribute, review or sponsor this project
  • Contact the GPC to report a problem or concern about this project or to update information.


Python Edition of the OWASP ESAPI Toolkit



OWASP ESAPI - Python Edition


Python Edition of OWASP ESAPI v1 BETA Has Been Released

I'm pleased to announce that a beta of version 1 has been released. To get a copy, go to our Google Code site to clone the Mercurial repository or download an archive. Documentation for the API is available here.

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 email about your experience.


README

Requirements:

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.


Installation:

  • 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.


To adapt and integrate with your project:

  • 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.


To set up a crypto keyring:

  • 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.


To enable internationalization:

  • 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 .

JavaScript

Project details -- coming soon!



JavaScript Edition of the OWASP ESAPI Toolkit - Alpha Quality

  • The JavaScript version of ESAPI is being lead by Chris Schmidt.
  • We are seeking organizations willing to pilot ESAPI and work with us to make this library better. Please contact Chris for more information.
  • If you're interested in application security, please join the OWASP ESAPI Developer mailing list and help make ESAPI better!
  • If you have questions about using ESAPI, please post to the OWASP ESAPI Users mailing list.


Welcome to the ESAPI JavaScript Edition

This document provides information about the JavaScript 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.


Current Releases

For all downloads and project files, please click here

  • Problems with the ESAPI may be reported here


ESAPI SVN Repository
Checkout ESAPI source from its home on Google code


System Requirements

Any webserver that has approximately 200 kilobytes of available disk space, and properly supports JavaScript, such as Apache or Internet Information Services (IIS).

There are no settings that are required to be set correctly in your properties files to use ESAPI.


Browser Compatibility

  • Tested in:
    • Linux
      • Chrome 3.0, Firefox 3.0-3.5
    • Windows
      • Chrome 3.0, Firefox 3.5, Internet Explorer 7.0

If you would like to test in additional browsers, please let me know


Dependencies


Roadmap

Coming soon!

Haskell

PROJECT INFO
What does this OWASP project offer you?
what is this project?
OWASP ESAPI for Haskell

Purpose: This is the Haskell language version of OWASP ESAPI.

License: BSD license

who is working on this project?
Project Leader: Sigbjorn Finne @

Project Maintainer:

Project Contributor(s): N/A

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

3x slide Project Presentation: N/A

Mailing list: N/A

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 Sigbjorn Finne @ to contribute, review or sponsor this project
  • Contact the GPC to report a problem or concern about this project or to update information.


Haskell Edition of the OWASP ESAPI Toolkit - First release is under development

  • The Haskell version of ESAPI is being lead by Sigbjorn Finne. Feel free to contact him at sof 'AT' galois.com for further details.
  • Details below will be filled in as work progresses. Volunteers wanted!



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.


Project Details

Please see each language's tab for each version's project details.



New OWASP project details standard information -- Coming soon!

Please take a brief moment to take this survey and let the ESAPI Development Team know how we are doing

Sample Application - ESAPI Swingset

  • The ESAPI Swingset sample application is under development.
    • Many lessons have been completed that demonstrate how to leverage ESAPI to protect a web application.
    • It also demonstrates the flaws web applications can have if they are not ESAPI-enabled.

Project Leader
Jeff Williams

Project Contributors
Jim Manico (Project Manager)
Dave Wichers
Arshan Dabirsiaghi
Jerry Hoff
Chris Schmidt
Kevin W. Wall
Mike Boberski (Documentation Lead)


Latest News

<twitter>90496975</twitter>

This project licensed under the 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.