<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kevin+W.+Wall</id>
		<title>OWASP - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kevin+W.+Wall"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Kevin_W._Wall"/>
		<updated>2026-04-07T12:52:06Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=252669</id>
		<title>GPC Project Details/OWASP Enterprise Security API Java EE Version</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=252669"/>
				<updated>2019-06-28T18:04:41Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Updates for ESAPI 2.2.0.0 release&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;OWASP Project Identification Tab&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| project_name = OWASP ESAPI for Java EE&lt;br /&gt;
| project_description = This is the Java EE language version of OWASP ESAPI. The ESAPI for Java EE is the baseline ESAPI design.&lt;br /&gt;
* The current release of this project '''is''' suitable for production use&lt;br /&gt;
* The ESAPI 2.x branch supports Java 5 and above, but the latest release (2.2.0.0) requires Java 7 or later. You may view the Javadocs here http://www.javadoc.io/doc/org.owasp.esapi/esapi/&lt;br /&gt;
* The ESAPI 1.4 branch supports Java 4 and above. Complete information on latest 1.4 branch dependencies can be found here http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/site/dependencies.html. (Google may have removed this though, so you may have to search for it on https://archive.org/)&lt;br /&gt;
* The OWASP AppSensor-ESAPI integration guide is out! [[AppSensor_GettingStarted]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- We are not keeping this up to date....&lt;br /&gt;
'''''Latest News:'''''&lt;br /&gt;
&amp;lt;twitter&amp;gt;90496975&amp;lt;/twitter&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| project_license = [http://en.wikipedia.org/wiki/BSD_license BSD license]&lt;br /&gt;
| leader_name = Kevin Wall &amp;amp; Matt Seil&lt;br /&gt;
| leader_email = esapi-project-dev@owasp.org&lt;br /&gt;
| leader_username = Kevin_W._Wall&lt;br /&gt;
| past_leaders_special_contributions = Jeff_Williams (project creator)&lt;br /&gt;
| maintainer_name = ESAPI-Dev mailing list&lt;br /&gt;
| maintainer_email = esapi-project-dev@owasp.org&lt;br /&gt;
| maintainer_username =&lt;br /&gt;
| contributor_name1 = Kevin W. Wall&lt;br /&gt;
| contributor_email1 = kevin.w.wall@gmail.com&lt;br /&gt;
| contributor_username1 = Kevin_W._Wall&lt;br /&gt;
| contributor_name2 = Matt Seil&lt;br /&gt;
| contributor_email2 = xeno6696@gmail.com@gmail.com&lt;br /&gt;
| contributor_username2 = Matt Seil&lt;br /&gt;
| contributor_name3 = Jeremiah J Stacey&lt;br /&gt;
| contributor_email3 =&lt;br /&gt;
| contributor_username3 =&lt;br /&gt;
| contributor_name4 = Jeff Williams&lt;br /&gt;
| contributor_email4 = Jeff.Williams@owasp.org&lt;br /&gt;
| contributor_username4 = Jeff_Williams&lt;br /&gt;
| contributor_name5 = Jim Manico&lt;br /&gt;
| contributor_email5 = Jim.Manico@owasp.org&lt;br /&gt;
| contributor_username5 = Jmanico&lt;br /&gt;
| contributor_name6 = Chris Schmidt&lt;br /&gt;
| contributor_email6 = chrisisbeef@gmail.com&lt;br /&gt;
| contributor_username6 = Chris_Schmidt&lt;br /&gt;
| contributor_name7 = See https://github.com/ESAPI/esapi-java-legacy/graphs/contributors for list of other contributors&lt;br /&gt;
| contributor_email7 = &lt;br /&gt;
| contributor_username7 = &lt;br /&gt;
| contributor_name8 = &lt;br /&gt;
| contributor_email8 = &lt;br /&gt;
| contributor_username8 = &lt;br /&gt;
| contributor_name9 = &lt;br /&gt;
| contributor_email9 = &lt;br /&gt;
| contributor_username9 = &lt;br /&gt;
| contributor_name10 = &lt;br /&gt;
| contributor_email10 = &lt;br /&gt;
| contributor_username10 = &lt;br /&gt;
&lt;br /&gt;
| pamphlet_link = &lt;br /&gt;
| presentation_link = &lt;br /&gt;
| mailing_list_name = esapi-dev&lt;br /&gt;
| links_url1 = https://search.maven.org/#search%7Cga%7C1%7Corg.owasp.esapi&lt;br /&gt;
| links_name1 = ESAPI 2.x Downloads&lt;br /&gt;
| links_url2 = https://code.google.com/p/owasp-esapi-java/downloads/list&lt;br /&gt;
| links_name2 = All previous ESAPI 1.4.x Downloads (no longer supported)&lt;br /&gt;
| links_url3 = https://github.com/ESAPI/esapi-java-legacy&lt;br /&gt;
| links_name3 = GitHub code repository for ESAPI JAVA&lt;br /&gt;
| links_url4 = https://github.com/ESAPI/esapi-java-legacy/issues&lt;br /&gt;
| links_name4 = Report a bug!&lt;br /&gt;
| links_url5 = http://www.javadoc.io/doc/org.owasp.esapi/esapi/&lt;br /&gt;
| links_name5 = Latest ESAPI Javadocs (and earlier versions)&lt;br /&gt;
| links_url6 = http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/index.html&lt;br /&gt;
| links_name6 = ESAPI 1.4.4 Javadocs (may need to access via archive.org as Google was planning to remove Google Code)&lt;br /&gt;
| links_url7 = http://www.owasp.org/index.php/ESAPI-Building&lt;br /&gt;
| links_name7 = How to build ESAPI 2.0 with Maven&lt;br /&gt;
| links_url8 = http://www.owasp.org/index.php/ESAPI-BuildingWithEclipse&lt;br /&gt;
| links_name8 = How to build ESAPI 2.0 with Maven via Eclipse&lt;br /&gt;
| project_road_map = &lt;br /&gt;
| project_health_status = &lt;br /&gt;
| current_release_name = 2.2.0.0&lt;br /&gt;
| current_release_date = June 25, 2019&lt;br /&gt;
| current_release_download_link = https://mvnrepository.com/artifact/org.owasp.esapi/esapi/2.2.0.0&lt;br /&gt;
| current_release_rating = &lt;br /&gt;
| current_release_leader_name = &lt;br /&gt;
| current_release_leader_email = &lt;br /&gt;
| current_release_leader_username =&lt;br /&gt;
| current_release_details =  &lt;br /&gt;
| last_reviewed_release_name = &lt;br /&gt;
| last_reviewed_release_date = &lt;br /&gt;
| last_reviewed_release_download_link = &lt;br /&gt;
| last_reviewed_release_rating = &lt;br /&gt;
| last_reviewed_release_leader_name = &lt;br /&gt;
| last_reviewed_release_leader_email = &lt;br /&gt;
| last_reviewed_release_leader_username = &lt;br /&gt;
| old_release_name1 = &lt;br /&gt;
| old_release_date1 = &lt;br /&gt;
| old_release_download_link1 = &lt;br /&gt;
| old_release_name2 = &lt;br /&gt;
| old_release_date2 = &lt;br /&gt;
| old_release_download_link2 = &lt;br /&gt;
| old_release_name3 = &lt;br /&gt;
| old_release_date3 = &lt;br /&gt;
| old_release_download_link3 = &lt;br /&gt;
| old_release_name4 = &lt;br /&gt;
| old_release_date4 = &lt;br /&gt;
| old_release_download_link4 = &lt;br /&gt;
| old_release_name5 = &lt;br /&gt;
| old_release_date5 = &lt;br /&gt;
| old_release_download_link5 = &lt;br /&gt;
| last_GPC_update = 4/10/2009&lt;br /&gt;
| GPC_Notes = Empty template (Java EE Version)&lt;br /&gt;
| project_home_page = :Category:OWASP_Enterprise_Security_API&lt;br /&gt;
| project_details_wiki_page = GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=252665</id>
		<title>Category:OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=252665"/>
				<updated>2019-06-28T17:39:23Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Update Javadoc link on main tab to reference 2.2.0.0 release.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Home  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design: &lt;br /&gt;
&lt;br /&gt;
*'''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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]. &lt;br /&gt;
&lt;br /&gt;
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:kevin.w.wall@gmail.com here] and [mailto:xeno6696@gmail.com here].&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Let's talk here  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-bulb.jpg]]'''ESAPI Communities''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-dev esapi-dev mailing list (this is the main list)] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-user esapi-user mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-php esapi-php mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-python esapi-python mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-ruby esapi-ruby mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-swingset esapi-swingset mailing list]&lt;br /&gt;
*[http://groups.google.com/group/cfesapi esapi-coldfusion mailing list]&lt;br /&gt;
&lt;br /&gt;
IRC Chat&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*Server: irc.freenode.net&lt;br /&gt;
*Channel: #esapi&lt;br /&gt;
&lt;br /&gt;
== Got developer cycles?  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-waiting.JPG]]'''ESAPI Coding''' &lt;br /&gt;
&lt;br /&gt;
The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles. &lt;br /&gt;
 &lt;br /&gt;
*ESAPI for other languages developer onboarding instructions -- coming soon!&lt;br /&gt;
&lt;br /&gt;
== Project Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The ESAPI project is sponsored by {{MemberLinks|link=http://www.aspectsecurity.com|logo=Aspect_logo_owasp.jpg}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Downloads  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|2400x160px|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step1.jpg]]'''1. About ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*Data sheet([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF],[http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word]) &lt;br /&gt;
*Project presentation ([http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt PowerPoint]) &lt;br /&gt;
*Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step2.jpg]]'''2. Get ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*[https://search.maven.org/#search|ga|1|esapi ESAPI for Java Downloads (binaries)] &lt;br /&gt;
*[https://github.com/ESAPI/esapi-java-legacy ESAPI for Java (source)]&amp;lt;br&amp;gt;&lt;br /&gt;
*[https://github.com/ESAPI/owasp-esapi-js ESAPI for Javascript]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''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:&lt;br /&gt;
&lt;br /&gt;
* ESAPI for .NET&lt;br /&gt;
* ESAPI for Classic ASP&lt;br /&gt;
* ESAPI for PHP&lt;br /&gt;
* ESAPI for ColdFusion &amp;amp; CFML&lt;br /&gt;
* ESAPI for Python&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step3.jpg]]'''3. Learn ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*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)] &lt;br /&gt;
*The [[ESAPI Swingset|ESAPI Swingset]] sample application demonstrates how to leverage ESAPI to protect a web application. &lt;br /&gt;
*LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF]) &lt;br /&gt;
*ESAPI for Java interface documentation ([http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.2.0.0 JavaDocs])&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What I did with ESAPI  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --[mailto:jeff.williams@owasp.org Jeff]&lt;br /&gt;
&lt;br /&gt;
*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 &amp;quot;Adapter&amp;quot; control to wrap calls to the other ESAPI controls. --[mailto:mike.boberski@owasp.org Mike]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java’s &amp;quot;Logger&amp;quot; control to make it easier for a US Government customer to meet C&amp;amp;amp;A requirements. --[mailto:dave.wichers@owasp.org Dave]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --[mailto:jim.manico@owasp.org Jim]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java's &amp;quot;Authenticator&amp;quot; to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific &amp;quot;Adapter&amp;quot; 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]&lt;br /&gt;
&lt;br /&gt;
*I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --[mailto:yairr@liveperson.com Yair]&lt;br /&gt;
&lt;br /&gt;
*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]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Should I use ESAPI?  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[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]&lt;br /&gt;
&lt;br /&gt;
Or, specifically, &amp;quot;Should I use ESAPI for Java?&amp;quot; since that's the only one run by OWASP that still shows any semblance of life.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Should I use ESAPI?&amp;quot; probably is &amp;quot;yes&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Output encoding: [https://www.owasp.org/index.php/OWASP_Java_Encoder_Project OWASP Java Encoder Project]&lt;br /&gt;
* General HTML sanitization: [https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project OWASP Java HTML Sanitizer]&lt;br /&gt;
* Validation: [http://beanvalidation.org/ JSR-303/JSR-349 Bean Validation]&lt;br /&gt;
*Strong cryptography: [https://github.com/google/tink Google Tink], [https://github.com/google/keyczar Keyczar]&lt;br /&gt;
* Authentication / authorization: [https://shiro.apache.org/ Apache Shiro]&lt;br /&gt;
* 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]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
-[mailto:kevin.w.wall@gmail.com kevin wall]&lt;br /&gt;
&lt;br /&gt;
= Glossary  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:Asvs-letters.jpg]]'''ESAPI Terminology''' &lt;br /&gt;
&lt;br /&gt;
*'''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. &lt;br /&gt;
*'''built-in singleton design pattern''' - The &amp;quot;built-in&amp;quot; singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact. &lt;br /&gt;
*'''codec''' - ESAPI encoder/decoder reference implementations. &lt;br /&gt;
*'''core''' - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core. &lt;br /&gt;
*'''exception''' - ESAPI exception reference implementations. &lt;br /&gt;
*'''extended factory design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''extended singleton design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''filter''' - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''locator''' - The ESAPI security control interfaces include an &amp;quot;ESAPI&amp;quot; class that is commonly referred to as a &amp;quot;locator&amp;quot; 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). &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Java EE  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Details  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OWASP Builders}}&lt;br /&gt;
[[Category:Popular]]&lt;br /&gt;
[[Category:SAMM-SA-3]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=251958</id>
		<title>GPC Project Details/OWASP Enterprise Security API Java EE Version</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=251958"/>
				<updated>2019-05-29T03:22:08Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Add Jeremiah Stacey as contributor.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;OWASP Project Identification Tab&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| project_name = OWASP ESAPI for Java EE&lt;br /&gt;
| project_description = This is the Java EE language version of OWASP ESAPI. The ESAPI for Java EE is the baseline ESAPI design.&lt;br /&gt;
* The current release of this project '''is''' suitable for production use&lt;br /&gt;
* The ESAPI 2.x branch supports Java 1.5 and above. You may view the Javadocs here http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
* The ESAPI 1.4 branch supports Java 1.4 and above. Complete information on latest 1.4 branch dependencies can be found here http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/site/dependencies.html&lt;br /&gt;
* The OWASP AppSensor-ESAPI integration guide is out! [[AppSensor_GettingStarted]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- We are not keeping this up to date....&lt;br /&gt;
'''''Latest News:'''''&lt;br /&gt;
&amp;lt;twitter&amp;gt;90496975&amp;lt;/twitter&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| project_license = [http://en.wikipedia.org/wiki/BSD_license BSD license]&lt;br /&gt;
| leader_name = Kevin Wall &amp;amp; Matt Seil&lt;br /&gt;
| leader_email = esapi-dev@lists.owasp.org&lt;br /&gt;
| leader_username = Kevin_W._Wall&lt;br /&gt;
| past_leaders_special_contributions = Jeff_Williams (project creator)&lt;br /&gt;
| maintainer_name = ESAPI-Dev mailing list&lt;br /&gt;
| maintainer_email = esapi-dev@lists.owasp.org&lt;br /&gt;
| maintainer_username =&lt;br /&gt;
| contributor_name1 = Kevin W. Wall&lt;br /&gt;
| contributor_email1 = kevin.w.wall@gmail.com&lt;br /&gt;
| contributor_username1 = Kevin_W._Wall&lt;br /&gt;
| contributor_name2 = Matt Seil&lt;br /&gt;
| contributor_email2 = xeno6696@gmail.com@gmail.com&lt;br /&gt;
| contributor_username2 = Matt Seil&lt;br /&gt;
| contributor_name3 = Jeremiah J Stacey&lt;br /&gt;
| contributor_email3 =&lt;br /&gt;
| contributor_username3 =&lt;br /&gt;
| contributor_name4 = Jeff Williams&lt;br /&gt;
| contributor_email4 = Jeff.Williams@owasp.org&lt;br /&gt;
| contributor_username4 = Jeff_Williams&lt;br /&gt;
| contributor_name5 = Jim Manico&lt;br /&gt;
| contributor_email5 = Jim.Manico@owasp.org&lt;br /&gt;
| contributor_username5 = Jmanico&lt;br /&gt;
| contributor_name6 = Chris Schmidt&lt;br /&gt;
| contributor_email6 = chrisisbeef@gmail.com&lt;br /&gt;
| contributor_username6 = Chris_Schmidt&lt;br /&gt;
| contributor_name7 = See &amp;quot;Members&amp;quot; under https://code.google.com/p/owasp-esapi-java/ for list of other contributors&lt;br /&gt;
| contributor_email7 = &lt;br /&gt;
| contributor_username7 = &lt;br /&gt;
| contributor_name8 = &lt;br /&gt;
| contributor_email8 = &lt;br /&gt;
| contributor_username8 = &lt;br /&gt;
| contributor_name9 = &lt;br /&gt;
| contributor_email9 = &lt;br /&gt;
| contributor_username9 = &lt;br /&gt;
| contributor_name10 = &lt;br /&gt;
| contributor_email10 = &lt;br /&gt;
| contributor_username10 = &lt;br /&gt;
&lt;br /&gt;
| pamphlet_link = &lt;br /&gt;
| presentation_link = &lt;br /&gt;
| mailing_list_name = esapi-dev&lt;br /&gt;
| links_url1 = https://search.maven.org/#search%7Cga%7C1%7Corg.owasp.esapi&lt;br /&gt;
| links_name1 = ESAPI 2.x Downloads&lt;br /&gt;
| links_url2 = https://code.google.com/p/owasp-esapi-java/downloads/list&lt;br /&gt;
| links_name2 = All previous ESAPI Downloads&lt;br /&gt;
| links_url3 = https://github.com/ESAPI/esapi-java-legacy&lt;br /&gt;
| links_name3 = GitHub code repository for ESAPI JAVA&lt;br /&gt;
| links_url4 = https://github.com/ESAPI/esapi-java-legacy/issues&lt;br /&gt;
| links_name4 = Report a bug!&lt;br /&gt;
| links_url5 = http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
| links_name5 = ESAPI 2.1.0 Javadocs&lt;br /&gt;
| links_url6 = http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/index.html&lt;br /&gt;
| links_name6 = ESAPI 1.4.4 Javadocs&lt;br /&gt;
| links_url7 = http://www.owasp.org/index.php/ESAPI-Building&lt;br /&gt;
| links_name7 = How to build ESAPI 2.0 with Maven&lt;br /&gt;
| links_url8 = http://www.owasp.org/index.php/ESAPI-BuildingWithEclipse&lt;br /&gt;
| links_name8 = How to build ESAPI 2.0 with Maven via Eclipse&lt;br /&gt;
| project_road_map = &lt;br /&gt;
| project_health_status = &lt;br /&gt;
| current_release_name = &lt;br /&gt;
| current_release_date = &lt;br /&gt;
| current_release_download_link = &lt;br /&gt;
| current_release_rating = &lt;br /&gt;
| current_release_leader_name = &lt;br /&gt;
| current_release_leader_email = &lt;br /&gt;
| current_release_leader_username =&lt;br /&gt;
| current_release_details =  &lt;br /&gt;
| last_reviewed_release_name = &lt;br /&gt;
| last_reviewed_release_date = &lt;br /&gt;
| last_reviewed_release_download_link = &lt;br /&gt;
| last_reviewed_release_rating = &lt;br /&gt;
| last_reviewed_release_leader_name = &lt;br /&gt;
| last_reviewed_release_leader_email = &lt;br /&gt;
| last_reviewed_release_leader_username = &lt;br /&gt;
| old_release_name1 = &lt;br /&gt;
| old_release_date1 = &lt;br /&gt;
| old_release_download_link1 = &lt;br /&gt;
| old_release_name2 = &lt;br /&gt;
| old_release_date2 = &lt;br /&gt;
| old_release_download_link2 = &lt;br /&gt;
| old_release_name3 = &lt;br /&gt;
| old_release_date3 = &lt;br /&gt;
| old_release_download_link3 = &lt;br /&gt;
| old_release_name4 = &lt;br /&gt;
| old_release_date4 = &lt;br /&gt;
| old_release_download_link4 = &lt;br /&gt;
| old_release_name5 = &lt;br /&gt;
| old_release_date5 = &lt;br /&gt;
| old_release_download_link5 = &lt;br /&gt;
| last_GPC_update = 4/10/2009&lt;br /&gt;
| GPC_Notes = Empty template (Java EE Version)&lt;br /&gt;
| project_home_page = :Category:OWASP_Enterprise_Security_API&lt;br /&gt;
| project_details_wiki_page = GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API&amp;diff=251957</id>
		<title>GPC Project Details/OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API&amp;diff=251957"/>
				<updated>2019-05-29T03:11:59Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Added Jeremiah Stacey as a contributor.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;OWASP Project Identification Tab&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| project_name = OWASP Enterprise Security API&lt;br /&gt;
| project_description = 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:&lt;br /&gt;
&lt;br /&gt;
* '''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls. &lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
| project_license =BSD license&lt;br /&gt;
| leader_name =Kevin W. Wall and Matt Seil&lt;br /&gt;
| leader_email =kevin.w.wall@gmail.com&lt;br /&gt;
| past_leaders_special_contributions =Jeff Williams, Dave Wichers, Chris Schmidt, Jim Manico&lt;br /&gt;
| maintainer_name =&lt;br /&gt;
| maintainer_email =&lt;br /&gt;
| maintainer_username =&lt;br /&gt;
| contributor_name1 = Jeremiah J. Stacey&lt;br /&gt;
| contributor_email1 =&lt;br /&gt;
| contributor_username1 =&lt;br /&gt;
| contributor_name2 = Chris Schmidt&lt;br /&gt;
| contributor_email2 = chris.schmidt@owasp.org&lt;br /&gt;
| contributor_username2 = Chris_Schmidt&lt;br /&gt;
| contributor_name3 =&lt;br /&gt;
| contributor_email3 =&lt;br /&gt;
| contributor_username3 =&lt;br /&gt;
| contributor_name4 =Jeff Williams&lt;br /&gt;
| contributor_email4 =&lt;br /&gt;
| contributor_username4 =&lt;br /&gt;
| contributor_name5 =Dave Wichers&lt;br /&gt;
| contributor_email5 =&lt;br /&gt;
| contributor_username5 =&lt;br /&gt;
| contributor_name6 =John Steven&lt;br /&gt;
| contributor_email6 =&lt;br /&gt;
| contributor_username6 = &lt;br /&gt;
&lt;br /&gt;
| contributor_name7 =&lt;br /&gt;
| contributor_email7 =&lt;br /&gt;
| contributor_username7 =&lt;br /&gt;
| contributor_name8 =&lt;br /&gt;
| contributor_email8 =&lt;br /&gt;
| contributor_username8 =&lt;br /&gt;
| contributor_name9 =&lt;br /&gt;
| contributor_email9 =&lt;br /&gt;
| contributor_username9 =&lt;br /&gt;
| contributor_name10 =&lt;br /&gt;
| contributor_email10 =&lt;br /&gt;
| contributor_username10 =&lt;br /&gt;
|&lt;br /&gt;
| pamphlet_link = http://www.owasp.org/images/8/81/Esapi-datasheet.pdf&lt;br /&gt;
| presentation_link = http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt&lt;br /&gt;
| mailing_list_name = esapi-user&lt;br /&gt;
| links_url1 = http://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API#tab=Downloads&lt;br /&gt;
| links_name1 = General ESAPI information&lt;br /&gt;
| links_url2 = http://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API/Sub-Projects&lt;br /&gt;
| links_name2 = ESAPI/Sub-Projects&lt;br /&gt;
| project_road_map = &lt;br /&gt;
| project_health_status = &lt;br /&gt;
| current_release_name = &lt;br /&gt;
| current_release_date = &lt;br /&gt;
| current_release_download_link = &lt;br /&gt;
| current_release_rating = &lt;br /&gt;
| current_release_leader_name = &lt;br /&gt;
| current_release_leader_email = &lt;br /&gt;
| current_release_leader_username =&lt;br /&gt;
| current_release_details =  &lt;br /&gt;
| last_reviewed_release_name = &lt;br /&gt;
| last_reviewed_release_date = &lt;br /&gt;
| last_reviewed_release_download_link = &lt;br /&gt;
| last_reviewed_release_rating = &lt;br /&gt;
| last_reviewed_release_leader_name = &lt;br /&gt;
| last_reviewed_release_leader_email = &lt;br /&gt;
| last_reviewed_release_leader_username = &lt;br /&gt;
| old_release_name1 = &lt;br /&gt;
| old_release_date1 = &lt;br /&gt;
| old_release_download_link1 = &lt;br /&gt;
| old_release_name2 = &lt;br /&gt;
| old_release_date2 = &lt;br /&gt;
| old_release_download_link2 = &lt;br /&gt;
| old_release_name3 = &lt;br /&gt;
| old_release_date3 = &lt;br /&gt;
| old_release_download_link3 = &lt;br /&gt;
| old_release_name4 = &lt;br /&gt;
| old_release_date4 = &lt;br /&gt;
| old_release_download_link4 = &lt;br /&gt;
| old_release_name5 = &lt;br /&gt;
| old_release_date5 = &lt;br /&gt;
| old_release_download_link5 = &lt;br /&gt;
| last_GPC_update = 4/10/2009&lt;br /&gt;
| GPC_Notes = Empty template (ESAPI Global)&lt;br /&gt;
| project_home_page = :Category:OWASP_Enterprise_Security_API&lt;br /&gt;
| project_details_wiki_page = GPC_Project_Details/OWASP_Enterprise_Security_API&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User_talk:Douglasheld&amp;diff=243109</id>
		<title>User talk:Douglasheld</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User_talk:Douglasheld&amp;diff=243109"/>
				<updated>2018-09-03T14:11:53Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: /* Comments left on &amp;quot;Choosing and Using Security Questions Cheat Sheet&amp;quot; */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;From Jim:&lt;br /&gt;
I brought the HTTP Response splitting page back. I am fully deleting the CLASP and other old projects from the wiki - so I removed those categories form the page when I brought it back.&lt;br /&gt;
&lt;br /&gt;
If you see anything else that I deleted (and I deleted a lot) that needs to be brought back, let me know via jim@owasp.org.&lt;br /&gt;
&lt;br /&gt;
== Comments left on &amp;quot;Choosing and Using Security Questions Cheat Sheet&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Douglas,&lt;br /&gt;
&lt;br /&gt;
Regarding your comment. For the most part, but unfortunately I don't see this changing anytime soon. It is likely to be around as long as passwords are still used, some people will forget their passwords. And since by some accounts a call to the help desk costs as much as $5.00 USD, mechanisms involving automatic resets of forgotten passwords will be preferred. (And besides, for companies not having questions that they can ask about a user's transactional history, etc., how are they to confirm the identity of a user claiming a forgotten password?) So as long as that's the case, this a wiki cheat sheet as well as the related &amp;quot;Forgot Password&amp;quot; cheat sheet will hopefully make this method of resetting passwords as secure as possible. What we really need to do is to replace passwords with stronger authentication mechanisms such as FIDO, etc. but that is something that likely will take many years to become mainstream.&lt;br /&gt;
&lt;br /&gt;
-kevin&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Choosing_and_Using_Security_Questions_Cheat_Sheet&amp;diff=243066</id>
		<title>Choosing and Using Security Questions Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Choosing_and_Using_Security_Questions_Cheat_Sheet&amp;diff=243066"/>
				<updated>2018-08-31T18:23:55Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Fix minor typo in Desired Characteristics section.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
This cheat sheet provides some best practice for developers to follow when choosing and using security questions to implement a &amp;amp;quot;forgot password&amp;amp;quot; web application feature.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= The Problem =&lt;br /&gt;
&lt;br /&gt;
There is no industry standard either for providing guidance to users or developers when using or implementing a Forgot Password feature. The result is that developers generally pick a set of dubious questions and implement them insecurely. They do so, not only at the risk to their users, but also--because of potential liability issues--at the risk to their organization. Ideally, passwords would be dead, or at least less important in the sense that they make up only one of several multi-factor authentication mechanisms, but the truth is that we probably are stuck with passwords just like we are stuck with Cobol. So with that in mind, what can we do to make the Forgot Password solution as palatable as possible?&lt;br /&gt;
&lt;br /&gt;
= Choosing Security Questions and/or Identity Data =&lt;br /&gt;
&lt;br /&gt;
Most of us can instantly spot a bad &amp;amp;quot;security question&amp;amp;quot; when we see one. You know the ones we mean. Ones like &amp;quot;What is your favorite color?&amp;quot; are obviously bad. But as the [http://goodsecurityquestions.com/ Good Security Questions] web site rightly points out,&lt;br /&gt;
&amp;amp;quot;there really are NO GOOD security questions; only fair or bad questions&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The reason that most organizations allow users to reset their own forgotten passwords is not because of security, but rather to reduce their own costs by reducing their volume of calls to their help desks. It's the classic convenience vs. security trade-off, and in this case, convenience (both to the organization in terms of reduced costs and to the user in terms of simpler, self-service) almost always wins out.&lt;br /&gt;
&lt;br /&gt;
So given that the business aspect of lower cost generally wins out, what can we do to at least raise the bar a bit?&lt;br /&gt;
&lt;br /&gt;
Here are some suggestions. Note that we intentionally avoid recommending specific security questions. To do so likely would be counterproductive because many developers would simply use those questions without much thinking and adversaries would immediately start harvesting that data from various social networks.&lt;br /&gt;
&lt;br /&gt;
== Desired Characteristics ==&lt;br /&gt;
&lt;br /&gt;
Any security questions or identity information presented to users to reset forgotten passwords should ideally have the following four characteristics:&lt;br /&gt;
&lt;br /&gt;
# '''Memorable''': If users can't remember their answers to their security questions, you have achieved nothing.&lt;br /&gt;
# '''Consistent''': The user's answers should not change over time. For instance, asking &amp;quot;What is the name of your significant other?&amp;quot; may have a different answer 5 years from now.&lt;br /&gt;
# '''Nearly universal''': The security questions should apply to as wide an audience as possible.&lt;br /&gt;
# '''Safe''': The answers to security questions should not be something that is easily guessed, or research (e.g., something that is matter of public record).&lt;br /&gt;
&lt;br /&gt;
== Steps  ==&lt;br /&gt;
&lt;br /&gt;
=== Step 1) Decide on Identity Data vs Canned Questions vs. User-Created Questions ===&lt;br /&gt;
&lt;br /&gt;
Generally, a single HTML form should be used to collect all of the inputs to be used for later password resets. &lt;br /&gt;
&lt;br /&gt;
If your organization has a business relationship with users, you probably have collected some sort of additional information from your users when they registered with your web site. Such information includes, but is not limited to:&lt;br /&gt;
&lt;br /&gt;
* email address&lt;br /&gt;
* last name&lt;br /&gt;
* date of birth&lt;br /&gt;
* account number&lt;br /&gt;
* customer number&lt;br /&gt;
* last 4 of social security number&lt;br /&gt;
* zip code for address on file&lt;br /&gt;
* street number for address on file&lt;br /&gt;
&lt;br /&gt;
For enhanced security, you may wish to consider asking the user for their email address first and then send an email that takes them to a private page that requests the other 2 (or more) identity factors. That way the email itself isn’t that useful because they still have to answer a bunch of ‘secret’ questions after they get to the landing page.&lt;br /&gt;
&lt;br /&gt;
On the other hand, if you host a web site that targets the general public, such as social networking sites, free email sites, news sites, photo sharing sites, etc., then you likely to not have this identity information and will need to use some sort of the ubiquitous &amp;quot;security questions&amp;quot;. However, also be sure that you collect some means to send the password reset information to some out-of-band side-channel, such as a (different) email address, an SMS texting number, etc.&lt;br /&gt;
&lt;br /&gt;
Believe it or not, there is a certain merit to allow your users to select from a set of several &amp;quot;canned&amp;quot; questions. We generally ask users to fill out the security questions as part of completing their initial user profile and often that is the very time that the user is in a hurry; they just wish to register and get about using your site. If we ask users to create their own question(s) instead, they then generally do so under some amount of duress, and thus may be more likely to come up with extremely poor questions.&lt;br /&gt;
&lt;br /&gt;
However, there is also some strong rationale to requiring users to create their own question(s), or at least one such question. The prevailing legal opinion seems to be if we provide some sort of reasonable guidance to users in creating their own questions and then insist on them doing so, at least some of the potential liabilities are transferred from our organizations to the users. In such cases, if user accounts get hacked because of their weak security questions (e.g., &amp;quot;What is my favorite ice cream flavor?&amp;quot;, etc.) then the thought is that they only have themselves to blame and thus our organizations are less likely to get sued.&lt;br /&gt;
&lt;br /&gt;
Since OWASP recommends in the [[Forgot Password Cheat Sheet]] that multiple security questions should be posed to the user and successfully answered before allowing a password reset, a good practice might be to require the user to select 1 or 2 questions from a set of canned questions as well as to create (a different) one of their own and then require they answer one of their selected canned questions as well as their own question.&lt;br /&gt;
&lt;br /&gt;
=== Step 2) Review Any Canned Questions with Your Legal Department or Privacy Officer ===&lt;br /&gt;
&lt;br /&gt;
While most developers would generally first review any potential questions with whatever relevant business unit, it may not occur to them to review the questions with their legal department or chief privacy officer. However, this is advisable because their may be applicable laws or regulatory / compliance issues to which the questions must adhere. For example, in the telecommunications industry, the FCC's Customer Proprietary Network Information (CPNI) regulations prohibit asking customers security questions that involve &amp;quot;personal information&amp;quot;, so questions such as &amp;quot;In what city were you born?&amp;quot; are generally not allowed.&lt;br /&gt;
&lt;br /&gt;
=== Step 3) Insist on a Minimal Length for the Answers ===&lt;br /&gt;
&lt;br /&gt;
Even if you pose decent security questions, because users generally dislike putting a whole lot of forethought into answering the questions, they often will just answer with something short. Answering with a short expletive is not uncommon, nor is answering with something like &amp;quot;xxx&amp;quot; or &amp;quot;1234&amp;quot;.  If you tell the user that they ''should'' answer with a phrase or sentence and tell them that there is some minimal length to an acceptable answer (say 10 or 12 characters), you generally will get answers that are somewhat more resistant to guessing.&lt;br /&gt;
&lt;br /&gt;
=== Step 4) Consider How To Securely Store the Questions and Answers ===&lt;br /&gt;
&lt;br /&gt;
There are two aspects to this...storing the questions and storing the answers. Obviously, the questions must be presented to the user, so the options there are store them as plaintext or as reversible ciphertext. The answers technically do not need to be ever viewed by any human so they could be stored using a secure cryptographic hash (although in principle, I am aware of some help desks that utilize the both the questions and answers for password reset and they insist on being able to ''read'' the answers rather than having to type them in; YMMV). Either way, we would always recommend at least encrypting the answers rather than storing them as plaintext. This is especially true for answers to the &amp;quot;create your own question&amp;quot; type as users will sometimes pose a question that potentially has a sensitive answer (e.g., &amp;quot;What is my bank account # that I share with my wife?&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
So the main question is whether or not you should store the questions as plaintext or reversible ciphertext. Admittedly, we are a bit biased, but for the &amp;quot;create your own question&amp;quot; types at least, we recommend that such questions be encrypted.  This is because if they are encrypted, it makes it much less likely that your company will be sued if you have some bored, rogue DBAs pursuing the DB where the security questions and answers are stored in an attempt to amuse themselves and stumble upon something sensitive or perhaps embarrassing.&lt;br /&gt;
&lt;br /&gt;
In addition, if you explain to your customers that you are encrypting their questions and hashing their answers, they might feel safer about asking some questions that while potentially embarrassing, might be a bit more secure. (Use your imagination. Do we need to spell it out for you? Really???)&lt;br /&gt;
&lt;br /&gt;
=== Step 5) Periodically Have Your Users Review their Questions ===&lt;br /&gt;
&lt;br /&gt;
Many companies often ask their users to update their user profiles to make sure contact information such as email addresses, street address, etc. is still up-to-date. Use that opportunity to have your users review their security questions. (Hopefully, at that time, they will be in a bit less of a rush, and may use the opportunity to select better questions.)  If you had chosen to encrypt rather than hash their answers, you can also display their corresponding security answers at that time.&lt;br /&gt;
&lt;br /&gt;
If you keep statistics on how many times the respective questions has been posed to someone as part of a Forgot Password flow (recommended), it would be advisable to also display that information. (For instance, if against your advice, they created a question such as &amp;quot;What is my favorite hobby?&amp;quot; and see that it had been presented 113 times and they think they might have only reset their password 5 times, it would probably be advisable to change that security question and probably their password as well.)&lt;br /&gt;
&lt;br /&gt;
=== Step 6) Authenticate Requests to Change Questions ===&lt;br /&gt;
&lt;br /&gt;
Many web sites properly authenticate change password requests simply by requesting the current password along with the desired new password. If the user cannot provide the correct current password, the request to change the password is ignored. The same authentication control should be in place when changing security questions. The user should be required to provide the correct password along with their new security questions &amp;amp; answers. If the user cannot provide the correct password, then the request to change the security questions should be ignored. This control prevents both Cross-Site Request Forgery attacks, as well as changes made by attackers who have taken control over a users workstation or authenticated application session.&lt;br /&gt;
&lt;br /&gt;
= Using Security Questions =&lt;br /&gt;
&lt;br /&gt;
Requiring users to answer security questions is most frequently done under two quite different scenarios:&lt;br /&gt;
* As a means for users to reset forgotten passwords. (See [[Forgot Password Cheat Sheet]].)&lt;br /&gt;
* As an additional means of corroborating evidence used for authentication.&lt;br /&gt;
&lt;br /&gt;
If at anytime you intend for your users to answer security questions for both of these scenarios, it is ''strongly'' recommended that you use two different sets of questions / answers.&lt;br /&gt;
&lt;br /&gt;
It should noted that using a security question / answer in addition to using passwords does '''''not''''' give you multi-factor authentication because both of these fall under the category of &amp;quot;what you know&amp;quot;. Hence they are two of the ''same'' factor, which is not multi-factor. Furthermore, it should be noted that while passwords are a very weak form of authentication, answering security questions are generally is a much weaker form. This is because when we have users create passwords, we generally test the candidate password against some password complexity rules (e.g., minimal length &amp;amp;gt; 10 characters; must have at least one alphabetic, one numeric, and one special character; etc.); we usually do no such thing for security answers (except for perhaps some minimal length requirement). Thus good passwords generally will have much more entropy than answers to security questions, often by several orders of magnitude.&lt;br /&gt;
&lt;br /&gt;
=== Security Questions Used To Reset Forgotten Passwords ===&lt;br /&gt;
&lt;br /&gt;
The [[Forgot Password Cheat Sheet]] already details pretty much everything that you need to know as a developer when ''collecting'' answers to security questions. However, it provides no guidance about how to assist the user in selecting security questions (if chosen from a list of candidate questions) or writing their own security questions / answers. Indeed, the [[Forgot Password Cheat Sheet]] makes the assumption that one can actually use additional ''identity'' data as the security questions / answers.  However, often this is not the case as the user has never (or won't) volunteer it or is it prohibited for compliance reasons with certain regulations (e.g., as in the case of telecommunications companies and [[http://en.wikipedia.org/wiki/Customer_proprietary_network_information CPNI]] data).&lt;br /&gt;
&lt;br /&gt;
Therefore, at least some development teams will be faced with collecting more generic security questions and answers from their users. If you must do this as a developer, it is good practice to:&lt;br /&gt;
* briefly describe the importance of selecting a good security question / answer.&lt;br /&gt;
* provide some guidance, along with some examples, of what constitutes bad vs. fair security questions.&lt;br /&gt;
&lt;br /&gt;
You may wish to refer your users to the [[http://goodsecurityquestions.com/ Good Security Questions]] web site for the latter.&lt;br /&gt;
&lt;br /&gt;
Furthermore, since adversaries will try the &amp;quot;forgot password&amp;quot; reset flow to reset a user's password (especially if they have compromised the side-channel, such as user's email account or their mobile device where they receive SMS text messages), is a good practice to minimize unintended and unauthorized information disclosure of the security questions. This may mean that you require the user to answer one security question before displaying any subsequent questions to be answered. In this manner, it does not allow an adversary an opportunity to research all the questions at once. Note however that this is contrary to the advice given on the [[Forgot Password Cheat Sheet]] and it may also be perceived as not being user-friendly by your sponsoring business unit, so again YMMV.&lt;br /&gt;
&lt;br /&gt;
Lastly, you should consider whether or not you should treat the security questions that a user will type in as a &amp;quot;password&amp;quot; type or simply as regular &amp;quot;text&amp;quot; input. The former can prevent shoulder-surfing attacks, but also cause more typos, so there is a trade-off. Perhaps the best advice is to give the user a choice; hide the text by treating it as &amp;quot;password&amp;quot; input type by default, but all the user to check a box that would display their security answers as clear text when checked.&lt;br /&gt;
&lt;br /&gt;
=== Security Questions As An Additional Means Of Authenticating ===&lt;br /&gt;
&lt;br /&gt;
First, it bears repeating again...if passwords are considered weak authentication, then using security questions are even less robust. Furthermore, they are no substitute for true multi-factor authentication, or stronger forms of authentication such as authentication using one-time passwords or involving side-channel communications. In a word, very little is gained by using security questions in this context.  But, if you must...keep these things in mind:&lt;br /&gt;
&lt;br /&gt;
* Display the security question(s) on a separate page only ''after'' your users have successfully authenticated with their usernames / passwords (rather than only after they have entered their username). In this manner, you at least do not allow an adversary to view and research the security questions unless they also know the user's current password.&lt;br /&gt;
* If you also use security questions to reset a user's password, then you should use a ''different'' set of security questions for an additional means of authenticating.&lt;br /&gt;
* Security questions used for actual authentication purposes should regularly expire much like passwords. Periodically make the user choose new security questions and answers.&lt;br /&gt;
* If you use answers to security questions as a ''subsequent'' authentication mechanism (say to enter a more sensitive area of your web site), make sure that you keep the session idle time out very low...say less than 5 minutes or so, or that you also require the user to first re-authenticate with their password and then immediately after answer the security question(s).&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
[[Forgot Password Cheat Sheet]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://goodsecurityquestions.com/ Good Security Questions web site]&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Kevin Wall - kevin.w.wall[at]gmail com&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=242715</id>
		<title>Category:OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=242715"/>
				<updated>2018-08-22T00:52:36Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Add Google Tink as recommendation for strong crypto.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Home  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design: &lt;br /&gt;
&lt;br /&gt;
*'''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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]. &lt;br /&gt;
&lt;br /&gt;
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:kevin.w.wall@gmail.com here] and [mailto:xeno6696@gmail.com here].&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Let's talk here  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-bulb.jpg]]'''ESAPI Communities''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-dev esapi-dev mailing list (this is the main list)] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-user esapi-user mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-php esapi-php mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-python esapi-python mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-ruby esapi-ruby mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-swingset esapi-swingset mailing list]&lt;br /&gt;
*[http://groups.google.com/group/cfesapi esapi-coldfusion mailing list]&lt;br /&gt;
&lt;br /&gt;
IRC Chat&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*Server: irc.freenode.net&lt;br /&gt;
*Channel: #esapi&lt;br /&gt;
&lt;br /&gt;
== Got developer cycles?  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-waiting.JPG]]'''ESAPI Coding''' &lt;br /&gt;
&lt;br /&gt;
The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles. &lt;br /&gt;
 &lt;br /&gt;
*ESAPI for other languages developer onboarding instructions -- coming soon!&lt;br /&gt;
&lt;br /&gt;
== Project Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The ESAPI project is sponsored by {{MemberLinks|link=http://www.aspectsecurity.com|logo=Aspect_logo_owasp.jpg}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Downloads  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|2400x160px|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step1.jpg]]'''1. About ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*Data sheet([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF],[http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word]) &lt;br /&gt;
*Project presentation ([http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt PowerPoint]) &lt;br /&gt;
*Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step2.jpg]]'''2. Get ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*[https://search.maven.org/#search|ga|1|esapi ESAPI for Java Downloads (binaries)] &lt;br /&gt;
*[https://github.com/ESAPI/esapi-java-legacy ESAPI for Java (source)]&amp;lt;br&amp;gt;&lt;br /&gt;
*[https://github.com/ESAPI/owasp-esapi-js ESAPI for Javascript]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''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:&lt;br /&gt;
&lt;br /&gt;
* ESAPI for .NET&lt;br /&gt;
* ESAPI for Classic ASP&lt;br /&gt;
* ESAPI for PHP&lt;br /&gt;
* ESAPI for ColdFusion &amp;amp; CFML&lt;br /&gt;
* ESAPI for Python&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step3.jpg]]'''3. Learn ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*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)] &lt;br /&gt;
*The [[ESAPI Swingset|ESAPI Swingset]] sample application demonstrates how to leverage ESAPI to protect a web application. &lt;br /&gt;
*LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF]) &lt;br /&gt;
*ESAPI for Java interface documentation ([http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 JavaDocs])&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What I did with ESAPI  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --[mailto:jeff.williams@owasp.org Jeff]&lt;br /&gt;
&lt;br /&gt;
*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 &amp;quot;Adapter&amp;quot; control to wrap calls to the other ESAPI controls. --[mailto:mike.boberski@owasp.org Mike]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java’s &amp;quot;Logger&amp;quot; control to make it easier for a US Government customer to meet C&amp;amp;amp;A requirements. --[mailto:dave.wichers@owasp.org Dave]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --[mailto:jim.manico@owasp.org Jim]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java's &amp;quot;Authenticator&amp;quot; to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific &amp;quot;Adapter&amp;quot; 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]&lt;br /&gt;
&lt;br /&gt;
*I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --[mailto:yairr@liveperson.com Yair]&lt;br /&gt;
&lt;br /&gt;
*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]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Should I use ESAPI?  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[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]&lt;br /&gt;
&lt;br /&gt;
Or, specifically, &amp;quot;Should I use ESAPI for Java?&amp;quot; since that's the only one run by OWASP that still shows any semblance of life.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Should I use ESAPI?&amp;quot; probably is &amp;quot;yes&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Output encoding: [https://www.owasp.org/index.php/OWASP_Java_Encoder_Project OWASP Java Encoder Project]&lt;br /&gt;
* General HTML sanitization: [https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project OWASP Java HTML Sanitizer]&lt;br /&gt;
* Validation: [http://beanvalidation.org/ JSR-303/JSR-349 Bean Validation]&lt;br /&gt;
*Strong cryptography: [https://github.com/google/tink Google Tink], [https://github.com/google/keyczar Keyczar]&lt;br /&gt;
* Authentication / authorization: [https://shiro.apache.org/ Apache Shiro]&lt;br /&gt;
* 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]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
-[mailto:kevin.w.wall@gmail.com kevin wall]&lt;br /&gt;
&lt;br /&gt;
= Glossary  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:Asvs-letters.jpg]]'''ESAPI Terminology''' &lt;br /&gt;
&lt;br /&gt;
*'''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. &lt;br /&gt;
*'''built-in singleton design pattern''' - The &amp;quot;built-in&amp;quot; singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact. &lt;br /&gt;
*'''codec''' - ESAPI encoder/decoder reference implementations. &lt;br /&gt;
*'''core''' - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core. &lt;br /&gt;
*'''exception''' - ESAPI exception reference implementations. &lt;br /&gt;
*'''extended factory design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''extended singleton design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''filter''' - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''locator''' - The ESAPI security control interfaces include an &amp;quot;ESAPI&amp;quot; class that is commonly referred to as a &amp;quot;locator&amp;quot; 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). &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Java EE  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Details  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OWASP Builders}}&lt;br /&gt;
[[Category:Popular]]&lt;br /&gt;
[[Category:SAMM-SA-3]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=235285</id>
		<title>Category:OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=235285"/>
				<updated>2017-11-10T20:46:28Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Fix bad grammar.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Home  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design: &lt;br /&gt;
&lt;br /&gt;
*'''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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]. &lt;br /&gt;
&lt;br /&gt;
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:kevin.w.wall@gmail.com here] and [mailto:xeno6696@gmail.com here].&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Let's talk here  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-bulb.jpg]]'''ESAPI Communities''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-dev esapi-dev mailing list (this is the main list)] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-user esapi-user mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-php esapi-php mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-python esapi-python mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-ruby esapi-ruby mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-swingset esapi-swingset mailing list]&lt;br /&gt;
*[http://groups.google.com/group/cfesapi esapi-coldfusion mailing list]&lt;br /&gt;
&lt;br /&gt;
IRC Chat&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*Server: irc.freenode.net&lt;br /&gt;
*Channel: #esapi&lt;br /&gt;
&lt;br /&gt;
== Got developer cycles?  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-waiting.JPG]]'''ESAPI Coding''' &lt;br /&gt;
&lt;br /&gt;
The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles. &lt;br /&gt;
 &lt;br /&gt;
*ESAPI for other languages developer onboarding instructions -- coming soon!&lt;br /&gt;
&lt;br /&gt;
== Project Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The ESAPI project is sponsored by {{MemberLinks|link=http://www.aspectsecurity.com|logo=Aspect_logo_owasp.jpg}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Downloads  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|2400x160px|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step1.jpg]]'''1. About ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*Data sheet([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF],[http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word]) &lt;br /&gt;
*Project presentation ([http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt PowerPoint]) &lt;br /&gt;
*Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step2.jpg]]'''2. Get ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*[https://search.maven.org/#search|ga|1|esapi ESAPI for Java Downloads (binaries)] &lt;br /&gt;
*[https://github.com/ESAPI/esapi-java-legacy ESAPI for Java (source)]&amp;lt;br&amp;gt;&lt;br /&gt;
*[https://github.com/ESAPI/owasp-esapi-js ESAPI for Javascript]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''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:&lt;br /&gt;
&lt;br /&gt;
* ESAPI for .NET&lt;br /&gt;
* ESAPI for Classic ASP&lt;br /&gt;
* ESAPI for PHP&lt;br /&gt;
* ESAPI for ColdFusion &amp;amp; CFML&lt;br /&gt;
* ESAPI for Python&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step3.jpg]]'''3. Learn ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*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)] &lt;br /&gt;
*The [[ESAPI Swingset|ESAPI Swingset]] sample application demonstrates how to leverage ESAPI to protect a web application. &lt;br /&gt;
*LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF]) &lt;br /&gt;
*ESAPI for Java interface documentation ([http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 JavaDocs])&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What I did with ESAPI  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --[mailto:jeff.williams@owasp.org Jeff]&lt;br /&gt;
&lt;br /&gt;
*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 &amp;quot;Adapter&amp;quot; control to wrap calls to the other ESAPI controls. --[mailto:mike.boberski@owasp.org Mike]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java’s &amp;quot;Logger&amp;quot; control to make it easier for a US Government customer to meet C&amp;amp;amp;A requirements. --[mailto:dave.wichers@owasp.org Dave]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --[mailto:jim.manico@owasp.org Jim]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java's &amp;quot;Authenticator&amp;quot; to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific &amp;quot;Adapter&amp;quot; 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]&lt;br /&gt;
&lt;br /&gt;
*I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --[mailto:yairr@liveperson.com Yair]&lt;br /&gt;
&lt;br /&gt;
*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]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Should I use ESAPI?  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[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]&lt;br /&gt;
&lt;br /&gt;
Or, specifically, &amp;quot;Should I use ESAPI for Java?&amp;quot; since that's the only one run by OWASP that still shows any semblance of life.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Should I use ESAPI?&amp;quot; probably is &amp;quot;yes&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Output encoding: [https://www.owasp.org/index.php/OWASP_Java_Encoder_Project OWASP Java Encoder Project]&lt;br /&gt;
* General HTML sanitization: [https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project OWASP Java HTML Sanitizer]&lt;br /&gt;
* Validation: [http://beanvalidation.org/ JSR-303/JSR-349 Bean Validation]&lt;br /&gt;
*Strong cryptography: [https://github.com/google/keyczar Keyczar]&lt;br /&gt;
* Authentication / authorization: [https://shiro.apache.org/ Apache Shiro]&lt;br /&gt;
* 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]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
-[mailto:kevin.w.wall@gmail.com kevin wall]&lt;br /&gt;
&lt;br /&gt;
= Glossary  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:Asvs-letters.jpg]]'''ESAPI Terminology''' &lt;br /&gt;
&lt;br /&gt;
*'''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. &lt;br /&gt;
*'''built-in singleton design pattern''' - The &amp;quot;built-in&amp;quot; singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact. &lt;br /&gt;
*'''codec''' - ESAPI encoder/decoder reference implementations. &lt;br /&gt;
*'''core''' - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core. &lt;br /&gt;
*'''exception''' - ESAPI exception reference implementations. &lt;br /&gt;
*'''extended factory design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''extended singleton design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''filter''' - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''locator''' - The ESAPI security control interfaces include an &amp;quot;ESAPI&amp;quot; class that is commonly referred to as a &amp;quot;locator&amp;quot; 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). &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Java EE  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Details  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OWASP Builders}}&lt;br /&gt;
[[Category:Popular]]&lt;br /&gt;
[[Category:SAMM-SA-3]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=235284</id>
		<title>Category:OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=235284"/>
				<updated>2017-11-10T20:43:55Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Remove broken documentation link for unsupported &amp;quot;ESAPI for PHP&amp;quot;.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Home  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design: &lt;br /&gt;
&lt;br /&gt;
*'''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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]. &lt;br /&gt;
&lt;br /&gt;
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:kevin.w.wall@gmail.com here] and [mailto:xeno6696@gmail.com here].&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Let's talk here  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-bulb.jpg]]'''ESAPI Communities''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-dev esapi-dev mailing list (this is the main list)] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-user esapi-user mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-php esapi-php mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-python esapi-python mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-ruby esapi-ruby mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-swingset esapi-swingset mailing list]&lt;br /&gt;
*[http://groups.google.com/group/cfesapi esapi-coldfusion mailing list]&lt;br /&gt;
&lt;br /&gt;
IRC Chat&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*Server: irc.freenode.net&lt;br /&gt;
*Channel: #esapi&lt;br /&gt;
&lt;br /&gt;
== Got developer cycles?  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-waiting.JPG]]'''ESAPI Coding''' &lt;br /&gt;
&lt;br /&gt;
The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles. &lt;br /&gt;
 &lt;br /&gt;
*ESAPI for other languages developer onboarding instructions -- coming soon!&lt;br /&gt;
&lt;br /&gt;
== Project Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The ESAPI project is sponsored by {{MemberLinks|link=http://www.aspectsecurity.com|logo=Aspect_logo_owasp.jpg}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Downloads  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|2400x160px|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step1.jpg]]'''1. About ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*Data sheet([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF],[http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word]) &lt;br /&gt;
*Project presentation ([http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt PowerPoint]) &lt;br /&gt;
*Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step2.jpg]]'''2. Get ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*[https://search.maven.org/#search|ga|1|esapi ESAPI for Java Downloads (binaries)] &lt;br /&gt;
*[https://github.com/ESAPI/esapi-java-legacy ESAPI for Java (source)]&amp;lt;br&amp;gt;&lt;br /&gt;
*[https://github.com/ESAPI/owasp-esapi-js ESAPI for Javascript]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''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:&lt;br /&gt;
&lt;br /&gt;
* ESAPI for .NET&lt;br /&gt;
* ESAPI for Classic ASP&lt;br /&gt;
* ESAPI for PHP&lt;br /&gt;
* ESAPI for ColdFusion &amp;amp; CFML&lt;br /&gt;
* ESAPI for Python&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step3.jpg]]'''3. Learn ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*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)] &lt;br /&gt;
*The [[ESAPI Swingset|ESAPI Swingset]] sample application demonstrates how to leverage ESAPI to protect a web application. &lt;br /&gt;
*LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF]) &lt;br /&gt;
*ESAPI for Java interface documentation ([http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 JavaDocs])&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What I did with ESAPI  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --[mailto:jeff.williams@owasp.org Jeff]&lt;br /&gt;
&lt;br /&gt;
*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 &amp;quot;Adapter&amp;quot; control to wrap calls to the other ESAPI controls. --[mailto:mike.boberski@owasp.org Mike]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java’s &amp;quot;Logger&amp;quot; control to make it easier for a US Government customer to meet C&amp;amp;amp;A requirements. --[mailto:dave.wichers@owasp.org Dave]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --[mailto:jim.manico@owasp.org Jim]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java's &amp;quot;Authenticator&amp;quot; to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific &amp;quot;Adapter&amp;quot; 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]&lt;br /&gt;
&lt;br /&gt;
*I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --[mailto:yairr@liveperson.com Yair]&lt;br /&gt;
&lt;br /&gt;
*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]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Should I use ESAPI?  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[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]&lt;br /&gt;
&lt;br /&gt;
Or, specifically, &amp;quot;Should I use ESAPI for Java?&amp;quot; since that's the only one run by OWASP that still shows any semblance of life.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Should I use ESAPI?&amp;quot; probably is &amp;quot;yes&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Output encoding: [https://www.owasp.org/index.php/OWASP_Java_Encoder_Project OWASP Java Encoder Project]&lt;br /&gt;
* General HTML sanitization: [https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project OWASP Java HTML Sanitizer]&lt;br /&gt;
* Validation: [http://beanvalidation.org/ JSR-303/JSR-349 Bean Validation]&lt;br /&gt;
*Strong cryptography: [https://github.com/google/keyczar Keyczar]&lt;br /&gt;
* Authentication / authorization: [https://shiro.apache.org/ Apache Shiro]&lt;br /&gt;
* 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]&lt;br /&gt;
&lt;br /&gt;
Note that it not the suggestion 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.&lt;br /&gt;
&lt;br /&gt;
-[mailto:kevin.w.wall@gmail.com kevin wall]&lt;br /&gt;
&lt;br /&gt;
= Glossary  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:Asvs-letters.jpg]]'''ESAPI Terminology''' &lt;br /&gt;
&lt;br /&gt;
*'''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. &lt;br /&gt;
*'''built-in singleton design pattern''' - The &amp;quot;built-in&amp;quot; singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact. &lt;br /&gt;
*'''codec''' - ESAPI encoder/decoder reference implementations. &lt;br /&gt;
*'''core''' - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core. &lt;br /&gt;
*'''exception''' - ESAPI exception reference implementations. &lt;br /&gt;
*'''extended factory design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''extended singleton design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''filter''' - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''locator''' - The ESAPI security control interfaces include an &amp;quot;ESAPI&amp;quot; class that is commonly referred to as a &amp;quot;locator&amp;quot; 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). &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Java EE  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Details  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OWASP Builders}}&lt;br /&gt;
[[Category:Popular]]&lt;br /&gt;
[[Category:SAMM-SA-3]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=235213</id>
		<title>Category:OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=235213"/>
				<updated>2017-11-09T03:36:13Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Edit downloads section to remove links of unsupported versions.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Home  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design: &lt;br /&gt;
&lt;br /&gt;
*'''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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]. &lt;br /&gt;
&lt;br /&gt;
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:kevin.w.wall@gmail.com here] and [mailto:xeno6696@gmail.com here].&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Let's talk here  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-bulb.jpg]]'''ESAPI Communities''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-dev esapi-dev mailing list (this is the main list)] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-user esapi-user mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-php esapi-php mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-python esapi-python mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-ruby esapi-ruby mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-swingset esapi-swingset mailing list]&lt;br /&gt;
*[http://groups.google.com/group/cfesapi esapi-coldfusion mailing list]&lt;br /&gt;
&lt;br /&gt;
IRC Chat&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*Server: irc.freenode.net&lt;br /&gt;
*Channel: #esapi&lt;br /&gt;
&lt;br /&gt;
== Got developer cycles?  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-waiting.JPG]]'''ESAPI Coding''' &lt;br /&gt;
&lt;br /&gt;
The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles. &lt;br /&gt;
 &lt;br /&gt;
*ESAPI for other languages developer onboarding instructions -- coming soon!&lt;br /&gt;
&lt;br /&gt;
== Project Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The ESAPI project is sponsored by {{MemberLinks|link=http://www.aspectsecurity.com|logo=Aspect_logo_owasp.jpg}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Downloads  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|2400x160px|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step1.jpg]]'''1. About ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*Data sheet([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF],[http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word]) &lt;br /&gt;
*Project presentation ([http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt PowerPoint]) &lt;br /&gt;
*Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step2.jpg]]'''2. Get ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*[https://search.maven.org/#search|ga|1|esapi ESAPI for Java Downloads (binaries)] &lt;br /&gt;
*[https://github.com/ESAPI/esapi-java-legacy ESAPI for Java (source)]&amp;lt;br&amp;gt;&lt;br /&gt;
*[https://github.com/ESAPI/owasp-esapi-js ESAPI for Javascript]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''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:&lt;br /&gt;
&lt;br /&gt;
* ESAPI for .NET&lt;br /&gt;
* ESAPI for Classic ASP&lt;br /&gt;
* ESAPI for PHP&lt;br /&gt;
* ESAPI for ColdFusion &amp;amp; CFML&lt;br /&gt;
* ESAPI for Python&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step3.jpg]]'''3. Learn ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*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)] &lt;br /&gt;
*The [[ESAPI Swingset|ESAPI Swingset]] sample application demonstrates how to leverage ESAPI to protect a web application. &lt;br /&gt;
*LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF]) &lt;br /&gt;
*ESAPI for Java interface documentation ([http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 JavaDocs]) &lt;br /&gt;
*ESAPI for PHP interface documentation ([http://owasp-esapi-php.googlecode.com/svn/trunk_doc/latest/index.html phpdoc])&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What I did with ESAPI  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --[mailto:jeff.williams@owasp.org Jeff]&lt;br /&gt;
&lt;br /&gt;
*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 &amp;quot;Adapter&amp;quot; control to wrap calls to the other ESAPI controls. --[mailto:mike.boberski@owasp.org Mike]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java’s &amp;quot;Logger&amp;quot; control to make it easier for a US Government customer to meet C&amp;amp;amp;A requirements. --[mailto:dave.wichers@owasp.org Dave]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --[mailto:jim.manico@owasp.org Jim]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java's &amp;quot;Authenticator&amp;quot; to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific &amp;quot;Adapter&amp;quot; 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]&lt;br /&gt;
&lt;br /&gt;
*I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --[mailto:yairr@liveperson.com Yair]&lt;br /&gt;
&lt;br /&gt;
*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]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Should I use ESAPI?  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[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]&lt;br /&gt;
&lt;br /&gt;
Or, specifically, &amp;quot;Should I use ESAPI for Java?&amp;quot; since that's the only one run by OWASP that still shows any semblance of life.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Should I use ESAPI?&amp;quot; probably is &amp;quot;yes&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Output encoding: [https://www.owasp.org/index.php/OWASP_Java_Encoder_Project OWASP Java Encoder Project]&lt;br /&gt;
* General HTML sanitization: [https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project OWASP Java HTML Sanitizer]&lt;br /&gt;
* Validation: [http://beanvalidation.org/ JSR-303/JSR-349 Bean Validation]&lt;br /&gt;
*Strong cryptography: [https://github.com/google/keyczar Keyczar]&lt;br /&gt;
* Authentication / authorization: [https://shiro.apache.org/ Apache Shiro]&lt;br /&gt;
* 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]&lt;br /&gt;
&lt;br /&gt;
Note that it not the suggestion 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.&lt;br /&gt;
&lt;br /&gt;
-[mailto:kevin.w.wall@gmail.com kevin wall]&lt;br /&gt;
&lt;br /&gt;
= Glossary  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:Asvs-letters.jpg]]'''ESAPI Terminology''' &lt;br /&gt;
&lt;br /&gt;
*'''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. &lt;br /&gt;
*'''built-in singleton design pattern''' - The &amp;quot;built-in&amp;quot; singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact. &lt;br /&gt;
*'''codec''' - ESAPI encoder/decoder reference implementations. &lt;br /&gt;
*'''core''' - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core. &lt;br /&gt;
*'''exception''' - ESAPI exception reference implementations. &lt;br /&gt;
*'''extended factory design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''extended singleton design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''filter''' - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''locator''' - The ESAPI security control interfaces include an &amp;quot;ESAPI&amp;quot; class that is commonly referred to as a &amp;quot;locator&amp;quot; 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). &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Java EE  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Details  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OWASP Builders}}&lt;br /&gt;
[[Category:Popular]]&lt;br /&gt;
[[Category:SAMM-SA-3]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API&amp;diff=233042</id>
		<title>GPC Project Details/OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API&amp;diff=233042"/>
				<updated>2017-09-08T18:24:03Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Update ESAPI project leaders.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;OWASP Project Identification Tab&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| project_name = OWASP Enterprise Security API&lt;br /&gt;
| project_description = 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:&lt;br /&gt;
&lt;br /&gt;
* '''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls. &lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
| project_license =BSD license&lt;br /&gt;
| leader_name =Kevin W. Wall and Matt Seil&lt;br /&gt;
| leader_email =kevin.w.wall@gmail.com&lt;br /&gt;
| past_leaders_special_contributions =Jeff Williams, Dave Wichers, Chris Schmidt, Jim Manico&lt;br /&gt;
| maintainer_name =&lt;br /&gt;
| maintainer_email =&lt;br /&gt;
| maintainer_username =&lt;br /&gt;
| contributor_name1 = Chris Schmidt&lt;br /&gt;
| contributor_email1 = chris.schmidt@owasp.org&lt;br /&gt;
| contributor_username1 = Chris_Schmidt&lt;br /&gt;
| contributor_name2 =&lt;br /&gt;
| contributor_email2 =&lt;br /&gt;
| contributor_username2 =&lt;br /&gt;
| contributor_name3 =Jeff Williams&lt;br /&gt;
| contributor_email3 =&lt;br /&gt;
| contributor_username3 =&lt;br /&gt;
| contributor_name4 =Dave Wichers&lt;br /&gt;
| contributor_email4 =&lt;br /&gt;
| contributor_username4 =&lt;br /&gt;
| contributor_name5 =John Steven&lt;br /&gt;
| contributor_email5 =&lt;br /&gt;
| contributor_username5 = &lt;br /&gt;
| contributor_name6 =&lt;br /&gt;
| contributor_email6 =&lt;br /&gt;
| contributor_username6 =&lt;br /&gt;
| contributor_name7 =&lt;br /&gt;
| contributor_email7 =&lt;br /&gt;
| contributor_username7 =&lt;br /&gt;
| contributor_name8 =&lt;br /&gt;
| contributor_email8 =&lt;br /&gt;
| contributor_username8 =&lt;br /&gt;
| contributor_name9 =&lt;br /&gt;
| contributor_email9 =&lt;br /&gt;
| contributor_username9 =&lt;br /&gt;
| contributor_name10 =&lt;br /&gt;
| contributor_email10 =&lt;br /&gt;
| contributor_username10 =&lt;br /&gt;
|&lt;br /&gt;
| pamphlet_link = http://www.owasp.org/images/8/81/Esapi-datasheet.pdf&lt;br /&gt;
| presentation_link = http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt&lt;br /&gt;
| mailing_list_name = esapi-user&lt;br /&gt;
| links_url1 = http://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API#tab=Downloads&lt;br /&gt;
| links_name1 = General ESAPI information&lt;br /&gt;
| links_url2 = http://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API/Sub-Projects&lt;br /&gt;
| links_name2 = ESAPI/Sub-Projects&lt;br /&gt;
| project_road_map = &lt;br /&gt;
| project_health_status = &lt;br /&gt;
| current_release_name = &lt;br /&gt;
| current_release_date = &lt;br /&gt;
| current_release_download_link = &lt;br /&gt;
| current_release_rating = &lt;br /&gt;
| current_release_leader_name = &lt;br /&gt;
| current_release_leader_email = &lt;br /&gt;
| current_release_leader_username =&lt;br /&gt;
| current_release_details =  &lt;br /&gt;
| last_reviewed_release_name = &lt;br /&gt;
| last_reviewed_release_date = &lt;br /&gt;
| last_reviewed_release_download_link = &lt;br /&gt;
| last_reviewed_release_rating = &lt;br /&gt;
| last_reviewed_release_leader_name = &lt;br /&gt;
| last_reviewed_release_leader_email = &lt;br /&gt;
| last_reviewed_release_leader_username = &lt;br /&gt;
| old_release_name1 = &lt;br /&gt;
| old_release_date1 = &lt;br /&gt;
| old_release_download_link1 = &lt;br /&gt;
| old_release_name2 = &lt;br /&gt;
| old_release_date2 = &lt;br /&gt;
| old_release_download_link2 = &lt;br /&gt;
| old_release_name3 = &lt;br /&gt;
| old_release_date3 = &lt;br /&gt;
| old_release_download_link3 = &lt;br /&gt;
| old_release_name4 = &lt;br /&gt;
| old_release_date4 = &lt;br /&gt;
| old_release_download_link4 = &lt;br /&gt;
| old_release_name5 = &lt;br /&gt;
| old_release_date5 = &lt;br /&gt;
| old_release_download_link5 = &lt;br /&gt;
| last_GPC_update = 4/10/2009&lt;br /&gt;
| GPC_Notes = Empty template (ESAPI Global)&lt;br /&gt;
| project_home_page = :Category:OWASP_Enterprise_Security_API&lt;br /&gt;
| project_details_wiki_page = GPC_Project_Details/OWASP_Enterprise_Security_API&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Deserialization_Cheat_Sheet&amp;diff=227628</id>
		<title>Deserialization Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Deserialization_Cheat_Sheet&amp;diff=227628"/>
				<updated>2017-03-20T00:29:42Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Added new reference.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
= Introduction  = &lt;br /&gt;
&lt;br /&gt;
This article is focused on providing clear, actionable guidance for safely deserializing untrusted data in your applications.&lt;br /&gt;
&lt;br /&gt;
=What is Deserialization?=&lt;br /&gt;
&lt;br /&gt;
Serialization is the process of turning some object into a data format that can be restored later. People often serialize objects in order to save them to storage, or to send as part of communications. Deserialization is the reverse of that process -- taking data structured from some format, and rebuilding it into an object. Today, the most popular data format for serializing data is JSON. Before that, it was XML.&lt;br /&gt;
&lt;br /&gt;
However, many programming languages offer a native capability for serializing objects. These native formats usually offer more features than JSON or XML, including customizability of the serialization process. Unfortunately, the features of these native deserialization mechanisms can be repurposed for malicious effect when operating on untrusted data. Attacks against deserializers have been found to allow denial-of-service, access control, and remote code execution attacks.&lt;br /&gt;
&lt;br /&gt;
=Guidance on Deserializing Objects Safely=&lt;br /&gt;
The following language-specific guidance attempts to enumerate safe methodologies for deserializing data that can't be trusted. &lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
The following techniques are all good for preventing attacks against deserialization against [http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html Java's Serializable format].&lt;br /&gt;
&lt;br /&gt;
Implementation: In your code, override the ObjectInputStream#resolveClass() method to prevent arbitrary classes from being deserialized. This safe behavior can be wrapped in a library like SerialKiller.&lt;br /&gt;
Implementation: Use a safe replacement for the generic readObject() method as seen here. Note that this addresses &amp;quot;billion laughs&amp;quot; type attacks by checking input length and number of objects deserialized.&lt;br /&gt;
&lt;br /&gt;
===Prevent Data Leakage and Trusted Field Clobbering===&lt;br /&gt;
If there are members of the object graph that should never be controlled by end users during deserialization or exposed to users during serialization, they should be marked with [https://docs.oracle.com/javase/7/docs/platform/serialization/spec/serial-arch.html#6250 the &amp;lt;code&amp;gt;transient&amp;lt;/code&amp;gt; keyword].&lt;br /&gt;
&lt;br /&gt;
===Prevent Deserialization of Domain Objects===&lt;br /&gt;
Some of your application objects may be forced to implement Serializable due to their hierarchy. To guarantee that your application objects can't be deserialized, a &amp;lt;code&amp;gt;readObject()&amp;lt;/code&amp;gt; should be declared (with a &amp;lt;code&amp;gt;final&amp;lt;/code&amp;gt; modifier) which always throws an exception.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;private final void readObject(ObjectInputStream in) throws java.io.IOException {&lt;br /&gt;
   throw new java.io.IOException(&amp;quot;Cannot be deserialized&amp;quot;);&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Harden Your Own java.io.ObjectInputStream===&lt;br /&gt;
The &amp;lt;code&amp;gt;java.io.ObjectInputStream&amp;lt;/code&amp;gt; class is used to deserialize objects. It's possible to harden its behavior by subclassing it. This is the best solution if:&lt;br /&gt;
&lt;br /&gt;
* You can change the code that does the deserialization&lt;br /&gt;
* You know what classes you expect to deserialize&lt;br /&gt;
&lt;br /&gt;
The general idea is to override [http://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html#resolveClass(java.io.ObjectStreamClass) &amp;lt;code&amp;gt;ObjectInputStream.html#resolveClass()&amp;lt;/code&amp;gt;] in order to restrict which classes are allowed to be deserialized. Because this call happens before a &amp;lt;code&amp;gt;readObject()&amp;lt;/code&amp;gt; is called, you can be sure that no deserialization activity will occur unless the type is one that you wish to allow.  A simple example of this shown here, where the the LookAheadObjectInputStream class is guaranteed not to deserialize any other type besides the Bicycle class:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;public class LookAheadObjectInputStream extends ObjectInputStream {&lt;br /&gt;
&lt;br /&gt;
    public LookAheadObjectInputStream(InputStream inputStream) throws IOException {&lt;br /&gt;
        super(inputStream);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Only deserialize instances of our expected Bicycle class&lt;br /&gt;
     */&lt;br /&gt;
    @Override&lt;br /&gt;
    protected Class&amp;lt;?&amp;gt; resolveClass(ObjectStreamClass desc) throws IOException,&lt;br /&gt;
            ClassNotFoundException {&lt;br /&gt;
        if (!desc.getName().equals(Bicycle.class.getName())) {&lt;br /&gt;
            throw new InvalidClassException(&lt;br /&gt;
                    &amp;quot;Unauthorized deserialization attempt&amp;quot;,&lt;br /&gt;
                    desc.getName());&lt;br /&gt;
        }&lt;br /&gt;
        return super.resolveClass(desc);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More complete implementations of this approach have been proposed by various community members:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/ikkisoft/SerialKiller NibbleSec] - a library that allows whitelisting and blacklisting of classes that are allowed to be deserialized&lt;br /&gt;
* [http://www.contrastsecurity.com/security-influencers/java-serialization-vulnerability-threatens-millions-of-applications Contrast Security] - a utility method that allows whitelisting of classes to deserialize, as well as other thresholds.&lt;br /&gt;
* [https://www.ibm.com/developerworks/library/se-lookahead/ IBM] - the seminal protection, written years before the most devastating exploitation scenarios were envisioned.&lt;br /&gt;
&lt;br /&gt;
===Harden All java.io.ObjectInputStream Usage with an Agent===&lt;br /&gt;
As mentioned above, the &amp;lt;code&amp;gt;java.io.ObjectInputStream&amp;lt;/code&amp;gt; class is used to deserialize objects. It's possible to harden its behavior by subclassing it. However, if you don't own the code or can't wait for a patch, using an agent to weave in hardening to &amp;lt;code&amp;gt;java.io.ObjectInputStream&amp;lt;/code&amp;gt; is the best solution. ct)]&lt;br /&gt;
&lt;br /&gt;
Globally changing ObjectInputStream is only safe for blacklisting known malicious types, because it's not possible to know for all applications what the expected classes to be deserialized are. Fortunately, there are very few classes needed in the blacklist to be safe from all the known attack vectors, today. It's inevitable that more &amp;quot;gadget&amp;quot; classes will be discovered that can be abused. However, there is an incredible amount of vulnerable software&lt;br /&gt;
exposed today, in need of a fix. In some cases, &amp;quot;fixing&amp;quot; the vulnerability may involve re-architecting messaging systems and breaking backwards compatibility as developers move towards not accepting serialized objects.&lt;br /&gt;
&lt;br /&gt;
To enable these agents, simply add a new JVM parameter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-javaagent:name-of-agent.jar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Agents taking this approach have been released by various community members:&lt;br /&gt;
* [https://github.com/gocd/invoker-defender Invoker Defender by Go-CD]&lt;br /&gt;
* [https://github.com/Contrast-Security-OSS/contrast-rO0 rO0 by Contrast Security]&lt;br /&gt;
* [https://www.contrastsecurity.com Contrast Enterprise by Contrast Security (commercial product)]&lt;br /&gt;
&lt;br /&gt;
A similar, but less scalable approach would be to manually patch and boostrap your JVM's ObjectInputStream. Guidance on this approach is available [https://github.com/wsargent/paranoid-java-serialization here].&lt;br /&gt;
&lt;br /&gt;
= Language-Agnostic Methods for Deserializing Safely =&lt;br /&gt;
&lt;br /&gt;
==Using Alternative Data Formats==&lt;br /&gt;
A great reduction of risk is achieved by avoiding native deserialization formats. By switching to a pure data format like JSON or XML, you lessen the chance of custom deserialization logic being repurposed towards malicious ends.&lt;br /&gt;
&lt;br /&gt;
Many applications rely on a [https://en.wikipedia.org/wiki/Data_transfer_object data-transfer object pattern] that involves creating a separate domain of objects for the explicit purpose data transfer. Of course, it's still possible that the application will make security mistakes after a pure data object is parsed.&lt;br /&gt;
&lt;br /&gt;
==Only Deserialize Signed Data==&lt;br /&gt;
If the application knows before deserialization which messages will need to be processed, they could sign them as part of the serialization process. The application could then to choose not to deserialize any message which didn't have an authenticated signature.&lt;br /&gt;
&lt;br /&gt;
= References = &lt;br /&gt;
* [[Deserialization of untrusted data]]&lt;br /&gt;
* [http://www.slideshare.net/frohoff1/appseccali-2015-marshalling-pickles AppSecCali 2015 - Marshalling Pickles]&lt;br /&gt;
* [http://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/#websphere FoxGlove Security - Vulnerability Announcement]&lt;br /&gt;
* [https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet Java deserialization cheat sheet aimed at pen testers]&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
Arshan Dabirsiaghi - arshan [at] contrastsecurity dot org&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other Cheatsheets ==&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Using_the_Java_Cryptographic_Extensions&amp;diff=227603</id>
		<title>Using the Java Cryptographic Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Using_the_Java_Cryptographic_Extensions&amp;diff=227603"/>
				<updated>2017-03-18T01:13:23Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Updated FIXME comment.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{taggedDocument&lt;br /&gt;
| type=old&lt;br /&gt;
| comment=The page should be updated; see Discussion tab for some details.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Meta==&lt;br /&gt;
&lt;br /&gt;
The code included in this article has not been reviewed and should not be used without proper analysis. If you have reviewed the included code or portions of it, please post your findings back to the Java Project mailing list or contact the [[OWASP_Java_Project|OWASP Java and JVM Project]] team.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Java Cryptographic Extensions (JCE) is a set of Java API's which provides cryptographic services such as encryption, secret Key Generation, Message Authentication code and Key Agreement. The ciphers supported by JCE include symmetric, asymmetric, block and stream ciphers. JCE was an optional package to JDK v 1.2.x and 1.3.x. JCE has been integrated into JDK v1.4.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JCE API's are implemented by Cryptographic Service Providers. Each of these cryptographic service providers implements the Service Provider Interface which specifies the functionalities which needs to be implemented by the service providers. Programmers can plugin any Service Providers for performing cryptographic functionalities provided by JCE. J2SE comes with a default provider named SunJCE.&lt;br /&gt;
&lt;br /&gt;
===Symmetric Encryption Algorithms provided by SunJCE===&lt;br /&gt;
# DES  - default keylength of 56 bits&lt;br /&gt;
# AES - &lt;br /&gt;
# RC2, RC4 and RC5&lt;br /&gt;
# IDEA&lt;br /&gt;
# Triple DES – default keylength 112 bits&lt;br /&gt;
# Blowfish – default keylength 56 bits&lt;br /&gt;
# PBEWithMD5AndDES&lt;br /&gt;
# PBEWithHmacSHA1AndDESede&lt;br /&gt;
# DES ede&lt;br /&gt;
&lt;br /&gt;
===Modes of Encryption===&lt;br /&gt;
# ECB&lt;br /&gt;
# CBC&lt;br /&gt;
# CFB&lt;br /&gt;
# OFB&lt;br /&gt;
# PCBC&lt;br /&gt;
&lt;br /&gt;
===Asymmetric Encryption Algorithms implemented by SunJCE===&lt;br /&gt;
# RSA&lt;br /&gt;
# Diffie-Hellman – default keylength 1024 bits&lt;br /&gt;
&lt;br /&gt;
===Hashing / Message Digest Algorithms implemented by SunJCE===&lt;br /&gt;
# MD5 – default size 64 bytes&lt;br /&gt;
# SHA1 - default size 64 bytes&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
===SecureRandom===&lt;br /&gt;
SecureRandom class is used to generate a cryptographically strong pseudo random number by using a PRNG Algorithm.&lt;br /&gt;
The following are the advantages of using SecureRandom over Random.&lt;br /&gt;
1. SecureRandom produces a cryptographically strong pseudo random number generator. &lt;br /&gt;
2. SecureRandom produces cryptographically strong sequences as described in &lt;br /&gt;
[http://www.ietf.org/rfc/rfc1750.txt RFC 1750: Randomness Recommendations for Security]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package org.owasp.java.crypto;&lt;br /&gt;
&lt;br /&gt;
import java.security.SecureRandom;&lt;br /&gt;
import java.security.NoSuchAlgorithmException;&lt;br /&gt;
&lt;br /&gt;
import sun.misc.BASE64Encoder;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @author Joe Prasanna Kumar&lt;br /&gt;
 * This program provides the functionality for Generating a Secure Random Number.&lt;br /&gt;
 *  &lt;br /&gt;
 * There are 2 ways to generate a  Random number through SecureRandom.&lt;br /&gt;
 * 1. By calling nextBytes method to generate Random Bytes&lt;br /&gt;
 * 2. Using setSeed(byte[]) to reseed a Random object&lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class SecureRandomGen {&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * @param args&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		try {&lt;br /&gt;
	        // Initialize a secure random number generator&lt;br /&gt;
	        SecureRandom secureRandom = SecureRandom.getInstance(&amp;quot;SHA1PRNG&amp;quot;);&lt;br /&gt;
	    &lt;br /&gt;
	        // Method 1 - Calling nextBytes method to generate Random Bytes&lt;br /&gt;
	        byte[] bytes = new byte[512];&lt;br /&gt;
	        secureRandom.nextBytes(bytes); &lt;br /&gt;
	        &lt;br /&gt;
	        // Printing the SecureRandom number by calling secureRandom.nextDouble()&lt;br /&gt;
	        System.out.println(&amp;quot; Secure Random # generated by calling nextBytes() is &amp;quot; + secureRandom.nextDouble());&lt;br /&gt;
	    &lt;br /&gt;
	        // Method 2 - Using setSeed(byte[]) to reseed a Random object&lt;br /&gt;
	        int seedByteCount = 10;&lt;br /&gt;
	        byte[] seed = secureRandom.generateSeed(seedByteCount);   &lt;br /&gt;
	        &lt;br /&gt;
	        // TBR System.out.println(&amp;quot; Seed value is &amp;quot; + new BASE64Encoder().encode(seed));&lt;br /&gt;
	    &lt;br /&gt;
	        secureRandom.setSeed(seed);&lt;br /&gt;
	        &lt;br /&gt;
	        System.out.println(&amp;quot; Secure Random # generated using setSeed(byte[]) is  &amp;quot; + secureRandom.nextDouble());&lt;br /&gt;
	        &lt;br /&gt;
	    } catch (NoSuchAlgorithmException noSuchAlgo)&lt;br /&gt;
		{&lt;br /&gt;
			System.out.println(&amp;quot; No Such Algorithm exists &amp;quot; + noSuchAlgo);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AES Encryption and Decryption ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package org.owasp.java.crypto;&lt;br /&gt;
&lt;br /&gt;
import java.security.InvalidAlgorithmParameterException;&lt;br /&gt;
import java.security.InvalidKeyException;&lt;br /&gt;
import java.security.NoSuchAlgorithmException;&lt;br /&gt;
import java.security.SecureRandom;&lt;br /&gt;
&lt;br /&gt;
import javax.crypto.BadPaddingException;&lt;br /&gt;
import javax.crypto.Cipher;&lt;br /&gt;
import javax.crypto.IllegalBlockSizeException;&lt;br /&gt;
import javax.crypto.KeyGenerator;&lt;br /&gt;
import javax.crypto.NoSuchPaddingException;&lt;br /&gt;
import javax.crypto.SecretKey;&lt;br /&gt;
import javax.crypto.spec.IvParameterSpec;&lt;br /&gt;
&lt;br /&gt;
import sun.misc.BASE64Encoder;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @author Joe Prasanna Kumar&lt;br /&gt;
 * This program provides the following cryptographic functionalities&lt;br /&gt;
 * 1. Encryption using AES&lt;br /&gt;
 * 2. Decryption using AES&lt;br /&gt;
 * &lt;br /&gt;
 * High Level Algorithm :&lt;br /&gt;
 * 1. Generate a AES key (specify the Key size during this phase) &lt;br /&gt;
 * 2. Create the Cipher &lt;br /&gt;
 * 3. To Encrypt : Initialize the Cipher for Encryption&lt;br /&gt;
 * 4. To Decrypt : Initialize the Cipher for Decryption&lt;br /&gt;
 * &lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
public class AES {&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		&lt;br /&gt;
		String strDataToEncrypt = new String();&lt;br /&gt;
		String strCipherText = new String();&lt;br /&gt;
		String strDecryptedText = new String();&lt;br /&gt;
&lt;br /&gt;
		try {&lt;br /&gt;
			/**&lt;br /&gt;
			 * Step 1. Generate an AES key using KeyGenerator Initialize the&lt;br /&gt;
			 * keysize to 128 bits (16 bytes)&lt;br /&gt;
			 * &lt;br /&gt;
			 */&lt;br /&gt;
			KeyGenerator keyGen = KeyGenerator.getInstance(&amp;quot;AES&amp;quot;);&lt;br /&gt;
			keyGen.init(128);&lt;br /&gt;
			SecretKey secretKey = keyGen.generateKey();&lt;br /&gt;
&lt;br /&gt;
			/**&lt;br /&gt;
			 * Step 2. Generate an Initialization Vector (IV) &lt;br /&gt;
			 * 		a. Use SecureRandom to generate random bits&lt;br /&gt;
			 * 		   The size of the IV matches the blocksize of the cipher (128 bits for AES)&lt;br /&gt;
			 * 		b. Construct the appropriate IvParameterSpec object for the data to pass to Cipher's init() method&lt;br /&gt;
			 */&lt;br /&gt;
&lt;br /&gt;
			final int AES_KEYLENGTH = 128;	// change this as desired for the security level you want&lt;br /&gt;
			byte[] iv = new byte[AES_KEYLENGTH / 8];	// Save the IV bytes or send it in plaintext with the encrypted data so you can decrypt the data later&lt;br /&gt;
			SecureRandom prng = new SecureRandom();&lt;br /&gt;
			prng.nextBytes(iv);&lt;br /&gt;
			&lt;br /&gt;
			/**&lt;br /&gt;
			 * Step 3. Create a Cipher by specifying the following parameters&lt;br /&gt;
			 * 		a. Algorithm name - here it is AES &lt;br /&gt;
			 * 		b. Mode - here it is CBC mode &lt;br /&gt;
			 * 		c. Padding - e.g. PKCS7 or PKCS5&lt;br /&gt;
			 */&lt;br /&gt;
&lt;br /&gt;
			Cipher aesCipherForEncryption = Cipher.getInstance(&amp;quot;AES/CBC/PKCS7PADDING&amp;quot;); // Must specify the mode explicitly as most JCE providers default to ECB mode!!&lt;br /&gt;
&lt;br /&gt;
			/**&lt;br /&gt;
			 * Step 4. Initialize the Cipher for Encryption&lt;br /&gt;
			 */&lt;br /&gt;
&lt;br /&gt;
			aesCipherForEncryption.init(Cipher.ENCRYPT_MODE, secretKey, &lt;br /&gt;
					new IvParameterSpec(iv));&lt;br /&gt;
&lt;br /&gt;
			/**&lt;br /&gt;
			 * Step 5. Encrypt the Data &lt;br /&gt;
			 * 		a. Declare / Initialize the Data. Here the data is of type String &lt;br /&gt;
			 * 		b. Convert the Input Text to Bytes &lt;br /&gt;
			 * 		c. Encrypt the bytes using doFinal method&lt;br /&gt;
			 */&lt;br /&gt;
			strDataToEncrypt = &amp;quot;Hello World of Encryption using AES &amp;quot;;&lt;br /&gt;
			byte[] byteDataToEncrypt = strDataToEncrypt.getBytes();&lt;br /&gt;
			byte[] byteCipherText = aesCipherForEncryption&lt;br /&gt;
					.doFinal(byteDataToEncrypt);&lt;br /&gt;
			// b64 is done differently on Android&lt;br /&gt;
			strCipherText = new BASE64Encoder().encode(byteCipherText);&lt;br /&gt;
			System.out.println(&amp;quot;Cipher Text generated using AES is &amp;quot;&lt;br /&gt;
					+ strCipherText);&lt;br /&gt;
&lt;br /&gt;
			/**&lt;br /&gt;
			 * Step 6. Decrypt the Data &lt;br /&gt;
			 * 		a. Initialize a new instance of Cipher for Decryption (normally don't reuse the same object)&lt;br /&gt;
			 * 		   Be sure to obtain the same IV bytes for CBC mode.&lt;br /&gt;
			 * 		b. Decrypt the cipher bytes using doFinal method&lt;br /&gt;
			 */&lt;br /&gt;
&lt;br /&gt;
			Cipher aesCipherForDecryption = Cipher.getInstance(&amp;quot;AES/CBC/PKCS7PADDING&amp;quot;); // Must specify the mode explicitly as most JCE providers default to ECB mode!!				&lt;br /&gt;
&lt;br /&gt;
			aesCipherForDecryption.init(Cipher.DECRYPT_MODE, secretKey,&lt;br /&gt;
					new IvParameterSpec(iv));&lt;br /&gt;
			byte[] byteDecryptedText = aesCipherForDecryption&lt;br /&gt;
					.doFinal(byteCipherText);&lt;br /&gt;
			strDecryptedText = new String(byteDecryptedText);&lt;br /&gt;
			System.out&lt;br /&gt;
					.println(&amp;quot; Decrypted Text message is &amp;quot; + strDecryptedText);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		catch (NoSuchAlgorithmException noSuchAlgo) {&lt;br /&gt;
			System.out.println(&amp;quot; No Such Algorithm exists &amp;quot; + noSuchAlgo);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		catch (NoSuchPaddingException noSuchPad) {&lt;br /&gt;
			System.out.println(&amp;quot; No Such Padding exists &amp;quot; + noSuchPad);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		catch (InvalidKeyException invalidKey) {&lt;br /&gt;
			System.out.println(&amp;quot; Invalid Key &amp;quot; + invalidKey);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		catch (BadPaddingException badPadding) {&lt;br /&gt;
			System.out.println(&amp;quot; Bad Padding &amp;quot; + badPadding);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		catch (IllegalBlockSizeException illegalBlockSize) {&lt;br /&gt;
			System.out.println(&amp;quot; Illegal Block Size &amp;quot; + illegalBlockSize);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		catch (InvalidAlgorithmParameterException invalidParam) {&lt;br /&gt;
			System.out.println(&amp;quot; Invalid Parameter &amp;quot; + invalidParam);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Des Encryption and Decryption ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package org.owasp.crypto;&lt;br /&gt;
&lt;br /&gt;
import javax.crypto.KeyGenerator;&lt;br /&gt;
import javax.crypto.SecretKey;&lt;br /&gt;
import javax.crypto.Cipher;&lt;br /&gt;
&lt;br /&gt;
import java.security.NoSuchAlgorithmException;&lt;br /&gt;
import java.security.InvalidKeyException;&lt;br /&gt;
import java.security.InvalidAlgorithmParameterException;&lt;br /&gt;
import javax.crypto.NoSuchPaddingException;&lt;br /&gt;
import javax.crypto.BadPaddingException;&lt;br /&gt;
import javax.crypto.IllegalBlockSizeException;&lt;br /&gt;
&lt;br /&gt;
import sun.misc.BASE64Encoder;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @author Joe Prasanna Kumar&lt;br /&gt;
 * This program provides the following cryptographic functionalities&lt;br /&gt;
 * 1. Encryption using DES&lt;br /&gt;
 * 2. Decryption using DES&lt;br /&gt;
 * &lt;br /&gt;
 * The following modes of DES encryption are supported by SUNJce provider &lt;br /&gt;
 * 1. ECB (Electronic code Book) - Every plaintext block is encrypted separately &lt;br /&gt;
 * 2. CBC (Cipher Block Chaining) - Every plaintext block is XORed with the previous ciphertext block&lt;br /&gt;
 * 3. PCBC (Propogating Cipher Block Chaining) - &lt;br /&gt;
 * 4. CFB (Cipher Feedback Mode) - The previous ciphertext block is encrypted and this enciphered block is XORed with the plaintext block to produce the corresponding ciphertext block &lt;br /&gt;
 * 5. OFB (Output Feedback Mode) - &lt;br /&gt;
 *&lt;br /&gt;
 *	High Level Algorithm :&lt;br /&gt;
 * 1. Generate a DES key&lt;br /&gt;
 * 2. Create the Cipher (Specify the Mode and Padding)&lt;br /&gt;
 * 3. To Encrypt : Initialize the Cipher for Encryption&lt;br /&gt;
 * 4. To Decrypt : Initialize the Cipher for Decryption&lt;br /&gt;
 * &lt;br /&gt;
 * Need for Padding :&lt;br /&gt;
 * Block ciphers operates on data blocks on fixed size n. &lt;br /&gt;
 * Since the data to be encrypted might not always be a multiple of n, the remainder of the bits are padded.&lt;br /&gt;
 * PKCS#5 Padding is what will be used in this program &lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
public class DES {&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		&lt;br /&gt;
		String strDataToEncrypt = new String();&lt;br /&gt;
		String strCipherText = new String();&lt;br /&gt;
		String strDecryptedText = new String();&lt;br /&gt;
		&lt;br /&gt;
		try{&lt;br /&gt;
		/**&lt;br /&gt;
		 *  Step 1. Generate a DES key using KeyGenerator &lt;br /&gt;
		 * &lt;br /&gt;
		 */&lt;br /&gt;
		KeyGenerator keyGen = KeyGenerator.getInstance(&amp;quot;DES&amp;quot;);&lt;br /&gt;
		SecretKey secretKey = keyGen.generateKey();&lt;br /&gt;
		&lt;br /&gt;
		/**&lt;br /&gt;
		 *  Step2. Create a Cipher by specifying the following parameters&lt;br /&gt;
		 * 			a. Algorithm name - here it is DES&lt;br /&gt;
		 * 			b. Mode - here it is CBC&lt;br /&gt;
		 * 			c. Padding - PKCS5Padding&lt;br /&gt;
		 */&lt;br /&gt;
		&lt;br /&gt;
		Cipher desCipher = Cipher.getInstance(&amp;quot;DES/CBC/PKCS5Padding&amp;quot;); /* Must specify the mode explicitly as most JCE providers default to ECB mode!! */&lt;br /&gt;
		&lt;br /&gt;
		/**&lt;br /&gt;
		 *  Step 3. Initialize the Cipher for Encryption &lt;br /&gt;
		 */&lt;br /&gt;
		&lt;br /&gt;
		desCipher.init(Cipher.ENCRYPT_MODE,secretKey);&lt;br /&gt;
		&lt;br /&gt;
		/**&lt;br /&gt;
		 *  Step 4. Encrypt the Data&lt;br /&gt;
		 *  		1. Declare / Initialize the Data. Here the data is of type String&lt;br /&gt;
		 *  		2. Convert the Input Text to Bytes&lt;br /&gt;
		 *  		3. Encrypt the bytes using doFinal method &lt;br /&gt;
		 */&lt;br /&gt;
		strDataToEncrypt = &amp;quot;Hello World of Encryption using DES &amp;quot;;&lt;br /&gt;
		byte[] byteDataToEncrypt = strDataToEncrypt.getBytes();&lt;br /&gt;
		byte[] byteCipherText = desCipher.doFinal(byteDataToEncrypt); &lt;br /&gt;
		strCipherText = new BASE64Encoder().encode(byteCipherText);&lt;br /&gt;
		System.out.println(&amp;quot;Cipher Text generated using DES with CBC mode and PKCS5 Padding is &amp;quot; +strCipherText);&lt;br /&gt;
		&lt;br /&gt;
		/**&lt;br /&gt;
		 *  Step 5. Decrypt the Data&lt;br /&gt;
		 *  		1. Initialize the Cipher for Decryption &lt;br /&gt;
		 *  		2. Decrypt the cipher bytes using doFinal method &lt;br /&gt;
		 */&lt;br /&gt;
		desCipher.init(Cipher.DECRYPT_MODE,secretKey,desCipher.getParameters());&lt;br /&gt;
		 //desCipher.init(Cipher.DECRYPT_MODE,secretKey);&lt;br /&gt;
		byte[] byteDecryptedText = desCipher.doFinal(byteCipherText);&lt;br /&gt;
		strDecryptedText = new String(byteDecryptedText);&lt;br /&gt;
		System.out.println(&amp;quot; Decrypted Text message is &amp;quot; +strDecryptedText);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		catch (NoSuchAlgorithmException noSuchAlgo)&lt;br /&gt;
		{&lt;br /&gt;
			System.out.println(&amp;quot; No Such Algorithm exists &amp;quot; + noSuchAlgo);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
			catch (NoSuchPaddingException noSuchPad)&lt;br /&gt;
			{&lt;br /&gt;
				System.out.println(&amp;quot; No Such Padding exists &amp;quot; + noSuchPad);&lt;br /&gt;
			}&lt;br /&gt;
		&lt;br /&gt;
				catch (InvalidKeyException invalidKey)&lt;br /&gt;
				{&lt;br /&gt;
					System.out.println(&amp;quot; Invalid Key &amp;quot; + invalidKey);&lt;br /&gt;
				}&lt;br /&gt;
				&lt;br /&gt;
				catch (BadPaddingException badPadding)&lt;br /&gt;
				{&lt;br /&gt;
					System.out.println(&amp;quot; Bad Padding &amp;quot; + badPadding);&lt;br /&gt;
				}&lt;br /&gt;
				&lt;br /&gt;
				catch (IllegalBlockSizeException illegalBlockSize)&lt;br /&gt;
				{&lt;br /&gt;
					System.out.println(&amp;quot; Illegal Block Size &amp;quot; + illegalBlockSize);&lt;br /&gt;
				}&lt;br /&gt;
				&lt;br /&gt;
				catch (InvalidAlgorithmParameterException invalidParam)&lt;br /&gt;
				{&lt;br /&gt;
					System.out.println(&amp;quot; Invalid Parameter &amp;quot; + invalidParam);&lt;br /&gt;
				}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:Using_the_Java_Cryptographic_Extensions&amp;diff=227602</id>
		<title>Talk:Using the Java Cryptographic Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:Using_the_Java_Cryptographic_Extensions&amp;diff=227602"/>
				<updated>2017-03-18T01:06:56Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Some needed fixes to OWASP wiki page &amp;quot;Using Java Cryptographic Extensions&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;While performing AES encryption using SunJCE provider, I did not see usuage of the mode in the program provided. &lt;br /&gt;
I have few questions: &lt;br /&gt;
Do we really need to specify the mode when using AES? &lt;br /&gt;
Does PaddingException happen with AES and how do we prevent the PaddingException? &lt;br /&gt;
&lt;br /&gt;
Please let me know.&lt;br /&gt;
&lt;br /&gt;
== AES mode on this page is insecure ==&lt;br /&gt;
&lt;br /&gt;
The example for AES did not specify a mode which results in the default of ECB mode in most JCE providers!!  I fixed that line and commented, but this will need some other work as it is not providing any Initialization Vector (IV) to the AES encryption since it was using ECB mode originally (bad).  Will try to fix this with a working example.&lt;br /&gt;
&lt;br /&gt;
== Some changes that need to be made ==&lt;br /&gt;
[Note: Originally shared by me with Jim Manico in a private email dated 7/25/2016.]&lt;br /&gt;
&lt;br /&gt;
Major things wrong with this wiki page:&lt;br /&gt;
&lt;br /&gt;
1) IV size does NOT depend on key size, but rather cipher block size&lt;br /&gt;
&lt;br /&gt;
Minimally, need to change lines that say:&lt;br /&gt;
        final int AES_KEYLENGTH = 128;  // change this as desired for the security level you want&lt;br /&gt;
        byte[] iv = new byte[AES_KEYLENGTH / 8];        // Save the IV bytes or send it in plaintext with the encrypted data so you can decrypt the data later&lt;br /&gt;
to&lt;br /&gt;
        final int AES_BLOCKSIZE = 128                   // AES cipher block size, in bits&lt;br /&gt;
        byte[] iv = new byte[AES_BLOCKSIZE / 8];        // Save the IV bytes or send it in plaintext with the encrypted data so you can decrypt the data later&lt;br /&gt;
so that is not implied. Because if user wanted to use 256-bit AES key, the IV should still be 16 bytes, not 32 bytes.&lt;br /&gt;
&lt;br /&gt;
Ideally, we should replace with a call Cipher.getBlockSize(), but that requires reordering of the steps after&lt;br /&gt;
the call to Cipher.getInstance().&lt;br /&gt;
&lt;br /&gt;
2) Also using PKCS7PADDING, which is not valid in Java so this would fail. Change to PKCS5Padding.&lt;br /&gt;
    (PKCS7 padding is actually technically the correct padding name, but Java blew it and called it&lt;br /&gt;
    PKCS5 padding. Technically, PKCS5 padding only applies to ciphers with a with a cipher block&lt;br /&gt;
   size of 64-bits, not 128-bits, but both PKCS5 and PKCS7 padding act identically for block sizes&lt;br /&gt;
   &amp;lt;= 255 bits.)&lt;br /&gt;
&lt;br /&gt;
Best is to rewrite the entire thing and use CCM which isn't prone to padding oracle attacks, but I may not&lt;br /&gt;
have time to do that.&lt;br /&gt;
&lt;br /&gt;
3) Not portable across OS;. Should use getBytes(&amp;quot;UTF8&amp;quot;) instead of just getBytes(). Doesn't really matter for ASCII&lt;br /&gt;
   strings like the &amp;quot;Hello world...&amp;quot; examples here, but can matter if encrypting binary data.&lt;br /&gt;
&lt;br /&gt;
4) Example foolishly assumes that the IV doesn't need to be passed back and forth. In this particular case,&lt;br /&gt;
   it doesn't, but in general it will. Usually IV is prepended to raw ciphertext and that is passed around. But&lt;br /&gt;
  because of examples like this where that is not shown, I've seen an awful lot (too many!) shortcuts of&lt;br /&gt;
  people just hard-coding a fixed IV to use instead.&lt;br /&gt;
&lt;br /&gt;
-kevin&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=225970</id>
		<title>Category:OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=225970"/>
				<updated>2017-02-04T01:04:17Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Change link for 'ESAPI for JavaScript' from obsolete Google Code link to GitHub link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Home  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design: &lt;br /&gt;
&lt;br /&gt;
*'''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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]. &lt;br /&gt;
&lt;br /&gt;
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:kevin.w.wall@gmail.com here] and [mailto:xeno6696@gmail.com here].&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Let's talk here  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-bulb.jpg]]'''ESAPI Communities''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-dev esapi-dev mailing list (this is the main list)] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-user esapi-user mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-php esapi-php mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-python esapi-python mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-ruby esapi-ruby mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-swingset esapi-swingset mailing list]&lt;br /&gt;
*[http://groups.google.com/group/cfesapi esapi-coldfusion mailing list]&lt;br /&gt;
&lt;br /&gt;
IRC Chat&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*Server: irc.freenode.net&lt;br /&gt;
*Channel: #esapi&lt;br /&gt;
&lt;br /&gt;
== Got developer cycles?  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-waiting.JPG]]'''ESAPI Coding''' &lt;br /&gt;
&lt;br /&gt;
The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles. &lt;br /&gt;
 &lt;br /&gt;
*ESAPI for other languages developer onboarding instructions -- coming soon!&lt;br /&gt;
&lt;br /&gt;
== Project Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The ESAPI project is sponsored by {{MemberLinks|link=http://www.aspectsecurity.com|logo=Aspect_logo_owasp.jpg}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Downloads  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|2400x160px|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step1.jpg]]'''1. About ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*Data sheet([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF],[http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word]) &lt;br /&gt;
*Project presentation ([http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt PowerPoint]) &lt;br /&gt;
*Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step2.jpg]]'''2. Get ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*[https://search.maven.org/#search|ga|1|esapi ESAPI for Java Downloads (binaries)] &lt;br /&gt;
*[https://github.com/ESAPI/esapi-java-legacy ESAPI for Java (source)]&amp;lt;br&amp;gt;&lt;br /&gt;
*{{#switchtablink:.NET|ESAPI for .NET}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Classic ASP|ESAPI for Classic ASP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:PHP|ESAPI for PHP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:ColdFusion.2FCFML|ESAPI for ColdFusion &amp;amp; CFML}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Python|ESAPI for Python}}&amp;lt;br&amp;gt; &lt;br /&gt;
*[https://github.com/ESAPI/owasp-esapi-js ESAPI for Javascript]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step3.jpg]]'''3. Learn ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*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)] &lt;br /&gt;
*The [[ESAPI Swingset|ESAPI Swingset]] sample application demonstrates how to leverage ESAPI to protect a web application. &lt;br /&gt;
*LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF]) &lt;br /&gt;
*ESAPI for Java interface documentation ([http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 JavaDocs]) &lt;br /&gt;
*ESAPI for PHP interface documentation ([http://owasp-esapi-php.googlecode.com/svn/trunk_doc/latest/index.html phpdoc])&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What I did with ESAPI  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --[mailto:jeff.williams@owasp.org Jeff]&lt;br /&gt;
&lt;br /&gt;
*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 &amp;quot;Adapter&amp;quot; control to wrap calls to the other ESAPI controls. --[mailto:mike.boberski@owasp.org Mike]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java’s &amp;quot;Logger&amp;quot; control to make it easier for a US Government customer to meet C&amp;amp;amp;A requirements. --[mailto:dave.wichers@owasp.org Dave]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --[mailto:jim.manico@owasp.org Jim]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java's &amp;quot;Authenticator&amp;quot; to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific &amp;quot;Adapter&amp;quot; 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]&lt;br /&gt;
&lt;br /&gt;
*I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --[mailto:yairr@liveperson.com Yair]&lt;br /&gt;
&lt;br /&gt;
*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]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Should I use ESAPI?  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[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]&lt;br /&gt;
&lt;br /&gt;
Or, specifically, &amp;quot;Should I use ESAPI for Java?&amp;quot; since that's the only one run by OWASP that still shows any semblance of life.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Should I use ESAPI?&amp;quot; probably is &amp;quot;yes&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Output encoding: [https://www.owasp.org/index.php/OWASP_Java_Encoder_Project OWASP Java Encoder Project]&lt;br /&gt;
* General HTML sanitization: [https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project OWASP Java HTML Sanitizer]&lt;br /&gt;
* Validation: [http://beanvalidation.org/ JSR-303/JSR-349 Bean Validation]&lt;br /&gt;
*Strong cryptography: [https://github.com/google/keyczar Keyczar]&lt;br /&gt;
* Authentication / authorization: [https://shiro.apache.org/ Apache Shiro]&lt;br /&gt;
* 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]&lt;br /&gt;
&lt;br /&gt;
Note that it not the suggestion 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.&lt;br /&gt;
&lt;br /&gt;
-[mailto:kevin.w.wall@gmail.com kevin wall]&lt;br /&gt;
&lt;br /&gt;
= Glossary  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:Asvs-letters.jpg]]'''ESAPI Terminology''' &lt;br /&gt;
&lt;br /&gt;
*'''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. &lt;br /&gt;
*'''built-in singleton design pattern''' - The &amp;quot;built-in&amp;quot; singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact. &lt;br /&gt;
*'''codec''' - ESAPI encoder/decoder reference implementations. &lt;br /&gt;
*'''core''' - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core. &lt;br /&gt;
*'''exception''' - ESAPI exception reference implementations. &lt;br /&gt;
*'''extended factory design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''extended singleton design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''filter''' - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''locator''' - The ESAPI security control interfaces include an &amp;quot;ESAPI&amp;quot; class that is commonly referred to as a &amp;quot;locator&amp;quot; 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). &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Java EE  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Details  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OWASP Builders}}&lt;br /&gt;
[[Category:Popular]]&lt;br /&gt;
[[Category:SAMM-SA-3]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Kevin_W._Wall&amp;diff=224208</id>
		<title>User:Kevin W. Wall</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Kevin_W._Wall&amp;diff=224208"/>
				<updated>2016-12-17T03:44:17Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Involved in OWASP ESAPI for Java EE project, starting in July, 2009.  ===&lt;br /&gt;
&lt;br /&gt;
*Completely rewrote the [[ESAPI]]&amp;amp;nbsp;2.0 symmetric encryption&amp;lt;br&amp;gt; &lt;br /&gt;
*General ESAPI 2.0 code clean-up and bug fixes.&lt;br /&gt;
*Project owner of ESAPI for Java prohect&lt;br /&gt;
&lt;br /&gt;
=== Involved in OWASP ESAPI for C++ (since May, 2011) ===&lt;br /&gt;
* Troublesome meddler (aka, tor-mentor)&lt;br /&gt;
* Working on porting ESAPI 2.0's crypto to C++ along with Jeff Walton.&lt;br /&gt;
* I swore I'd never do C++ again; I must be out of my freakin' mind.&lt;br /&gt;
&lt;br /&gt;
=== Day job  ===&lt;br /&gt;
* Currently Information Security Engineer at Wells Fargo, part of Security Code Review team&lt;br /&gt;
* Formerly Staff Security Engineer at CenturyLink (f/k/a Qwest)&lt;br /&gt;
* Formerly tech lead of Application Security Team at Qwest for 11 years&lt;br /&gt;
* Full-time husband and father&lt;br /&gt;
&lt;br /&gt;
=== Memberships and certifications ===&lt;br /&gt;
* Member of ACM, IEEE Computer Society, OWASP&lt;br /&gt;
* ISC^2 CISSP&lt;br /&gt;
* GIAC Certified Web Application Security Defender (GWEB)&lt;br /&gt;
&lt;br /&gt;
=== Other  ===&lt;br /&gt;
&lt;br /&gt;
* Active participant in following mailing lists:&amp;amp;nbsp;Security Coding, Web Application Security, IPCop-Users, OWASP-ESAPI, cryptography &lt;br /&gt;
* Interests include reading, soccer (futbol), cryptography, and computer security&lt;br /&gt;
* Blog: [[http://off-the-wall-security.blogspot.com/ Off-the-Wall Security]]&lt;br /&gt;
* Twitter: @KevinWWall&lt;br /&gt;
* My OWASP Wiki contributions: [[Special:Contributions/Kevin_W._Wall]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=224207</id>
		<title>GPC Project Details/OWASP Enterprise Security API Java EE Version</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=224207"/>
				<updated>2016-12-17T03:39:20Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Replaced Chris Schmidt as project co-lead with Matt Seil, who is stepping in to replace him. Changed leader_email to ESAPI Dev mailing list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;OWASP Project Identification Tab&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| project_name = OWASP ESAPI for Java EE&lt;br /&gt;
| project_description = This is the Java EE language version of OWASP ESAPI. The ESAPI for Java EE is the baseline ESAPI design.&lt;br /&gt;
* The current release of this project '''is''' suitable for production use&lt;br /&gt;
* The ESAPI 2.x branch supports Java 1.5 and above. You may view the Javadocs here http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
* The ESAPI 1.4 branch supports Java 1.4 and above. Complete information on latest 1.4 branch dependencies can be found here http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/site/dependencies.html&lt;br /&gt;
* The OWASP AppSensor-ESAPI integration guide is out! [[AppSensor_GettingStarted]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- We are not keeping this up to date....&lt;br /&gt;
'''''Latest News:'''''&lt;br /&gt;
&amp;lt;twitter&amp;gt;90496975&amp;lt;/twitter&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| project_license = [http://en.wikipedia.org/wiki/BSD_license BSD license]&lt;br /&gt;
| leader_name = Kevin Wall &amp;amp; Matt Seil&lt;br /&gt;
| leader_email = esapi-dev@lists.owasp.org&lt;br /&gt;
| leader_username = Kevin_W._Wall&lt;br /&gt;
| past_leaders_special_contributions = Jeff_Williams (project creator)&lt;br /&gt;
| maintainer_name = ESAPI-Dev mailing list&lt;br /&gt;
| maintainer_email = esapi-dev@lists.owasp.org&lt;br /&gt;
| maintainer_username =&lt;br /&gt;
| contributor_name1 = Kevin W. Wall&lt;br /&gt;
| contributor_email1 = kevin.w.wall@gmail.com&lt;br /&gt;
| contributor_username1 = Kevin_W._Wall&lt;br /&gt;
| contributor_name2 = Matt Seil&lt;br /&gt;
| contributor_email2 = xeno6696@gmail.com@gmail.com&lt;br /&gt;
| contributor_username2 = Matt Seil&lt;br /&gt;
| contributor_name3 = Jeff Williams&lt;br /&gt;
| contributor_email3 = Jeff.Williams@owasp.org&lt;br /&gt;
| contributor_username3 = Jeff_Williams&lt;br /&gt;
| contributor_name4 = Jim Manico&lt;br /&gt;
| contributor_email4 = Jim.Manico@owasp.org&lt;br /&gt;
| contributor_username4 = Jmanico&lt;br /&gt;
| contributor_name5 = Chris Schmidt&lt;br /&gt;
| contributor_email5 = chrisisbeef@gmail.com&lt;br /&gt;
| contributor_username5 = Chris_Schmidt&lt;br /&gt;
| contributor_name6 = See &amp;quot;Members&amp;quot; under https://code.google.com/p/owasp-esapi-java/ for list of other contributors&lt;br /&gt;
| contributor_email6 = &lt;br /&gt;
| contributor_username6 = &lt;br /&gt;
| contributor_name7 = &lt;br /&gt;
| contributor_email7 = &lt;br /&gt;
| contributor_username7 = &lt;br /&gt;
| contributor_name8 = &lt;br /&gt;
| contributor_email8 = &lt;br /&gt;
| contributor_username8 = &lt;br /&gt;
| contributor_name9 = &lt;br /&gt;
| contributor_email9 = &lt;br /&gt;
| contributor_username9 = &lt;br /&gt;
| contributor_name10 = &lt;br /&gt;
| contributor_email10 = &lt;br /&gt;
| contributor_username10 =  &lt;br /&gt;
| pamphlet_link = &lt;br /&gt;
| presentation_link = &lt;br /&gt;
| mailing_list_name = esapi-dev&lt;br /&gt;
| links_url1 = https://search.maven.org/#search%7Cga%7C1%7Corg.owasp.esapi&lt;br /&gt;
| links_name1 = ESAPI 2.x Downloads&lt;br /&gt;
| links_url2 = https://code.google.com/p/owasp-esapi-java/downloads/list&lt;br /&gt;
| links_name2 = All previous ESAPI Downloads&lt;br /&gt;
| links_url3 = https://github.com/ESAPI/esapi-java-legacy&lt;br /&gt;
| links_name3 = GitHub code repository for ESAPI JAVA&lt;br /&gt;
| links_url4 = https://github.com/ESAPI/esapi-java-legacy/issues&lt;br /&gt;
| links_name4 = Report a bug!&lt;br /&gt;
| links_url5 = http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
| links_name5 = ESAPI 2.1.0 Javadocs&lt;br /&gt;
| links_url6 = http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/index.html&lt;br /&gt;
| links_name6 = ESAPI 1.4.4 Javadocs&lt;br /&gt;
| links_url7 = http://www.owasp.org/index.php/ESAPI-Building&lt;br /&gt;
| links_name7 = How to build ESAPI 2.0 with Maven&lt;br /&gt;
| links_url8 = http://www.owasp.org/index.php/ESAPI-BuildingWithEclipse&lt;br /&gt;
| links_name8 = How to build ESAPI 2.0 with Maven via Eclipse&lt;br /&gt;
| project_road_map = &lt;br /&gt;
| project_health_status = &lt;br /&gt;
| current_release_name = &lt;br /&gt;
| current_release_date = &lt;br /&gt;
| current_release_download_link = &lt;br /&gt;
| current_release_rating = &lt;br /&gt;
| current_release_leader_name = &lt;br /&gt;
| current_release_leader_email = &lt;br /&gt;
| current_release_leader_username =&lt;br /&gt;
| current_release_details =  &lt;br /&gt;
| last_reviewed_release_name = &lt;br /&gt;
| last_reviewed_release_date = &lt;br /&gt;
| last_reviewed_release_download_link = &lt;br /&gt;
| last_reviewed_release_rating = &lt;br /&gt;
| last_reviewed_release_leader_name = &lt;br /&gt;
| last_reviewed_release_leader_email = &lt;br /&gt;
| last_reviewed_release_leader_username = &lt;br /&gt;
| old_release_name1 = &lt;br /&gt;
| old_release_date1 = &lt;br /&gt;
| old_release_download_link1 = &lt;br /&gt;
| old_release_name2 = &lt;br /&gt;
| old_release_date2 = &lt;br /&gt;
| old_release_download_link2 = &lt;br /&gt;
| old_release_name3 = &lt;br /&gt;
| old_release_date3 = &lt;br /&gt;
| old_release_download_link3 = &lt;br /&gt;
| old_release_name4 = &lt;br /&gt;
| old_release_date4 = &lt;br /&gt;
| old_release_download_link4 = &lt;br /&gt;
| old_release_name5 = &lt;br /&gt;
| old_release_date5 = &lt;br /&gt;
| old_release_download_link5 = &lt;br /&gt;
| last_GPC_update = 4/10/2009&lt;br /&gt;
| GPC_Notes = Empty template (Java EE Version)&lt;br /&gt;
| project_home_page = :Category:OWASP_Enterprise_Security_API&lt;br /&gt;
| project_details_wiki_page = GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=224206</id>
		<title>GPC Project Details/OWASP Enterprise Security API Java EE Version</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=224206"/>
				<updated>2016-12-17T03:34:49Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;OWASP Project Identification Tab&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| project_name = OWASP ESAPI for Java EE&lt;br /&gt;
| project_description = This is the Java EE language version of OWASP ESAPI. The ESAPI for Java EE is the baseline ESAPI design.&lt;br /&gt;
* The current release of this project '''is''' suitable for production use&lt;br /&gt;
* The ESAPI 2.x branch supports Java 1.5 and above. You may view the Javadocs here http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
* The ESAPI 1.4 branch supports Java 1.4 and above. Complete information on latest 1.4 branch dependencies can be found here http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/site/dependencies.html&lt;br /&gt;
* The OWASP AppSensor-ESAPI integration guide is out! [[AppSensor_GettingStarted]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- We are not keeping this up to date....&lt;br /&gt;
'''''Latest News:'''''&lt;br /&gt;
&amp;lt;twitter&amp;gt;90496975&amp;lt;/twitter&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| project_license = [http://en.wikipedia.org/wiki/BSD_license BSD license]&lt;br /&gt;
| leader_name = Kevin Wall &amp;amp; Matt Seil&lt;br /&gt;
| leader_email = kevin.w.wall@gmail.com&lt;br /&gt;
| leader_username = Kevin_W._Wall&lt;br /&gt;
| past_leaders_special_contributions = Jeff_Williams (project creator)&lt;br /&gt;
| maintainer_name = ESAPI-Dev mailing list&lt;br /&gt;
| maintainer_email = esapi-dev@lists.owasp.org&lt;br /&gt;
| maintainer_username =&lt;br /&gt;
| contributor_name1 = Kevin W. Wall&lt;br /&gt;
| contributor_email1 = kevin.w.wall@gmail.com&lt;br /&gt;
| contributor_username1 = Kevin_W._Wall&lt;br /&gt;
| contributor_name2 = Matt Seil&lt;br /&gt;
| contributor_email2 = xeno6696@gmail.com@gmail.com&lt;br /&gt;
| contributor_username2 = Matt Seil&lt;br /&gt;
| contributor_name3 = Jeff Williams&lt;br /&gt;
| contributor_email3 = Jeff.Williams@owasp.org&lt;br /&gt;
| contributor_username3 = Jeff_Williams&lt;br /&gt;
| contributor_name4 = Jim Manico&lt;br /&gt;
| contributor_email4 = Jim.Manico@owasp.org&lt;br /&gt;
| contributor_username4 = Jmanico&lt;br /&gt;
| contributor_name5 = Chris Schmidt&lt;br /&gt;
| contributor_email5 = chrisisbeef@gmail.com&lt;br /&gt;
| contributor_username5 = Chris_Schmidt&lt;br /&gt;
| contributor_name6 = See &amp;quot;Members&amp;quot; under https://code.google.com/p/owasp-esapi-java/ for list of other contributors&lt;br /&gt;
| contributor_email6 = &lt;br /&gt;
| contributor_username6 = &lt;br /&gt;
| contributor_name7 = &lt;br /&gt;
| contributor_email7 = &lt;br /&gt;
| contributor_username7 = &lt;br /&gt;
| contributor_name8 = &lt;br /&gt;
| contributor_email8 = &lt;br /&gt;
| contributor_username8 = &lt;br /&gt;
| contributor_name9 = &lt;br /&gt;
| contributor_email9 = &lt;br /&gt;
| contributor_username9 = &lt;br /&gt;
| contributor_name10 = &lt;br /&gt;
| contributor_email10 = &lt;br /&gt;
| contributor_username10 =  &lt;br /&gt;
| pamphlet_link = &lt;br /&gt;
| presentation_link = &lt;br /&gt;
| mailing_list_name = esapi-dev&lt;br /&gt;
| links_url1 = https://search.maven.org/#search%7Cga%7C1%7Corg.owasp.esapi&lt;br /&gt;
| links_name1 = ESAPI 2.x Downloads&lt;br /&gt;
| links_url2 = https://code.google.com/p/owasp-esapi-java/downloads/list&lt;br /&gt;
| links_name2 = All previous ESAPI Downloads&lt;br /&gt;
| links_url3 = https://github.com/ESAPI/esapi-java-legacy&lt;br /&gt;
| links_name3 = GitHub code repository for ESAPI JAVA&lt;br /&gt;
| links_url4 = https://github.com/ESAPI/esapi-java-legacy/issues&lt;br /&gt;
| links_name4 = Report a bug!&lt;br /&gt;
| links_url5 = http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
| links_name5 = ESAPI 2.1.0 Javadocs&lt;br /&gt;
| links_url6 = http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/index.html&lt;br /&gt;
| links_name6 = ESAPI 1.4.4 Javadocs&lt;br /&gt;
| links_url7 = http://www.owasp.org/index.php/ESAPI-Building&lt;br /&gt;
| links_name7 = How to build ESAPI 2.0 with Maven&lt;br /&gt;
| links_url8 = http://www.owasp.org/index.php/ESAPI-BuildingWithEclipse&lt;br /&gt;
| links_name8 = How to build ESAPI 2.0 with Maven via Eclipse&lt;br /&gt;
| project_road_map = &lt;br /&gt;
| project_health_status = &lt;br /&gt;
| current_release_name = &lt;br /&gt;
| current_release_date = &lt;br /&gt;
| current_release_download_link = &lt;br /&gt;
| current_release_rating = &lt;br /&gt;
| current_release_leader_name = &lt;br /&gt;
| current_release_leader_email = &lt;br /&gt;
| current_release_leader_username =&lt;br /&gt;
| current_release_details =  &lt;br /&gt;
| last_reviewed_release_name = &lt;br /&gt;
| last_reviewed_release_date = &lt;br /&gt;
| last_reviewed_release_download_link = &lt;br /&gt;
| last_reviewed_release_rating = &lt;br /&gt;
| last_reviewed_release_leader_name = &lt;br /&gt;
| last_reviewed_release_leader_email = &lt;br /&gt;
| last_reviewed_release_leader_username = &lt;br /&gt;
| old_release_name1 = &lt;br /&gt;
| old_release_date1 = &lt;br /&gt;
| old_release_download_link1 = &lt;br /&gt;
| old_release_name2 = &lt;br /&gt;
| old_release_date2 = &lt;br /&gt;
| old_release_download_link2 = &lt;br /&gt;
| old_release_name3 = &lt;br /&gt;
| old_release_date3 = &lt;br /&gt;
| old_release_download_link3 = &lt;br /&gt;
| old_release_name4 = &lt;br /&gt;
| old_release_date4 = &lt;br /&gt;
| old_release_download_link4 = &lt;br /&gt;
| old_release_name5 = &lt;br /&gt;
| old_release_date5 = &lt;br /&gt;
| old_release_download_link5 = &lt;br /&gt;
| last_GPC_update = 4/10/2009&lt;br /&gt;
| GPC_Notes = Empty template (Java EE Version)&lt;br /&gt;
| project_home_page = :Category:OWASP_Enterprise_Security_API&lt;br /&gt;
| project_details_wiki_page = GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=224205</id>
		<title>Category:OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=224205"/>
				<updated>2016-12-17T03:19:17Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Replaced Chris Schmidt as project co-lead with Matt Seil, who is stepping in to replace him.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Home  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design: &lt;br /&gt;
&lt;br /&gt;
*'''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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]. &lt;br /&gt;
&lt;br /&gt;
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:kevin.w.wall@gmail.com here] and [mailto:xeno6696@gmail.com here].&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Let's talk here  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-bulb.jpg]]'''ESAPI Communities''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-dev esapi-dev mailing list (this is the main list)] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-user esapi-user mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-php esapi-php mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-python esapi-python mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-ruby esapi-ruby mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-swingset esapi-swingset mailing list]&lt;br /&gt;
*[http://groups.google.com/group/cfesapi esapi-coldfusion mailing list]&lt;br /&gt;
&lt;br /&gt;
IRC Chat&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*Server: irc.freenode.net&lt;br /&gt;
*Channel: #esapi&lt;br /&gt;
&lt;br /&gt;
== Got developer cycles?  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-waiting.JPG]]'''ESAPI Coding''' &lt;br /&gt;
&lt;br /&gt;
The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles. &lt;br /&gt;
 &lt;br /&gt;
*ESAPI for other languages developer onboarding instructions -- coming soon!&lt;br /&gt;
&lt;br /&gt;
== Project Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The ESAPI project is sponsored by {{MemberLinks|link=http://www.aspectsecurity.com|logo=Aspect_logo_owasp.jpg}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Downloads  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|2400x160px|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step1.jpg]]'''1. About ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*Data sheet([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF],[http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word]) &lt;br /&gt;
*Project presentation ([http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt PowerPoint]) &lt;br /&gt;
*Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step2.jpg]]'''2. Get ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*[https://search.maven.org/#search|ga|1|esapi ESAPI for Java Downloads (binaries)] &lt;br /&gt;
*[https://github.com/ESAPI/esapi-java-legacy ESAPI for Java (source)]&amp;lt;br&amp;gt;&lt;br /&gt;
*{{#switchtablink:.NET|ESAPI for .NET}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Classic ASP|ESAPI for Classic ASP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:PHP|ESAPI for PHP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:ColdFusion.2FCFML|ESAPI for ColdFusion &amp;amp; CFML}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Python|ESAPI for Python}}&amp;lt;br&amp;gt; &lt;br /&gt;
*[http://code.google.com/p/owasp-esapi-js/downloads/detail?name=esapi4js-0.1.3.zip ESAPI for Javascript]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step3.jpg]]'''3. Learn ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*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)] &lt;br /&gt;
*The [[ESAPI Swingset|ESAPI Swingset]] sample application demonstrates how to leverage ESAPI to protect a web application. &lt;br /&gt;
*LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF]) &lt;br /&gt;
*ESAPI for Java interface documentation ([http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 JavaDocs]) &lt;br /&gt;
*ESAPI for PHP interface documentation ([http://owasp-esapi-php.googlecode.com/svn/trunk_doc/latest/index.html phpdoc])&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What I did with ESAPI  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --[mailto:jeff.williams@owasp.org Jeff]&lt;br /&gt;
&lt;br /&gt;
*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 &amp;quot;Adapter&amp;quot; control to wrap calls to the other ESAPI controls. --[mailto:mike.boberski@owasp.org Mike]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java’s &amp;quot;Logger&amp;quot; control to make it easier for a US Government customer to meet C&amp;amp;amp;A requirements. --[mailto:dave.wichers@owasp.org Dave]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --[mailto:jim.manico@owasp.org Jim]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java's &amp;quot;Authenticator&amp;quot; to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific &amp;quot;Adapter&amp;quot; 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]&lt;br /&gt;
&lt;br /&gt;
*I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --[mailto:yairr@liveperson.com Yair]&lt;br /&gt;
&lt;br /&gt;
*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]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Should I use ESAPI?  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[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]&lt;br /&gt;
&lt;br /&gt;
Or, specifically, &amp;quot;Should I use ESAPI for Java?&amp;quot; since that's the only one run by OWASP that still shows any semblance of life.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Should I use ESAPI?&amp;quot; probably is &amp;quot;yes&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Output encoding: [https://www.owasp.org/index.php/OWASP_Java_Encoder_Project OWASP Java Encoder Project]&lt;br /&gt;
* General HTML sanitization: [https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project OWASP Java HTML Sanitizer]&lt;br /&gt;
* Validation: [http://beanvalidation.org/ JSR-303/JSR-349 Bean Validation]&lt;br /&gt;
*Strong cryptography: [https://github.com/google/keyczar Keyczar]&lt;br /&gt;
* Authentication / authorization: [https://shiro.apache.org/ Apache Shiro]&lt;br /&gt;
* 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]&lt;br /&gt;
&lt;br /&gt;
Note that it not the suggestion 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.&lt;br /&gt;
&lt;br /&gt;
-[mailto:kevin.w.wall@gmail.com kevin wall]&lt;br /&gt;
&lt;br /&gt;
= Glossary  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:Asvs-letters.jpg]]'''ESAPI Terminology''' &lt;br /&gt;
&lt;br /&gt;
*'''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. &lt;br /&gt;
*'''built-in singleton design pattern''' - The &amp;quot;built-in&amp;quot; singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact. &lt;br /&gt;
*'''codec''' - ESAPI encoder/decoder reference implementations. &lt;br /&gt;
*'''core''' - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core. &lt;br /&gt;
*'''exception''' - ESAPI exception reference implementations. &lt;br /&gt;
*'''extended factory design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''extended singleton design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''filter''' - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''locator''' - The ESAPI security control interfaces include an &amp;quot;ESAPI&amp;quot; class that is commonly referred to as a &amp;quot;locator&amp;quot; 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). &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Java EE  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Details  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OWASP Builders}}&lt;br /&gt;
[[Category:Popular]]&lt;br /&gt;
[[Category:SAMM-SA-3]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:ESAPI-JavaStatus&amp;diff=224204</id>
		<title>Talk:ESAPI-JavaStatus</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:ESAPI-JavaStatus&amp;diff=224204"/>
				<updated>2016-12-17T03:13:56Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Delete this obsolete wiki page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page should be marked for deletion. It is no longer relevant. Adding pointer to the ESAPI issues list to the make ESAPI page on the JavaEE tab.&lt;br /&gt;
&lt;br /&gt;
-kevin&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Tribute_to_Paul_Ritchie&amp;diff=216344</id>
		<title>Tribute to Paul Ritchie</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Tribute_to_Paul_Ritchie&amp;diff=216344"/>
				<updated>2016-05-04T02:06:01Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Initial page creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is being created as a tribute to our former Executive Director, [[User:Paul_Ritchie|Paul Ritchie]].&lt;br /&gt;
&lt;br /&gt;
As per announcement on OWASP Leaders, OWASP Community, and OWASP Board mailing lists the morning of May 3, 2016:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
OWASP Community&lt;br /&gt;
&lt;br /&gt;
May 3, 2016&lt;br /&gt;
&lt;br /&gt;
Dear Friends,&lt;br /&gt;
&lt;br /&gt;
It is with great sorrow that I must write to report the sad news of the death of our Executive Director, Paul Ritchie, after a short illness.&lt;br /&gt;
&lt;br /&gt;
Paul first joined OWASP in August of 2014 and became the full time Executive Director in May 2015.  He has helped the organization to grow globally and has made an enormous difference in our community.  He will be greatly missed.  He brought order and professionalism.  He raised our own high expectations and delivered on the things he set out to do.  He made all of us that worked closely with him better and more effective.  He helped to set long term strategic goals and managed OWASP’s fiduciary responsibilities with ease.&lt;br /&gt;
&lt;br /&gt;
On behalf of the Board of Directors, we will miss Paul for his leadership and friendly wry knowing smile as the board worked to make difficult choices.  I doubt I can express my own sinking feeling of grief at the news, which came suddenly and too early.&lt;br /&gt;
&lt;br /&gt;
Paul’s family asked that we direct those in the community that would like to show support or make a donation to do so in Paul Ritchie’s name to the Multiple Myeloma Research Foundation at https://www.themmrf.org.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sincerely,&lt;br /&gt;
&lt;br /&gt;
Matt Konda&lt;br /&gt;
&lt;br /&gt;
On behalf of the OWASP Global Board&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Paul meant a great deal to us as a leader and friend. Below, please share your sentiments, memories, and family condolences regarding Paul and at  some point, we will make this link available to Paul's family as a lasting tribute. May you rest in peace!&lt;br /&gt;
&lt;br /&gt;
-kevin w. wall&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI-BuildingWithEclipse&amp;diff=212477</id>
		<title>ESAPI-BuildingWithEclipse</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI-BuildingWithEclipse&amp;diff=212477"/>
				<updated>2016-04-05T02:56:23Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: /* Spring Source ToolSuite */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Prerequisites==&lt;br /&gt;
* JDK 1.6 or later [http://www.oracle.com/technetwork/java/javase/downloads/index.html download here]. Note that you need the JDK and not just the JRE.&lt;br /&gt;
* To support the latest versions of Maven, first download Maven [https://maven.apache.org/download.cgi here]. (Note: Maven 3.0 or later is required.)&lt;br /&gt;
* Eclipse IDE for Java EE Developers 3.3.x or later [http://www.eclipse.org/downloads/ download here]. Install EGit and m2e plug-ins via &amp;quot;Help-&amp;gt;Install New Software...&amp;quot;.&lt;br /&gt;
** EGit Plug-in for Eclipse - Instructions on installing EGit plug-in can be found [https://eclipse.github.io/ here]&lt;br /&gt;
** M2E - Maven Integration for Eclipse - You can install the latest version from within Eclipse using the following [https://eclipse.org/m2e/ update site]&lt;br /&gt;
** Note that other git and Maven plug-in combinations for Eclipse are possible.&lt;br /&gt;
&lt;br /&gt;
==Spring Tool Suite==&lt;br /&gt;
STS is an eclipse distribution from the Spring foundation.  If you just care about getting up and running, and don't care about bloat, download here:  https://spring.io/tools/sts/all&lt;br /&gt;
&lt;br /&gt;
On Windows and linux distros, all you should have to do after extracting the main STS folder, is to navigate into the folder, and double-clicking the file &amp;quot;STS&amp;quot; or &amp;quot;STS.exe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
It comes pre-packaged with a git plugin (so you can skip those instructions below) as well as its own versions of Ant and Maven.  You should be able to follow the &amp;quot;EGit&amp;quot; section to clone/import ESAPI in STS as soon as you have it running.  It still has a minimum dependency of java 1.6 jdk.  &lt;br /&gt;
&lt;br /&gt;
Detailed steps:&lt;br /&gt;
&lt;br /&gt;
1. Right click on the &amp;quot;Package Explorer&amp;quot; pane, and select &amp;quot;import.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Filter on &amp;quot;git&amp;quot; and select &amp;quot;Projects from git.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
3. Select &amp;quot;Clone URI&amp;quot;&lt;br /&gt;
&lt;br /&gt;
4. Enter the URI:  https://github.com/ESAPI/esapi-java-legacy.git   (or, if you wish to contribute to ESAPI via &amp;quot;pull requests&amp;quot;, the URI where you &amp;quot;forked&amp;quot; legacy ESAPI to, e.g. https://github.com/yourGitHubID/esapi-java-legacy)&lt;br /&gt;
&lt;br /&gt;
5. Click &amp;quot;Next.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Click &amp;quot;Next&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
7. Select where you want to store the cloned repo, it defaults to %USERPROFILE%\git\esapi-java-legacy on windows.&lt;br /&gt;
&lt;br /&gt;
8. click &amp;quot;Next.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
9. On the import wizard, cancel.  &lt;br /&gt;
&lt;br /&gt;
10. Right-click again on the package explorer, and click import, filter on &amp;quot;Maven&amp;quot; and click on &amp;quot;Existing Maven Projects.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
11. Navigate to the folder you created in step 7.  Select &amp;quot;esapi-java-legacy&amp;quot; and click next.  &lt;br /&gt;
&lt;br /&gt;
12. Click finish.&lt;br /&gt;
&lt;br /&gt;
Congratulations!  You are ready to develop!&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
* For Winodws, create an Eclipse shortcut&lt;br /&gt;
* Right-Click your Eclipse shortcut and select Properties&lt;br /&gt;
* At the end of the line that says Target, add -vm &amp;quot;x&amp;quot; where x is the location of a JDK (e.g., &amp;quot;C:\Program Files\Java\jdk7\bin&amp;quot;) - This step is necessary for the Maven plugin to work. (If you installed Eclipse under Linux distro after you already had a JDK installed, this probably was already done for you.)&lt;br /&gt;
* Restart Eclipse using the edited shortcut.&lt;br /&gt;
&lt;br /&gt;
==Importing the ESAPI Source==&lt;br /&gt;
&lt;br /&gt;
If you choose to use the ESAPI GitHub code,Import Existing Eclipse projects.&amp;quot; follow the instructions at [[ESAPI-Building]].  Unless you have been added to the ESAPI project as a contributor, please use the submit fixes using [https://help.github.com/articles/using-pull-requests/ Git &amp;quot;pull requests&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
If you are using EGit, as recommended, open Eclipse and:&lt;br /&gt;
* Click ''File'' -&amp;gt; ''New'' -&amp;gt; ''Other....''.&lt;br /&gt;
* From the ''Git Folder'' select '&amp;quot;Checkout Projects from Git'' (this option will only be available if you have a Git plug-in installed) and hit ''Next &amp;gt;''.&lt;br /&gt;
* Click the ''Create a new repository location'' radio button.&lt;br /&gt;
* If you are not listed as a project contributor, insert ''https://github.com/ESAPI/esapi-java-legacy.git'' as the URL.  If you are listed as a project contributor, check the github page for the URL to use. &lt;br /&gt;
* Once the directory structure appears in the window, click the URL at the top to download everything.  Then hit ''Next &amp;gt;''&lt;br /&gt;
* Select your desired project options.  For most people, the default options should be fine. When finished, click ''Next &amp;gt;''.&lt;br /&gt;
* Select your desired workspace options, then click ''Finish''.  The latest ESAPI source files will then be downloaded to your workspace.  This may take a few minutes.&lt;br /&gt;
* After the source code is finished downloading, ensure that the character type of all source code is UTF-8. In Eclipse, right click on the project directory root. At the bottom of the right-click list, choose PROPERTIES. From the PROPERTIES window, select the RESOURCES section (which is selected by default). Ensure that the &amp;quot;Text file encoding&amp;quot; section is set to OTHER-&amp;gt;UTF 8. If if it is not, change it and click APPLY-&amp;gt;OK.&lt;br /&gt;
&lt;br /&gt;
==Project Setup==&lt;br /&gt;
&lt;br /&gt;
Some configuration may be necessary for ESAPI to compile and build on your system.&lt;br /&gt;
&lt;br /&gt;
ESAPI requires the Java JRE 6 or later.&lt;br /&gt;
&lt;br /&gt;
* Once Java 6.0+ is installed, open the ''Navigator view'' in Eclipse.  If this is currently hidden, from the toolbar click ''Window'' -&amp;gt; ''Show View'' -&amp;gt; ''Navigator''.&lt;br /&gt;
* Right-click on your ESAPI project in the Navigator, mouse over ''Maven'' and click ''Enable Dependency Management''&lt;br /&gt;
** ''Note:'' If Maven is not an option when you right-click on the project, be sure the Maven plugin for eclipse is installed, as described above.&lt;br /&gt;
** ''Note:'' If ''Enable Dependency Management'' is not an option, dependency management is probably already enabled, So this step can be skipped.&lt;br /&gt;
* ''Right-click on the ESAPI project root folder'' in the Navigator view and select ''Properties''.&lt;br /&gt;
* From the left column, select ''Java Build Path''.  Under the ''Libraries'' tab, be sure a JRE or JDK is listed next to ''JRE System Library''.  If there is a red X on next to the JRE, remove the current JRE and click ''Add Library'' and select an alternate JRE.  If you are having trouble figuring out what version the current JRE is, select ''Installed JREs'' and look at the location to which each version is mapped.&lt;br /&gt;
* The Libraries tab should list ''JRE System Library'' and ''Maven Dependencies''.  If anything else is listed, it is not necessary and should be removed.  Maven now handles all dependencies.&lt;br /&gt;
* From the left column, select ''Java Compiler''.  Be sure ''Compiler compliance level'', ''Generated .class files compatibility'', and ''Source compatibility'' are all set to ''1.6''. (Note: Most of us use JDK 7 or JDK 8 to build ESAPI, but we use '-source 1.6 -target 1.6' when we compile to still support really old web applications still using JDK 1.6.) &lt;br /&gt;
* Close the properties window.&lt;br /&gt;
* ''Right-click the ESAPI project root folder'' and select ''Refresh''.&lt;br /&gt;
* From the toolbar, select ''Project'' -&amp;gt; ''Clean..'' and select the ESAPI project.  Click ''OK''.&lt;br /&gt;
* If errors remain, select ''Maven'' again, then ''Update Dependencies''.&lt;br /&gt;
* ESAPI should now be compiled.&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
Building ESAPI should be easy with the new Maven integration.&lt;br /&gt;
&lt;br /&gt;
Once your environment is set up, as specified above:&lt;br /&gt;
* Right-Click your ESAPI project root folder&lt;br /&gt;
* Select ''Run As...''&lt;br /&gt;
* Select ''Run Configurations''&lt;br /&gt;
* Double Click &amp;quot;Maven Build&amp;quot; from the options on the left to create a new configuration.&lt;br /&gt;
* Name your configuration at the top.  This will be for building ESAPI without running JUnit tests.&lt;br /&gt;
* The &amp;quot;Base directory&amp;quot; should point to the root of your project&lt;br /&gt;
* The &amp;quot;Goals&amp;quot; field type &amp;quot;package&amp;quot;&lt;br /&gt;
* Any options not mentioned should be left as their default&lt;br /&gt;
* Click &amp;quot;Apply&amp;quot; to save your build configuration&lt;br /&gt;
* Click &amp;quot;Run&amp;quot; to run your configuration&lt;br /&gt;
&lt;br /&gt;
''NOTE: Jars created through building are located in the directory called &amp;quot;target&amp;quot;. ''&lt;br /&gt;
&lt;br /&gt;
==Running Demo App==&lt;br /&gt;
&lt;br /&gt;
The ESAPI Demo application has been named ''The ESAPI Swingset''.  More information about Swingset is available [http://www.owasp.org/index.php/ESAPI_Swingset here].&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Enterprise Security API]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI-BuildingWithEclipse&amp;diff=212473</id>
		<title>ESAPI-BuildingWithEclipse</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI-BuildingWithEclipse&amp;diff=212473"/>
				<updated>2016-04-05T01:04:47Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Added reference about working with URI for &amp;quot;forked&amp;quot; version of ESAPI on GitHub.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Prerequisites==&lt;br /&gt;
* JDK 1.6 or later [http://www.oracle.com/technetwork/java/javase/downloads/index.html download here]. Note that you need the JDK and not just the JRE.&lt;br /&gt;
* To support the latest versions of Maven, first download Maven [https://maven.apache.org/download.cgi here]. (Note: Maven 3.0 or later is required.)&lt;br /&gt;
* Eclipse IDE for Java EE Developers 3.3.x or later [http://www.eclipse.org/downloads/ download here]. Install EGit and m2e plug-ins via &amp;quot;Help-&amp;gt;Install New Software...&amp;quot;.&lt;br /&gt;
** EGit Plug-in for Eclipse - Instructions on installing EGit plug-in can be found [https://eclipse.github.io/ here]&lt;br /&gt;
** M2E - Maven Integration for Eclipse - You can install the latest version from within Eclipse using the following [https://eclipse.org/m2e/ update site]&lt;br /&gt;
** Note that other git and Maven plug-in combinations for Eclipse are possible.&lt;br /&gt;
&lt;br /&gt;
==Spring Source ToolSuite==&lt;br /&gt;
STS is an eclipse distribution from the Spring foundation.  If you just care about getting up and running, and don't care about bloat, download here:  https://spring.io/tools/sts/all&lt;br /&gt;
&lt;br /&gt;
On Windows and linux distros, all you should have to do after extracting the main STS folder, is to navigate into the folder, and double-clicking the file &amp;quot;STS&amp;quot; or &amp;quot;STS.exe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
It comes pre-packaged with a git plugin (so you can skip those instructions below) as well as its own versions of Ant and Maven.  You should be able to follow the &amp;quot;EGit&amp;quot; section to clone/import ESAPI in STS as soon as you have it running.  It still has a minimum dependency of java 1.6 jdk.  &lt;br /&gt;
&lt;br /&gt;
Detailed steps:&lt;br /&gt;
&lt;br /&gt;
1. Right click on the &amp;quot;Package Explorer&amp;quot; pane, and select &amp;quot;import.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Filter on &amp;quot;git&amp;quot; and select &amp;quot;Projects from git.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
3. Select &amp;quot;Clone URI&amp;quot;&lt;br /&gt;
&lt;br /&gt;
4. Enter the URI:  https://github.com/ESAPI/esapi-java-legacy.git   (or, if you wish to contribute to ESAPI via &amp;quot;pull requests&amp;quot;, the URI where you &amp;quot;forked&amp;quot; legacy ESAPI to, e.g. https://github.com/yourGitHubID/esapi-java-legacy)&lt;br /&gt;
&lt;br /&gt;
5. Click &amp;quot;Next.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Click &amp;quot;Next&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
7. Select where you want to store the cloned repo, it defaults to %USERPROFILE%\git\esapi-java-legacy on windows.&lt;br /&gt;
&lt;br /&gt;
8. click &amp;quot;Next.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
9. On the import wizard, cancel.  &lt;br /&gt;
&lt;br /&gt;
10. Right-click again on the package explorer, and click import, filter on &amp;quot;Maven&amp;quot; and click on &amp;quot;Existing Maven Projects.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
11. Navigate to the folder you created in step 7.  Select &amp;quot;esapi-java-legacy&amp;quot; and click next.  &lt;br /&gt;
&lt;br /&gt;
12. Click finish.&lt;br /&gt;
&lt;br /&gt;
Congratulations!  You are ready to develop!&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
* For Winodws, create an Eclipse shortcut&lt;br /&gt;
* Right-Click your Eclipse shortcut and select Properties&lt;br /&gt;
* At the end of the line that says Target, add -vm &amp;quot;x&amp;quot; where x is the location of a JDK (e.g., &amp;quot;C:\Program Files\Java\jdk7\bin&amp;quot;) - This step is necessary for the Maven plugin to work. (If you installed Eclipse under Linux distro after you already had a JDK installed, this probably was already done for you.)&lt;br /&gt;
* Restart Eclipse using the edited shortcut.&lt;br /&gt;
&lt;br /&gt;
==Importing the ESAPI Source==&lt;br /&gt;
&lt;br /&gt;
If you choose to use the ESAPI GitHub code,Import Existing Eclipse projects.&amp;quot; follow the instructions at [[ESAPI-Building]].  Unless you have been added to the ESAPI project as a contributor, please use the submit fixes using [https://help.github.com/articles/using-pull-requests/ Git &amp;quot;pull requests&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
If you are using EGit, as recommended, open Eclipse and:&lt;br /&gt;
* Click ''File'' -&amp;gt; ''New'' -&amp;gt; ''Other....''.&lt;br /&gt;
* From the ''Git Folder'' select '&amp;quot;Checkout Projects from Git'' (this option will only be available if you have a Git plug-in installed) and hit ''Next &amp;gt;''.&lt;br /&gt;
* Click the ''Create a new repository location'' radio button.&lt;br /&gt;
* If you are not listed as a project contributor, insert ''https://github.com/ESAPI/esapi-java-legacy.git'' as the URL.  If you are listed as a project contributor, check the github page for the URL to use. &lt;br /&gt;
* Once the directory structure appears in the window, click the URL at the top to download everything.  Then hit ''Next &amp;gt;''&lt;br /&gt;
* Select your desired project options.  For most people, the default options should be fine. When finished, click ''Next &amp;gt;''.&lt;br /&gt;
* Select your desired workspace options, then click ''Finish''.  The latest ESAPI source files will then be downloaded to your workspace.  This may take a few minutes.&lt;br /&gt;
* After the source code is finished downloading, ensure that the character type of all source code is UTF-8. In Eclipse, right click on the project directory root. At the bottom of the right-click list, choose PROPERTIES. From the PROPERTIES window, select the RESOURCES section (which is selected by default). Ensure that the &amp;quot;Text file encoding&amp;quot; section is set to OTHER-&amp;gt;UTF 8. If if it is not, change it and click APPLY-&amp;gt;OK.&lt;br /&gt;
&lt;br /&gt;
==Project Setup==&lt;br /&gt;
&lt;br /&gt;
Some configuration may be necessary for ESAPI to compile and build on your system.&lt;br /&gt;
&lt;br /&gt;
ESAPI requires the Java JRE 6 or later.&lt;br /&gt;
&lt;br /&gt;
* Once Java 6.0+ is installed, open the ''Navigator view'' in Eclipse.  If this is currently hidden, from the toolbar click ''Window'' -&amp;gt; ''Show View'' -&amp;gt; ''Navigator''.&lt;br /&gt;
* Right-click on your ESAPI project in the Navigator, mouse over ''Maven'' and click ''Enable Dependency Management''&lt;br /&gt;
** ''Note:'' If Maven is not an option when you right-click on the project, be sure the Maven plugin for eclipse is installed, as described above.&lt;br /&gt;
** ''Note:'' If ''Enable Dependency Management'' is not an option, dependency management is probably already enabled, So this step can be skipped.&lt;br /&gt;
* ''Right-click on the ESAPI project root folder'' in the Navigator view and select ''Properties''.&lt;br /&gt;
* From the left column, select ''Java Build Path''.  Under the ''Libraries'' tab, be sure a JRE or JDK is listed next to ''JRE System Library''.  If there is a red X on next to the JRE, remove the current JRE and click ''Add Library'' and select an alternate JRE.  If you are having trouble figuring out what version the current JRE is, select ''Installed JREs'' and look at the location to which each version is mapped.&lt;br /&gt;
* The Libraries tab should list ''JRE System Library'' and ''Maven Dependencies''.  If anything else is listed, it is not necessary and should be removed.  Maven now handles all dependencies.&lt;br /&gt;
* From the left column, select ''Java Compiler''.  Be sure ''Compiler compliance level'', ''Generated .class files compatibility'', and ''Source compatibility'' are all set to ''1.6''. (Note: Most of us use JDK 7 or JDK 8 to build ESAPI, but we use '-source 1.6 -target 1.6' when we compile to still support really old web applications still using JDK 1.6.) &lt;br /&gt;
* Close the properties window.&lt;br /&gt;
* ''Right-click the ESAPI project root folder'' and select ''Refresh''.&lt;br /&gt;
* From the toolbar, select ''Project'' -&amp;gt; ''Clean..'' and select the ESAPI project.  Click ''OK''.&lt;br /&gt;
* If errors remain, select ''Maven'' again, then ''Update Dependencies''.&lt;br /&gt;
* ESAPI should now be compiled.&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
Building ESAPI should be easy with the new Maven integration.&lt;br /&gt;
&lt;br /&gt;
Once your environment is set up, as specified above:&lt;br /&gt;
* Right-Click your ESAPI project root folder&lt;br /&gt;
* Select ''Run As...''&lt;br /&gt;
* Select ''Run Configurations''&lt;br /&gt;
* Double Click &amp;quot;Maven Build&amp;quot; from the options on the left to create a new configuration.&lt;br /&gt;
* Name your configuration at the top.  This will be for building ESAPI without running JUnit tests.&lt;br /&gt;
* The &amp;quot;Base directory&amp;quot; should point to the root of your project&lt;br /&gt;
* The &amp;quot;Goals&amp;quot; field type &amp;quot;package&amp;quot;&lt;br /&gt;
* Any options not mentioned should be left as their default&lt;br /&gt;
* Click &amp;quot;Apply&amp;quot; to save your build configuration&lt;br /&gt;
* Click &amp;quot;Run&amp;quot; to run your configuration&lt;br /&gt;
&lt;br /&gt;
''NOTE: Jars created through building are located in the directory called &amp;quot;target&amp;quot;. ''&lt;br /&gt;
&lt;br /&gt;
==Running Demo App==&lt;br /&gt;
&lt;br /&gt;
The ESAPI Demo application has been named ''The ESAPI Swingset''.  More information about Swingset is available [http://www.owasp.org/index.php/ESAPI_Swingset here].&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Enterprise Security API]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Javadocs&amp;diff=212472</id>
		<title>ESAPI Javadocs</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Javadocs&amp;diff=212472"/>
				<updated>2016-04-05T00:23:36Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Update link for ESAPI javadoc to use javadoc.io&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Latest Javadocs==&lt;br /&gt;
The latest Javadocs for the ESAPI can be found [https://www.javadoc.io/doc/org.owasp.esapi/esapi/ here].&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Enterprise Security API]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GSOC2016_Ideas&amp;diff=209225</id>
		<title>GSOC2016 Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GSOC2016_Ideas&amp;diff=209225"/>
				<updated>2016-02-20T06:19:54Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: /* Advanced padding oracle testing and exploitation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=OWASP Project Requests=&lt;br /&gt;
&lt;br /&gt;
'''Tips to get you started in no particular order:''' &lt;br /&gt;
 * Read the [[GSoC SAT]]&lt;br /&gt;
 * Check the Hackademic wiki page linked above&lt;br /&gt;
 * Contact us through the mailing list or irc channel.&lt;br /&gt;
 * Check our [https://github.com/Hackademic/hackademic github repository] and especially the [https://github.com/Hackademic/hackademic/issues open tickets]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OWASP Hackademic Challenges ==&lt;br /&gt;
&lt;br /&gt;
[[OWASP Hackademic Challenges Project]]  helps you test your knowledge on web application security. You can use it to actually attack web applications in a realistic but also controllable and safe environment. After a wonderfull 2014 GSoC with 100 new challenges and a couple of new plugins we're mainly looking to get new features in and maybe a couple of challenges. Bellow is a list of proposed features.&lt;br /&gt;
&lt;br /&gt;
=== REST API for the sandbox ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
During the last summer code sprint Hackademic got challenge sandboxing in the form of vagrant and docker wrappers as well as an engine to start and stop the container or vm instances.&lt;br /&gt;
What is needed now is a rest api which supports endpoint authentication and authorization which enables the sandbox engine to be completely independed from the rest of the project.&lt;br /&gt;
&lt;br /&gt;
Ideas on the project:&lt;br /&gt;
Since the sandbox is written in python, you can use microframeworks such as flask to implement the api.&lt;br /&gt;
The endpoint authorization can be done via certificates or plain signature or username/password type authentication.&lt;br /&gt;
However the communication between the two has to be over a secure channel.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
* A REST style api which allows an authenticated remote entity control the sandbox engine.&lt;br /&gt;
* PEP8 compliant code&lt;br /&gt;
* Acceptable unit test coverage&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Python, test driven developmen, some idea what REST is, some security knowledge would be preferable.&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' Konstantinos Papapanagiotou, Spyros Gasteratos - Hackademic Challenges Project Leaders&lt;br /&gt;
&lt;br /&gt;
=== New CMS ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
The CMS part of the project is really old and has accumulated a significant amount of technical debt.&lt;br /&gt;
In addition many design decisions are either outdated or could be improved. &lt;br /&gt;
Therefore it may be a good idea to leverage the power of modern web frameworks to create a new CMS.&lt;br /&gt;
The new cms can be written in php or python using any compoennts we agree are necesary and based on the framework we agree on.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
* New cms with same functionality as the old one (3 types of users -- student, teacher, admin--, 3 types of resources -- article challenge, class--, ACL type permissions, CRUD operations on every resource/user, all functionality can be extended by Plugins.&lt;br /&gt;
* REST endpoints in addition to classic ones&lt;br /&gt;
* tests covering all routes implemented&lt;br /&gt;
* PSR/PEP 8 code&lt;br /&gt;
&lt;br /&gt;
''' Note: '''&lt;br /&gt;
This is a huge project, it is ok if the student implements a part of it. However whatever implemented must be up to spec.&lt;br /&gt;
If you decide to take on this project contact us and we can agree on a list of routes.&lt;br /&gt;
If you don't decide to take on this project contact us.&lt;br /&gt;
Generally contact us, we like it when students have insightful questions and the community is active&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
Python or PHP, the framework suggested, what REST is, the technologies used, some security knowledge would be nice.&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' Konstantinos Papapanagiotou, Spyros Gasteratos - Hackademic Challenges Project Leaders&lt;br /&gt;
&lt;br /&gt;
=== First Course Type Challenge ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
We have a wonderful sandbox engine which allows for complex guided challenges to be implemented.&lt;br /&gt;
We'd like to build a challenge that guides the user through a series of steps to an end goal and teaches more information on the subject matter on the way.&lt;br /&gt;
This is a very open-ended project on purpose to allow creative student to come up with nice ideas.&lt;br /&gt;
Bellow you will find some examples that we thought might be interesting.&lt;br /&gt;
&lt;br /&gt;
Ideas on the project:&lt;br /&gt;
* Purposefully vulnerable web page that guides the user via javascript tooltips and hints to exploiting it using ZAP. ( Bonus: using ZAP via the ZAP api). The challenge is solved when the the student submits the contents of a text file located on the disk (obtained by exploited an RCE)&lt;br /&gt;
&lt;br /&gt;
* Reversing a provided binary to extract information by providing step by step instructions to reversing using any popular reversing tool (well, you can't use IDA so gdb should have to do). Challenge is solved when the keys are extracted from the binary and submitted. Bonus points if each binary donwloaded has different keys.&lt;br /&gt;
&lt;br /&gt;
* Guide to exploiting the TOP10. (Using ZAP?)&lt;br /&gt;
&lt;br /&gt;
* Defensive Type challenges -- Here's how to create a patch for this kind of vulnerability -- Challenge is solved when the unit tests are run and the vulnerability isn't there.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
* One or more Course - style challenges provided either as a docker container or as a vagrant box.&lt;br /&gt;
* Concrete documentation on how to build a challenge like this.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
The technologies used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' Konstantinos Papapanagiotou, Spyros Gasteratos - Hackademic Challenges Project Leaders&lt;br /&gt;
&lt;br /&gt;
=== Advanced Sandboxed Challenges ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
In the spirit of the challenges above, we're looking for true ctf type challenges.&lt;br /&gt;
This is an open ended task. We're expecting awesome fresh ideas.&lt;br /&gt;
&lt;br /&gt;
Ideas on the project:&lt;br /&gt;
* An application vulnerable to one or more TOP 10 elements.&lt;br /&gt;
* A logic flaws based ctf&lt;br /&gt;
* Your idea here&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
Docker containers or Vagrant boxes that contain complete new challenges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
Knowledge of the technologies used&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' Konstantinos Papapanagiotou, Spyros Gasteratos - Hackademic Challenges Project Leaders&lt;br /&gt;
&lt;br /&gt;
=== Your idea ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
Amazing students, in our experience the best, most creative and unique ideas show up when we let students suggest their own feature in relation to the project.&lt;br /&gt;
The above should give you a general idea where we're going but don't let them constrain you.&lt;br /&gt;
Do you wanna do something that would fit into Hackademic? Send us an email!&lt;br /&gt;
&lt;br /&gt;
Ideas on the project:&lt;br /&gt;
No idea, that's your turn to shine!&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
If it's code, code according to our coding standards.&lt;br /&gt;
If it's challenges, something new and interesting.&lt;br /&gt;
If it's something else, then written like the person who's going to maintain your code is a raging psychopath with an axe who knows where you live.&lt;br /&gt;
&lt;br /&gt;
In short we'd like some quality. ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' Konstantinos Papapanagiotou, Spyros Gasteratos - Hackademic Challenges Project Leaders&lt;br /&gt;
&lt;br /&gt;
== OWASP OWTF  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - VMS - OWTF Vulnerability Management System ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
Background problem to solve:&lt;br /&gt;
&lt;br /&gt;
We are trying to reduce the human work burden where there will be hundreds of issues listing apache out of date or php out of date. &lt;br /&gt;
&lt;br /&gt;
Proposed solution:&lt;br /&gt;
&lt;br /&gt;
We can meta aggregate these duplicate issues into one issue of &amp;quot;outdated software / apache / php detected&amp;quot;. with XYZ list of issues in them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A separate set of scripts that allows for grouping and management of vulnerabilities (i.e. think huge assessments), to be usable *both* from inside + outside of OWTF in a separate sub-repo here: https://github.com/owtf &lt;br /&gt;
&lt;br /&gt;
VMS will have the following features:&lt;br /&gt;
* Vulnerability correlation engine which will allow for quick identification of unique vulnerability and deduplication.&lt;br /&gt;
* Vulnerability table optimization : combining redundant vulnerabilities like example : PHP &amp;lt;5.1 , PHP &amp;lt; 5.2 , PHP &amp;lt; 5.3 all suggest upgrade php so if multiple issues are reported they should be combined.&lt;br /&gt;
* Integration with existing bug tracking system like example bugzilla, jira : Should not be too hard as all such system have one or the other method exposed (REST API or similar)&lt;br /&gt;
* Fix Validation : Since we integrate with bug tracking once dev fixed the bug and code deployed we can run specific checks via * OWTF or other tool (may be specific nessus or nexpose plugin or similar.)&lt;br /&gt;
* Management Dashboard : Could be exposed to Pentester, Higher Management where stats are shown with lesser details but more of high level overview.&lt;br /&gt;
&lt;br /&gt;
[http://www.slideshare.net/null0x00/nessus-and-reporting-karma Similar previous work for Nessus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - HTTP Request Translator Improvements ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
Problem to solve:&lt;br /&gt;
&lt;br /&gt;
There are many situations in web app pentests where just no tool will do the job and you need to script something, or mess around with the command line (classic example: sequence of steps where each step requires input from the previous step). In these situations, translating an HTTP request or a sequence of HTTP requests, takes valuable time which the pentester might just not really have.&lt;br /&gt;
&lt;br /&gt;
Proposed solution:&lt;br /&gt;
&lt;br /&gt;
An HTTP request translator, a *standalone* *tool* that can:&lt;br /&gt;
&lt;br /&gt;
1) Be used from inside OR outside of OWTF.&lt;br /&gt;
&lt;br /&gt;
2) Translate raw HTTP requests into curl commands or bash/python/php/ruby/PowerShell scripts&lt;br /&gt;
&lt;br /&gt;
3) Provide essential quick and dirty transforms: base64 (encode/decode), urlencode (encode/decode)&lt;br /&gt;
* Transforms with boundary strings? (TBD)&lt;br /&gt;
* Individually or in bulk? (TBD)&lt;br /&gt;
&lt;br /&gt;
'''Essential Function: &amp;quot;--output&amp;quot; argument'''&lt;br /&gt;
&lt;br /&gt;
CRITICAL: The command/script should be generated so that the request is sent as literally as possible.&lt;br /&gt;
&lt;br /&gt;
Example: NO client specific headers are sent. IF the original request had &amp;quot;User-Agent: X&amp;quot;, the generated command/script should have EXACTLY that (i.e. NOT a curl user agent, etc.). Obviously, the same applies to ALL other headers.&lt;br /&gt;
&lt;br /&gt;
NOTE: Ideally the following should be implemented using an extensible plugin architecture (i.e. NEW plugins are EASY to add)&lt;br /&gt;
* http request in =&amp;gt; curl command out&lt;br /&gt;
* http request in =&amp;gt; bash script out&lt;br /&gt;
* http request in =&amp;gt; python script out&lt;br /&gt;
* http request in =&amp;gt; php script out&lt;br /&gt;
* http request in =&amp;gt; ruby script out&lt;br /&gt;
* http request in =&amp;gt; PowerShell script out&lt;br /&gt;
&lt;br /&gt;
'''Basic additional arguments:'''&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;--proxy&amp;quot; argument: generates the command/script with the relevant proxy option&lt;br /&gt;
&lt;br /&gt;
		NOTE: With this the command/script may send requests through a MiTM proxy (i.e. OWTF, ZAP, Burp, etc.)&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;--string-search&amp;quot; argument: generates the command/script so that it:&lt;br /&gt;
&lt;br /&gt;
		1) performs the request&lt;br /&gt;
&lt;br /&gt;
		2) then searches for something in the response (i.e. literal match)&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;--regex-search&amp;quot; argument: generates the command/script so that it:&lt;br /&gt;
		1) performs the request&lt;br /&gt;
&lt;br /&gt;
		2) then searches for something in the response (i.e. regex match)&lt;br /&gt;
&lt;br /&gt;
'''OWTF integration'''&lt;br /&gt;
&lt;br /&gt;
The idea here, is to invoke this tool from:&lt;br /&gt;
&lt;br /&gt;
1) Single HTTP transactions:&lt;br /&gt;
&lt;br /&gt;
For example, have a button to &amp;quot;export http request&amp;quot; + then show options equivalent to the flags&lt;br /&gt;
&lt;br /&gt;
2) Multiple HTTP transactions:&lt;br /&gt;
&lt;br /&gt;
Same as with Single transactions, but letting the user &amp;quot;select a number of transactions&amp;quot; first (maybe a checkbox?).&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
'''Desired input formats:'''&lt;br /&gt;
&lt;br /&gt;
* Read raw HTTP request from stdin -Suggested default behaviour! :)-&lt;br /&gt;
&lt;br /&gt;
	Example: cat path/to/http_request.txt | http-request-translator.py --output&lt;br /&gt;
&lt;br /&gt;
* Interactive mode: read raw HTTP request from keyboard + &amp;quot;hit enter when ready&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Suggestion: This could be a &amp;quot;-i&amp;quot; (for &amp;quot;interactive&amp;quot;) flag and/or the fallback option when &amp;quot;stdin is empty&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Example:&lt;br /&gt;
&lt;br /&gt;
	1) User runs tool with desired flags (i.e. &amp;quot;--output ruby --proxy 127.0.0.1:1234 ...&amp;quot;, etc.)&lt;br /&gt;
&lt;br /&gt;
	2) Tool prints: &amp;quot;Please paste a raw HTTP request and hit enter when ready&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	3) User pastes a raw HTTP requests + hits enter&lt;br /&gt;
&lt;br /&gt;
	4) Tool outputs whatever is relevant for the flags + http request given&lt;br /&gt;
&lt;br /&gt;
* For bulk processing: Maybe a directory of raw http request files?&lt;br /&gt;
&lt;br /&gt;
'''Nice to have: Transforms'''&lt;br /&gt;
&lt;br /&gt;
In the context of translating raw HTTP requests into commands/scripts, what we want here is to provide some handy &amp;quot;macros&amp;quot; so that the relevant command/script is generated accordingly.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
NOTE: Assume something like the following arguments: &amp;quot;--transform-boundary=@@@@@@@ --transform-language=php&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Step 1) The user provides a raw HTTP request like this:&lt;br /&gt;
&lt;br /&gt;
  GET /path/to/urlencode@@@@@@@abc d@@@@@@@/test&lt;br /&gt;
  Host: target.com&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Step 2) The tool generates a bash script like the following:&lt;br /&gt;
&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  &lt;br /&gt;
  PARAM1=$(echo 'abc d' | php -r &amp;quot;echo urlencode(fgets(STDIN));&amp;quot;)&lt;br /&gt;
  curl ...... &amp;quot;http://target.com/path/to/$PARAM1/test&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OR a &amp;quot;curl command&amp;quot; like the following:&lt;br /&gt;
  PARAM1=$(echo 'abc d' | php -r &amp;quot;echo urlencode(fgets(STDIN));&amp;quot;); curl ...... &amp;quot;http://target.com/path/to/$PARAM1/test&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature can be valuable to shave a bit more time in script writing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - JavaScript Library Sniper Improvements ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
This is a project that tries to resolve a very common problem during penetration tests:&lt;br /&gt;
&lt;br /&gt;
The customer is running a number of outdated JavaScript Libraries, but there is just not enough time to determine if something useful -i.e. something *really* bad! :)- can be done with that or not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we propose a *standalone* *tool* that can:&lt;br /&gt;
&lt;br /&gt;
1) Be run BOTH from inside AND outside of OWTF&lt;br /&gt;
&lt;br /&gt;
2) Build and *update* a fingerprint JavaScript library database of:&lt;br /&gt;
* Library File hashes =&amp;gt; JavaScript Library version&lt;br /&gt;
* Library File lengths =&amp;gt; JavaScript Library version&lt;br /&gt;
* (Nice to have:) As above, but for each individual github commit (possible drawback: too big?)&lt;br /&gt;
&lt;br /&gt;
3) Build and *update* a vulnerability database of:&lt;br /&gt;
* JavaScript Library version =&amp;gt; CVE - CVSS score - Vulnerability info&lt;br /&gt;
&lt;br /&gt;
4) Given a [ JavaScript file OR hash OR length ], found in the database, provides:&lt;br /&gt;
* JavaScript Library version&lt;br /&gt;
* List of vulnerabilities sorted in descending CVSS score order&lt;br /&gt;
&lt;br /&gt;
5) (very cool to have) Given a list of JavaScript files (maybe a directory), provides:&lt;br /&gt;
* ALL Library/vulnerability matches described on 4)&lt;br /&gt;
	&lt;br /&gt;
Once the standalone tool is built and verified to be working, OWTF should be able to:&lt;br /&gt;
&lt;br /&gt;
Feature 1) GREP plugin improvement (Web Application Fingerprint):&lt;br /&gt;
&lt;br /&gt;
Step 1) Lookup file lengths and hashes in the &amp;quot;JavaScript library database&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Step 2) If a match is found: provide the list of known vulnerabilities against &amp;quot;JavaScript library X&amp;quot; to the user&lt;br /&gt;
&lt;br /&gt;
Feature 2) SEMI-PASSIVE plugin improvement (Web Application Fingerprint):&lt;br /&gt;
&lt;br /&gt;
1) Requests all referenced BUT missing JavaScript files -i.e. scanners won't load JavaScript files! :)-&lt;br /&gt;
&lt;br /&gt;
2) re-runs the GREP plugin on the new files (i.e. to avoid missing vulns due to unrequested JavaScript files)&lt;br /&gt;
&lt;br /&gt;
Potential projects worth having a look for potential overlap/inspiration:&lt;br /&gt;
* [https://owasp.org/index.php/OWASP_Dependency_Check OWASP Dependency Check?]&lt;br /&gt;
&lt;br /&gt;
How many JavaScript libraries should be included?&lt;br /&gt;
* As many as possible, but especially the major ones: jQuery, knockout, etc.&lt;br /&gt;
* &amp;quot;Nirvana&amp;quot; Nice to have: ALL Individual versions of ALL JavaScript files from ALL opensource projects, (ideally) even if the project is not a JavaScript library -i.e. JavaScript files from Joomla, Wordpress, etc.-&lt;br /&gt;
&lt;br /&gt;
Common JavaScript library fingerprinting techniques include:&lt;br /&gt;
* Parse the JavaScript file and grab the version from there&lt;br /&gt;
* Determine the JavaScript version based on a hash of the file&lt;br /&gt;
* Determine the JavaScript version based on the length of the file&lt;br /&gt;
&lt;br /&gt;
Other Challenges:&lt;br /&gt;
* &amp;quot;the file&amp;quot; could be &amp;quot;the minimised file&amp;quot;, &amp;quot;the expanded file&amp;quot; or even &amp;quot;a specific JavaScript file from Library X&amp;quot;&lt;br /&gt;
* When the JavaScript file does not match a specific version:&lt;br /&gt;
	1) The commit that matches the closest should (ideally) be found&lt;br /&gt;
	2) The NEXT library version after that commit (if present) should be found&lt;br /&gt;
	3) From there, it is about reusing the knowledge to figure out public vulnerabilities, CVSS scores, etc. again&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Off-line HTTP traffic uploader ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
Although it is awesome that OWTF runs a lot of tools on behalf of the user, there are situations where uploading the HTTP traffic of another tool off-line can be very interesting for OWTF, for example:&lt;br /&gt;
&lt;br /&gt;
* Tools that OWTF has trouble proxying right now: skipfish, hoppy&lt;br /&gt;
* Tools that the user may have run manually OR even from a tool aggregator -very common! :)-&lt;br /&gt;
* Tools that we just don't run from OWTF: ZAP, Burp, Fiddler&lt;br /&gt;
&lt;br /&gt;
This project is about implementing an off-line utility able to parse HTTP traffic:&lt;br /&gt;
&lt;br /&gt;
1) Figure out how to read output files from various tools like:&lt;br /&gt;
skipfish, hoppy, w3af, arachni, etc.&lt;br /&gt;
Nice to have: ZAP database, Burp database&lt;br /&gt;
&lt;br /&gt;
2) Translate that into the following clearly defined fields:&lt;br /&gt;
&lt;br /&gt;
* HTTP request&lt;br /&gt;
* HTTP response status code&lt;br /&gt;
* HTTP response headers&lt;br /&gt;
* HTTP response body&lt;br /&gt;
&lt;br /&gt;
3) IMPORTANT: Implement a plugin-based uploader system&lt;br /&gt;
&lt;br /&gt;
4) IMPORTANT: Implement ONE plugin, that uploads that into the OWTF database&lt;br /&gt;
&lt;br /&gt;
5) IMPORTANT: OWTF should ideally be able to invoke the uploader right after running a tool&lt;br /&gt;
	Example: OWTF runs skipfish, skipfish finishes, OWTF runs the HTTP traffic uploader, all skipfish data is pushed to the OWTF DB.&lt;br /&gt;
&lt;br /&gt;
6) CRITICAL: The off-line HTTP traffic uploader should be smart enough to read + push 1-by-1 instead of *stupidly* trying to load everything into memory first, you have been warned! :)&lt;br /&gt;
&lt;br /&gt;
	Why? Because in a huge assessment, the output of &amp;quot;tool X&amp;quot; can be &amp;quot;10 GB&amp;quot;, which is *stupid* to load into memory, this is OWTF, we *really* try to foresee the crash before it happens! ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CRITICAL: It is important to implement a plugin-based uploader system, so that other projects can benefit from this work (i.e. to be able to import third-party tool data to ZAP, Burp, and other tools in a similar fashion), and hence hopefully join us in maintaining this project moving forward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Health Monitor ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
In some cases, especially on large assessments (think: &amp;gt; 30 URLs) a number of things often go wrong and OWTF needs to recover from everything, which is difficult.&lt;br /&gt;
&lt;br /&gt;
For this reason, OWTF needs an independent module, which is completely detached from OWTF (a different process), to ensure the health of the assessment is in check at all times, this includes the following:&lt;br /&gt;
&lt;br /&gt;
'''Feature 1) Alerting mechanisms'''&lt;br /&gt;
&lt;br /&gt;
When any of the monitor alerts (see below) is triggered. The OWTF user will be notified immediately through ALL of the following means:&lt;br /&gt;
* Playing an mp3 song (both local and possibly remote locations)&lt;br /&gt;
* Scan status overview on the CLI&lt;br /&gt;
* Scan status overview on the GUI&lt;br /&gt;
&lt;br /&gt;
NOTE: A configuration file from where the user can enable/disable/configure all these mechanisms is desired.&lt;br /&gt;
&lt;br /&gt;
'''Feature 2) Corrective mechanisms'''&lt;br /&gt;
&lt;br /&gt;
Corrective mechanisms are also expected in this project, these will be accomplished sending OWTF api messages such as:&lt;br /&gt;
* Stop this tool&lt;br /&gt;
* Freeze this process (to continue later)&lt;br /&gt;
* Freeze the whole scan (to continue later)&lt;br /&gt;
&lt;br /&gt;
Additional mechanisms:&lt;br /&gt;
* Show a ranking of files that take the most space&lt;br /&gt;
&lt;br /&gt;
'''Feature 3) Target monitor'''&lt;br /&gt;
&lt;br /&gt;
Brief overview:&lt;br /&gt;
&lt;br /&gt;
All target URLs are checked for availability periodically (i.e. once x 5 minutes?), if a URL in scope goes down the pentester is alerted (see above).&lt;br /&gt;
&lt;br /&gt;
Potential approach: Check if length of 1st page changes every 60 seconds.&lt;br /&gt;
&lt;br /&gt;
NOTE: It might be needed to change this on the fly.&lt;br /&gt;
&lt;br /&gt;
More background&lt;br /&gt;
&lt;br /&gt;
Consider the following scenario:&lt;br /&gt;
&lt;br /&gt;
Current Situation aka &amp;quot;problem to solve&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
1) Website X goes down during a scan&lt;br /&gt;
&lt;br /&gt;
2) the customer notices&lt;br /&gt;
&lt;br /&gt;
3) the customer tells the boss&lt;br /&gt;
&lt;br /&gt;
4) the boss tells the pentester&lt;br /&gt;
&lt;br /&gt;
5) the pentester stops the tool which was *still* trying to scan THAT target (!!!!)&lt;br /&gt;
&lt;br /&gt;
Desired situation aka &amp;quot;solution&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
It would be much more professional AND efficient that:&lt;br /&gt;
&lt;br /&gt;
1) The pentester notices&lt;br /&gt;
&lt;br /&gt;
2) The pentester tells the boss&lt;br /&gt;
&lt;br /&gt;
3) The boss tells the customer&lt;br /&gt;
&lt;br /&gt;
4) OWTF stops the tool because it knows that website is DEAD anyway&lt;br /&gt;
&lt;br /&gt;
A target monitor could easily do this with heartbeat requests + playing mp3s&lt;br /&gt;
&lt;br /&gt;
The target monitor will use the api to tell OWTF &amp;quot;this target is dead: freeze(stop?) current tests, skip target in future tests&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Feature 4) Disk space monitor'''&lt;br /&gt;
&lt;br /&gt;
Another problem that is relatively common in large assessments, is that all disk space is used and the scanning box becomes unresponsive or crashes. When this happens it is too late, the pentester may also see this coming but wonder “which are the biggest files in the filesystem that I can delete”, it is not ideal to have to look for these files in a moment when the scanning box is about to crash :).&lt;br /&gt;
&lt;br /&gt;
Proposed solution:&lt;br /&gt;
&lt;br /&gt;
Regularly monitor how much disk space is left, especially on the partition where OWTF is writing the review (but also tool directories such as /home/username/.w3af/tmp, etc.). Keep track of files created by OWTF and all called tools and sort them by size in descending order. Then when the disk space is going low (i.e. predefined threshold), an mp3 or similar is played and this list is displayed to the user, so that they know what to delete to survive :).&lt;br /&gt;
&lt;br /&gt;
'''Feature 5) Network/Internet Connectivity monitor'''&lt;br /&gt;
&lt;br /&gt;
Sometimes it may also happen that ISP, etc. connectivity go down in the middle of a scan, this is often a very unfortunate situation since most tools are scanning in parallel and they won’t be able to produce a report OR even resume (i.e. A LOT is lost). The goal here is that OWTF does all of the following automatically:&lt;br /&gt;
&lt;br /&gt;
1) Detects the lack of connectivity&lt;br /&gt;
&lt;br /&gt;
2) Freezes all the tools (read: processes) in progress&lt;br /&gt;
&lt;br /&gt;
3) Resumes the scan when the connectivity is back.&lt;br /&gt;
&lt;br /&gt;
'''Feature 6) Tool crash detection'''&lt;br /&gt;
&lt;br /&gt;
Sometimes, certain tools (most notably, ahem, w3af), when they crash they do NOT exit. This leaves OWTF in a difficult position where 1+ process is waiting for nothing, forever (i.e. because “Tool X” will never finish)&lt;br /&gt;
&lt;br /&gt;
'''Feature 7) Tool (Plugin?) CPU/RAM/Bandwidth abuse detection and correction'''&lt;br /&gt;
&lt;br /&gt;
OWTF needs to notice when some tools crash and/or “go beserk” with RAM/CPU/Bandwidth consumption, this is different from the existing built-in checks in OWTF like “do not launch a new tool if there is less than XYZ RAM free” and more like “if tool X is using &amp;gt; XYZ of the available RAM/CPU/Bandwidth” and this is (potentially) negatively affecting other tools/tests, then throttle it.&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Installation Improvements and Package manager ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
This project is to implement what was suggested in the following github issue:&lt;br /&gt;
[https://github.com/owtf/owtf/issues/192 https://github.com/owtf/owtf/issues/192]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recently i tried to make a fresh installation of OWTF. The installation process takes too much time. Is there any way to make the installation faster?&lt;br /&gt;
Having a private server with:&lt;br /&gt;
* pre-installed files for VMs&lt;br /&gt;
* pre-configured and patched tools&lt;br /&gt;
* Merged Lists&lt;br /&gt;
* Pre-configured certificates&lt;br /&gt;
Additionally a minimal installation which will install the core of OWTF with the option of update can increase the installation speed. The update procedure will start fetching the latest file versions from the server and copy them to the right path.&lt;br /&gt;
Additional ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
-- They could be hosted on Dropbox or a private VPS :)&lt;br /&gt;
&lt;br /&gt;
2 Installation Modes&lt;br /&gt;
* For high speed connections (Downloading the files uncompressed)&lt;br /&gt;
* For low speed connections (Downloading the files compressed)&lt;br /&gt;
and the installation crashed because i runned out of space in the vm&lt;br /&gt;
IMPORTANT NOTE: OWTF should check the available disk space BEFORE installation starts + warn the user if problems are likely&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* Excellent reliability (i.e. proper exception handling, etc.)&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Testing Framework Improvements ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
As OWASP OWTF grows it makes sense to build custom unit tests to automatically re-test that functionality has not been broken. In this project we would like to improve the existing unit testing framework so that creating OWASP OWTF unit tests is as simple as possible and all missing tests for new functionality are created. The goal of this project is to update the existing Unit Test Framework to create all missing tests as well as improve the existing ones to verify OWASP OWTF functionality in an automated fashion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Top features'''&lt;br /&gt;
&lt;br /&gt;
In this improvement phase, the Testing Framework should:&lt;br /&gt;
* (Top Prio) Focus more on functional tests&lt;br /&gt;
For example: Improve coverage of OWASP Testing Guide, PTES, etc. (lots of room for improvement there!)&lt;br /&gt;
* (Top Prio) Put together a great wiki documentation section for contributors&lt;br /&gt;
The goal here is to help contributors write tests for the functionality that they implement. This should be as easy as possible.&lt;br /&gt;
* (Top Prio) Fix the current Travis issues :)&lt;br /&gt;
* (Nice to have) Bring the unit tests up to speed with the codebase&lt;br /&gt;
This will be challenging but very worth trying after top priorities.&lt;br /&gt;
The wiki should be heavily updated so that contributors create their own unit tests easily moving forward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''General background'''&lt;br /&gt;
&lt;br /&gt;
The Unit Test Framework should be able to:&lt;br /&gt;
* Define test categories: For example, &amp;quot;all plugins&amp;quot;, &amp;quot;web plugins&amp;quot;, &amp;quot;aux plugins&amp;quot;, &amp;quot;test framework core&amp;quot;, etc. (please see [http://www.slideshare.net/abrahamaranguren/introducing-owasp-owtf-workshop-brucon-2012 this presentation] for more background)&lt;br /&gt;
* Allow to regression test isolated plugins (i.e. &amp;quot;only test _this_ plugin&amp;quot;)&lt;br /&gt;
* Allow to regression test by test categories (i.e. &amp;quot;test only web plugins&amp;quot;)&lt;br /&gt;
* Allow to regression test everything (i.e. plugins + framework core: &amp;quot;test all&amp;quot;)&lt;br /&gt;
* Produce meaningful statistics and easy to navigate logs to identify which tests failed and ideally also hints on how to potentially fix the problem where possible&lt;br /&gt;
* Allow for easy creation of _new_ unit tests specific to OWASP OWTF&lt;br /&gt;
* Allow for easy modification and maintenance of _existing_ unit tests specific to OWASP OWTF&lt;br /&gt;
* Perform well so that we can run as many tests as possible in a given period of time&lt;br /&gt;
* Potentially leverage the python unittest library: [http://docs.python.org/2/library/unittest.html http://docs.python.org/2/library/unittest.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* Performant and automated regression testing&lt;br /&gt;
* Unit tests for a wide coverage of OWASP OWTF, ideally leveraging the Unit Test Framework where possible&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python, experience with unit tests and automated regression testing would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Tool utilities module ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
The spirit of this feature is something that may or may not be used from OWTF: These are utilities that may be chained together by OWTF OR a penetration tester using the command line. The idea is to automate mundane tasks that take time but may provide a lever to a penetration tester short on time.&lt;br /&gt;
&lt;br /&gt;
'''Feature 1) Vulnerable software version database:'''&lt;br /&gt;
&lt;br /&gt;
Implement a searchable vulnerable software version database so that a penetration tester enters a version and gets vulnerabilities sorted by criticality with MAX Impact vulnerabilities at the top (possibly: CVSS score in DESC order).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
[http://www.cvedetails.com/vulnerability-list.php?vendor_id=74&amp;amp;product_id=128&amp;amp;version_id=149817&amp;amp;page=1&amp;amp;hasexp=0&amp;amp;opdos=0&amp;amp;opec=0&amp;amp;opov=0&amp;amp;opcsrf=0&amp;amp;opgpriv=0&amp;amp;opsqli=0&amp;amp;opxss=0&amp;amp;opdirt=0&amp;amp;opmemc=0&amp;amp;ophttprs=0&amp;amp;opbyp=0&amp;amp;opfileinc=0&amp;amp;opginf=0&amp;amp;cvssscoremin=0&amp;amp;cvssscoremax=0&amp;amp;year=0&amp;amp;month=0&amp;amp;cweid=0&amp;amp;order=3&amp;amp;trc=17&amp;amp;sha=0d26af6f3ba8ea20af18d089df40c252ea09b711 Vulnerabilities against specific software version]&lt;br /&gt;
&lt;br /&gt;
'''Feature 2) Nmap output file merger:'''&lt;br /&gt;
&lt;br /&gt;
Unify nmap files *without* losing data: XML, text and greppable formats&lt;br /&gt;
For example: Sometimes 2 scans pass through the same port, one returns the server version, the other does not, we obviously do not want to lose banner information :).&lt;br /&gt;
&lt;br /&gt;
'''Feature 3) Nmap output file vulnerability mapper'''&lt;br /&gt;
&lt;br /&gt;
From an nmap output file, get the unique software version banners, and provide a list of (maybe in tabs?):&lt;br /&gt;
&lt;br /&gt;
1) CVEs in reverse order of CVSS score, with links.&lt;br /&gt;
&lt;br /&gt;
2) Metasploit modules available for each CVE / issue&lt;br /&gt;
&lt;br /&gt;
NOTE: Can supply an *old* shell script for reference&lt;br /&gt;
&lt;br /&gt;
3) Servers/ports affected (i.e. all server / port combinations using that software version)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Feature 4) URL target list creator:'''&lt;br /&gt;
&lt;br /&gt;
Turn all “speaks http” ports (from any nmap format) into a list of URL targets for OWTF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Feature 5) Hydra command creator:'''&lt;br /&gt;
&lt;br /&gt;
nmap file in =&amp;gt; Hydra command list out&lt;br /&gt;
&lt;br /&gt;
grep http auth / login pages in output files to identify login interfaces =&amp;gt; Hydra command list out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Feature 6) WP-scan command creator:'''&lt;br /&gt;
&lt;br /&gt;
look at all URLs (i.e. nmap file), check if they might be running word press, generate a list of suggested wp-scan commands for all targets that might be running word press&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* Excellent reliability (i.e. proper exception handling, etc.)&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python, experience with unit tests and automated regression testing would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
''' OWASP Mentors '''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OWASP ZAP ==&lt;br /&gt;
&lt;br /&gt;
ZAP is one of the top OWASP projects and the most active open source web security tools. &lt;br /&gt;
&lt;br /&gt;
You can follow (and join in) the GSoC discussions on the ZAP Developer Group: https://groups.google.com/d/msg/zaproxy-develop/Uy0JPkzsI_s/Bj7OTSkISCIJ&lt;br /&gt;
&lt;br /&gt;
=== Bug tracker support ===&lt;br /&gt;
&lt;br /&gt;
This would allow ZAP users to raise issues in bug trackers directly within ZAP. Ideally it would be implemented as an extension with a generic framework and then adaptors for specific trackers, like github and bugzilla.&lt;br /&gt;
&lt;br /&gt;
The info included in the issues raised should be as configurable as possible so that users can include whatever they want, and set things like custom fields.&lt;br /&gt;
&lt;br /&gt;
''' Expected Results '''&lt;br /&gt;
&lt;br /&gt;
* Raise issues in github and bugzilla from alerts within the ZAP UI&lt;br /&gt;
* Support for raising alerts using the ZAP API&lt;br /&gt;
* High level of customization so that users can tune to their requirements&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisite: '''&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential.&lt;br /&gt;
&lt;br /&gt;
''' Mentors '''&lt;br /&gt;
Simon Bennetts and other members of the ZAP core team&lt;br /&gt;
&lt;br /&gt;
=== Field enumeration ===&lt;br /&gt;
&lt;br /&gt;
This would allow a user to iterate though a set of (user defined) characters in order to identify the ones that are filtered out and/or escaped.&lt;br /&gt;
&lt;br /&gt;
The user should be able to define the character sets to test and will probably need to configure the success and failure conditions, as well as valid values for other fields in the form.&lt;br /&gt;
&lt;br /&gt;
''' Expected Results '''&lt;br /&gt;
&lt;br /&gt;
* User able to specify a specific field to enumerate via the ZAP UI&lt;br /&gt;
* A list of all valid characters to be returned from the sets of characters the user specifies&lt;br /&gt;
* Ability to configure a wide range of success and failure conditions to cope with as many possible situations as possible&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisite: '''&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential.&lt;br /&gt;
&lt;br /&gt;
''' Mentors '''&lt;br /&gt;
Simon Bennetts and other members of the ZAP core team&lt;br /&gt;
&lt;br /&gt;
=== Form Handling ===&lt;br /&gt;
&lt;br /&gt;
The ZAP traditional and Ajax spiders explore an application by putting basic default values in all forms. These may often not be valid values, for example using &amp;quot;ZAP&amp;quot; when an email address is required.&lt;br /&gt;
&lt;br /&gt;
The enhancement would allow the user to define default values based on pattern matching against the field names and/or ids.&lt;br /&gt;
&lt;br /&gt;
It would also be very useful if it could show the user all forms and their associated fields for an application, and then allow the user to update the default values.&lt;br /&gt;
&lt;br /&gt;
''' Expected Results '''&lt;br /&gt;
&lt;br /&gt;
* User able to specify default values for all forms used by the ZAP spiders&lt;br /&gt;
* Display all of the forms and fields for an application and allow the user to update the default values to be used&lt;br /&gt;
* Full support for defining default values via the API&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisite: '''&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential.&lt;br /&gt;
&lt;br /&gt;
''' Mentors '''&lt;br /&gt;
Simon Bennetts and other members of the ZAP core team&lt;br /&gt;
&lt;br /&gt;
=== Automated authentication detection and configuration ===&lt;br /&gt;
&lt;br /&gt;
ZAP has extensive support for supporting application authentication, but configuring this is a manual process which can be tricky to get right.&lt;br /&gt;
&lt;br /&gt;
The enhancement would allow ZAP to detect as many forms of authentication as possible and automatically configure them using the existing ZAP functionality.&lt;br /&gt;
&lt;br /&gt;
''' Expected Results '''&lt;br /&gt;
&lt;br /&gt;
* Automatically detect a wide range of authentication mechanisms&lt;br /&gt;
* Automatically configure ZAP to handle them&lt;br /&gt;
* Full support via the API&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisite: '''&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential.&lt;br /&gt;
&lt;br /&gt;
''' Mentors '''&lt;br /&gt;
Simon Bennetts and other members of the ZAP core team&lt;br /&gt;
&lt;br /&gt;
=== Advanced padding oracle testing and exploitation ===&lt;br /&gt;
&lt;br /&gt;
ZAP has currently has very minimal support in it's the (beta) [https://github.com/zaproxy/zap-extensions/blob/beta/src/org/zaproxy/zap/extension/ascanrulesBeta/PaddingOraclePlugin.java PaddingOraclePlugin] for identifying potential [https://en.wikipedia.org/wiki/Padding_oracle_attack padding oracle] vulnerabilities. Specifically, it only examines two indicators for possible oracles (changing the last byte of padding by XORing it with 0x1 and resubmitting the HTTP request with the new altered parameter to see if the HTTP response contains some error patter or to check if the returned HTTP status is a 500 error. Furthermore, it is limited to checking parameters, but encrypted values that may be susceptible to padding oracle attacks may also be in HTTP cookies or even HTTP request / response values. (In the latter case, these custom headers are usually manipulated via AJAX.) Lastly SOAP messages using [https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html W3C XML Encryption] and JSON are other potential sources of padding oracle vulnerabilities that might be examined.&lt;br /&gt;
&lt;br /&gt;
The enhancement would extend the support to more a broader attack surface such as new attack vectors like cookies, HTTP headers, and possibly XML or JSON and also expand the identification of potential new oracles to not just keywords, but to any minute difference in responses (at least for idempotent GETs) or significant variations in time. Lastly, we would like to add the ability to exploit padding oracle vulnerabilities discovered which could lead to whole lot of other interesting discoveries.&lt;br /&gt;
&lt;br /&gt;
''' Expected Results '''&lt;br /&gt;
&lt;br /&gt;
* Detect oracle padding vulnerabilities in more situations&lt;br /&gt;
** Expanded attack vectors: cookies, HTTP headers, XML, JSON&lt;br /&gt;
** Expanded variation of recognized potential oracles: ''any'' output differences when padding correct vs. incorrect (takes much more than flipping a single padding bit), significant differences in timing, etc.&lt;br /&gt;
* Add the option to actually attempt to exploit discovered potential padding oracle vulnerabilities and report additional subsequent findings once the ciphertext is actually decrypted.&lt;br /&gt;
* Build test code to illustrate a working proof of concept&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisite: '''&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential. Reading up on basic details of how padding oracle attacks operate would also be extremely helpful.&lt;br /&gt;
&lt;br /&gt;
''' Mentors '''&lt;br /&gt;
Kevin Wall (cryptography subject matter expert) and other members of the ZAP core team&lt;br /&gt;
&lt;br /&gt;
=== Zest text representation and parser ===&lt;br /&gt;
&lt;br /&gt;
Zest is a graphical scripting language from the Mozilla Security team, and is used as the ZAP macro language.&lt;br /&gt;
&lt;br /&gt;
A standardized text representation and parser would be very useful and help its adoption.&lt;br /&gt;
&lt;br /&gt;
''' Expected Results '''&lt;br /&gt;
&lt;br /&gt;
* A documented definition of a text representation for Zest&lt;br /&gt;
* A parser that converts the text representation into a working Zest script&lt;br /&gt;
* An option in the Zest java implementation to output Zest scripts text format&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisite: '''&lt;br /&gt;
The Zest reference implementation is written in Java, so a good knowledge of this language is recommended. Some knowledge of application security would be useful, but not essential.&lt;br /&gt;
&lt;br /&gt;
''' Mentors '''&lt;br /&gt;
Simon Bennetts and other members of the ZAP core team&lt;br /&gt;
&lt;br /&gt;
=== Your idea ===&lt;br /&gt;
&lt;br /&gt;
We're always open to students coming up with their own suggestions for ZAP projects, so if you have something you think would make ZAP better then please get in touch!&lt;br /&gt;
&lt;br /&gt;
''' Expected Results '''&lt;br /&gt;
&lt;br /&gt;
* That depends on your project, but clearly defined goals will be necessary&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisite: '''&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential.&lt;br /&gt;
&lt;br /&gt;
''' Mentors '''&lt;br /&gt;
Simon Bennetts and other members of the ZAP core team&lt;br /&gt;
&lt;br /&gt;
== OWASP AppSensor ==&lt;br /&gt;
&lt;br /&gt;
[[OWASP AppSensor Project]] provides real-time application layer intrusion detection. &lt;br /&gt;
&lt;br /&gt;
 * Check the AppSensor wiki page linked above&lt;br /&gt;
 * Contact us through the mailing list.&lt;br /&gt;
 * Check our [https://github.com/jtmelton/appsensor github repository] and the [https://github.com/jtmelton/appsensor/issues open tickets]&lt;br /&gt;
 * Also see our [http://www.appsensor.org appsensor website]&lt;br /&gt;
&lt;br /&gt;
=== Dashboard UI Expansion ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
AppSensor provides a solid base of functionality to applications, and we currently have a minimal application for data display. This project will involve expanding the default/standard UI for the AppSensor project. As part of the project, you will learn about the domain model, iterating your mockup designs and share those with the project leader(s) and the community for feedback. The existing stack is based on spring boot and reactjs. There are lots of features to be added, and you'll work with the project leader(s) and the community to build the most-needed and requested capabilities.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
The existing dashboard application will be expanded and will involve features like: &lt;br /&gt;
* Search (could involve significant back-end work to configure indexing, etc.)&lt;br /&gt;
* Policy Management (edit server configuration in real-time)&lt;br /&gt;
* Data visualization / dashboarding&lt;br /&gt;
&lt;br /&gt;
Source code, tests, and associated documentation for both the back-end and UI will be delivered for this effort.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Comfortable with UI design and development, particularly building dashboards. Comfortable with Java (with some assistance). Basic familiarity with security concepts related to intrusion detection and prevention as this is the domain.&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' John Melton - OWASP AppSensor Project Leader (Development)&lt;br /&gt;
&lt;br /&gt;
=== Trend Monitoring Analysis Engine ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
AppSensor currently supports a basic policy-driven analysis engine to determine if a series of events represents an attack (if a user triggers 5 of this type of event in 10 minutes, it's an attack). While this supports many use cases, there are times when it would be helpful to know trending information. If a particular function of the application begins to see 10 times its normal amount of traffic, that might represent an attack. This project would add an additional analysis engine to support &amp;quot;trend monitoring&amp;quot;. Development of this feature would require some initial research on alternative implementation strategies, followed by the development and testing of the feature in AppSensor. &lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
The project should produce: &lt;br /&gt;
* A trend monitoring analysis engine to be used either in place of or in addition to the existing policy-driven analysis engine&lt;br /&gt;
* Associated configuration mechanism to specify the trending rules/policy&lt;br /&gt;
* A small full sample demo application showing usage of the trend monitoring feature&lt;br /&gt;
&lt;br /&gt;
Source code and associated tests for the feature will be created, along with the associated end user documentation for how to setup and configure it. &lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Comfortable in Java and unit testing.&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' John Melton - OWASP AppSensor Project Leader (Development)&lt;br /&gt;
&lt;br /&gt;
=== Expand language support for clients ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
AppSensor supports various modes for communication with the server. The language and framework of the client application are required only to support the given mode. This flexibility is desirable, but having pre-built clients in various languages is useful for our user-base. This project would involve working with various popular languages and frameworks to build support for communicating with the appsensor server backend.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
The project should produce: &lt;br /&gt;
* Clients in multiple popular languages for interaction with appsensor server&lt;br /&gt;
* Evaluate the possibility for generating clients from specification as opposed to writing and maintaining the code (ie. swagger for REST)&lt;br /&gt;
* At a minimum, coverage for the HTTP/REST mode should be supported. Other modes (thrift, soap, kafka, etc.) will be produced as time allows. &lt;br /&gt;
* Several small demo applications showing usage of the given APIs&lt;br /&gt;
&lt;br /&gt;
Source code and tests for the feature will be created, along with the associated end user documentation for how to setup and configure it. &lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Comfortable working in multiple popular languages and unit testing.&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' John Melton - OWASP AppSensor Project Leader (Development)&lt;br /&gt;
&lt;br /&gt;
=== Implement Detection Points in Reverse Proxy ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
AppSensor works by tracking events that are created by &amp;quot;detection points&amp;quot;, essentially locations in the processing pipeline where suspicious or malicious intent is observed. This often requires business-specific detection within the application. However, the project has defined a number of detection points (https://www.owasp.org/index.php/AppSensor_DetectionPoints) and responses (https://www.owasp.org/index.php/AppSensor_ResponseActions), some of which can be generically applied across a broader set of applications, including those that are common to an entire organization or even cross-organization. For that reason, a sub-project has been created (https://github.com/jtmelton/appsensor-reverse-proxy) that provides support for detection points and responses that are generic enough to be broadly applicable. This project would expand support for these detection points and responses.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
The project should produce: &lt;br /&gt;
* New detection points and responses&lt;br /&gt;
* Documentation for how to deploy the project and any end-user considerations&lt;br /&gt;
* Load testing each function as this project front-ends applications, and traffic throughput characteristics are important to our user-base.&lt;br /&gt;
* A small sample demo application showing the utility of the proxy. A recording of the usage for community viewing would be beneficial.&lt;br /&gt;
&lt;br /&gt;
Source code and associated tests for the feature will be created, along with the associated end user documentation for how to setup and configure it. &lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Comfortable in golang and unit testing.&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' John Melton - OWASP AppSensor Project Leader (Development)&lt;br /&gt;
&lt;br /&gt;
== OWASP Seraphimdroid [[OWASP_SeraphimDroid_Project| ]] ==&lt;br /&gt;
&lt;br /&gt;
=== Behavioral malware and intrusion analysis  ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
[[OWASP_SeraphimDroid_Project|OWASP Seraphimdroid]] is an Android mobile app which already has a capability to statically analyze malware using machine learning (weka toolkit) relying on permissions. However, this is usually not enough and we intend to improve this with behavioral analysis. There are a number of paper in scientific literature describing how to detect malware and intrusions by dynamically analyzing its behavior (system calls, battery consumption, etc.). The idea of this project is to find the best approach that can be implemented on the device and implement it.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
*  Reviewing scientific literature and find feasible approach we can take&lt;br /&gt;
*  Implement and possibly improve the approach in Seraphimdroid&lt;br /&gt;
*  Test the model and provide controls to switch algorithm on or off and possibly fine tune it&lt;br /&gt;
*  Documenting approach as a technical report&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
* Java&lt;br /&gt;
* Android&lt;br /&gt;
* CSV, XML&lt;br /&gt;
* Basic knowledge and interest in machine learning&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' &lt;br /&gt;
* [[User:Nikola_Milosevic|Nikola Milosevic]] - OWASP Seraphimdroid Project Leader&lt;br /&gt;
&lt;br /&gt;
=== Framework for plugin development  ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
[[OWASP_SeraphimDroid_Project|OWASP Seraphimdroid]] is well rounded security and privacy app, however, it lacks some components community can provide. We would like to provide community the way to develop plugins that can add features to OWASP Seraphimdroid app. However, the way of integrating external components into Android app may be challenge. The way of presenting GUI and integration between processes need to be examined and developed. &lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
*  Examining the way of integrating third party apps through some provided API to OWASP Seraphimdroid&lt;br /&gt;
*  Providing GUI integration with third party components&lt;br /&gt;
*  Develop at least one test plugin&lt;br /&gt;
*  Document the development process and API&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
* Java&lt;br /&gt;
* Android&lt;br /&gt;
* CSV, XML&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' &lt;br /&gt;
* [[User:Nikola_Milosevic|Nikola Milosevic]] - OWASP Seraphimdroid Project Leader&lt;br /&gt;
&lt;br /&gt;
=== Educational component  ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
[[OWASP_SeraphimDroid_Project|OWASP Seraphimdroid]] is well rounded security and privacy app. The initial idea of the project was to provide educational platform for common users, where by using the application, users can learn about risks for their privacy and security. Some components already has some sort of explanation, which is educational. However, it lacks of uneatable knowledge source and some of the components that monitor user's behavior do not provide sufficient information. Idea of this project is to develop monitoring of user activity and an component that can warn user about risks if he does something risky. Also, mobile security knowledge base that can be updated remotely will be a huge new asset to the application.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
*  Develop uneatable knowledge base and GUI for it&lt;br /&gt;
*  Develop web server where the knowledge base can be updated&lt;br /&gt;
*  Improve current educational reporting&lt;br /&gt;
*  Develop methodology for monitoring users and notifying them about risky activities&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
* Java&lt;br /&gt;
* Android&lt;br /&gt;
* CSV, XML&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' &lt;br /&gt;
* [[User:Nikola_Milosevic|Nikola Milosevic]] - OWASP Seraphimdroid Project Leader&lt;br /&gt;
&lt;br /&gt;
== OWASP ZSC Tool ==&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
[[OWASP_ZSC_Tool_Project|OWASP ZSC]] is an open source software in python language which lets you generate customized shellcodes and convert scripts to an obfuscated script. This software can be run on Windows/Linux/OSX under python.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
Please take a look of our TODO list in Github to get some ideas:&lt;br /&gt;
https://github.com/Ali-Razmjoo/OWASP-ZSC/issues&lt;br /&gt;
&lt;br /&gt;
Another ideas:&lt;br /&gt;
* Help us develop shellcode module for windows&lt;br /&gt;
* Develop shellcode module for OSX&lt;br /&gt;
&lt;br /&gt;
Read about the project here:&lt;br /&gt;
https://ali-razmjoo.gitbooks.io/owasp-zsc/content/&lt;br /&gt;
&lt;br /&gt;
Recommended reading:&lt;br /&gt;
http://www.vividmachines.com/shellcode/shellcode.html&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
* Python&lt;br /&gt;
* Basic knowledge about Shellcode and assembly language&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' &lt;br /&gt;
*Christo and Timo Goosen and Brian Beaudry- OWASP ZSC Contributors&lt;br /&gt;
&lt;br /&gt;
Contact us through our mailing list for questions:&lt;br /&gt;
https://groups.google.com/d/forum/owasp-zsc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OWASP-SKF (Security Knowledge Framework) ==&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
The OWASP Security Knowledge Framework is intended to be a tool that is used as a guide for building and verifying secure software. It can also be used to train developers about application security. Education is the first step in the Secure Software Development Lifecycle. This software can be run on Windows/Linux/OSX under python.&lt;br /&gt;
&lt;br /&gt;
The 4 Core usage of SKF:&lt;br /&gt;
&lt;br /&gt;
    Security Requirements OWASP ASVS for development and for third party vendor applications&lt;br /&gt;
    Security knowledge reference (Code examples/ Knowledge Base items)&lt;br /&gt;
    Security is part of design with the pre-development functionality in SKF&lt;br /&gt;
    Security post-development functionality in SKF for verification with the OWASP ASVS&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
    More code examples for different languages&lt;br /&gt;
    Better quality of the knowledge base items&lt;br /&gt;
    More items in the pre-development phase&lt;br /&gt;
    Editable checklists in the post-development phase&lt;br /&gt;
&lt;br /&gt;
We really would love to improve the quality of the knowledge base items further, also we would love to have more code examples in the different languages like: Perl, Hack, Go, Node.js and more.&lt;br /&gt;
&lt;br /&gt;
Please take a look of our TODO list in Github to get some ideas:&lt;br /&gt;
https://github.com/blabla1337/skf-flask/issues&lt;br /&gt;
&lt;br /&gt;
Another ideas:&lt;br /&gt;
* Help us with stuff you think is missing in the SKF project&lt;br /&gt;
&lt;br /&gt;
Read about the project here:&lt;br /&gt;
https://skf.readme.io&lt;br /&gt;
&lt;br /&gt;
Recommended reading (here you find a link to the Online Demo):&lt;br /&gt;
https://www.owasp.org/index.php/OWASP_Security_Knowledge_Framework&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
* Python, PHP, Hack, .NET, GO, Ruby, Perl, Java, Node.js&lt;br /&gt;
* Basic knowledge about programming in one of the above languages&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' &lt;br /&gt;
*Glenn and Riccardo ten Cate- OWASP-SKF project leaders&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GSOC2016_Ideas&amp;diff=209224</id>
		<title>GSOC2016 Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GSOC2016_Ideas&amp;diff=209224"/>
				<updated>2016-02-20T06:18:37Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: /* Advanced padding oracle testing and exploitation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=OWASP Project Requests=&lt;br /&gt;
&lt;br /&gt;
'''Tips to get you started in no particular order:''' &lt;br /&gt;
 * Read the [[GSoC SAT]]&lt;br /&gt;
 * Check the Hackademic wiki page linked above&lt;br /&gt;
 * Contact us through the mailing list or irc channel.&lt;br /&gt;
 * Check our [https://github.com/Hackademic/hackademic github repository] and especially the [https://github.com/Hackademic/hackademic/issues open tickets]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OWASP Hackademic Challenges ==&lt;br /&gt;
&lt;br /&gt;
[[OWASP Hackademic Challenges Project]]  helps you test your knowledge on web application security. You can use it to actually attack web applications in a realistic but also controllable and safe environment. After a wonderfull 2014 GSoC with 100 new challenges and a couple of new plugins we're mainly looking to get new features in and maybe a couple of challenges. Bellow is a list of proposed features.&lt;br /&gt;
&lt;br /&gt;
=== REST API for the sandbox ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
During the last summer code sprint Hackademic got challenge sandboxing in the form of vagrant and docker wrappers as well as an engine to start and stop the container or vm instances.&lt;br /&gt;
What is needed now is a rest api which supports endpoint authentication and authorization which enables the sandbox engine to be completely independed from the rest of the project.&lt;br /&gt;
&lt;br /&gt;
Ideas on the project:&lt;br /&gt;
Since the sandbox is written in python, you can use microframeworks such as flask to implement the api.&lt;br /&gt;
The endpoint authorization can be done via certificates or plain signature or username/password type authentication.&lt;br /&gt;
However the communication between the two has to be over a secure channel.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
* A REST style api which allows an authenticated remote entity control the sandbox engine.&lt;br /&gt;
* PEP8 compliant code&lt;br /&gt;
* Acceptable unit test coverage&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Python, test driven developmen, some idea what REST is, some security knowledge would be preferable.&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' Konstantinos Papapanagiotou, Spyros Gasteratos - Hackademic Challenges Project Leaders&lt;br /&gt;
&lt;br /&gt;
=== New CMS ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
The CMS part of the project is really old and has accumulated a significant amount of technical debt.&lt;br /&gt;
In addition many design decisions are either outdated or could be improved. &lt;br /&gt;
Therefore it may be a good idea to leverage the power of modern web frameworks to create a new CMS.&lt;br /&gt;
The new cms can be written in php or python using any compoennts we agree are necesary and based on the framework we agree on.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
* New cms with same functionality as the old one (3 types of users -- student, teacher, admin--, 3 types of resources -- article challenge, class--, ACL type permissions, CRUD operations on every resource/user, all functionality can be extended by Plugins.&lt;br /&gt;
* REST endpoints in addition to classic ones&lt;br /&gt;
* tests covering all routes implemented&lt;br /&gt;
* PSR/PEP 8 code&lt;br /&gt;
&lt;br /&gt;
''' Note: '''&lt;br /&gt;
This is a huge project, it is ok if the student implements a part of it. However whatever implemented must be up to spec.&lt;br /&gt;
If you decide to take on this project contact us and we can agree on a list of routes.&lt;br /&gt;
If you don't decide to take on this project contact us.&lt;br /&gt;
Generally contact us, we like it when students have insightful questions and the community is active&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
Python or PHP, the framework suggested, what REST is, the technologies used, some security knowledge would be nice.&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' Konstantinos Papapanagiotou, Spyros Gasteratos - Hackademic Challenges Project Leaders&lt;br /&gt;
&lt;br /&gt;
=== First Course Type Challenge ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
We have a wonderful sandbox engine which allows for complex guided challenges to be implemented.&lt;br /&gt;
We'd like to build a challenge that guides the user through a series of steps to an end goal and teaches more information on the subject matter on the way.&lt;br /&gt;
This is a very open-ended project on purpose to allow creative student to come up with nice ideas.&lt;br /&gt;
Bellow you will find some examples that we thought might be interesting.&lt;br /&gt;
&lt;br /&gt;
Ideas on the project:&lt;br /&gt;
* Purposefully vulnerable web page that guides the user via javascript tooltips and hints to exploiting it using ZAP. ( Bonus: using ZAP via the ZAP api). The challenge is solved when the the student submits the contents of a text file located on the disk (obtained by exploited an RCE)&lt;br /&gt;
&lt;br /&gt;
* Reversing a provided binary to extract information by providing step by step instructions to reversing using any popular reversing tool (well, you can't use IDA so gdb should have to do). Challenge is solved when the keys are extracted from the binary and submitted. Bonus points if each binary donwloaded has different keys.&lt;br /&gt;
&lt;br /&gt;
* Guide to exploiting the TOP10. (Using ZAP?)&lt;br /&gt;
&lt;br /&gt;
* Defensive Type challenges -- Here's how to create a patch for this kind of vulnerability -- Challenge is solved when the unit tests are run and the vulnerability isn't there.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
* One or more Course - style challenges provided either as a docker container or as a vagrant box.&lt;br /&gt;
* Concrete documentation on how to build a challenge like this.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
The technologies used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' Konstantinos Papapanagiotou, Spyros Gasteratos - Hackademic Challenges Project Leaders&lt;br /&gt;
&lt;br /&gt;
=== Advanced Sandboxed Challenges ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
In the spirit of the challenges above, we're looking for true ctf type challenges.&lt;br /&gt;
This is an open ended task. We're expecting awesome fresh ideas.&lt;br /&gt;
&lt;br /&gt;
Ideas on the project:&lt;br /&gt;
* An application vulnerable to one or more TOP 10 elements.&lt;br /&gt;
* A logic flaws based ctf&lt;br /&gt;
* Your idea here&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
Docker containers or Vagrant boxes that contain complete new challenges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
Knowledge of the technologies used&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' Konstantinos Papapanagiotou, Spyros Gasteratos - Hackademic Challenges Project Leaders&lt;br /&gt;
&lt;br /&gt;
=== Your idea ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
Amazing students, in our experience the best, most creative and unique ideas show up when we let students suggest their own feature in relation to the project.&lt;br /&gt;
The above should give you a general idea where we're going but don't let them constrain you.&lt;br /&gt;
Do you wanna do something that would fit into Hackademic? Send us an email!&lt;br /&gt;
&lt;br /&gt;
Ideas on the project:&lt;br /&gt;
No idea, that's your turn to shine!&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
If it's code, code according to our coding standards.&lt;br /&gt;
If it's challenges, something new and interesting.&lt;br /&gt;
If it's something else, then written like the person who's going to maintain your code is a raging psychopath with an axe who knows where you live.&lt;br /&gt;
&lt;br /&gt;
In short we'd like some quality. ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' Konstantinos Papapanagiotou, Spyros Gasteratos - Hackademic Challenges Project Leaders&lt;br /&gt;
&lt;br /&gt;
== OWASP OWTF  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - VMS - OWTF Vulnerability Management System ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
Background problem to solve:&lt;br /&gt;
&lt;br /&gt;
We are trying to reduce the human work burden where there will be hundreds of issues listing apache out of date or php out of date. &lt;br /&gt;
&lt;br /&gt;
Proposed solution:&lt;br /&gt;
&lt;br /&gt;
We can meta aggregate these duplicate issues into one issue of &amp;quot;outdated software / apache / php detected&amp;quot;. with XYZ list of issues in them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A separate set of scripts that allows for grouping and management of vulnerabilities (i.e. think huge assessments), to be usable *both* from inside + outside of OWTF in a separate sub-repo here: https://github.com/owtf &lt;br /&gt;
&lt;br /&gt;
VMS will have the following features:&lt;br /&gt;
* Vulnerability correlation engine which will allow for quick identification of unique vulnerability and deduplication.&lt;br /&gt;
* Vulnerability table optimization : combining redundant vulnerabilities like example : PHP &amp;lt;5.1 , PHP &amp;lt; 5.2 , PHP &amp;lt; 5.3 all suggest upgrade php so if multiple issues are reported they should be combined.&lt;br /&gt;
* Integration with existing bug tracking system like example bugzilla, jira : Should not be too hard as all such system have one or the other method exposed (REST API or similar)&lt;br /&gt;
* Fix Validation : Since we integrate with bug tracking once dev fixed the bug and code deployed we can run specific checks via * OWTF or other tool (may be specific nessus or nexpose plugin or similar.)&lt;br /&gt;
* Management Dashboard : Could be exposed to Pentester, Higher Management where stats are shown with lesser details but more of high level overview.&lt;br /&gt;
&lt;br /&gt;
[http://www.slideshare.net/null0x00/nessus-and-reporting-karma Similar previous work for Nessus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - HTTP Request Translator Improvements ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
Problem to solve:&lt;br /&gt;
&lt;br /&gt;
There are many situations in web app pentests where just no tool will do the job and you need to script something, or mess around with the command line (classic example: sequence of steps where each step requires input from the previous step). In these situations, translating an HTTP request or a sequence of HTTP requests, takes valuable time which the pentester might just not really have.&lt;br /&gt;
&lt;br /&gt;
Proposed solution:&lt;br /&gt;
&lt;br /&gt;
An HTTP request translator, a *standalone* *tool* that can:&lt;br /&gt;
&lt;br /&gt;
1) Be used from inside OR outside of OWTF.&lt;br /&gt;
&lt;br /&gt;
2) Translate raw HTTP requests into curl commands or bash/python/php/ruby/PowerShell scripts&lt;br /&gt;
&lt;br /&gt;
3) Provide essential quick and dirty transforms: base64 (encode/decode), urlencode (encode/decode)&lt;br /&gt;
* Transforms with boundary strings? (TBD)&lt;br /&gt;
* Individually or in bulk? (TBD)&lt;br /&gt;
&lt;br /&gt;
'''Essential Function: &amp;quot;--output&amp;quot; argument'''&lt;br /&gt;
&lt;br /&gt;
CRITICAL: The command/script should be generated so that the request is sent as literally as possible.&lt;br /&gt;
&lt;br /&gt;
Example: NO client specific headers are sent. IF the original request had &amp;quot;User-Agent: X&amp;quot;, the generated command/script should have EXACTLY that (i.e. NOT a curl user agent, etc.). Obviously, the same applies to ALL other headers.&lt;br /&gt;
&lt;br /&gt;
NOTE: Ideally the following should be implemented using an extensible plugin architecture (i.e. NEW plugins are EASY to add)&lt;br /&gt;
* http request in =&amp;gt; curl command out&lt;br /&gt;
* http request in =&amp;gt; bash script out&lt;br /&gt;
* http request in =&amp;gt; python script out&lt;br /&gt;
* http request in =&amp;gt; php script out&lt;br /&gt;
* http request in =&amp;gt; ruby script out&lt;br /&gt;
* http request in =&amp;gt; PowerShell script out&lt;br /&gt;
&lt;br /&gt;
'''Basic additional arguments:'''&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;--proxy&amp;quot; argument: generates the command/script with the relevant proxy option&lt;br /&gt;
&lt;br /&gt;
		NOTE: With this the command/script may send requests through a MiTM proxy (i.e. OWTF, ZAP, Burp, etc.)&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;--string-search&amp;quot; argument: generates the command/script so that it:&lt;br /&gt;
&lt;br /&gt;
		1) performs the request&lt;br /&gt;
&lt;br /&gt;
		2) then searches for something in the response (i.e. literal match)&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;--regex-search&amp;quot; argument: generates the command/script so that it:&lt;br /&gt;
		1) performs the request&lt;br /&gt;
&lt;br /&gt;
		2) then searches for something in the response (i.e. regex match)&lt;br /&gt;
&lt;br /&gt;
'''OWTF integration'''&lt;br /&gt;
&lt;br /&gt;
The idea here, is to invoke this tool from:&lt;br /&gt;
&lt;br /&gt;
1) Single HTTP transactions:&lt;br /&gt;
&lt;br /&gt;
For example, have a button to &amp;quot;export http request&amp;quot; + then show options equivalent to the flags&lt;br /&gt;
&lt;br /&gt;
2) Multiple HTTP transactions:&lt;br /&gt;
&lt;br /&gt;
Same as with Single transactions, but letting the user &amp;quot;select a number of transactions&amp;quot; first (maybe a checkbox?).&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
'''Desired input formats:'''&lt;br /&gt;
&lt;br /&gt;
* Read raw HTTP request from stdin -Suggested default behaviour! :)-&lt;br /&gt;
&lt;br /&gt;
	Example: cat path/to/http_request.txt | http-request-translator.py --output&lt;br /&gt;
&lt;br /&gt;
* Interactive mode: read raw HTTP request from keyboard + &amp;quot;hit enter when ready&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Suggestion: This could be a &amp;quot;-i&amp;quot; (for &amp;quot;interactive&amp;quot;) flag and/or the fallback option when &amp;quot;stdin is empty&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Example:&lt;br /&gt;
&lt;br /&gt;
	1) User runs tool with desired flags (i.e. &amp;quot;--output ruby --proxy 127.0.0.1:1234 ...&amp;quot;, etc.)&lt;br /&gt;
&lt;br /&gt;
	2) Tool prints: &amp;quot;Please paste a raw HTTP request and hit enter when ready&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	3) User pastes a raw HTTP requests + hits enter&lt;br /&gt;
&lt;br /&gt;
	4) Tool outputs whatever is relevant for the flags + http request given&lt;br /&gt;
&lt;br /&gt;
* For bulk processing: Maybe a directory of raw http request files?&lt;br /&gt;
&lt;br /&gt;
'''Nice to have: Transforms'''&lt;br /&gt;
&lt;br /&gt;
In the context of translating raw HTTP requests into commands/scripts, what we want here is to provide some handy &amp;quot;macros&amp;quot; so that the relevant command/script is generated accordingly.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
NOTE: Assume something like the following arguments: &amp;quot;--transform-boundary=@@@@@@@ --transform-language=php&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Step 1) The user provides a raw HTTP request like this:&lt;br /&gt;
&lt;br /&gt;
  GET /path/to/urlencode@@@@@@@abc d@@@@@@@/test&lt;br /&gt;
  Host: target.com&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Step 2) The tool generates a bash script like the following:&lt;br /&gt;
&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  &lt;br /&gt;
  PARAM1=$(echo 'abc d' | php -r &amp;quot;echo urlencode(fgets(STDIN));&amp;quot;)&lt;br /&gt;
  curl ...... &amp;quot;http://target.com/path/to/$PARAM1/test&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OR a &amp;quot;curl command&amp;quot; like the following:&lt;br /&gt;
  PARAM1=$(echo 'abc d' | php -r &amp;quot;echo urlencode(fgets(STDIN));&amp;quot;); curl ...... &amp;quot;http://target.com/path/to/$PARAM1/test&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature can be valuable to shave a bit more time in script writing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - JavaScript Library Sniper Improvements ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
This is a project that tries to resolve a very common problem during penetration tests:&lt;br /&gt;
&lt;br /&gt;
The customer is running a number of outdated JavaScript Libraries, but there is just not enough time to determine if something useful -i.e. something *really* bad! :)- can be done with that or not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we propose a *standalone* *tool* that can:&lt;br /&gt;
&lt;br /&gt;
1) Be run BOTH from inside AND outside of OWTF&lt;br /&gt;
&lt;br /&gt;
2) Build and *update* a fingerprint JavaScript library database of:&lt;br /&gt;
* Library File hashes =&amp;gt; JavaScript Library version&lt;br /&gt;
* Library File lengths =&amp;gt; JavaScript Library version&lt;br /&gt;
* (Nice to have:) As above, but for each individual github commit (possible drawback: too big?)&lt;br /&gt;
&lt;br /&gt;
3) Build and *update* a vulnerability database of:&lt;br /&gt;
* JavaScript Library version =&amp;gt; CVE - CVSS score - Vulnerability info&lt;br /&gt;
&lt;br /&gt;
4) Given a [ JavaScript file OR hash OR length ], found in the database, provides:&lt;br /&gt;
* JavaScript Library version&lt;br /&gt;
* List of vulnerabilities sorted in descending CVSS score order&lt;br /&gt;
&lt;br /&gt;
5) (very cool to have) Given a list of JavaScript files (maybe a directory), provides:&lt;br /&gt;
* ALL Library/vulnerability matches described on 4)&lt;br /&gt;
	&lt;br /&gt;
Once the standalone tool is built and verified to be working, OWTF should be able to:&lt;br /&gt;
&lt;br /&gt;
Feature 1) GREP plugin improvement (Web Application Fingerprint):&lt;br /&gt;
&lt;br /&gt;
Step 1) Lookup file lengths and hashes in the &amp;quot;JavaScript library database&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Step 2) If a match is found: provide the list of known vulnerabilities against &amp;quot;JavaScript library X&amp;quot; to the user&lt;br /&gt;
&lt;br /&gt;
Feature 2) SEMI-PASSIVE plugin improvement (Web Application Fingerprint):&lt;br /&gt;
&lt;br /&gt;
1) Requests all referenced BUT missing JavaScript files -i.e. scanners won't load JavaScript files! :)-&lt;br /&gt;
&lt;br /&gt;
2) re-runs the GREP plugin on the new files (i.e. to avoid missing vulns due to unrequested JavaScript files)&lt;br /&gt;
&lt;br /&gt;
Potential projects worth having a look for potential overlap/inspiration:&lt;br /&gt;
* [https://owasp.org/index.php/OWASP_Dependency_Check OWASP Dependency Check?]&lt;br /&gt;
&lt;br /&gt;
How many JavaScript libraries should be included?&lt;br /&gt;
* As many as possible, but especially the major ones: jQuery, knockout, etc.&lt;br /&gt;
* &amp;quot;Nirvana&amp;quot; Nice to have: ALL Individual versions of ALL JavaScript files from ALL opensource projects, (ideally) even if the project is not a JavaScript library -i.e. JavaScript files from Joomla, Wordpress, etc.-&lt;br /&gt;
&lt;br /&gt;
Common JavaScript library fingerprinting techniques include:&lt;br /&gt;
* Parse the JavaScript file and grab the version from there&lt;br /&gt;
* Determine the JavaScript version based on a hash of the file&lt;br /&gt;
* Determine the JavaScript version based on the length of the file&lt;br /&gt;
&lt;br /&gt;
Other Challenges:&lt;br /&gt;
* &amp;quot;the file&amp;quot; could be &amp;quot;the minimised file&amp;quot;, &amp;quot;the expanded file&amp;quot; or even &amp;quot;a specific JavaScript file from Library X&amp;quot;&lt;br /&gt;
* When the JavaScript file does not match a specific version:&lt;br /&gt;
	1) The commit that matches the closest should (ideally) be found&lt;br /&gt;
	2) The NEXT library version after that commit (if present) should be found&lt;br /&gt;
	3) From there, it is about reusing the knowledge to figure out public vulnerabilities, CVSS scores, etc. again&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Off-line HTTP traffic uploader ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
Although it is awesome that OWTF runs a lot of tools on behalf of the user, there are situations where uploading the HTTP traffic of another tool off-line can be very interesting for OWTF, for example:&lt;br /&gt;
&lt;br /&gt;
* Tools that OWTF has trouble proxying right now: skipfish, hoppy&lt;br /&gt;
* Tools that the user may have run manually OR even from a tool aggregator -very common! :)-&lt;br /&gt;
* Tools that we just don't run from OWTF: ZAP, Burp, Fiddler&lt;br /&gt;
&lt;br /&gt;
This project is about implementing an off-line utility able to parse HTTP traffic:&lt;br /&gt;
&lt;br /&gt;
1) Figure out how to read output files from various tools like:&lt;br /&gt;
skipfish, hoppy, w3af, arachni, etc.&lt;br /&gt;
Nice to have: ZAP database, Burp database&lt;br /&gt;
&lt;br /&gt;
2) Translate that into the following clearly defined fields:&lt;br /&gt;
&lt;br /&gt;
* HTTP request&lt;br /&gt;
* HTTP response status code&lt;br /&gt;
* HTTP response headers&lt;br /&gt;
* HTTP response body&lt;br /&gt;
&lt;br /&gt;
3) IMPORTANT: Implement a plugin-based uploader system&lt;br /&gt;
&lt;br /&gt;
4) IMPORTANT: Implement ONE plugin, that uploads that into the OWTF database&lt;br /&gt;
&lt;br /&gt;
5) IMPORTANT: OWTF should ideally be able to invoke the uploader right after running a tool&lt;br /&gt;
	Example: OWTF runs skipfish, skipfish finishes, OWTF runs the HTTP traffic uploader, all skipfish data is pushed to the OWTF DB.&lt;br /&gt;
&lt;br /&gt;
6) CRITICAL: The off-line HTTP traffic uploader should be smart enough to read + push 1-by-1 instead of *stupidly* trying to load everything into memory first, you have been warned! :)&lt;br /&gt;
&lt;br /&gt;
	Why? Because in a huge assessment, the output of &amp;quot;tool X&amp;quot; can be &amp;quot;10 GB&amp;quot;, which is *stupid* to load into memory, this is OWTF, we *really* try to foresee the crash before it happens! ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CRITICAL: It is important to implement a plugin-based uploader system, so that other projects can benefit from this work (i.e. to be able to import third-party tool data to ZAP, Burp, and other tools in a similar fashion), and hence hopefully join us in maintaining this project moving forward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Health Monitor ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
In some cases, especially on large assessments (think: &amp;gt; 30 URLs) a number of things often go wrong and OWTF needs to recover from everything, which is difficult.&lt;br /&gt;
&lt;br /&gt;
For this reason, OWTF needs an independent module, which is completely detached from OWTF (a different process), to ensure the health of the assessment is in check at all times, this includes the following:&lt;br /&gt;
&lt;br /&gt;
'''Feature 1) Alerting mechanisms'''&lt;br /&gt;
&lt;br /&gt;
When any of the monitor alerts (see below) is triggered. The OWTF user will be notified immediately through ALL of the following means:&lt;br /&gt;
* Playing an mp3 song (both local and possibly remote locations)&lt;br /&gt;
* Scan status overview on the CLI&lt;br /&gt;
* Scan status overview on the GUI&lt;br /&gt;
&lt;br /&gt;
NOTE: A configuration file from where the user can enable/disable/configure all these mechanisms is desired.&lt;br /&gt;
&lt;br /&gt;
'''Feature 2) Corrective mechanisms'''&lt;br /&gt;
&lt;br /&gt;
Corrective mechanisms are also expected in this project, these will be accomplished sending OWTF api messages such as:&lt;br /&gt;
* Stop this tool&lt;br /&gt;
* Freeze this process (to continue later)&lt;br /&gt;
* Freeze the whole scan (to continue later)&lt;br /&gt;
&lt;br /&gt;
Additional mechanisms:&lt;br /&gt;
* Show a ranking of files that take the most space&lt;br /&gt;
&lt;br /&gt;
'''Feature 3) Target monitor'''&lt;br /&gt;
&lt;br /&gt;
Brief overview:&lt;br /&gt;
&lt;br /&gt;
All target URLs are checked for availability periodically (i.e. once x 5 minutes?), if a URL in scope goes down the pentester is alerted (see above).&lt;br /&gt;
&lt;br /&gt;
Potential approach: Check if length of 1st page changes every 60 seconds.&lt;br /&gt;
&lt;br /&gt;
NOTE: It might be needed to change this on the fly.&lt;br /&gt;
&lt;br /&gt;
More background&lt;br /&gt;
&lt;br /&gt;
Consider the following scenario:&lt;br /&gt;
&lt;br /&gt;
Current Situation aka &amp;quot;problem to solve&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
1) Website X goes down during a scan&lt;br /&gt;
&lt;br /&gt;
2) the customer notices&lt;br /&gt;
&lt;br /&gt;
3) the customer tells the boss&lt;br /&gt;
&lt;br /&gt;
4) the boss tells the pentester&lt;br /&gt;
&lt;br /&gt;
5) the pentester stops the tool which was *still* trying to scan THAT target (!!!!)&lt;br /&gt;
&lt;br /&gt;
Desired situation aka &amp;quot;solution&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
It would be much more professional AND efficient that:&lt;br /&gt;
&lt;br /&gt;
1) The pentester notices&lt;br /&gt;
&lt;br /&gt;
2) The pentester tells the boss&lt;br /&gt;
&lt;br /&gt;
3) The boss tells the customer&lt;br /&gt;
&lt;br /&gt;
4) OWTF stops the tool because it knows that website is DEAD anyway&lt;br /&gt;
&lt;br /&gt;
A target monitor could easily do this with heartbeat requests + playing mp3s&lt;br /&gt;
&lt;br /&gt;
The target monitor will use the api to tell OWTF &amp;quot;this target is dead: freeze(stop?) current tests, skip target in future tests&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Feature 4) Disk space monitor'''&lt;br /&gt;
&lt;br /&gt;
Another problem that is relatively common in large assessments, is that all disk space is used and the scanning box becomes unresponsive or crashes. When this happens it is too late, the pentester may also see this coming but wonder “which are the biggest files in the filesystem that I can delete”, it is not ideal to have to look for these files in a moment when the scanning box is about to crash :).&lt;br /&gt;
&lt;br /&gt;
Proposed solution:&lt;br /&gt;
&lt;br /&gt;
Regularly monitor how much disk space is left, especially on the partition where OWTF is writing the review (but also tool directories such as /home/username/.w3af/tmp, etc.). Keep track of files created by OWTF and all called tools and sort them by size in descending order. Then when the disk space is going low (i.e. predefined threshold), an mp3 or similar is played and this list is displayed to the user, so that they know what to delete to survive :).&lt;br /&gt;
&lt;br /&gt;
'''Feature 5) Network/Internet Connectivity monitor'''&lt;br /&gt;
&lt;br /&gt;
Sometimes it may also happen that ISP, etc. connectivity go down in the middle of a scan, this is often a very unfortunate situation since most tools are scanning in parallel and they won’t be able to produce a report OR even resume (i.e. A LOT is lost). The goal here is that OWTF does all of the following automatically:&lt;br /&gt;
&lt;br /&gt;
1) Detects the lack of connectivity&lt;br /&gt;
&lt;br /&gt;
2) Freezes all the tools (read: processes) in progress&lt;br /&gt;
&lt;br /&gt;
3) Resumes the scan when the connectivity is back.&lt;br /&gt;
&lt;br /&gt;
'''Feature 6) Tool crash detection'''&lt;br /&gt;
&lt;br /&gt;
Sometimes, certain tools (most notably, ahem, w3af), when they crash they do NOT exit. This leaves OWTF in a difficult position where 1+ process is waiting for nothing, forever (i.e. because “Tool X” will never finish)&lt;br /&gt;
&lt;br /&gt;
'''Feature 7) Tool (Plugin?) CPU/RAM/Bandwidth abuse detection and correction'''&lt;br /&gt;
&lt;br /&gt;
OWTF needs to notice when some tools crash and/or “go beserk” with RAM/CPU/Bandwidth consumption, this is different from the existing built-in checks in OWTF like “do not launch a new tool if there is less than XYZ RAM free” and more like “if tool X is using &amp;gt; XYZ of the available RAM/CPU/Bandwidth” and this is (potentially) negatively affecting other tools/tests, then throttle it.&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Installation Improvements and Package manager ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
This project is to implement what was suggested in the following github issue:&lt;br /&gt;
[https://github.com/owtf/owtf/issues/192 https://github.com/owtf/owtf/issues/192]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recently i tried to make a fresh installation of OWTF. The installation process takes too much time. Is there any way to make the installation faster?&lt;br /&gt;
Having a private server with:&lt;br /&gt;
* pre-installed files for VMs&lt;br /&gt;
* pre-configured and patched tools&lt;br /&gt;
* Merged Lists&lt;br /&gt;
* Pre-configured certificates&lt;br /&gt;
Additionally a minimal installation which will install the core of OWTF with the option of update can increase the installation speed. The update procedure will start fetching the latest file versions from the server and copy them to the right path.&lt;br /&gt;
Additional ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
-- They could be hosted on Dropbox or a private VPS :)&lt;br /&gt;
&lt;br /&gt;
2 Installation Modes&lt;br /&gt;
* For high speed connections (Downloading the files uncompressed)&lt;br /&gt;
* For low speed connections (Downloading the files compressed)&lt;br /&gt;
and the installation crashed because i runned out of space in the vm&lt;br /&gt;
IMPORTANT NOTE: OWTF should check the available disk space BEFORE installation starts + warn the user if problems are likely&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* Excellent reliability (i.e. proper exception handling, etc.)&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Testing Framework Improvements ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
As OWASP OWTF grows it makes sense to build custom unit tests to automatically re-test that functionality has not been broken. In this project we would like to improve the existing unit testing framework so that creating OWASP OWTF unit tests is as simple as possible and all missing tests for new functionality are created. The goal of this project is to update the existing Unit Test Framework to create all missing tests as well as improve the existing ones to verify OWASP OWTF functionality in an automated fashion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Top features'''&lt;br /&gt;
&lt;br /&gt;
In this improvement phase, the Testing Framework should:&lt;br /&gt;
* (Top Prio) Focus more on functional tests&lt;br /&gt;
For example: Improve coverage of OWASP Testing Guide, PTES, etc. (lots of room for improvement there!)&lt;br /&gt;
* (Top Prio) Put together a great wiki documentation section for contributors&lt;br /&gt;
The goal here is to help contributors write tests for the functionality that they implement. This should be as easy as possible.&lt;br /&gt;
* (Top Prio) Fix the current Travis issues :)&lt;br /&gt;
* (Nice to have) Bring the unit tests up to speed with the codebase&lt;br /&gt;
This will be challenging but very worth trying after top priorities.&lt;br /&gt;
The wiki should be heavily updated so that contributors create their own unit tests easily moving forward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''General background'''&lt;br /&gt;
&lt;br /&gt;
The Unit Test Framework should be able to:&lt;br /&gt;
* Define test categories: For example, &amp;quot;all plugins&amp;quot;, &amp;quot;web plugins&amp;quot;, &amp;quot;aux plugins&amp;quot;, &amp;quot;test framework core&amp;quot;, etc. (please see [http://www.slideshare.net/abrahamaranguren/introducing-owasp-owtf-workshop-brucon-2012 this presentation] for more background)&lt;br /&gt;
* Allow to regression test isolated plugins (i.e. &amp;quot;only test _this_ plugin&amp;quot;)&lt;br /&gt;
* Allow to regression test by test categories (i.e. &amp;quot;test only web plugins&amp;quot;)&lt;br /&gt;
* Allow to regression test everything (i.e. plugins + framework core: &amp;quot;test all&amp;quot;)&lt;br /&gt;
* Produce meaningful statistics and easy to navigate logs to identify which tests failed and ideally also hints on how to potentially fix the problem where possible&lt;br /&gt;
* Allow for easy creation of _new_ unit tests specific to OWASP OWTF&lt;br /&gt;
* Allow for easy modification and maintenance of _existing_ unit tests specific to OWASP OWTF&lt;br /&gt;
* Perform well so that we can run as many tests as possible in a given period of time&lt;br /&gt;
* Potentially leverage the python unittest library: [http://docs.python.org/2/library/unittest.html http://docs.python.org/2/library/unittest.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* Performant and automated regression testing&lt;br /&gt;
* Unit tests for a wide coverage of OWASP OWTF, ideally leveraging the Unit Test Framework where possible&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python, experience with unit tests and automated regression testing would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Tool utilities module ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
The spirit of this feature is something that may or may not be used from OWTF: These are utilities that may be chained together by OWTF OR a penetration tester using the command line. The idea is to automate mundane tasks that take time but may provide a lever to a penetration tester short on time.&lt;br /&gt;
&lt;br /&gt;
'''Feature 1) Vulnerable software version database:'''&lt;br /&gt;
&lt;br /&gt;
Implement a searchable vulnerable software version database so that a penetration tester enters a version and gets vulnerabilities sorted by criticality with MAX Impact vulnerabilities at the top (possibly: CVSS score in DESC order).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
[http://www.cvedetails.com/vulnerability-list.php?vendor_id=74&amp;amp;product_id=128&amp;amp;version_id=149817&amp;amp;page=1&amp;amp;hasexp=0&amp;amp;opdos=0&amp;amp;opec=0&amp;amp;opov=0&amp;amp;opcsrf=0&amp;amp;opgpriv=0&amp;amp;opsqli=0&amp;amp;opxss=0&amp;amp;opdirt=0&amp;amp;opmemc=0&amp;amp;ophttprs=0&amp;amp;opbyp=0&amp;amp;opfileinc=0&amp;amp;opginf=0&amp;amp;cvssscoremin=0&amp;amp;cvssscoremax=0&amp;amp;year=0&amp;amp;month=0&amp;amp;cweid=0&amp;amp;order=3&amp;amp;trc=17&amp;amp;sha=0d26af6f3ba8ea20af18d089df40c252ea09b711 Vulnerabilities against specific software version]&lt;br /&gt;
&lt;br /&gt;
'''Feature 2) Nmap output file merger:'''&lt;br /&gt;
&lt;br /&gt;
Unify nmap files *without* losing data: XML, text and greppable formats&lt;br /&gt;
For example: Sometimes 2 scans pass through the same port, one returns the server version, the other does not, we obviously do not want to lose banner information :).&lt;br /&gt;
&lt;br /&gt;
'''Feature 3) Nmap output file vulnerability mapper'''&lt;br /&gt;
&lt;br /&gt;
From an nmap output file, get the unique software version banners, and provide a list of (maybe in tabs?):&lt;br /&gt;
&lt;br /&gt;
1) CVEs in reverse order of CVSS score, with links.&lt;br /&gt;
&lt;br /&gt;
2) Metasploit modules available for each CVE / issue&lt;br /&gt;
&lt;br /&gt;
NOTE: Can supply an *old* shell script for reference&lt;br /&gt;
&lt;br /&gt;
3) Servers/ports affected (i.e. all server / port combinations using that software version)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Feature 4) URL target list creator:'''&lt;br /&gt;
&lt;br /&gt;
Turn all “speaks http” ports (from any nmap format) into a list of URL targets for OWTF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Feature 5) Hydra command creator:'''&lt;br /&gt;
&lt;br /&gt;
nmap file in =&amp;gt; Hydra command list out&lt;br /&gt;
&lt;br /&gt;
grep http auth / login pages in output files to identify login interfaces =&amp;gt; Hydra command list out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Feature 6) WP-scan command creator:'''&lt;br /&gt;
&lt;br /&gt;
look at all URLs (i.e. nmap file), check if they might be running word press, generate a list of suggested wp-scan commands for all targets that might be running word press&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* Excellent reliability (i.e. proper exception handling, etc.)&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python, experience with unit tests and automated regression testing would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren, Bharadwaj Machiraju - OWASP OWTF Project Leaders - Contact: Abraham.Aranguren@owasp.org, bharadwaj.machiraju@gmail.com&lt;br /&gt;
&lt;br /&gt;
''' OWASP Mentors '''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OWASP ZAP ==&lt;br /&gt;
&lt;br /&gt;
ZAP is one of the top OWASP projects and the most active open source web security tools. &lt;br /&gt;
&lt;br /&gt;
You can follow (and join in) the GSoC discussions on the ZAP Developer Group: https://groups.google.com/d/msg/zaproxy-develop/Uy0JPkzsI_s/Bj7OTSkISCIJ&lt;br /&gt;
&lt;br /&gt;
=== Bug tracker support ===&lt;br /&gt;
&lt;br /&gt;
This would allow ZAP users to raise issues in bug trackers directly within ZAP. Ideally it would be implemented as an extension with a generic framework and then adaptors for specific trackers, like github and bugzilla.&lt;br /&gt;
&lt;br /&gt;
The info included in the issues raised should be as configurable as possible so that users can include whatever they want, and set things like custom fields.&lt;br /&gt;
&lt;br /&gt;
''' Expected Results '''&lt;br /&gt;
&lt;br /&gt;
* Raise issues in github and bugzilla from alerts within the ZAP UI&lt;br /&gt;
* Support for raising alerts using the ZAP API&lt;br /&gt;
* High level of customization so that users can tune to their requirements&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisite: '''&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential.&lt;br /&gt;
&lt;br /&gt;
''' Mentors '''&lt;br /&gt;
Simon Bennetts and other members of the ZAP core team&lt;br /&gt;
&lt;br /&gt;
=== Field enumeration ===&lt;br /&gt;
&lt;br /&gt;
This would allow a user to iterate though a set of (user defined) characters in order to identify the ones that are filtered out and/or escaped.&lt;br /&gt;
&lt;br /&gt;
The user should be able to define the character sets to test and will probably need to configure the success and failure conditions, as well as valid values for other fields in the form.&lt;br /&gt;
&lt;br /&gt;
''' Expected Results '''&lt;br /&gt;
&lt;br /&gt;
* User able to specify a specific field to enumerate via the ZAP UI&lt;br /&gt;
* A list of all valid characters to be returned from the sets of characters the user specifies&lt;br /&gt;
* Ability to configure a wide range of success and failure conditions to cope with as many possible situations as possible&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisite: '''&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential.&lt;br /&gt;
&lt;br /&gt;
''' Mentors '''&lt;br /&gt;
Simon Bennetts and other members of the ZAP core team&lt;br /&gt;
&lt;br /&gt;
=== Form Handling ===&lt;br /&gt;
&lt;br /&gt;
The ZAP traditional and Ajax spiders explore an application by putting basic default values in all forms. These may often not be valid values, for example using &amp;quot;ZAP&amp;quot; when an email address is required.&lt;br /&gt;
&lt;br /&gt;
The enhancement would allow the user to define default values based on pattern matching against the field names and/or ids.&lt;br /&gt;
&lt;br /&gt;
It would also be very useful if it could show the user all forms and their associated fields for an application, and then allow the user to update the default values.&lt;br /&gt;
&lt;br /&gt;
''' Expected Results '''&lt;br /&gt;
&lt;br /&gt;
* User able to specify default values for all forms used by the ZAP spiders&lt;br /&gt;
* Display all of the forms and fields for an application and allow the user to update the default values to be used&lt;br /&gt;
* Full support for defining default values via the API&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisite: '''&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential.&lt;br /&gt;
&lt;br /&gt;
''' Mentors '''&lt;br /&gt;
Simon Bennetts and other members of the ZAP core team&lt;br /&gt;
&lt;br /&gt;
=== Automated authentication detection and configuration ===&lt;br /&gt;
&lt;br /&gt;
ZAP has extensive support for supporting application authentication, but configuring this is a manual process which can be tricky to get right.&lt;br /&gt;
&lt;br /&gt;
The enhancement would allow ZAP to detect as many forms of authentication as possible and automatically configure them using the existing ZAP functionality.&lt;br /&gt;
&lt;br /&gt;
''' Expected Results '''&lt;br /&gt;
&lt;br /&gt;
* Automatically detect a wide range of authentication mechanisms&lt;br /&gt;
* Automatically configure ZAP to handle them&lt;br /&gt;
* Full support via the API&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisite: '''&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential.&lt;br /&gt;
&lt;br /&gt;
''' Mentors '''&lt;br /&gt;
Simon Bennetts and other members of the ZAP core team&lt;br /&gt;
&lt;br /&gt;
=== Advanced padding oracle testing and exploitation ===&lt;br /&gt;
&lt;br /&gt;
ZAP has currently has very minimal support in it's the (beta) [https://github.com/zaproxy/zap-extensions/blob/beta/src/org/zaproxy/zap/extension/ascanrulesBeta/PaddingOraclePlugin.java PaddingOraclePlugin] for identifying potential [https://en.wikipedia.org/wiki/Padding_oracle_attack padding oracle] vulnerabilities. Specifically, it only examines two indicators for possible oracles (changing the last byte of padding by XORing it with 0x1 and resubmitting the HTTP request with the new altered parameter to see if the HTTP response contains some error patter or to check if the returned HTTP status is a 500 error. Furthermore, it is limited to checking parameters, but encrypted values that may be susceptible to padding oracle attacks may also be in HTTP cookies or even HTTP request / response values. (In the latter case, these custom headers are usually manipulated via AJAX.) Lastly SOAP messages using [https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html W3C XML Encryption] and JSON are other potential sources of padding oracle vulnerabilities that might be examined.&lt;br /&gt;
&lt;br /&gt;
The enhancement would extend the support to more a broader attack surface such as new attack vectors like cookies, HTTP headers, and possibly XML or JSON and also expand the identification of potential new oracles to not just keywords, but to any minute difference in responses (at least for idempotent GETs) or significant variations in time. Lastly, we would like to add the ability to exploit padding oracle vulnerabilities discovered which could lead to whole lot of other interesting discoveries.&lt;br /&gt;
&lt;br /&gt;
''' Expected Results '''&lt;br /&gt;
&lt;br /&gt;
* Detect oracle padding vulnerabilities in more situations&lt;br /&gt;
** Expanded attack vectors: cookies, HTTP headers, XML, JSON&lt;br /&gt;
** Expanded variation of recognized potential oracles: ''any'' output differences when padding correct vs. incorrect (takes much more than flipping a single padding bit), significant differences in timing, etc.&lt;br /&gt;
* Add the option to actually attempt to exploit discovered potential padding oracle vulnerabilities and report additional subsequent findings once the ciphertext is actually decrypted.&lt;br /&gt;
* Build test code to illustrate a working proof of concept&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisite: '''&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential. Reading up on basic details of how padding oracle attacks operate would also be extremely helpful.&lt;br /&gt;
&lt;br /&gt;
''' Mentors '''&lt;br /&gt;
Kevin Wall and other members of the ZAP core team&lt;br /&gt;
&lt;br /&gt;
=== Zest text representation and parser ===&lt;br /&gt;
&lt;br /&gt;
Zest is a graphical scripting language from the Mozilla Security team, and is used as the ZAP macro language.&lt;br /&gt;
&lt;br /&gt;
A standardized text representation and parser would be very useful and help its adoption.&lt;br /&gt;
&lt;br /&gt;
''' Expected Results '''&lt;br /&gt;
&lt;br /&gt;
* A documented definition of a text representation for Zest&lt;br /&gt;
* A parser that converts the text representation into a working Zest script&lt;br /&gt;
* An option in the Zest java implementation to output Zest scripts text format&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisite: '''&lt;br /&gt;
The Zest reference implementation is written in Java, so a good knowledge of this language is recommended. Some knowledge of application security would be useful, but not essential.&lt;br /&gt;
&lt;br /&gt;
''' Mentors '''&lt;br /&gt;
Simon Bennetts and other members of the ZAP core team&lt;br /&gt;
&lt;br /&gt;
=== Your idea ===&lt;br /&gt;
&lt;br /&gt;
We're always open to students coming up with their own suggestions for ZAP projects, so if you have something you think would make ZAP better then please get in touch!&lt;br /&gt;
&lt;br /&gt;
''' Expected Results '''&lt;br /&gt;
&lt;br /&gt;
* That depends on your project, but clearly defined goals will be necessary&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisite: '''&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential.&lt;br /&gt;
&lt;br /&gt;
''' Mentors '''&lt;br /&gt;
Simon Bennetts and other members of the ZAP core team&lt;br /&gt;
&lt;br /&gt;
== OWASP AppSensor ==&lt;br /&gt;
&lt;br /&gt;
[[OWASP AppSensor Project]] provides real-time application layer intrusion detection. &lt;br /&gt;
&lt;br /&gt;
 * Check the AppSensor wiki page linked above&lt;br /&gt;
 * Contact us through the mailing list.&lt;br /&gt;
 * Check our [https://github.com/jtmelton/appsensor github repository] and the [https://github.com/jtmelton/appsensor/issues open tickets]&lt;br /&gt;
 * Also see our [http://www.appsensor.org appsensor website]&lt;br /&gt;
&lt;br /&gt;
=== Dashboard UI Expansion ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
AppSensor provides a solid base of functionality to applications, and we currently have a minimal application for data display. This project will involve expanding the default/standard UI for the AppSensor project. As part of the project, you will learn about the domain model, iterating your mockup designs and share those with the project leader(s) and the community for feedback. The existing stack is based on spring boot and reactjs. There are lots of features to be added, and you'll work with the project leader(s) and the community to build the most-needed and requested capabilities.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
The existing dashboard application will be expanded and will involve features like: &lt;br /&gt;
* Search (could involve significant back-end work to configure indexing, etc.)&lt;br /&gt;
* Policy Management (edit server configuration in real-time)&lt;br /&gt;
* Data visualization / dashboarding&lt;br /&gt;
&lt;br /&gt;
Source code, tests, and associated documentation for both the back-end and UI will be delivered for this effort.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Comfortable with UI design and development, particularly building dashboards. Comfortable with Java (with some assistance). Basic familiarity with security concepts related to intrusion detection and prevention as this is the domain.&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' John Melton - OWASP AppSensor Project Leader (Development)&lt;br /&gt;
&lt;br /&gt;
=== Trend Monitoring Analysis Engine ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
AppSensor currently supports a basic policy-driven analysis engine to determine if a series of events represents an attack (if a user triggers 5 of this type of event in 10 minutes, it's an attack). While this supports many use cases, there are times when it would be helpful to know trending information. If a particular function of the application begins to see 10 times its normal amount of traffic, that might represent an attack. This project would add an additional analysis engine to support &amp;quot;trend monitoring&amp;quot;. Development of this feature would require some initial research on alternative implementation strategies, followed by the development and testing of the feature in AppSensor. &lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
The project should produce: &lt;br /&gt;
* A trend monitoring analysis engine to be used either in place of or in addition to the existing policy-driven analysis engine&lt;br /&gt;
* Associated configuration mechanism to specify the trending rules/policy&lt;br /&gt;
* A small full sample demo application showing usage of the trend monitoring feature&lt;br /&gt;
&lt;br /&gt;
Source code and associated tests for the feature will be created, along with the associated end user documentation for how to setup and configure it. &lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Comfortable in Java and unit testing.&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' John Melton - OWASP AppSensor Project Leader (Development)&lt;br /&gt;
&lt;br /&gt;
=== Expand language support for clients ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
AppSensor supports various modes for communication with the server. The language and framework of the client application are required only to support the given mode. This flexibility is desirable, but having pre-built clients in various languages is useful for our user-base. This project would involve working with various popular languages and frameworks to build support for communicating with the appsensor server backend.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
The project should produce: &lt;br /&gt;
* Clients in multiple popular languages for interaction with appsensor server&lt;br /&gt;
* Evaluate the possibility for generating clients from specification as opposed to writing and maintaining the code (ie. swagger for REST)&lt;br /&gt;
* At a minimum, coverage for the HTTP/REST mode should be supported. Other modes (thrift, soap, kafka, etc.) will be produced as time allows. &lt;br /&gt;
* Several small demo applications showing usage of the given APIs&lt;br /&gt;
&lt;br /&gt;
Source code and tests for the feature will be created, along with the associated end user documentation for how to setup and configure it. &lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Comfortable working in multiple popular languages and unit testing.&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' John Melton - OWASP AppSensor Project Leader (Development)&lt;br /&gt;
&lt;br /&gt;
=== Implement Detection Points in Reverse Proxy ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
AppSensor works by tracking events that are created by &amp;quot;detection points&amp;quot;, essentially locations in the processing pipeline where suspicious or malicious intent is observed. This often requires business-specific detection within the application. However, the project has defined a number of detection points (https://www.owasp.org/index.php/AppSensor_DetectionPoints) and responses (https://www.owasp.org/index.php/AppSensor_ResponseActions), some of which can be generically applied across a broader set of applications, including those that are common to an entire organization or even cross-organization. For that reason, a sub-project has been created (https://github.com/jtmelton/appsensor-reverse-proxy) that provides support for detection points and responses that are generic enough to be broadly applicable. This project would expand support for these detection points and responses.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
The project should produce: &lt;br /&gt;
* New detection points and responses&lt;br /&gt;
* Documentation for how to deploy the project and any end-user considerations&lt;br /&gt;
* Load testing each function as this project front-ends applications, and traffic throughput characteristics are important to our user-base.&lt;br /&gt;
* A small sample demo application showing the utility of the proxy. A recording of the usage for community viewing would be beneficial.&lt;br /&gt;
&lt;br /&gt;
Source code and associated tests for the feature will be created, along with the associated end user documentation for how to setup and configure it. &lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Comfortable in golang and unit testing.&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' John Melton - OWASP AppSensor Project Leader (Development)&lt;br /&gt;
&lt;br /&gt;
== OWASP Seraphimdroid [[OWASP_SeraphimDroid_Project| ]] ==&lt;br /&gt;
&lt;br /&gt;
=== Behavioral malware and intrusion analysis  ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
[[OWASP_SeraphimDroid_Project|OWASP Seraphimdroid]] is an Android mobile app which already has a capability to statically analyze malware using machine learning (weka toolkit) relying on permissions. However, this is usually not enough and we intend to improve this with behavioral analysis. There are a number of paper in scientific literature describing how to detect malware and intrusions by dynamically analyzing its behavior (system calls, battery consumption, etc.). The idea of this project is to find the best approach that can be implemented on the device and implement it.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
*  Reviewing scientific literature and find feasible approach we can take&lt;br /&gt;
*  Implement and possibly improve the approach in Seraphimdroid&lt;br /&gt;
*  Test the model and provide controls to switch algorithm on or off and possibly fine tune it&lt;br /&gt;
*  Documenting approach as a technical report&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
* Java&lt;br /&gt;
* Android&lt;br /&gt;
* CSV, XML&lt;br /&gt;
* Basic knowledge and interest in machine learning&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' &lt;br /&gt;
* [[User:Nikola_Milosevic|Nikola Milosevic]] - OWASP Seraphimdroid Project Leader&lt;br /&gt;
&lt;br /&gt;
=== Framework for plugin development  ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
[[OWASP_SeraphimDroid_Project|OWASP Seraphimdroid]] is well rounded security and privacy app, however, it lacks some components community can provide. We would like to provide community the way to develop plugins that can add features to OWASP Seraphimdroid app. However, the way of integrating external components into Android app may be challenge. The way of presenting GUI and integration between processes need to be examined and developed. &lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
*  Examining the way of integrating third party apps through some provided API to OWASP Seraphimdroid&lt;br /&gt;
*  Providing GUI integration with third party components&lt;br /&gt;
*  Develop at least one test plugin&lt;br /&gt;
*  Document the development process and API&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
* Java&lt;br /&gt;
* Android&lt;br /&gt;
* CSV, XML&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' &lt;br /&gt;
* [[User:Nikola_Milosevic|Nikola Milosevic]] - OWASP Seraphimdroid Project Leader&lt;br /&gt;
&lt;br /&gt;
=== Educational component  ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
[[OWASP_SeraphimDroid_Project|OWASP Seraphimdroid]] is well rounded security and privacy app. The initial idea of the project was to provide educational platform for common users, where by using the application, users can learn about risks for their privacy and security. Some components already has some sort of explanation, which is educational. However, it lacks of uneatable knowledge source and some of the components that monitor user's behavior do not provide sufficient information. Idea of this project is to develop monitoring of user activity and an component that can warn user about risks if he does something risky. Also, mobile security knowledge base that can be updated remotely will be a huge new asset to the application.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
*  Develop uneatable knowledge base and GUI for it&lt;br /&gt;
*  Develop web server where the knowledge base can be updated&lt;br /&gt;
*  Improve current educational reporting&lt;br /&gt;
*  Develop methodology for monitoring users and notifying them about risky activities&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
* Java&lt;br /&gt;
* Android&lt;br /&gt;
* CSV, XML&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' &lt;br /&gt;
* [[User:Nikola_Milosevic|Nikola Milosevic]] - OWASP Seraphimdroid Project Leader&lt;br /&gt;
&lt;br /&gt;
== OWASP ZSC Tool ==&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
[[OWASP_ZSC_Tool_Project|OWASP ZSC]] is an open source software in python language which lets you generate customized shellcodes and convert scripts to an obfuscated script. This software can be run on Windows/Linux/OSX under python.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
Please take a look of our TODO list in Github to get some ideas:&lt;br /&gt;
https://github.com/Ali-Razmjoo/OWASP-ZSC/issues&lt;br /&gt;
&lt;br /&gt;
Another ideas:&lt;br /&gt;
* Help us develop shellcode module for windows&lt;br /&gt;
* Develop shellcode module for OSX&lt;br /&gt;
&lt;br /&gt;
Read about the project here:&lt;br /&gt;
https://ali-razmjoo.gitbooks.io/owasp-zsc/content/&lt;br /&gt;
&lt;br /&gt;
Recommended reading:&lt;br /&gt;
http://www.vividmachines.com/shellcode/shellcode.html&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
* Python&lt;br /&gt;
* Basic knowledge about Shellcode and assembly language&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' &lt;br /&gt;
*Christo and Timo Goosen and Brian Beaudry- OWASP ZSC Contributors&lt;br /&gt;
&lt;br /&gt;
Contact us through our mailing list for questions:&lt;br /&gt;
https://groups.google.com/d/forum/owasp-zsc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OWASP-SKF (Security Knowledge Framework) ==&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
The OWASP Security Knowledge Framework is intended to be a tool that is used as a guide for building and verifying secure software. It can also be used to train developers about application security. Education is the first step in the Secure Software Development Lifecycle. This software can be run on Windows/Linux/OSX under python.&lt;br /&gt;
&lt;br /&gt;
The 4 Core usage of SKF:&lt;br /&gt;
&lt;br /&gt;
    Security Requirements OWASP ASVS for development and for third party vendor applications&lt;br /&gt;
    Security knowledge reference (Code examples/ Knowledge Base items)&lt;br /&gt;
    Security is part of design with the pre-development functionality in SKF&lt;br /&gt;
    Security post-development functionality in SKF for verification with the OWASP ASVS&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
    More code examples for different languages&lt;br /&gt;
    Better quality of the knowledge base items&lt;br /&gt;
    More items in the pre-development phase&lt;br /&gt;
    Editable checklists in the post-development phase&lt;br /&gt;
&lt;br /&gt;
We really would love to improve the quality of the knowledge base items further, also we would love to have more code examples in the different languages like: Perl, Hack, Go, Node.js and more.&lt;br /&gt;
&lt;br /&gt;
Please take a look of our TODO list in Github to get some ideas:&lt;br /&gt;
https://github.com/blabla1337/skf-flask/issues&lt;br /&gt;
&lt;br /&gt;
Another ideas:&lt;br /&gt;
* Help us with stuff you think is missing in the SKF project&lt;br /&gt;
&lt;br /&gt;
Read about the project here:&lt;br /&gt;
https://skf.readme.io&lt;br /&gt;
&lt;br /&gt;
Recommended reading (here you find a link to the Online Demo):&lt;br /&gt;
https://www.owasp.org/index.php/OWASP_Security_Knowledge_Framework&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
* Python, PHP, Hack, .NET, GO, Ruby, Perl, Java, Node.js&lt;br /&gt;
* Basic knowledge about programming in one of the above languages&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' &lt;br /&gt;
*Glenn and Riccardo ten Cate- OWASP-SKF project leaders&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI-BuildingWithEclipse&amp;diff=208378</id>
		<title>ESAPI-BuildingWithEclipse</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI-BuildingWithEclipse&amp;diff=208378"/>
				<updated>2016-02-09T06:09:01Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: First set of changes to update to JDK 6 or later and git/GitHub.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Prerequisites==&lt;br /&gt;
* JDK 1.6 or later [http://www.oracle.com/technetwork/java/javase/downloads/index.html download here]. Note that you need the JDK and not just the JRE.&lt;br /&gt;
* To support the latest versions of Maven, first download Maven [https://maven.apache.org/download.cgi here]. (Note: Maven 3.0 or later is required.)&lt;br /&gt;
* Eclipse IDE for Java EE Developers 3.3.x or later [http://www.eclipse.org/downloads/ download here]. Install EGit and m2e plug-ins via &amp;quot;Help-&amp;gt;Install New Software...&amp;quot;.&lt;br /&gt;
** EGit Plug-in for Eclipse - Instructions on installing EGit plug-in can be found [https://eclipse.github.io/ here]&lt;br /&gt;
** M2E - Maven Integration for Eclipse - You can install the latest version from within Eclipse using the following [https://eclipse.org/m2e/ update site]&lt;br /&gt;
** Note that other git and Maven plug-in combinations for Eclipse are possible.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
* For Winodws, create an Eclipse shortcut&lt;br /&gt;
* Right-Click your Eclipse shortcut and select Properties&lt;br /&gt;
* At the end of the line that says Target, add -vm &amp;quot;x&amp;quot; where x is the location of a JDK (e.g., &amp;quot;C:\Program Files\Java\jdk7\bin&amp;quot;) - This step is necessary for the Maven plugin to work. (If you installed Eclipse under Linux distro after you already had a JDK installed, this probably was already done for you.)&lt;br /&gt;
* Restart Eclipse using the edited shortcut.&lt;br /&gt;
&lt;br /&gt;
==Importing the ESAPI Source==&lt;br /&gt;
&lt;br /&gt;
If you choose to use the ESAPI GitHub code, follow the instructions at [[ESAPI-Building]].  Unless you have been added to the ESAPI project as a contributor, please use the submit fixes using [https://help.github.com/articles/using-pull-requests/ Git &amp;quot;pull requests&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
If you are using EGit, as recommended, open Eclipse and:&lt;br /&gt;
* Click ''File'' -&amp;gt; ''New'' -&amp;gt; ''Other....''.&lt;br /&gt;
* From the ''Git Folder'' select '&amp;quot;Checkout Projects from Git'' (this option will only be available if you have a Git plug-in installed) and hit ''Next &amp;gt;''.&lt;br /&gt;
* Click the ''Create a new repository location'' radio button.&lt;br /&gt;
* If you are not listed as a project contributor, insert ''http://owasp-esapi-java.googlecode.com/svn/trunk/'' as the URL.  If you are listed as a project contributor, check the Google Code page for the URL to use. (Note: if you are a contributor, when prompted for your SVN password, use your Google generated password, available from the Google Code Source page.) &lt;br /&gt;
* Once the directory structure appears in the window, click the URL at the top to download everything.  Then hit ''Next &amp;gt;''&lt;br /&gt;
* Select your desired project options.  For most people, the default options should be fine. When finished, click ''Next &amp;gt;''.&lt;br /&gt;
* Select your desired workspace options, then click ''Finish''.  The latest ESAPI source files will then be downloaded to your workspace.  This may take a few minutes.&lt;br /&gt;
* After the source code is finished downloading, ensure that the character type of all source code is UTF-8. In Eclipse, right click on the project directory root. At the bottom of the right-click list, choose PROPERTIES. From the PROPERTIES window, select the RESOURCES section (which is selected by default). Ensure that the &amp;quot;Text file encoding&amp;quot; section is set to OTHER-&amp;gt;UTF 8. If if it is not, change it and click APPLY-&amp;gt;OK.&lt;br /&gt;
&lt;br /&gt;
==Project Setup==&lt;br /&gt;
&lt;br /&gt;
Some configuration may be necessary for ESAPI to compile and build on your system.&lt;br /&gt;
&lt;br /&gt;
ESAPI requires the Java JRE 6 or later.&lt;br /&gt;
&lt;br /&gt;
* Once Java 6.0+ is installed, open the ''Navigator view'' in Eclipse.  If this is currently hidden, from the toolbar click ''Window'' -&amp;gt; ''Show View'' -&amp;gt; ''Navigator''.&lt;br /&gt;
* Right-click on your ESAPI project in the Navigator, mouse over ''Maven'' and click ''Enable Dependency Management''&lt;br /&gt;
** ''Note:'' If Maven is not an option when you right-click on the project, be sure the Maven plugin for eclipse is installed, as described above.&lt;br /&gt;
** ''Note:'' If ''Enable Dependency Management'' is not an option, dependency management is probably already enabled, So this step can be skipped.&lt;br /&gt;
* ''Right-click on the ESAPI project root folder'' in the Navigator view and select ''Properties''.&lt;br /&gt;
* From the left column, select ''Java Build Path''.  Under the ''Libraries'' tab, be sure a JRE or JDK is listed next to ''JRE System Library''.  If there is a red X on next to the JRE, remove the current JRE and click ''Add Library'' and select an alternate JRE.  If you are having trouble figuring out what version the current JRE is, select ''Installed JREs'' and look at the location to which each version is mapped.&lt;br /&gt;
* The Libraries tab should list ''JRE System Library'' and ''Maven Dependencies''.  If anything else is listed, it is not necessary and should be removed.  Maven now handles all dependencies.&lt;br /&gt;
* From the left column, select ''Java Compiler''.  Be sure ''Compiler compliance level'', ''Generated .class files compatibility'', and ''Source compatibility'' are all set to ''1.6''. (Note: Most of us use JDK 7 or JDK 8 to build ESAPI, but we use '-source 1.6 -target 1.6' when we compile to still support really old web applications still using JDK 1.6.) &lt;br /&gt;
* Close the properties window.&lt;br /&gt;
* ''Right-click the ESAPI project root folder'' and select ''Refresh''.&lt;br /&gt;
* From the toolbar, select ''Project'' -&amp;gt; ''Clean..'' and select the ESAPI project.  Click ''OK''.&lt;br /&gt;
* If errors remain, select ''Maven'' again, then ''Update Dependencies''.&lt;br /&gt;
* ESAPI should now be compiled.&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
Building ESAPI should be easy with the new Maven integration.&lt;br /&gt;
&lt;br /&gt;
Once your environment is set up, as specified above:&lt;br /&gt;
* Right-Click your ESAPI project root folder&lt;br /&gt;
* Select ''Run As...''&lt;br /&gt;
* Select ''Run Configurations''&lt;br /&gt;
* Double Click &amp;quot;Maven Build&amp;quot; from the options on the left to create a new configuration.&lt;br /&gt;
* Name your configuration at the top.  This will be for building ESAPI without running JUnit tests.&lt;br /&gt;
* The &amp;quot;Base directory&amp;quot; should point to the root of your project&lt;br /&gt;
* The &amp;quot;Goals&amp;quot; field type &amp;quot;package&amp;quot;&lt;br /&gt;
* Any options not mentioned should be left as their default&lt;br /&gt;
* Click &amp;quot;Apply&amp;quot; to save your build configuration&lt;br /&gt;
* Click &amp;quot;Run&amp;quot; to run your configuration&lt;br /&gt;
&lt;br /&gt;
''NOTE: Jars created through building are located in the directory called &amp;quot;target&amp;quot;. ''&lt;br /&gt;
&lt;br /&gt;
==Running Demo App==&lt;br /&gt;
&lt;br /&gt;
The ESAPI Demo application has been named ''The ESAPI Swingset''.  More information about Swingset is available [http://www.owasp.org/index.php/ESAPI_Swingset here].&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Enterprise Security API]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI-Building&amp;diff=208376</id>
		<title>ESAPI-Building</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI-Building&amp;diff=208376"/>
				<updated>2016-02-09T05:30:21Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Change references from using svn and Google Code to git and GitHub.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ESAPI is easy to build yourself using [https://git-scm.com/ Git] and [http://maven.apache.org/ Maven]. Ensure that you are using UTF-8 for all source code.&lt;br /&gt;
&lt;br /&gt;
  $ git clone https://github.com/ESAPI/esapi-java-legacy.git    # This will clone the 'develop' branch.&lt;br /&gt;
  $ cd esapi-java-legacy&lt;br /&gt;
  $ mvn -Dmaven.test.skip=true package  # Build ESAPI&lt;br /&gt;
&lt;br /&gt;
Maven will generate a &amp;quot;target&amp;quot; directory that contains the ESAPI jar file.&lt;br /&gt;
&lt;br /&gt;
To generate project reports use:&lt;br /&gt;
&lt;br /&gt;
  $ mvn site&lt;br /&gt;
&lt;br /&gt;
To generate documentation use:&lt;br /&gt;
&lt;br /&gt;
  $ mvn javadoc:jar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Enterprise Security API]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=205301</id>
		<title>Category:OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=205301"/>
				<updated>2015-12-17T02:30:03Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Add new tab to ESAPI page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Home  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design: &lt;br /&gt;
&lt;br /&gt;
*'''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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]. &lt;br /&gt;
&lt;br /&gt;
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:chris.schmidt@owasp.org here] and [mailto:kevin.w.wall@gmail.com here].&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Let's talk here  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-bulb.jpg]]'''ESAPI Communities''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-dev esapi-dev mailing list (this is the main list)] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-user esapi-user mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-php esapi-php mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-python esapi-python mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-ruby esapi-ruby mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-swingset esapi-swingset mailing list]&lt;br /&gt;
*[http://groups.google.com/group/cfesapi esapi-coldfusion mailing list]&lt;br /&gt;
&lt;br /&gt;
IRC Chat&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*Server: irc.freenode.net&lt;br /&gt;
*Channel: #esapi&lt;br /&gt;
&lt;br /&gt;
== Got developer cycles?  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-waiting.JPG]]'''ESAPI Coding''' &lt;br /&gt;
&lt;br /&gt;
The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles. &lt;br /&gt;
 &lt;br /&gt;
*ESAPI for other languages developer onboarding instructions -- coming soon!&lt;br /&gt;
&lt;br /&gt;
== Project Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The ESAPI project is sponsored by {{MemberLinks|link=http://www.aspectsecurity.com|logo=Aspect_logo_owasp.jpg}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Downloads  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|2400x160px|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step1.jpg]]'''1. About ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*Data sheet([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF],[http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word]) &lt;br /&gt;
*Project presentation ([http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt PowerPoint]) &lt;br /&gt;
*Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step2.jpg]]'''2. Get ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*[https://search.maven.org/#search|ga|1|esapi ESAPI for Java Downloads (binaries)] &lt;br /&gt;
*[https://github.com/ESAPI/esapi-java-legacy ESAPI for Java (source)]&amp;lt;br&amp;gt;&lt;br /&gt;
*{{#switchtablink:.NET|ESAPI for .NET}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Classic ASP|ESAPI for Classic ASP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:PHP|ESAPI for PHP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:ColdFusion.2FCFML|ESAPI for ColdFusion &amp;amp; CFML}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Python|ESAPI for Python}}&amp;lt;br&amp;gt; &lt;br /&gt;
*[http://code.google.com/p/owasp-esapi-js/downloads/detail?name=esapi4js-0.1.3.zip ESAPI for Javascript]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step3.jpg]]'''3. Learn ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*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)] &lt;br /&gt;
*The [[ESAPI Swingset|ESAPI Swingset]] sample application demonstrates how to leverage ESAPI to protect a web application. &lt;br /&gt;
*LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF]) &lt;br /&gt;
*ESAPI for Java interface documentation ([http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 JavaDocs]) &lt;br /&gt;
*ESAPI for PHP interface documentation ([http://owasp-esapi-php.googlecode.com/svn/trunk_doc/latest/index.html phpdoc])&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What I did with ESAPI  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --[mailto:jeff.williams@owasp.org Jeff]&lt;br /&gt;
&lt;br /&gt;
*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 &amp;quot;Adapter&amp;quot; control to wrap calls to the other ESAPI controls. --[mailto:mike.boberski@owasp.org Mike]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java’s &amp;quot;Logger&amp;quot; control to make it easier for a US Government customer to meet C&amp;amp;amp;A requirements. --[mailto:dave.wichers@owasp.org Dave]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --[mailto:jim.manico@owasp.org Jim]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java's &amp;quot;Authenticator&amp;quot; to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific &amp;quot;Adapter&amp;quot; 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]&lt;br /&gt;
&lt;br /&gt;
*I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --[mailto:yairr@liveperson.com Yair]&lt;br /&gt;
&lt;br /&gt;
*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]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Should I use ESAPI?  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[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]&lt;br /&gt;
&lt;br /&gt;
Or, specifically, &amp;quot;Should I use ESAPI for Java?&amp;quot; since that's the only one run by OWASP that still shows any semblance of life.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Should I use ESAPI?&amp;quot; probably is &amp;quot;yes&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Output encoding: [https://www.owasp.org/index.php/OWASP_Java_Encoder_Project OWASP Java Encoder Project]&lt;br /&gt;
* General HTML sanitization: [https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project OWASP Java HTML Sanitizer]&lt;br /&gt;
* Validation: [http://beanvalidation.org/ JSR-303/JSR-349 Bean Validation]&lt;br /&gt;
*Strong cryptography: [https://github.com/google/keyczar Keyczar]&lt;br /&gt;
* Authentication / authorization: [https://shiro.apache.org/ Apache Shiro]&lt;br /&gt;
* 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]&lt;br /&gt;
&lt;br /&gt;
Note that it not the suggestion 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.&lt;br /&gt;
&lt;br /&gt;
-[mailto:kevin.w.wall@gmail.com kevin wall]&lt;br /&gt;
&lt;br /&gt;
= Glossary  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:Asvs-letters.jpg]]'''ESAPI Terminology''' &lt;br /&gt;
&lt;br /&gt;
*'''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. &lt;br /&gt;
*'''built-in singleton design pattern''' - The &amp;quot;built-in&amp;quot; singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact. &lt;br /&gt;
*'''codec''' - ESAPI encoder/decoder reference implementations. &lt;br /&gt;
*'''core''' - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core. &lt;br /&gt;
*'''exception''' - ESAPI exception reference implementations. &lt;br /&gt;
*'''extended factory design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''extended singleton design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''filter''' - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''locator''' - The ESAPI security control interfaces include an &amp;quot;ESAPI&amp;quot; class that is commonly referred to as a &amp;quot;locator&amp;quot; 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). &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Java EE  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Details  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OWASP Builders}}&lt;br /&gt;
[[Category:Popular]]&lt;br /&gt;
[[Category:SAMM-SA-3]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=205266</id>
		<title>GPC Project Details/OWASP Enterprise Security API Java EE Version</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=205266"/>
				<updated>2015-12-16T01:02:43Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Let's try percent encoding.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;OWASP Project Identification Tab&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| project_name = OWASP ESAPI for Java EE&lt;br /&gt;
| project_description = This is the Java EE language version of OWASP ESAPI. The ESAPI for Java EE is the baseline ESAPI design.&lt;br /&gt;
* The current release of this project '''is''' suitable for production use&lt;br /&gt;
* The ESAPI 2.x branch supports Java 1.5 and above. You may view the Javadocs here http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
* The ESAPI 1.4 branch supports Java 1.4 and above. Complete information on latest 1.4 branch dependencies can be found here http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/site/dependencies.html&lt;br /&gt;
* The OWASP AppSensor-ESAPI integration guide is out! [[AppSensor_GettingStarted]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- We are not keeping this up to date....&lt;br /&gt;
'''''Latest News:'''''&lt;br /&gt;
&amp;lt;twitter&amp;gt;90496975&amp;lt;/twitter&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| project_license = [http://en.wikipedia.org/wiki/BSD_license BSD license]&lt;br /&gt;
| leader_name = Kevin Wall &amp;amp; Chris Schmidt&lt;br /&gt;
| leader_email = kevin.w.wall@gmail.com&lt;br /&gt;
| leader_username = Kevin_W._Wall&lt;br /&gt;
| past_leaders_special_contributions = Jeff_Williams&lt;br /&gt;
| maintainer_name = ESAPI-Dev mailing list&lt;br /&gt;
| maintainer_email = esapi-dev@lists.owasp.org&lt;br /&gt;
| maintainer_username =&lt;br /&gt;
| contributor_name1 = Chris Schmidt&lt;br /&gt;
| contributor_email1 = chrisisbeef@gmail.com&lt;br /&gt;
| contributor_username1 = Chris_Schmidt&lt;br /&gt;
| contributor_name2 = Kevin W. Wall&lt;br /&gt;
| contributor_email2 = kevin.w.wall@gmail.com&lt;br /&gt;
| contributor_username2 = Kevin_W._Wall&lt;br /&gt;
| contributor_name3 = Jeff Williams&lt;br /&gt;
| contributor_email3 = Jeff.Williams@owasp.org&lt;br /&gt;
| contributor_username3 = Jeff_Williams&lt;br /&gt;
| contributor_name4 = Jim Manico&lt;br /&gt;
| contributor_email4 = Jim.Manico@owasp.org&lt;br /&gt;
| contributor_username4 = Jmanico&lt;br /&gt;
| contributor_name5 = See &amp;quot;Members&amp;quot; under https://code.google.com/p/owasp-esapi-java/ for list of other contributors&lt;br /&gt;
| contributor_email5 = &lt;br /&gt;
| contributor_username5 = &lt;br /&gt;
| contributor_name6 = &lt;br /&gt;
| contributor_email6 = &lt;br /&gt;
| contributor_username6 = &lt;br /&gt;
| contributor_name7 = &lt;br /&gt;
| contributor_email7 = &lt;br /&gt;
| contributor_username7 = &lt;br /&gt;
| contributor_name8 = &lt;br /&gt;
| contributor_email8 = &lt;br /&gt;
| contributor_username8 = &lt;br /&gt;
| contributor_name9 = &lt;br /&gt;
| contributor_email9 = &lt;br /&gt;
| contributor_username9 = &lt;br /&gt;
| contributor_name10 = &lt;br /&gt;
| contributor_email10 = &lt;br /&gt;
| contributor_username10 =  &lt;br /&gt;
| pamphlet_link = &lt;br /&gt;
| presentation_link = &lt;br /&gt;
| mailing_list_name = esapi-dev&lt;br /&gt;
| links_url1 = https://search.maven.org/#search%7Cga%7C1%7Corg.owasp.esapi&lt;br /&gt;
| links_name1 = ESAPI 2.x Downloads&lt;br /&gt;
| links_url2 = https://code.google.com/p/owasp-esapi-java/downloads/list&lt;br /&gt;
| links_name2 = All previous ESAPI Downloads&lt;br /&gt;
| links_url3 = https://github.com/ESAPI/esapi-java-legacy&lt;br /&gt;
| links_name3 = GitHub code repository for ESAPI JAVA&lt;br /&gt;
| links_url4 = https://github.com/ESAPI/esapi-java-legacy/issues&lt;br /&gt;
| links_name4 = Report a bug!&lt;br /&gt;
| links_url5 = http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
| links_name5 = ESAPI 2.1.0 Javadocs&lt;br /&gt;
| links_url6 = http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/index.html&lt;br /&gt;
| links_name6 = ESAPI 1.4.4 Javadocs&lt;br /&gt;
| links_url7 = http://www.owasp.org/index.php/ESAPI-Building&lt;br /&gt;
| links_name7 = How to build ESAPI 2.0 with Maven&lt;br /&gt;
| links_url8 = http://www.owasp.org/index.php/ESAPI-BuildingWithEclipse&lt;br /&gt;
| links_name8 = How to build ESAPI 2.0 with Maven via Eclipse&lt;br /&gt;
| project_road_map = &lt;br /&gt;
| project_health_status = &lt;br /&gt;
| current_release_name = &lt;br /&gt;
| current_release_date = &lt;br /&gt;
| current_release_download_link = &lt;br /&gt;
| current_release_rating = &lt;br /&gt;
| current_release_leader_name = &lt;br /&gt;
| current_release_leader_email = &lt;br /&gt;
| current_release_leader_username =&lt;br /&gt;
| current_release_details =  &lt;br /&gt;
| last_reviewed_release_name = &lt;br /&gt;
| last_reviewed_release_date = &lt;br /&gt;
| last_reviewed_release_download_link = &lt;br /&gt;
| last_reviewed_release_rating = &lt;br /&gt;
| last_reviewed_release_leader_name = &lt;br /&gt;
| last_reviewed_release_leader_email = &lt;br /&gt;
| last_reviewed_release_leader_username = &lt;br /&gt;
| old_release_name1 = &lt;br /&gt;
| old_release_date1 = &lt;br /&gt;
| old_release_download_link1 = &lt;br /&gt;
| old_release_name2 = &lt;br /&gt;
| old_release_date2 = &lt;br /&gt;
| old_release_download_link2 = &lt;br /&gt;
| old_release_name3 = &lt;br /&gt;
| old_release_date3 = &lt;br /&gt;
| old_release_download_link3 = &lt;br /&gt;
| old_release_name4 = &lt;br /&gt;
| old_release_date4 = &lt;br /&gt;
| old_release_download_link4 = &lt;br /&gt;
| old_release_name5 = &lt;br /&gt;
| old_release_date5 = &lt;br /&gt;
| old_release_download_link5 = &lt;br /&gt;
| last_GPC_update = 4/10/2009&lt;br /&gt;
| GPC_Notes = Empty template (Java EE Version)&lt;br /&gt;
| project_home_page = :Category:OWASP_Enterprise_Security_API&lt;br /&gt;
| project_details_wiki_page = GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=205265</id>
		<title>GPC Project Details/OWASP Enterprise Security API Java EE Version</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=205265"/>
				<updated>2015-12-16T00:51:50Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Try to fix downloads link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;OWASP Project Identification Tab&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| project_name = OWASP ESAPI for Java EE&lt;br /&gt;
| project_description = This is the Java EE language version of OWASP ESAPI. The ESAPI for Java EE is the baseline ESAPI design.&lt;br /&gt;
* The current release of this project '''is''' suitable for production use&lt;br /&gt;
* The ESAPI 2.x branch supports Java 1.5 and above. You may view the Javadocs here http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
* The ESAPI 1.4 branch supports Java 1.4 and above. Complete information on latest 1.4 branch dependencies can be found here http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/site/dependencies.html&lt;br /&gt;
* The OWASP AppSensor-ESAPI integration guide is out! [[AppSensor_GettingStarted]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- We are not keeping this up to date....&lt;br /&gt;
'''''Latest News:'''''&lt;br /&gt;
&amp;lt;twitter&amp;gt;90496975&amp;lt;/twitter&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| project_license = [http://en.wikipedia.org/wiki/BSD_license BSD license]&lt;br /&gt;
| leader_name = Kevin Wall &amp;amp; Chris Schmidt&lt;br /&gt;
| leader_email = kevin.w.wall@gmail.com&lt;br /&gt;
| leader_username = Kevin_W._Wall&lt;br /&gt;
| past_leaders_special_contributions = Jeff_Williams&lt;br /&gt;
| maintainer_name = ESAPI-Dev mailing list&lt;br /&gt;
| maintainer_email = esapi-dev@lists.owasp.org&lt;br /&gt;
| maintainer_username =&lt;br /&gt;
| contributor_name1 = Chris Schmidt&lt;br /&gt;
| contributor_email1 = chrisisbeef@gmail.com&lt;br /&gt;
| contributor_username1 = Chris_Schmidt&lt;br /&gt;
| contributor_name2 = Kevin W. Wall&lt;br /&gt;
| contributor_email2 = kevin.w.wall@gmail.com&lt;br /&gt;
| contributor_username2 = Kevin_W._Wall&lt;br /&gt;
| contributor_name3 = Jeff Williams&lt;br /&gt;
| contributor_email3 = Jeff.Williams@owasp.org&lt;br /&gt;
| contributor_username3 = Jeff_Williams&lt;br /&gt;
| contributor_name4 = Jim Manico&lt;br /&gt;
| contributor_email4 = Jim.Manico@owasp.org&lt;br /&gt;
| contributor_username4 = Jmanico&lt;br /&gt;
| contributor_name5 = See &amp;quot;Members&amp;quot; under https://code.google.com/p/owasp-esapi-java/ for list of other contributors&lt;br /&gt;
| contributor_email5 = &lt;br /&gt;
| contributor_username5 = &lt;br /&gt;
| contributor_name6 = &lt;br /&gt;
| contributor_email6 = &lt;br /&gt;
| contributor_username6 = &lt;br /&gt;
| contributor_name7 = &lt;br /&gt;
| contributor_email7 = &lt;br /&gt;
| contributor_username7 = &lt;br /&gt;
| contributor_name8 = &lt;br /&gt;
| contributor_email8 = &lt;br /&gt;
| contributor_username8 = &lt;br /&gt;
| contributor_name9 = &lt;br /&gt;
| contributor_email9 = &lt;br /&gt;
| contributor_username9 = &lt;br /&gt;
| contributor_name10 = &lt;br /&gt;
| contributor_email10 = &lt;br /&gt;
| contributor_username10 =  &lt;br /&gt;
| pamphlet_link = &lt;br /&gt;
| presentation_link = &lt;br /&gt;
| mailing_list_name = esapi-dev&lt;br /&gt;
| links_url1 = https://search.maven.org/#search\|ga\|1\|org.owasp.esapi&lt;br /&gt;
| links_name1 = ESAPI 2.x Downloads&lt;br /&gt;
| links_url2 = https://code.google.com/p/owasp-esapi-java/downloads/list&lt;br /&gt;
| links_name2 = All previous ESAPI Downloads&lt;br /&gt;
| links_url3 = https://github.com/ESAPI/esapi-java-legacy&lt;br /&gt;
| links_name3 = GitHub code repository for ESAPI JAVA&lt;br /&gt;
| links_url4 = https://github.com/ESAPI/esapi-java-legacy/issues&lt;br /&gt;
| links_name4 = Report a bug!&lt;br /&gt;
| links_url5 = http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
| links_name5 = ESAPI 2.1.0 Javadocs&lt;br /&gt;
| links_url6 = http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/index.html&lt;br /&gt;
| links_name6 = ESAPI 1.4.4 Javadocs&lt;br /&gt;
| links_url7 = http://www.owasp.org/index.php/ESAPI-Building&lt;br /&gt;
| links_name7 = How to build ESAPI 2.0 with Maven&lt;br /&gt;
| links_url8 = http://www.owasp.org/index.php/ESAPI-BuildingWithEclipse&lt;br /&gt;
| links_name8 = How to build ESAPI 2.0 with Maven via Eclipse&lt;br /&gt;
| project_road_map = &lt;br /&gt;
| project_health_status = &lt;br /&gt;
| current_release_name = &lt;br /&gt;
| current_release_date = &lt;br /&gt;
| current_release_download_link = &lt;br /&gt;
| current_release_rating = &lt;br /&gt;
| current_release_leader_name = &lt;br /&gt;
| current_release_leader_email = &lt;br /&gt;
| current_release_leader_username =&lt;br /&gt;
| current_release_details =  &lt;br /&gt;
| last_reviewed_release_name = &lt;br /&gt;
| last_reviewed_release_date = &lt;br /&gt;
| last_reviewed_release_download_link = &lt;br /&gt;
| last_reviewed_release_rating = &lt;br /&gt;
| last_reviewed_release_leader_name = &lt;br /&gt;
| last_reviewed_release_leader_email = &lt;br /&gt;
| last_reviewed_release_leader_username = &lt;br /&gt;
| old_release_name1 = &lt;br /&gt;
| old_release_date1 = &lt;br /&gt;
| old_release_download_link1 = &lt;br /&gt;
| old_release_name2 = &lt;br /&gt;
| old_release_date2 = &lt;br /&gt;
| old_release_download_link2 = &lt;br /&gt;
| old_release_name3 = &lt;br /&gt;
| old_release_date3 = &lt;br /&gt;
| old_release_download_link3 = &lt;br /&gt;
| old_release_name4 = &lt;br /&gt;
| old_release_date4 = &lt;br /&gt;
| old_release_download_link4 = &lt;br /&gt;
| old_release_name5 = &lt;br /&gt;
| old_release_date5 = &lt;br /&gt;
| old_release_download_link5 = &lt;br /&gt;
| last_GPC_update = 4/10/2009&lt;br /&gt;
| GPC_Notes = Empty template (Java EE Version)&lt;br /&gt;
| project_home_page = :Category:OWASP_Enterprise_Security_API&lt;br /&gt;
| project_details_wiki_page = GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=205264</id>
		<title>GPC Project Details/OWASP Enterprise Security API Java EE Version</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=205264"/>
				<updated>2015-12-16T00:42:12Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: More cleanup to get rid of as many Google Code links as possible.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;OWASP Project Identification Tab&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| project_name = OWASP ESAPI for Java EE&lt;br /&gt;
| project_description = This is the Java EE language version of OWASP ESAPI. The ESAPI for Java EE is the baseline ESAPI design.&lt;br /&gt;
* The current release of this project '''is''' suitable for production use&lt;br /&gt;
* The ESAPI 2.x branch supports Java 1.5 and above. You may view the Javadocs here http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
* The ESAPI 1.4 branch supports Java 1.4 and above. Complete information on latest 1.4 branch dependencies can be found here http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/site/dependencies.html&lt;br /&gt;
* The OWASP AppSensor-ESAPI integration guide is out! [[AppSensor_GettingStarted]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- We are not keeping this up to date....&lt;br /&gt;
'''''Latest News:'''''&lt;br /&gt;
&amp;lt;twitter&amp;gt;90496975&amp;lt;/twitter&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| project_license = [http://en.wikipedia.org/wiki/BSD_license BSD license]&lt;br /&gt;
| leader_name = Kevin Wall &amp;amp; Chris Schmidt&lt;br /&gt;
| leader_email = kevin.w.wall@gmail.com&lt;br /&gt;
| leader_username = Kevin_W._Wall&lt;br /&gt;
| past_leaders_special_contributions = Jeff_Williams&lt;br /&gt;
| maintainer_name = ESAPI-Dev mailing list&lt;br /&gt;
| maintainer_email = esapi-dev@lists.owasp.org&lt;br /&gt;
| maintainer_username =&lt;br /&gt;
| contributor_name1 = Chris Schmidt&lt;br /&gt;
| contributor_email1 = chrisisbeef@gmail.com&lt;br /&gt;
| contributor_username1 = Chris_Schmidt&lt;br /&gt;
| contributor_name2 = Kevin W. Wall&lt;br /&gt;
| contributor_email2 = kevin.w.wall@gmail.com&lt;br /&gt;
| contributor_username2 = Kevin_W._Wall&lt;br /&gt;
| contributor_name3 = Jeff Williams&lt;br /&gt;
| contributor_email3 = Jeff.Williams@owasp.org&lt;br /&gt;
| contributor_username3 = Jeff_Williams&lt;br /&gt;
| contributor_name4 = Jim Manico&lt;br /&gt;
| contributor_email4 = Jim.Manico@owasp.org&lt;br /&gt;
| contributor_username4 = Jmanico&lt;br /&gt;
| contributor_name5 = See &amp;quot;Members&amp;quot; under https://code.google.com/p/owasp-esapi-java/ for list of other contributors&lt;br /&gt;
| contributor_email5 = &lt;br /&gt;
| contributor_username5 = &lt;br /&gt;
| contributor_name6 = &lt;br /&gt;
| contributor_email6 = &lt;br /&gt;
| contributor_username6 = &lt;br /&gt;
| contributor_name7 = &lt;br /&gt;
| contributor_email7 = &lt;br /&gt;
| contributor_username7 = &lt;br /&gt;
| contributor_name8 = &lt;br /&gt;
| contributor_email8 = &lt;br /&gt;
| contributor_username8 = &lt;br /&gt;
| contributor_name9 = &lt;br /&gt;
| contributor_email9 = &lt;br /&gt;
| contributor_username9 = &lt;br /&gt;
| contributor_name10 = &lt;br /&gt;
| contributor_email10 = &lt;br /&gt;
| contributor_username10 =  &lt;br /&gt;
| pamphlet_link = &lt;br /&gt;
| presentation_link = &lt;br /&gt;
| mailing_list_name = esapi-dev&lt;br /&gt;
| links_url1 = https://search.maven.org/#search|ga|1|org.owasp.esapi&lt;br /&gt;
| links_name1 = ESAPI 2.x Downloads&lt;br /&gt;
| links_url2 = https://code.google.com/p/owasp-esapi-java/downloads/list&lt;br /&gt;
| links_name2 = All previous ESAPI Downloads&lt;br /&gt;
| links_url3 = https://github.com/ESAPI/esapi-java-legacy&lt;br /&gt;
| links_name3 = GitHub code repository for ESAPI JAVA&lt;br /&gt;
| links_url4 = https://github.com/ESAPI/esapi-java-legacy/issues&lt;br /&gt;
| links_name4 = Report a bug!&lt;br /&gt;
| links_url5 = http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
| links_name5 = ESAPI 2.1.0 Javadocs&lt;br /&gt;
| links_url6 = http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/index.html&lt;br /&gt;
| links_name6 = ESAPI 1.4.4 Javadocs&lt;br /&gt;
| links_url7 = http://www.owasp.org/index.php/ESAPI-Building&lt;br /&gt;
| links_name7 = How to build ESAPI 2.0 with Maven&lt;br /&gt;
| links_url8 = http://www.owasp.org/index.php/ESAPI-BuildingWithEclipse&lt;br /&gt;
| links_name8 = How to build ESAPI 2.0 with Maven via Eclipse&lt;br /&gt;
| project_road_map = &lt;br /&gt;
| project_health_status = &lt;br /&gt;
| current_release_name = &lt;br /&gt;
| current_release_date = &lt;br /&gt;
| current_release_download_link = &lt;br /&gt;
| current_release_rating = &lt;br /&gt;
| current_release_leader_name = &lt;br /&gt;
| current_release_leader_email = &lt;br /&gt;
| current_release_leader_username =&lt;br /&gt;
| current_release_details =  &lt;br /&gt;
| last_reviewed_release_name = &lt;br /&gt;
| last_reviewed_release_date = &lt;br /&gt;
| last_reviewed_release_download_link = &lt;br /&gt;
| last_reviewed_release_rating = &lt;br /&gt;
| last_reviewed_release_leader_name = &lt;br /&gt;
| last_reviewed_release_leader_email = &lt;br /&gt;
| last_reviewed_release_leader_username = &lt;br /&gt;
| old_release_name1 = &lt;br /&gt;
| old_release_date1 = &lt;br /&gt;
| old_release_download_link1 = &lt;br /&gt;
| old_release_name2 = &lt;br /&gt;
| old_release_date2 = &lt;br /&gt;
| old_release_download_link2 = &lt;br /&gt;
| old_release_name3 = &lt;br /&gt;
| old_release_date3 = &lt;br /&gt;
| old_release_download_link3 = &lt;br /&gt;
| old_release_name4 = &lt;br /&gt;
| old_release_date4 = &lt;br /&gt;
| old_release_download_link4 = &lt;br /&gt;
| old_release_name5 = &lt;br /&gt;
| old_release_date5 = &lt;br /&gt;
| old_release_download_link5 = &lt;br /&gt;
| last_GPC_update = 4/10/2009&lt;br /&gt;
| GPC_Notes = Empty template (Java EE Version)&lt;br /&gt;
| project_home_page = :Category:OWASP_Enterprise_Security_API&lt;br /&gt;
| project_details_wiki_page = GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=205263</id>
		<title>GPC Project Details/OWASP Enterprise Security API Java EE Version</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=205263"/>
				<updated>2015-12-16T00:28:57Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;OWASP Project Identification Tab&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| project_name = OWASP ESAPI for Java EE&lt;br /&gt;
| project_description = This is the Java EE language version of OWASP ESAPI. The ESAPI for Java EE is the baseline ESAPI design.&lt;br /&gt;
* The current release of this project '''is''' suitable for production use&lt;br /&gt;
* The ESAPI 2.x branch supports Java 1.5 and above. You may view the Javadocs here http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
* The ESAPI 1.4 branch supports Java 1.4 and above. Complete information on latest 1.4 branch dependencies can be found here http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/site/dependencies.html&lt;br /&gt;
* The OWASP AppSensor-ESAPI integration guide is out! [[AppSensor_GettingStarted]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- We are not keeping this up to date....&lt;br /&gt;
'''''Latest News:'''''&lt;br /&gt;
&amp;lt;twitter&amp;gt;90496975&amp;lt;/twitter&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| project_license = [http://en.wikipedia.org/wiki/BSD_license BSD license]&lt;br /&gt;
| leader_name = Kevin Wall &amp;amp; Chris Schmidt&lt;br /&gt;
| leader_email = kevin.w.wall@gmail.com&lt;br /&gt;
| leader_username = Kevin_W._Wall&lt;br /&gt;
| past_leaders_special_contributions = Jeff_Williams&lt;br /&gt;
| maintainer_name = ESAPI-Dev mailing list&lt;br /&gt;
| maintainer_email = esapi-dev@lists.owasp.org&lt;br /&gt;
| maintainer_username =&lt;br /&gt;
| contributor_name1 = Chris Schmidt&lt;br /&gt;
| contributor_email1 = chrisisbeef@gmail.com&lt;br /&gt;
| contributor_username1 = Chris_Schmidt&lt;br /&gt;
| contributor_name2 = Kevin W. Wall&lt;br /&gt;
| contributor_email2 = kevin.w.wall@gmail.com&lt;br /&gt;
| contributor_username2 = Kevin_W._Wall&lt;br /&gt;
| contributor_name3 = Jeff Williams&lt;br /&gt;
| contributor_email3 = Jeff.Williams@owasp.org&lt;br /&gt;
| contributor_username3 = Jeff_Williams&lt;br /&gt;
| contributor_name4 = Jim Manico&lt;br /&gt;
| contributor_email4 = Jim.Manico@owasp.org&lt;br /&gt;
| contributor_username4 = JManico&lt;br /&gt;
| contributor_name5 = See &amp;quot;Members&amp;quot; under https://code.google.com/p/owasp-esapi-java/ for list of other contributors&lt;br /&gt;
| contributor_email5 = &lt;br /&gt;
| contributor_username5 = &lt;br /&gt;
| contributor_name6 = &lt;br /&gt;
| contributor_email6 = &lt;br /&gt;
| contributor_username6 = &lt;br /&gt;
| contributor_name7 = &lt;br /&gt;
| contributor_email7 = &lt;br /&gt;
| contributor_username7 = &lt;br /&gt;
| contributor_name8 = &lt;br /&gt;
| contributor_email8 = &lt;br /&gt;
| contributor_username8 = &lt;br /&gt;
| contributor_name9 = &lt;br /&gt;
| contributor_email9 = &lt;br /&gt;
| contributor_username9 = &lt;br /&gt;
| contributor_name10 = &lt;br /&gt;
| contributor_email10 = &lt;br /&gt;
| contributor_username10 =  &lt;br /&gt;
| pamphlet_link = &lt;br /&gt;
| presentation_link = &lt;br /&gt;
| mailing_list_name = esapi-dev&lt;br /&gt;
| links_url1 = http://code.google.com/p/owasp-esapi-java/downloads/list&lt;br /&gt;
| links_name1 = All ESAPI Downloads&lt;br /&gt;
| links_url2 = http://owasp-esapi-java.googlecode.com/files/ESAPI-1.4.4.zip&lt;br /&gt;
| links_name2 = ESAPI 1.4.4 - complete zip (Java 1.4+) &lt;br /&gt;
| links_url3 = http://code.google.com/p/owasp-esapi-java&lt;br /&gt;
| links_name3 = Google code repository for ESAPI JAVA&lt;br /&gt;
| links_url4 = http://code.google.com/p/owasp-esapi-java/issues/list&lt;br /&gt;
| links_name4 = Report a bug! (requires Google account)&lt;br /&gt;
| links_url5 = http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
| links_name5 = ESAPI 2.1.0 Javadocs&lt;br /&gt;
| links_url6 = http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/index.html&lt;br /&gt;
| links_name6 = ESAPI 1.4.4 Javadocs&lt;br /&gt;
| links_url7 = http://www.owasp.org/index.php/ESAPI-Building&lt;br /&gt;
| links_name7 = How to build ESAPI 2.0 with Maven&lt;br /&gt;
| links_url8 = http://www.owasp.org/index.php/ESAPI-BuildingWithEclipse&lt;br /&gt;
| links_name8 = How to build ESAPI 2.0 with Maven via Eclipse&lt;br /&gt;
| project_road_map = &lt;br /&gt;
| project_health_status = &lt;br /&gt;
| current_release_name = &lt;br /&gt;
| current_release_date = &lt;br /&gt;
| current_release_download_link = &lt;br /&gt;
| current_release_rating = &lt;br /&gt;
| current_release_leader_name = &lt;br /&gt;
| current_release_leader_email = &lt;br /&gt;
| current_release_leader_username =&lt;br /&gt;
| current_release_details =  &lt;br /&gt;
| last_reviewed_release_name = &lt;br /&gt;
| last_reviewed_release_date = &lt;br /&gt;
| last_reviewed_release_download_link = &lt;br /&gt;
| last_reviewed_release_rating = &lt;br /&gt;
| last_reviewed_release_leader_name = &lt;br /&gt;
| last_reviewed_release_leader_email = &lt;br /&gt;
| last_reviewed_release_leader_username = &lt;br /&gt;
| old_release_name1 = &lt;br /&gt;
| old_release_date1 = &lt;br /&gt;
| old_release_download_link1 = &lt;br /&gt;
| old_release_name2 = &lt;br /&gt;
| old_release_date2 = &lt;br /&gt;
| old_release_download_link2 = &lt;br /&gt;
| old_release_name3 = &lt;br /&gt;
| old_release_date3 = &lt;br /&gt;
| old_release_download_link3 = &lt;br /&gt;
| old_release_name4 = &lt;br /&gt;
| old_release_date4 = &lt;br /&gt;
| old_release_download_link4 = &lt;br /&gt;
| old_release_name5 = &lt;br /&gt;
| old_release_date5 = &lt;br /&gt;
| old_release_download_link5 = &lt;br /&gt;
| last_GPC_update = 4/10/2009&lt;br /&gt;
| GPC_Notes = Empty template (Java EE Version)&lt;br /&gt;
| project_home_page = :Category:OWASP_Enterprise_Security_API&lt;br /&gt;
| project_details_wiki_page = GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=205262</id>
		<title>GPC Project Details/OWASP Enterprise Security API Java EE Version</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=205262"/>
				<updated>2015-12-16T00:25:36Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;OWASP Project Identification Tab&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| project_name = OWASP ESAPI for Java EE&lt;br /&gt;
| project_description = This is the Java EE language version of OWASP ESAPI. The ESAPI for Java EE is the baseline ESAPI design.&lt;br /&gt;
* The current release of this project '''is''' suitable for production use&lt;br /&gt;
* The ESAPI 2.x branch supports Java 1.5 and above. You may view the Javadocs here http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
* The ESAPI 1.4 branch supports Java 1.4 and above. Complete information on latest 1.4 branch dependencies can be found here http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/site/dependencies.html&lt;br /&gt;
* The OWASP AppSensor-ESAPI integration guide is out! [[AppSensor_GettingStarted]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- We are not keeping this up to date....&lt;br /&gt;
'''''Latest News:'''''&lt;br /&gt;
&amp;lt;twitter&amp;gt;90496975&amp;lt;/twitter&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| project_license = [http://en.wikipedia.org/wiki/BSD_license BSD license]&lt;br /&gt;
| leader_name = Kevin Wall &amp;amp; Chris Schmidt&lt;br /&gt;
| leader_email = kevin.w.wall@gmail.com&lt;br /&gt;
| leader_username = Kevin_W._Wall&lt;br /&gt;
| past_leaders_special_contributions = Jeff Williams&lt;br /&gt;
| maintainer_name = ESAPI-Dev mailing list&lt;br /&gt;
| maintainer_email = esapi-dev@lists.owasp.org&lt;br /&gt;
| maintainer_username =&lt;br /&gt;
| contributor_name1 = Chris Schmidt&lt;br /&gt;
| contributor_email1 = chrisisbeef@gmail.com&lt;br /&gt;
| contributor_username1 = Chris_Schmidt&lt;br /&gt;
| contributor_name2 = Kevin W. Wall&lt;br /&gt;
| contributor_email2 = kevin.w.wall@gmail.com&lt;br /&gt;
| contributor_username2 = Kevin_W._Wall&lt;br /&gt;
| contributor_name3 = Jeff Williams&lt;br /&gt;
| contributor_email3 = Jeff.Williams@owasp.org&lt;br /&gt;
| contributor_username3 = Jeff_Williams&lt;br /&gt;
| contributor_name4 = Jim Manico&lt;br /&gt;
| contributor_email4 = Jim.Manico@owasp.org&lt;br /&gt;
| contributor_username4 = Jim_Manico&lt;br /&gt;
| contributor_name5 = See &amp;quot;Members&amp;quot; under https://code.google.com/p/owasp-esapi-java/ for list of other contributors&lt;br /&gt;
| contributor_email5 = &lt;br /&gt;
| contributor_username5 = &lt;br /&gt;
| contributor_name6 = &lt;br /&gt;
| contributor_email6 = &lt;br /&gt;
| contributor_username6 = &lt;br /&gt;
| contributor_name7 = &lt;br /&gt;
| contributor_email7 = &lt;br /&gt;
| contributor_username7 = &lt;br /&gt;
| contributor_name8 = &lt;br /&gt;
| contributor_email8 = &lt;br /&gt;
| contributor_username8 = &lt;br /&gt;
| contributor_name9 = &lt;br /&gt;
| contributor_email9 = &lt;br /&gt;
| contributor_username9 = &lt;br /&gt;
| contributor_name10 = &lt;br /&gt;
| contributor_email10 = &lt;br /&gt;
| contributor_username10 =  &lt;br /&gt;
| pamphlet_link = &lt;br /&gt;
| presentation_link = &lt;br /&gt;
| mailing_list_name = esapi-dev&lt;br /&gt;
| links_url1 = http://code.google.com/p/owasp-esapi-java/downloads/list&lt;br /&gt;
| links_name1 = All ESAPI Downloads&lt;br /&gt;
| links_url2 = http://owasp-esapi-java.googlecode.com/files/ESAPI-1.4.4.zip&lt;br /&gt;
| links_name2 = ESAPI 1.4.4 - complete zip (Java 1.4+) &lt;br /&gt;
| links_url3 = http://code.google.com/p/owasp-esapi-java&lt;br /&gt;
| links_name3 = Google code repository for ESAPI JAVA&lt;br /&gt;
| links_url4 = http://code.google.com/p/owasp-esapi-java/issues/list&lt;br /&gt;
| links_name4 = Report a bug! (requires Google account)&lt;br /&gt;
| links_url5 = http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 &lt;br /&gt;
| links_name5 = ESAPI 2.1.0 Javadocs&lt;br /&gt;
| links_url6 = http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/index.html&lt;br /&gt;
| links_name6 = ESAPI 1.4.4 Javadocs&lt;br /&gt;
| links_url7 = http://www.owasp.org/index.php/ESAPI-Building&lt;br /&gt;
| links_name7 = How to build ESAPI 2.0 with Maven&lt;br /&gt;
| links_url8 = http://www.owasp.org/index.php/ESAPI-BuildingWithEclipse&lt;br /&gt;
| links_name8 = How to build ESAPI 2.0 with Maven via Eclipse&lt;br /&gt;
| project_road_map = &lt;br /&gt;
| project_health_status = &lt;br /&gt;
| current_release_name = &lt;br /&gt;
| current_release_date = &lt;br /&gt;
| current_release_download_link = &lt;br /&gt;
| current_release_rating = &lt;br /&gt;
| current_release_leader_name = &lt;br /&gt;
| current_release_leader_email = &lt;br /&gt;
| current_release_leader_username =&lt;br /&gt;
| current_release_details =  &lt;br /&gt;
| last_reviewed_release_name = &lt;br /&gt;
| last_reviewed_release_date = &lt;br /&gt;
| last_reviewed_release_download_link = &lt;br /&gt;
| last_reviewed_release_rating = &lt;br /&gt;
| last_reviewed_release_leader_name = &lt;br /&gt;
| last_reviewed_release_leader_email = &lt;br /&gt;
| last_reviewed_release_leader_username = &lt;br /&gt;
| old_release_name1 = &lt;br /&gt;
| old_release_date1 = &lt;br /&gt;
| old_release_download_link1 = &lt;br /&gt;
| old_release_name2 = &lt;br /&gt;
| old_release_date2 = &lt;br /&gt;
| old_release_download_link2 = &lt;br /&gt;
| old_release_name3 = &lt;br /&gt;
| old_release_date3 = &lt;br /&gt;
| old_release_download_link3 = &lt;br /&gt;
| old_release_name4 = &lt;br /&gt;
| old_release_date4 = &lt;br /&gt;
| old_release_download_link4 = &lt;br /&gt;
| old_release_name5 = &lt;br /&gt;
| old_release_date5 = &lt;br /&gt;
| old_release_download_link5 = &lt;br /&gt;
| last_GPC_update = 4/10/2009&lt;br /&gt;
| GPC_Notes = Empty template (Java EE Version)&lt;br /&gt;
| project_home_page = :Category:OWASP_Enterprise_Security_API&lt;br /&gt;
| project_details_wiki_page = GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=205224</id>
		<title>Category:OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=205224"/>
				<updated>2015-12-15T05:56:08Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Updated project lead.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Home  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design: &lt;br /&gt;
&lt;br /&gt;
*'''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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]. &lt;br /&gt;
&lt;br /&gt;
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:chris.schmidt@owasp.org here] and [mailto:kevin.w.wall@gmail.com here].&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Let's talk here  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-bulb.jpg]]'''ESAPI Communities''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-dev esapi-dev mailing list (this is the main list)] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-user esapi-user mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-php esapi-php mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-python esapi-python mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-ruby esapi-ruby mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-swingset esapi-swingset mailing list]&lt;br /&gt;
*[http://groups.google.com/group/cfesapi esapi-coldfusion mailing list]&lt;br /&gt;
&lt;br /&gt;
IRC Chat&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*Server: irc.freenode.net&lt;br /&gt;
*Channel: #esapi&lt;br /&gt;
&lt;br /&gt;
== Got developer cycles?  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-waiting.JPG]]'''ESAPI Coding''' &lt;br /&gt;
&lt;br /&gt;
The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles. &lt;br /&gt;
 &lt;br /&gt;
*ESAPI for other languages developer onboarding instructions -- coming soon!&lt;br /&gt;
&lt;br /&gt;
== Project Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The ESAPI project is sponsored by {{MemberLinks|link=http://www.aspectsecurity.com|logo=Aspect_logo_owasp.jpg}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Downloads  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|2400x160px|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step1.jpg]]'''1. About ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*Data sheet([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF],[http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word]) &lt;br /&gt;
*Project presentation ([http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt PowerPoint]) &lt;br /&gt;
*Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step2.jpg]]'''2. Get ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*[https://search.maven.org/#search|ga|1|esapi ESAPI for Java Downloads (binaries)] &lt;br /&gt;
*[https://github.com/ESAPI/esapi-java-legacy ESAPI for Java (source)]&amp;lt;br&amp;gt;&lt;br /&gt;
*{{#switchtablink:.NET|ESAPI for .NET}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Classic ASP|ESAPI for Classic ASP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:PHP|ESAPI for PHP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:ColdFusion.2FCFML|ESAPI for ColdFusion &amp;amp; CFML}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Python|ESAPI for Python}}&amp;lt;br&amp;gt; &lt;br /&gt;
*[http://code.google.com/p/owasp-esapi-js/downloads/detail?name=esapi4js-0.1.3.zip ESAPI for Javascript]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step3.jpg]]'''3. Learn ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*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)] &lt;br /&gt;
*The [[ESAPI Swingset|ESAPI Swingset]] sample application demonstrates how to leverage ESAPI to protect a web application. &lt;br /&gt;
*LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF]) &lt;br /&gt;
*ESAPI for Java interface documentation ([http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 JavaDocs]) &lt;br /&gt;
*ESAPI for PHP interface documentation ([http://owasp-esapi-php.googlecode.com/svn/trunk_doc/latest/index.html phpdoc])&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What I did with ESAPI  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --[mailto:jeff.williams@owasp.org Jeff]&lt;br /&gt;
&lt;br /&gt;
*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 &amp;quot;Adapter&amp;quot; control to wrap calls to the other ESAPI controls. --[mailto:mike.boberski@owasp.org Mike]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java’s &amp;quot;Logger&amp;quot; control to make it easier for a US Government customer to meet C&amp;amp;amp;A requirements. --[mailto:dave.wichers@owasp.org Dave]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --[mailto:jim.manico@owasp.org Jim]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java's &amp;quot;Authenticator&amp;quot; to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific &amp;quot;Adapter&amp;quot; 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]&lt;br /&gt;
&lt;br /&gt;
*I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --[mailto:yairr@liveperson.com Yair]&lt;br /&gt;
&lt;br /&gt;
*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]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Glossary  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:Asvs-letters.jpg]]'''ESAPI Terminology''' &lt;br /&gt;
&lt;br /&gt;
*'''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. &lt;br /&gt;
*'''built-in singleton design pattern''' - The &amp;quot;built-in&amp;quot; singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact. &lt;br /&gt;
*'''codec''' - ESAPI encoder/decoder reference implementations. &lt;br /&gt;
*'''core''' - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core. &lt;br /&gt;
*'''exception''' - ESAPI exception reference implementations. &lt;br /&gt;
*'''extended factory design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''extended singleton design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''filter''' - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''locator''' - The ESAPI security control interfaces include an &amp;quot;ESAPI&amp;quot; class that is commonly referred to as a &amp;quot;locator&amp;quot; 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). &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Java EE  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Details  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OWASP Builders}}&lt;br /&gt;
[[Category:Popular]]&lt;br /&gt;
[[Category:SAMM-SA-3]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=205223</id>
		<title>Category:OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=205223"/>
				<updated>2015-12-15T05:46:52Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Get rid of more references to Google Code site.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Home  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design: &lt;br /&gt;
&lt;br /&gt;
*'''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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]. &lt;br /&gt;
&lt;br /&gt;
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.williams@owasp.org here]. &lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Let's talk here  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-bulb.jpg]]'''ESAPI Communities''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-dev esapi-dev mailing list (this is the main list)] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-user esapi-user mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-php esapi-php mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-python esapi-python mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-ruby esapi-ruby mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-swingset esapi-swingset mailing list]&lt;br /&gt;
*[http://groups.google.com/group/cfesapi esapi-coldfusion mailing list]&lt;br /&gt;
&lt;br /&gt;
IRC Chat&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*Server: irc.freenode.net&lt;br /&gt;
*Channel: #esapi&lt;br /&gt;
&lt;br /&gt;
== Got developer cycles?  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-waiting.JPG]]'''ESAPI Coding''' &lt;br /&gt;
&lt;br /&gt;
The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles. &lt;br /&gt;
 &lt;br /&gt;
*ESAPI for other languages developer onboarding instructions -- coming soon!&lt;br /&gt;
&lt;br /&gt;
== Project Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The ESAPI project is sponsored by {{MemberLinks|link=http://www.aspectsecurity.com|logo=Aspect_logo_owasp.jpg}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Downloads  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|2400x160px|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step1.jpg]]'''1. About ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*Data sheet([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF],[http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word]) &lt;br /&gt;
*Project presentation ([http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt PowerPoint]) &lt;br /&gt;
*Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step2.jpg]]'''2. Get ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*[https://search.maven.org/#search|ga|1|esapi ESAPI for Java Downloads (binaries)] &lt;br /&gt;
*[https://github.com/ESAPI/esapi-java-legacy ESAPI for Java (source)]&amp;lt;br&amp;gt;&lt;br /&gt;
*{{#switchtablink:.NET|ESAPI for .NET}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Classic ASP|ESAPI for Classic ASP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:PHP|ESAPI for PHP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:ColdFusion.2FCFML|ESAPI for ColdFusion &amp;amp; CFML}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Python|ESAPI for Python}}&amp;lt;br&amp;gt; &lt;br /&gt;
*[http://code.google.com/p/owasp-esapi-js/downloads/detail?name=esapi4js-0.1.3.zip ESAPI for Javascript]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step3.jpg]]'''3. Learn ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*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)] &lt;br /&gt;
*The [[ESAPI Swingset|ESAPI Swingset]] sample application demonstrates how to leverage ESAPI to protect a web application. &lt;br /&gt;
*LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF]) &lt;br /&gt;
*ESAPI for Java interface documentation ([http://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0 JavaDocs]) &lt;br /&gt;
*ESAPI for PHP interface documentation ([http://owasp-esapi-php.googlecode.com/svn/trunk_doc/latest/index.html phpdoc])&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What I did with ESAPI  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --[mailto:jeff.williams@owasp.org Jeff]&lt;br /&gt;
&lt;br /&gt;
*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 &amp;quot;Adapter&amp;quot; control to wrap calls to the other ESAPI controls. --[mailto:mike.boberski@owasp.org Mike]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java’s &amp;quot;Logger&amp;quot; control to make it easier for a US Government customer to meet C&amp;amp;amp;A requirements. --[mailto:dave.wichers@owasp.org Dave]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --[mailto:jim.manico@owasp.org Jim]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java's &amp;quot;Authenticator&amp;quot; to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific &amp;quot;Adapter&amp;quot; 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]&lt;br /&gt;
&lt;br /&gt;
*I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --[mailto:yairr@liveperson.com Yair]&lt;br /&gt;
&lt;br /&gt;
*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]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Glossary  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:Asvs-letters.jpg]]'''ESAPI Terminology''' &lt;br /&gt;
&lt;br /&gt;
*'''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. &lt;br /&gt;
*'''built-in singleton design pattern''' - The &amp;quot;built-in&amp;quot; singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact. &lt;br /&gt;
*'''codec''' - ESAPI encoder/decoder reference implementations. &lt;br /&gt;
*'''core''' - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core. &lt;br /&gt;
*'''exception''' - ESAPI exception reference implementations. &lt;br /&gt;
*'''extended factory design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''extended singleton design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''filter''' - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''locator''' - The ESAPI security control interfaces include an &amp;quot;ESAPI&amp;quot; class that is commonly referred to as a &amp;quot;locator&amp;quot; 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). &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Java EE  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Details  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OWASP Builders}}&lt;br /&gt;
[[Category:Popular]]&lt;br /&gt;
[[Category:SAMM-SA-3]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=205216</id>
		<title>Category:OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=205216"/>
				<updated>2015-12-14T23:51:03Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Added GitHub link to Downloads tab&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Home  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design: &lt;br /&gt;
&lt;br /&gt;
*'''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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]. &lt;br /&gt;
&lt;br /&gt;
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.williams@owasp.org here]. &lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Let's talk here  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-bulb.jpg]]'''ESAPI Communities''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-dev esapi-dev mailing list (this is the main list)] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-user esapi-user mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-php esapi-php mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-python esapi-python mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-ruby esapi-ruby mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-swingset esapi-swingset mailing list]&lt;br /&gt;
*[http://groups.google.com/group/cfesapi esapi-coldfusion mailing list]&lt;br /&gt;
&lt;br /&gt;
IRC Chat&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*Server: irc.freenode.net&lt;br /&gt;
*Channel: #esapi&lt;br /&gt;
&lt;br /&gt;
== Got developer cycles?  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-waiting.JPG]]'''ESAPI Coding''' &lt;br /&gt;
&lt;br /&gt;
The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles. &lt;br /&gt;
 &lt;br /&gt;
*ESAPI for other languages developer onboarding instructions -- coming soon!&lt;br /&gt;
&lt;br /&gt;
== Project Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The ESAPI project is sponsored by {{MemberLinks|link=http://www.aspectsecurity.com|logo=Aspect_logo_owasp.jpg}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Downloads  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|2400x160px|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step1.jpg]]'''1. About ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*Data sheet([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF],[http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word]) &lt;br /&gt;
*Project presentation ([http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt PowerPoint]) &lt;br /&gt;
*Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step2.jpg]]'''2. Get ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*[http://code.google.com/p/owasp-esapi-java/downloads/list ESAPI for Java Downloads (binaries)] &lt;br /&gt;
*[https://github.com/ESAPI/esapi-java-legacy ESAPI for Java (source)]&amp;lt;br&amp;gt;&lt;br /&gt;
*{{#switchtablink:.NET|ESAPI for .NET}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Classic ASP|ESAPI for Classic ASP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:PHP|ESAPI for PHP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:ColdFusion.2FCFML|ESAPI for ColdFusion &amp;amp; CFML}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Python|ESAPI for Python}}&amp;lt;br&amp;gt; &lt;br /&gt;
*[http://code.google.com/p/owasp-esapi-js/downloads/detail?name=esapi4js-0.1.3.zip ESAPI for Javascript]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:33%;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step3.jpg]]'''3. Learn ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*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)] &lt;br /&gt;
*The [[ESAPI Swingset|ESAPI Swingset]] sample application demonstrates how to leverage ESAPI to protect a web application. &lt;br /&gt;
*LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF]) &lt;br /&gt;
*ESAPI for Java interface documentation ([http://owasp-esapi-java.googlecode.com/svn/trunk_doc/index.html JavaDocs]) &lt;br /&gt;
*ESAPI for PHP interface documentation ([http://owasp-esapi-php.googlecode.com/svn/trunk_doc/latest/index.html phpdoc])&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What I did with ESAPI  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --[mailto:jeff.williams@owasp.org Jeff]&lt;br /&gt;
&lt;br /&gt;
*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 &amp;quot;Adapter&amp;quot; control to wrap calls to the other ESAPI controls. --[mailto:mike.boberski@owasp.org Mike]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java’s &amp;quot;Logger&amp;quot; control to make it easier for a US Government customer to meet C&amp;amp;amp;A requirements. --[mailto:dave.wichers@owasp.org Dave]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --[mailto:jim.manico@owasp.org Jim]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java's &amp;quot;Authenticator&amp;quot; to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific &amp;quot;Adapter&amp;quot; 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]&lt;br /&gt;
&lt;br /&gt;
*I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --[mailto:yairr@liveperson.com Yair]&lt;br /&gt;
&lt;br /&gt;
*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]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Glossary  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:Asvs-letters.jpg]]'''ESAPI Terminology''' &lt;br /&gt;
&lt;br /&gt;
*'''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. &lt;br /&gt;
*'''built-in singleton design pattern''' - The &amp;quot;built-in&amp;quot; singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact. &lt;br /&gt;
*'''codec''' - ESAPI encoder/decoder reference implementations. &lt;br /&gt;
*'''core''' - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core. &lt;br /&gt;
*'''exception''' - ESAPI exception reference implementations. &lt;br /&gt;
*'''extended factory design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''extended singleton design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''filter''' - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''locator''' - The ESAPI security control interfaces include an &amp;quot;ESAPI&amp;quot; class that is commonly referred to as a &amp;quot;locator&amp;quot; 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). &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Java EE  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Details  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OWASP Builders}}&lt;br /&gt;
[[Category:Popular]]&lt;br /&gt;
[[Category:SAMM-SA-3]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Education/Free_Training&amp;diff=204606</id>
		<title>Education/Free Training</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Education/Free_Training&amp;diff=204606"/>
				<updated>2015-12-05T00:56:42Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Inflating attendance stats!!! But according to MeetUp, there were 18.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[image:Owasp banner web edu.jpg |1000px]]&lt;br /&gt;
&lt;br /&gt;
The following courses either have been offered or are being offered free of charge courtesy of the trainers and the OWASP Foundation to anyone interested in learning about application security.  Additionally, the training slides/coursework is available under an open source license and we encourage you to use it to set up your own training event!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are interested in setting up a training event through OWASP, [http://www.tfaforms.com/301382 submit your request here], we also have funding available to community members who may need help with travel, a venue or other logistics to get the event up and running. [https://www.owasp.org/index.php/Funding Click here for more information.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some general guidelines we have set up for free training courses within the OWASP Community:&lt;br /&gt;
&lt;br /&gt;
# Use free and local when possible - donated venues or universities as well as trainers that are near by will help save on overhead costs&lt;br /&gt;
# Use open source training materials -  we ask that you make your training materials available after the course, preferably in an editable format&lt;br /&gt;
# Use [https://www.owasp.org/images/5/5d/PPT_2013_Toolbox.zip OWASP template] for slides and keep any company branding to one bio slide&lt;br /&gt;
# Do an open call for training when possible to avoid giving preference to any one vendor/trainer and give others in the community a chance to participate&lt;br /&gt;
# If possible, do the training in a way and time that doesn't compete with paid training (especially at Global AppSec Conferences)&lt;br /&gt;
&lt;br /&gt;
'''Credits:&lt;br /&gt;
A sincere thank you to Eoin Keary, Jim Manico, Dan Cornell, Josh Sokol and others who generously donated training content referenced below.''' &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:100%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;6&amp;quot; | '''Training Courses, Trainer Data, and Material'''&lt;br /&gt;
 |- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | style=&amp;quot;width:25%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Training Name/Topic''' &lt;br /&gt;
 | style=&amp;quot;width:25%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Trainer Name(s)'''&lt;br /&gt;
 | style=&amp;quot;width:15%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Training Materials'''&lt;br /&gt;
 | style=&amp;quot;width:15%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Training Location'''&lt;br /&gt;
 | style=&amp;quot;width:10%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Training Date'''&lt;br /&gt;
 | style=&amp;quot;width:15%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Number of Attendees'''&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Analyzing (Java) Source Code for Cryptographic Weaknesses- Editable slides (ODP), with speaker's notes, and non-editable (PDF), without speaker's notes&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Kevin W. Wall | Kevin W. Wall]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[File:kwwall-owasp-prezo-CryptoCodeWeaknesses--2015-12-03.odp]] and [[File:kwwall-owasp-prezo-CryptoCodeWeaknesses--2015-12-03.pdf]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Columbus, OH OWASP Chapter&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Dec 03, 2015&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |18&lt;br /&gt;
|-&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Introduction to Application Security - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jsokol | Josh Sokol]], [[user:Dancornell | Dan Cornell]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/f/f2/LASCON_2015_-_Web_Application_Developer_Security_Training.pptx Training Slides]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [http://www.lascon.org LASCON 2015]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | October 21, 2015&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |100&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Application Security – Where do I start?&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]], [[user:MichaelCoates | Michael Coates]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/4/44/OWASP-SF-2014.pdf Training Slides]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Jillians &amp;lt;br&amp;gt; San Francisco, CA&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Feb 24, 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | 200&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/4/4e/How_Do_I_Approach_Application_Security-1.pptx How_Do_I_Approach_Application_Security-1]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/c/ce/HTTP_Basics_-_2.pptx HTTP Basics]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/f/fb/Secure_Storage_-_3.pptx Secure Storage]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/c/cf/Injection-4.pptx Injection]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/e/e7/XSS_-_5.pptx XSS]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/9/9d/ClickJacking_-_6.pptx UI Redress]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/8/8e/Risks_of_Insecure_Communication_-7.pptx SSL-TLS]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]], [[user:Cassio_Goldschmidt | Cassio Goldschmidt]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/8/82/OWASP_HTTPS_Talk_v3.pptx HTTPS Best Practices]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | AppSec Cali 2015, SoCal 2015&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |500+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/6/6e/Virtual_Patching_-8.pptx Virtual Patching / WAF]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/a/a8/Web_App_Access_-_9.pptx Access Control]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
[[Category:SAMM-EG-1]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Education/Free_Training&amp;diff=204605</id>
		<title>Education/Free Training</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Education/Free_Training&amp;diff=204605"/>
				<updated>2015-12-05T00:49:37Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Added date&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[image:Owasp banner web edu.jpg |1000px]]&lt;br /&gt;
&lt;br /&gt;
The following courses either have been offered or are being offered free of charge courtesy of the trainers and the OWASP Foundation to anyone interested in learning about application security.  Additionally, the training slides/coursework is available under an open source license and we encourage you to use it to set up your own training event!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are interested in setting up a training event through OWASP, [http://www.tfaforms.com/301382 submit your request here], we also have funding available to community members who may need help with travel, a venue or other logistics to get the event up and running. [https://www.owasp.org/index.php/Funding Click here for more information.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some general guidelines we have set up for free training courses within the OWASP Community:&lt;br /&gt;
&lt;br /&gt;
# Use free and local when possible - donated venues or universities as well as trainers that are near by will help save on overhead costs&lt;br /&gt;
# Use open source training materials -  we ask that you make your training materials available after the course, preferably in an editable format&lt;br /&gt;
# Use [https://www.owasp.org/images/5/5d/PPT_2013_Toolbox.zip OWASP template] for slides and keep any company branding to one bio slide&lt;br /&gt;
# Do an open call for training when possible to avoid giving preference to any one vendor/trainer and give others in the community a chance to participate&lt;br /&gt;
# If possible, do the training in a way and time that doesn't compete with paid training (especially at Global AppSec Conferences)&lt;br /&gt;
&lt;br /&gt;
'''Credits:&lt;br /&gt;
A sincere thank you to Eoin Keary, Jim Manico, Dan Cornell, Josh Sokol and others who generously donated training content referenced below.''' &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:100%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;6&amp;quot; | '''Training Courses, Trainer Data, and Material'''&lt;br /&gt;
 |- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | style=&amp;quot;width:25%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Training Name/Topic''' &lt;br /&gt;
 | style=&amp;quot;width:25%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Trainer Name(s)'''&lt;br /&gt;
 | style=&amp;quot;width:15%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Training Materials'''&lt;br /&gt;
 | style=&amp;quot;width:15%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Training Location'''&lt;br /&gt;
 | style=&amp;quot;width:10%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Training Date'''&lt;br /&gt;
 | style=&amp;quot;width:15%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Number of Attendees'''&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Analyzing (Java) Source Code for Cryptographic Weaknesses- Editable slides (ODP), with speaker's notes, and non-editable (PDF), without speaker's notes&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Kevin W. Wall | Kevin W. Wall]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[File:kwwall-owasp-prezo-CryptoCodeWeaknesses--2015-12-03.odp]] and [[File:kwwall-owasp-prezo-CryptoCodeWeaknesses--2015-12-03.pdf]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Columbus, OH OWASP Chapter&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Dec 03, 2015&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Introduction to Application Security - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jsokol | Josh Sokol]], [[user:Dancornell | Dan Cornell]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/f/f2/LASCON_2015_-_Web_Application_Developer_Security_Training.pptx Training Slides]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [http://www.lascon.org LASCON 2015]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | October 21, 2015&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |100&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Application Security – Where do I start?&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]], [[user:MichaelCoates | Michael Coates]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/4/44/OWASP-SF-2014.pdf Training Slides]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Jillians &amp;lt;br&amp;gt; San Francisco, CA&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Feb 24, 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | 200&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/4/4e/How_Do_I_Approach_Application_Security-1.pptx How_Do_I_Approach_Application_Security-1]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/c/ce/HTTP_Basics_-_2.pptx HTTP Basics]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/f/fb/Secure_Storage_-_3.pptx Secure Storage]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/c/cf/Injection-4.pptx Injection]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/e/e7/XSS_-_5.pptx XSS]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/9/9d/ClickJacking_-_6.pptx UI Redress]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/8/8e/Risks_of_Insecure_Communication_-7.pptx SSL-TLS]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]], [[user:Cassio_Goldschmidt | Cassio Goldschmidt]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/8/82/OWASP_HTTPS_Talk_v3.pptx HTTPS Best Practices]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | AppSec Cali 2015, SoCal 2015&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |500+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/6/6e/Virtual_Patching_-8.pptx Virtual Patching / WAF]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/a/a8/Web_App_Access_-_9.pptx Access Control]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
[[Category:SAMM-EG-1]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Education/Free_Training&amp;diff=204603</id>
		<title>Education/Free Training</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Education/Free_Training&amp;diff=204603"/>
				<updated>2015-12-05T00:32:22Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Added presentation given to Columbus, OH OWASP Chapter on finding crypto weaknesses in Java source code.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[image:Owasp banner web edu.jpg |1000px]]&lt;br /&gt;
&lt;br /&gt;
The following courses either have been offered or are being offered free of charge courtesy of the trainers and the OWASP Foundation to anyone interested in learning about application security.  Additionally, the training slides/coursework is available under an open source license and we encourage you to use it to set up your own training event!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are interested in setting up a training event through OWASP, [http://www.tfaforms.com/301382 submit your request here], we also have funding available to community members who may need help with travel, a venue or other logistics to get the event up and running. [https://www.owasp.org/index.php/Funding Click here for more information.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some general guidelines we have set up for free training courses within the OWASP Community:&lt;br /&gt;
&lt;br /&gt;
# Use free and local when possible - donated venues or universities as well as trainers that are near by will help save on overhead costs&lt;br /&gt;
# Use open source training materials -  we ask that you make your training materials available after the course, preferably in an editable format&lt;br /&gt;
# Use [https://www.owasp.org/images/5/5d/PPT_2013_Toolbox.zip OWASP template] for slides and keep any company branding to one bio slide&lt;br /&gt;
# Do an open call for training when possible to avoid giving preference to any one vendor/trainer and give others in the community a chance to participate&lt;br /&gt;
# If possible, do the training in a way and time that doesn't compete with paid training (especially at Global AppSec Conferences)&lt;br /&gt;
&lt;br /&gt;
'''Credits:&lt;br /&gt;
A sincere thank you to Eoin Keary, Jim Manico, Dan Cornell, Josh Sokol and others who generously donated training content referenced below.''' &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:100%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;6&amp;quot; | '''Training Courses, Trainer Data, and Material'''&lt;br /&gt;
 |- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | style=&amp;quot;width:25%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Training Name/Topic''' &lt;br /&gt;
 | style=&amp;quot;width:25%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Trainer Name(s)'''&lt;br /&gt;
 | style=&amp;quot;width:15%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Training Materials'''&lt;br /&gt;
 | style=&amp;quot;width:15%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Training Location'''&lt;br /&gt;
 | style=&amp;quot;width:10%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Training Date'''&lt;br /&gt;
 | style=&amp;quot;width:15%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; | '''Number of Attendees'''&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Introduction to Application Security - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jsokol | Josh Sokol]], [[user:Dancornell | Dan Cornell]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/f/f2/LASCON_2015_-_Web_Application_Developer_Security_Training.pptx Training Slides]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [http://www.lascon.org LASCON 2015]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | October 21, 2015&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |100&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Application Security – Where do I start?&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]], [[user:MichaelCoates | Michael Coates]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/4/44/OWASP-SF-2014.pdf Training Slides]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Jillians &amp;lt;br&amp;gt; San Francisco, CA&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Feb 24, 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | 200&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/4/4e/How_Do_I_Approach_Application_Security-1.pptx How_Do_I_Approach_Application_Security-1]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/c/ce/HTTP_Basics_-_2.pptx HTTP Basics]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/f/fb/Secure_Storage_-_3.pptx Secure Storage]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/c/cf/Injection-4.pptx Injection]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/e/e7/XSS_-_5.pptx XSS]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/9/9d/ClickJacking_-_6.pptx UI Redress]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/8/8e/Risks_of_Insecure_Communication_-7.pptx SSL-TLS]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]], [[user:Cassio_Goldschmidt | Cassio Goldschmidt]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/8/82/OWASP_HTTPS_Talk_v3.pptx HTTPS Best Practices]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | AppSec Cali 2015, SoCal 2015&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |500+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/6/6e/Virtual_Patching_-8.pptx Virtual Patching / WAF]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Approaching App Sec - Editable slides (pptx)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Jmanico | Jim Manico]], [[user:EoinKeary | Eoin Keary]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [https://www.owasp.org/images/a/a8/Web_App_Access_-_9.pptx Access Control]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | RSA 2013 EU, RSA 2013 USA, Lascon 2013, OWASP AsiaPac 2014&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |1000+&lt;br /&gt;
|- valign=&amp;quot;bottom&amp;quot;&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Analyzing (Java) Source Code for Cryptographic Weaknesses- Editable slides (ODP), with speaker's notes, and non-editable (PDF), without speaker's notes&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[user:Kevin W. Wall | Kevin W. Wall]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | [[File:kwwall-owasp-prezo-CryptoCodeWeaknesses--2015-12-03.odp]] and [[File:kwwall-owasp-prezo-CryptoCodeWeaknesses--2015-12-03.pdf]]&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | Columbus, OH OWASP Chapter (2015-12-03)&lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | &lt;br /&gt;
 | valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
[[Category:SAMM-EG-1]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Kevin_W._Wall&amp;diff=204602</id>
		<title>User:Kevin W. Wall</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Kevin_W._Wall&amp;diff=204602"/>
				<updated>2015-12-05T00:22:04Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: /* Day job */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Involved in OWASP ESAPI for Java EE project, starting in July, 2009.  ===&lt;br /&gt;
&lt;br /&gt;
*Completely rewrote the [[ESAPI]]&amp;amp;nbsp;2.0 symmetric encryption&amp;lt;br&amp;gt; &lt;br /&gt;
*General ESAPI 2.0 code clean-up and bug fixes.&lt;br /&gt;
*Project owner of ESAPI for Java prohect&lt;br /&gt;
&lt;br /&gt;
=== Involved in OWASP ESAPI for C++ (since May, 2011) ===&lt;br /&gt;
* Troublesome meddler (aka, tor-mentor)&lt;br /&gt;
* Working on porting ESAPI 2.0's crypto to C++ along with Jeff Walton.&lt;br /&gt;
* I swore I'd never do C++ again; I must be out of my freakin' mind.&lt;br /&gt;
&lt;br /&gt;
=== Day job  ===&lt;br /&gt;
* Currently Information Security Engineer at Wells Fargo, part of Secure Code Review team&lt;br /&gt;
* Formerly Staff Security Engineer at CenturyLink (f/k/a Qwest)&lt;br /&gt;
* Formerly tech lead of Application Security Team at Qwest for 11 years&lt;br /&gt;
* Full-time husband and father&lt;br /&gt;
&lt;br /&gt;
=== Memberships and certifications ===&lt;br /&gt;
* Member of ACM, IEEE Computer Society, OWASP, and InfraGuard&lt;br /&gt;
* ISC^2 CISSP&lt;br /&gt;
* GIAC Certified Web Application Security Defender (GWEB)&lt;br /&gt;
&lt;br /&gt;
=== Other  ===&lt;br /&gt;
&lt;br /&gt;
* Active participant in following mailing lists:&amp;amp;nbsp;Security Coding, Web Application Security, IPCop-Users, OWASP-ESAPI, cryptography &lt;br /&gt;
* Interests include reading, soccer (futbol), cryptography, and computer security&lt;br /&gt;
* Blog: [[http://off-the-wall-security.blogspot.com/ Off-the-Wall Security]]&lt;br /&gt;
* My OWASP Wiki contributions: [[Special:Contributions/Kevin_W._Wall]]&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=File:Kwwall-owasp-prezo-CryptoCodeWeaknesses--2015-12-03.pdf&amp;diff=204600</id>
		<title>File:Kwwall-owasp-prezo-CryptoCodeWeaknesses--2015-12-03.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=File:Kwwall-owasp-prezo-CryptoCodeWeaknesses--2015-12-03.pdf&amp;diff=204600"/>
				<updated>2015-12-04T23:45:32Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Presentation by Kevin W. Wall to the Columbus, OH OWASP Chapter
Title: Analyzing (Java) Source Code for Cryptographic Weaknesses
Format: Slide (PDF), no speaker's notes
Licensed under CC BY-NC-SA 3.0 US.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presentation by Kevin W. Wall to the Columbus, OH OWASP Chapter&lt;br /&gt;
Title: Analyzing (Java) Source Code for Cryptographic Weaknesses&lt;br /&gt;
Format: Slide (PDF), no speaker's notes&lt;br /&gt;
Licensed under CC BY-NC-SA 3.0 US.&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=File:Kwwall-owasp-prezo-CryptoCodeWeaknesses--2015-12-03.odp&amp;diff=204599</id>
		<title>File:Kwwall-owasp-prezo-CryptoCodeWeaknesses--2015-12-03.odp</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=File:Kwwall-owasp-prezo-CryptoCodeWeaknesses--2015-12-03.odp&amp;diff=204599"/>
				<updated>2015-12-04T23:44:02Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Presentation by Kevin W. Wall to the Columbus, OH OWASP Chapter
Title: Analyzing (Java) Source Code for Cryptographic Weaknesses
Format: Slide (ODP format), with speaker's notes
Licensed under CC BY-NC-SA 3.0 US.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presentation by Kevin W. Wall to the Columbus, OH OWASP Chapter&lt;br /&gt;
Title: Analyzing (Java) Source Code for Cryptographic Weaknesses&lt;br /&gt;
Format: Slide (ODP format), with speaker's notes&lt;br /&gt;
Licensed under CC BY-NC-SA 3.0 US.&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=188302</id>
		<title>GPC Project Details/OWASP Enterprise Security API Java EE Version</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&amp;diff=188302"/>
				<updated>2015-01-21T04:43:21Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;OWASP Project Identification Tab&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| project_name = OWASP ESAPI for Java EE&lt;br /&gt;
| project_description = This is the Java EE language version of OWASP ESAPI. The ESAPI for Java EE is the baseline ESAPI design.&lt;br /&gt;
* The current release of this project '''is''' suitable for production use&lt;br /&gt;
* The ESAPI 2.x branch supports Java 1.5 and above. You may view the Javadocs here http://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/index.html &lt;br /&gt;
* The ESAPI 1.4 branch supports Java 1.4 and above. Complete information on latest 1.4 branch dependencies can be found here http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/site/dependencies.html&lt;br /&gt;
* The OWASP AppSensor-ESAPI integration guide is out! [[AppSensor_GettingStarted]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- We are not keeping this up to date....&lt;br /&gt;
'''''Latest News:'''''&lt;br /&gt;
&amp;lt;twitter&amp;gt;90496975&amp;lt;/twitter&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| project_license = [http://en.wikipedia.org/wiki/BSD_license BSD license]&lt;br /&gt;
| leader_name = Jeff Williams&lt;br /&gt;
| leader_email = jeff.williams@owasp.org&lt;br /&gt;
| leader_username = Jeff_Williams&lt;br /&gt;
| past_leaders_special_contributions = &lt;br /&gt;
| maintainer_name = &lt;br /&gt;
| maintainer_email = &lt;br /&gt;
| maintainer_username =&lt;br /&gt;
| contributor_name1 = Chris Schmidt&lt;br /&gt;
| contributor_email1 = chrisisbeef@gmail.com&lt;br /&gt;
| contributor_username1 = Chris_Schmidt&lt;br /&gt;
| contributor_name2 = Kevin W. Wall&lt;br /&gt;
| contributor_email2 = kevin.w.wall@gmail.com&lt;br /&gt;
| contributor_username2 = Kevin_W._Wall&lt;br /&gt;
| contributor_name3 = &lt;br /&gt;
| contributor_email3 =&lt;br /&gt;
| contributor_username3 = &lt;br /&gt;
| contributor_name4 = &lt;br /&gt;
| contributor_email4 = &lt;br /&gt;
| contributor_username4 = &lt;br /&gt;
| contributor_name5 = &lt;br /&gt;
| contributor_email5 = &lt;br /&gt;
| contributor_username5 = &lt;br /&gt;
| contributor_name6 = &lt;br /&gt;
| contributor_email6 = &lt;br /&gt;
| contributor_username6 = &lt;br /&gt;
| contributor_name7 = &lt;br /&gt;
| contributor_email7 = &lt;br /&gt;
| contributor_username7 = &lt;br /&gt;
| contributor_name8 = &lt;br /&gt;
| contributor_email8 = &lt;br /&gt;
| contributor_username8 = &lt;br /&gt;
| contributor_name9 = &lt;br /&gt;
| contributor_email9 = &lt;br /&gt;
| contributor_username9 = &lt;br /&gt;
| contributor_name10 = &lt;br /&gt;
| contributor_email10 = &lt;br /&gt;
| contributor_username10 =  &lt;br /&gt;
| pamphlet_link = &lt;br /&gt;
| presentation_link = &lt;br /&gt;
| mailing_list_name = esapi-dev&lt;br /&gt;
| links_url1 = http://code.google.com/p/owasp-esapi-java/downloads/list&lt;br /&gt;
| links_name1 = All ESAPI Downloads&lt;br /&gt;
| links_url2 = http://owasp-esapi-java.googlecode.com/files/ESAPI-1.4.4.zip&lt;br /&gt;
| links_name2 = ESAPI 1.4.4 - complete zip (Java 1.4+) &lt;br /&gt;
| links_url3 = http://code.google.com/p/owasp-esapi-java&lt;br /&gt;
| links_name3 = Google code repository for ESAPI JAVA&lt;br /&gt;
| links_url4 = http://code.google.com/p/owasp-esapi-java/issues/list&lt;br /&gt;
| links_name4 = Report a bug! (requires Google account)&lt;br /&gt;
| links_url5 = http://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/index.html&lt;br /&gt;
| links_name5 = ESAPI 2.0.1 Javadocs&lt;br /&gt;
| links_url6 = http://owasp-esapi-java.googlecode.com/svn/trunk_doc/1.4.4/index.html&lt;br /&gt;
| links_name6 = ESAPI 1.4.4 Javadocs&lt;br /&gt;
| links_url7 = http://www.owasp.org/index.php/ESAPI-Building&lt;br /&gt;
| links_name7 = How to build ESAPI 2.0 with Maven&lt;br /&gt;
| links_url8 = http://www.owasp.org/index.php/ESAPI-BuildingWithEclipse&lt;br /&gt;
| links_name8 = How to build ESAPI 2.0 with Maven via Eclipse&lt;br /&gt;
| project_road_map = &lt;br /&gt;
| project_health_status = &lt;br /&gt;
| current_release_name = &lt;br /&gt;
| current_release_date = &lt;br /&gt;
| current_release_download_link = &lt;br /&gt;
| current_release_rating = &lt;br /&gt;
| current_release_leader_name = &lt;br /&gt;
| current_release_leader_email = &lt;br /&gt;
| current_release_leader_username =&lt;br /&gt;
| current_release_details =  &lt;br /&gt;
| last_reviewed_release_name = &lt;br /&gt;
| last_reviewed_release_date = &lt;br /&gt;
| last_reviewed_release_download_link = &lt;br /&gt;
| last_reviewed_release_rating = &lt;br /&gt;
| last_reviewed_release_leader_name = &lt;br /&gt;
| last_reviewed_release_leader_email = &lt;br /&gt;
| last_reviewed_release_leader_username = &lt;br /&gt;
| old_release_name1 = &lt;br /&gt;
| old_release_date1 = &lt;br /&gt;
| old_release_download_link1 = &lt;br /&gt;
| old_release_name2 = &lt;br /&gt;
| old_release_date2 = &lt;br /&gt;
| old_release_download_link2 = &lt;br /&gt;
| old_release_name3 = &lt;br /&gt;
| old_release_date3 = &lt;br /&gt;
| old_release_download_link3 = &lt;br /&gt;
| old_release_name4 = &lt;br /&gt;
| old_release_date4 = &lt;br /&gt;
| old_release_download_link4 = &lt;br /&gt;
| old_release_name5 = &lt;br /&gt;
| old_release_date5 = &lt;br /&gt;
| old_release_download_link5 = &lt;br /&gt;
| last_GPC_update = 4/10/2009&lt;br /&gt;
| GPC_Notes = Empty template (Java EE Version)&lt;br /&gt;
| project_home_page = :Category:OWASP_Enterprise_Security_API&lt;br /&gt;
| project_details_wiki_page = GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Winter_Code_Sprint&amp;diff=183567</id>
		<title>Winter Code Sprint</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Winter_Code_Sprint&amp;diff=183567"/>
				<updated>2014-10-12T03:15:06Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Added 4 ESAPI related project proposals&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:WinterCode.png|500px|right]]&lt;br /&gt;
== OWASP Winter Code Sprint ==&lt;br /&gt;
&lt;br /&gt;
== Foreword ==&lt;br /&gt;
&lt;br /&gt;
The OWASP Winter Code Sprint (OWCS) is a program to involve students with Security projects. By participating in OWCS a student can get real life experience while contributing to an open source project and getting university credits.&lt;br /&gt;
&lt;br /&gt;
== Benefits ==&lt;br /&gt;
&lt;br /&gt;
You get to work for a popular project.&lt;br /&gt;
Since the project is open source your work is publicly visible.&lt;br /&gt;
You get university credits while doing so.&lt;br /&gt;
You are supervised by a person with real-world experience on security &lt;br /&gt;
You make excellent contacts and you participate in an international team&lt;br /&gt;
&lt;br /&gt;
== Perks ==&lt;br /&gt;
&lt;br /&gt;
Students who successfully(*) participate in the project will get:&lt;br /&gt;
&lt;br /&gt;
* An OWASP annual individual membership. More info here: http://owasp.com/index.php/Individual_Member&lt;br /&gt;
* An OWASP Winter Code Sprint t-shirt.&lt;br /&gt;
* An OWASP conference pass (no flight/accommodation - just an OWASP conference pass of choice)&lt;br /&gt;
&lt;br /&gt;
(*) successful participation means a passing score granted by University authorities.&lt;br /&gt;
&lt;br /&gt;
== How it works: ==&lt;br /&gt;
&lt;br /&gt;
Any project that will give you university credits can participate in OCWS. Each project will be guided by an OWASP mentor along with a professor. Students are graded by their University, based on success criteria identified at the beginning of the project.&lt;br /&gt;
&lt;br /&gt;
Projects are focused on developing security tools. It is required that the code any student produces for those projects will be released as Open Source. Universities are free to specify their own requirements to projects, such as written reports. OWASP does not influence the way grades are allocated. The OWASP advisers will provide any information professors need in order to grade their students.&lt;br /&gt;
&lt;br /&gt;
Note on language: English is required for code comments and documentation, but not for interactions between students and advisers. Advisers who speak the same language as their students are encouraged to interact in that language.&lt;br /&gt;
&lt;br /&gt;
== How you can participate: ==&lt;br /&gt;
&lt;br /&gt;
=== As a Student ===&lt;br /&gt;
&lt;br /&gt;
1. Review the list of OWASP Projects currently participating in OWCS &lt;br /&gt;
&lt;br /&gt;
2. Get in touch with the OWASP Project mentor of your choice.&lt;br /&gt;
&lt;br /&gt;
3. Agree deliverables with OWASP mentor and university professor. &lt;br /&gt;
&lt;br /&gt;
4. Work away during Autumn/Winter 2014&lt;br /&gt;
&lt;br /&gt;
5. Rise to Open Source Development Glory :-)&lt;br /&gt;
&lt;br /&gt;
(Students apply now!)https://docs.google.com/forms/d/1CFPzLIRje6Wb34MHq-8HwG0pjlkDixHA3xITVssN_Jw/viewform &lt;br /&gt;
&lt;br /&gt;
=== As a Professor === &lt;br /&gt;
&lt;br /&gt;
1. Review the list of OWASP Projects currently participating in OWCS &lt;br /&gt;
&lt;br /&gt;
2. Get in touch with the OWASP Project mentor of your choice.&lt;br /&gt;
&lt;br /&gt;
3. Promote the participating OWASP Projects among students. Here is a handy slide deck that could be useful: [https://www.owasp.org/images/3/3c/WinterCodeSprint.pdf Slides] &lt;br /&gt;
&lt;br /&gt;
4. Review student progress with help from OWASP mentors.&lt;br /&gt;
&lt;br /&gt;
5. Grade student work according to university scoring system.&lt;br /&gt;
&lt;br /&gt;
6. Provide student grade results to OWASP mentor/s.&lt;br /&gt;
&lt;br /&gt;
=== As an OWASP Project Leader ===&lt;br /&gt;
&lt;br /&gt;
1. Edit this page adding your project and some proposed tasks as per the examples&lt;br /&gt;
&lt;br /&gt;
2. Promote the initiative to your academic contacts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailing List ==&lt;br /&gt;
&lt;br /&gt;
Please subscribe to the following mailing list to receive updates or ask any particular questions:&lt;br /&gt;
&lt;br /&gt;
[https://groups.google.com/forum/#!forum/owasp-winter-code-sprint OWASP Winter Code Sprint Google Group]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to Apply ==&lt;br /&gt;
&lt;br /&gt;
Please fill up this form before the deadline.&lt;br /&gt;
&lt;br /&gt;
https://docs.google.com/forms/d/1CFPzLIRje6Wb34MHq-8HwG0pjlkDixHA3xITVssN_Jw/viewform &lt;br /&gt;
&lt;br /&gt;
== Deadlines ==&lt;br /&gt;
&lt;br /&gt;
To facilitate the participation in the initiative for as many universities as possible, there are 2 deadlines for applying. The first one is 15 September 2014 and the next one is 15 October 2014. &lt;br /&gt;
The double deadline means that OWASP Leaders will review the submissions and announce the choosen projects two times.&lt;br /&gt;
Once at the end of September and once at the end of October.&lt;br /&gt;
&lt;br /&gt;
== Participating OWASP Projects ==&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - VMS - OWTF Vulnerability Management System (FREE!) ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
Background problem to solve:&lt;br /&gt;
&lt;br /&gt;
We are trying to reduce the human work burden where there will be hundreds of issues listing apache out of date or php out of date. &lt;br /&gt;
&lt;br /&gt;
Proposed solution:&lt;br /&gt;
&lt;br /&gt;
We can meta aggregate these duplicate issues into one issue of &amp;quot;outdated software / apache / php detected&amp;quot;. with XYZ list of issues in them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A separate set of scripts that allows for grouping and management of vulnerabilities (i.e. think huge assessments), to be usable *both* from inside + outside of OWTF in a separate sub-repo here: https://github.com/owtf &lt;br /&gt;
&lt;br /&gt;
VMS will have the following features:&lt;br /&gt;
* Vulnerability correlation engine which will allow for quick identification of unique vulnerability and deduplication.&lt;br /&gt;
* Vulnerability table optimization : combining redundant vulnerabilities like example : PHP &amp;lt;5.1 , PHP &amp;lt; 5.2 , PHP &amp;lt; 5.3 all suggest upgrade php so if multiple issues are reported they should be combined.&lt;br /&gt;
* Integration with existing bug tracking system like example bugzilla, jira : Should not be too hard as all such system have one or the other method exposed (REST API or similar)&lt;br /&gt;
* Fix Validation : Since we integrate with bug tracking once dev fixed the bug and code deployed we can run specific checks via * OWTF or other tool (may be specific nessus or nexpose plugin or similar.)&lt;br /&gt;
* Management Dashboard : Could be exposed to Pentester, Higher Management where stats are shown with lesser details but more of high level overview.&lt;br /&gt;
&lt;br /&gt;
[http://www.slideshare.net/null0x00/nessus-and-reporting-karma Similar previous work for Nessus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren - OWASP OWTF Project Leader - Contact: Abraham.Aranguren@owasp.org&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - HTTP Request Translator (FREE!) ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
Problem to solve:&lt;br /&gt;
&lt;br /&gt;
There are many situations in web app pentests where just no tool will do the job and you need to script something, or mess around with the command line (classic example: sequence of steps where each step requires input from the previous step). In these situations, translating an HTTP request or a sequence of HTTP requests, takes valuable time which the pentester might just not really have.&lt;br /&gt;
&lt;br /&gt;
Proposed solution:&lt;br /&gt;
&lt;br /&gt;
An HTTP request translator, a *standalone* *tool* that can:&lt;br /&gt;
&lt;br /&gt;
1) Be used from inside OR outside of OWTF.&lt;br /&gt;
&lt;br /&gt;
2) Translate raw HTTP requests into curl commands or bash/python/php/ruby/PowerShell scripts&lt;br /&gt;
&lt;br /&gt;
3) Provide essential quick and dirty transforms: base64 (encode/decode), urlencode (encode/decode)&lt;br /&gt;
* Transforms with boundary strings? (TBD)&lt;br /&gt;
* Individually or in bulk? (TBD)&lt;br /&gt;
&lt;br /&gt;
'''Essential Function: &amp;quot;--output&amp;quot; argument'''&lt;br /&gt;
&lt;br /&gt;
CRITICAL: The command/script should be generated so that the request is sent as literally as possible.&lt;br /&gt;
&lt;br /&gt;
Example: NO client specific headers are sent. IF the original request had &amp;quot;User-Agent: X&amp;quot;, the generated command/script should have EXACTLY that (i.e. NOT a curl user agent, etc.). Obviously, the same applies to ALL other headers.&lt;br /&gt;
&lt;br /&gt;
NOTE: Ideally the following should be implemented using an extensible plugin architecture (i.e. NEW plugins are EASY to add)&lt;br /&gt;
* http request in =&amp;gt; curl command out&lt;br /&gt;
* http request in =&amp;gt; bash script out&lt;br /&gt;
* http request in =&amp;gt; python script out&lt;br /&gt;
* http request in =&amp;gt; php script out&lt;br /&gt;
* http request in =&amp;gt; ruby script out&lt;br /&gt;
* http request in =&amp;gt; PowerShell script out&lt;br /&gt;
&lt;br /&gt;
'''Basic additional arguments:'''&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;--proxy&amp;quot; argument: generates the command/script with the relevant proxy option&lt;br /&gt;
&lt;br /&gt;
		NOTE: With this the command/script may send requests through a MiTM proxy (i.e. OWTF, ZAP, Burp, etc.)&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;--string-search&amp;quot; argument: generates the command/script so that it:&lt;br /&gt;
&lt;br /&gt;
		1) performs the request&lt;br /&gt;
&lt;br /&gt;
		2) then searches for something in the response (i.e. literal match)&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;--regex-search&amp;quot; argument: generates the command/script so that it:&lt;br /&gt;
		1) performs the request&lt;br /&gt;
&lt;br /&gt;
		2) then searches for something in the response (i.e. regex match)&lt;br /&gt;
&lt;br /&gt;
'''OWTF integration'''&lt;br /&gt;
&lt;br /&gt;
The idea here, is to invoke this tool from:&lt;br /&gt;
&lt;br /&gt;
1) Single HTTP transactions:&lt;br /&gt;
&lt;br /&gt;
For example, have a button to &amp;quot;export http request&amp;quot; + then show options equivalent to the flags&lt;br /&gt;
&lt;br /&gt;
2) Multiple HTTP transactions:&lt;br /&gt;
&lt;br /&gt;
Same as with Single transactions, but letting the user &amp;quot;select a number of transactions&amp;quot; first (maybe a checkbox?).&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
'''Desired input formats:'''&lt;br /&gt;
&lt;br /&gt;
* Read raw HTTP request from stdin -Suggested default behaviour! :)-&lt;br /&gt;
&lt;br /&gt;
	Example: cat path/to/http_request.txt | http-request-translator.py --output&lt;br /&gt;
&lt;br /&gt;
* Interactive mode: read raw HTTP request from keyboard + &amp;quot;hit enter when ready&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Suggestion: This could be a &amp;quot;-i&amp;quot; (for &amp;quot;interactive&amp;quot;) flag and/or the fallback option when &amp;quot;stdin is empty&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Example:&lt;br /&gt;
&lt;br /&gt;
	1) User runs tool with desired flags (i.e. &amp;quot;--output ruby --proxy 127.0.0.1:1234 ...&amp;quot;, etc.)&lt;br /&gt;
&lt;br /&gt;
	2) Tool prints: &amp;quot;Please paste a raw HTTP request and hit enter when ready&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	3) User pastes a raw HTTP requests + hits enter&lt;br /&gt;
&lt;br /&gt;
	4) Tool outputs whatever is relevant for the flags + http request given&lt;br /&gt;
&lt;br /&gt;
* For bulk processing: Maybe a directory of raw http request files?&lt;br /&gt;
&lt;br /&gt;
'''Nice to have: Transforms'''&lt;br /&gt;
&lt;br /&gt;
In the context of translating raw HTTP requests into commands/scripts, what we want here is to provide some handy &amp;quot;macros&amp;quot; so that the relevant command/script is generated accordingly.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
NOTE: Assume something like the following arguments: &amp;quot;--transform-boundary=@@@@@@@ --transform-language=php&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Step 1) The user provides a raw HTTP request like this:&lt;br /&gt;
&lt;br /&gt;
  GET /path/to/urlencode@@@@@@@abc d@@@@@@@/test&lt;br /&gt;
  Host: target.com&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
Step 2) The tool generates a bash script like the following:&lt;br /&gt;
&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  &lt;br /&gt;
  PARAM1=$(echo 'abc d' | php -r &amp;quot;echo urlencode(fgets(STDIN));&amp;quot;)&lt;br /&gt;
  curl ...... &amp;quot;http://target.com/path/to/$PARAM1/test&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OR a &amp;quot;curl command&amp;quot; like the following:&lt;br /&gt;
  PARAM1=$(echo 'abc d' | php -r &amp;quot;echo urlencode(fgets(STDIN));&amp;quot;); curl ...... &amp;quot;http://target.com/path/to/$PARAM1/test&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature can be valuable to shave a bit more time in script writing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren - OWASP OWTF Project Leader - Contact: Abraham.Aranguren@owasp.org&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - JavaScript Library Sniper (FREE!) ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
This is a project that tries to resolve a very common problem during penetration tests:&lt;br /&gt;
&lt;br /&gt;
The customer is running a number of outdated JavaScript Libraries, but there is just not enough time to determine if something useful -i.e. something *really* bad! :)- can be done with that or not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we propose a *standalone* *tool* that can:&lt;br /&gt;
&lt;br /&gt;
1) Be run BOTH from inside AND outside of OWTF&lt;br /&gt;
&lt;br /&gt;
2) Build and *update* a fingerprint JavaScript library database of:&lt;br /&gt;
* Library File hashes =&amp;gt; JavaScript Library version&lt;br /&gt;
* Library File lengths =&amp;gt; JavaScript Library version&lt;br /&gt;
* (Nice to have:) As above, but for each individual github commit (possible drawback: too big?)&lt;br /&gt;
&lt;br /&gt;
3) Build and *update* a vulnerability database of:&lt;br /&gt;
* JavaScript Library version =&amp;gt; CVE - CVSS score - Vulnerability info&lt;br /&gt;
&lt;br /&gt;
4) Given a [ JavaScript file OR hash OR length ], found in the database, provides:&lt;br /&gt;
* JavaScript Library version&lt;br /&gt;
* List of vulnerabilities sorted in descending CVSS score order&lt;br /&gt;
&lt;br /&gt;
5) (very cool to have) Given a list of JavaScript files (maybe a directory), provides:&lt;br /&gt;
* ALL Library/vulnerability matches described on 4)&lt;br /&gt;
	&lt;br /&gt;
Once the standalone tool is built and verified to be working, OWTF should be able to:&lt;br /&gt;
&lt;br /&gt;
Feature 1) GREP plugin improvement (Web Application Fingerprint):&lt;br /&gt;
&lt;br /&gt;
Step 1) Lookup file lengths and hashes in the &amp;quot;JavaScript library database&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Step 2) If a match is found: provide the list of known vulnerabilities against &amp;quot;JavaScript library X&amp;quot; to the user&lt;br /&gt;
&lt;br /&gt;
Feature 2) SEMI-PASSIVE plugin improvement (Web Application Fingerprint):&lt;br /&gt;
&lt;br /&gt;
1) Requests all referenced BUT missing JavaScript files -i.e. scanners won't load JavaScript files! :)-&lt;br /&gt;
&lt;br /&gt;
2) re-runs the GREP plugin on the new files (i.e. to avoid missing vulns due to unrequested JavaScript files)&lt;br /&gt;
&lt;br /&gt;
Potential projects worth having a look for potential overlap/inspiration:&lt;br /&gt;
* [https://owasp.org/index.php/OWASP_Dependency_Check OWASP Dependency Check?]&lt;br /&gt;
&lt;br /&gt;
How many JavaScript libraries should be included?&lt;br /&gt;
* As many as possible, but especially the major ones: jQuery, knockout, etc.&lt;br /&gt;
* &amp;quot;Nirvana&amp;quot; Nice to have: ALL Individual versions of ALL JavaScript files from ALL opensource projects, (ideally) even if the project is not a JavaScript library -i.e. JavaScript files from Joomla, Wordpress, etc.-&lt;br /&gt;
&lt;br /&gt;
Common JavaScript library fingerprinting techniques include:&lt;br /&gt;
* Parse the JavaScript file and grab the version from there&lt;br /&gt;
* Determine the JavaScript version based on a hash of the file&lt;br /&gt;
* Determine the JavaScript version based on the length of the file&lt;br /&gt;
&lt;br /&gt;
Other Challenges:&lt;br /&gt;
* &amp;quot;the file&amp;quot; could be &amp;quot;the minimised file&amp;quot;, &amp;quot;the expanded file&amp;quot; or even &amp;quot;a specific JavaScript file from Library X&amp;quot;&lt;br /&gt;
* When the JavaScript file does not match a specific version:&lt;br /&gt;
	1) The commit that matches the closest should (ideally) be found&lt;br /&gt;
	2) The NEXT library version after that commit (if present) should be found&lt;br /&gt;
	3) From there, it is about reusing the knowledge to figure out public vulnerabilities, CVSS scores, etc. again&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren - OWASP OWTF Project Leader - Contact: Abraham.Aranguren@owasp.org&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Off-line HTTP traffic uploader (FREE!) ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
Although it is awesome that OWTF runs a lot of tools on behalf of the user, there are situations where uploading the HTTP traffic of another tool off-line can be very interesting for OWTF, for example:&lt;br /&gt;
&lt;br /&gt;
* Tools that OWTF has trouble proxying right now: skipfish, hoppy&lt;br /&gt;
* Tools that the user may have run manually OR even from a tool aggregator -very common! :)-&lt;br /&gt;
* Tools that we just don't run from OWTF: ZAP, Burp, Fiddler&lt;br /&gt;
&lt;br /&gt;
This project is about implementing an off-line utility able to parse HTTP traffic:&lt;br /&gt;
&lt;br /&gt;
1) Figure out how to read output files from various tools like:&lt;br /&gt;
skipfish, hoppy, w3af, arachni, etc.&lt;br /&gt;
Nice to have: ZAP database, Burp database&lt;br /&gt;
&lt;br /&gt;
2) Translate that into the following clearly defined fields:&lt;br /&gt;
&lt;br /&gt;
* HTTP request&lt;br /&gt;
* HTTP response status code&lt;br /&gt;
* HTTP response headers&lt;br /&gt;
* HTTP response body&lt;br /&gt;
&lt;br /&gt;
3) IMPORTANT: Implement a plugin-based uploader system&lt;br /&gt;
&lt;br /&gt;
4) IMPORTANT: Implement ONE plugin, that uploads that into the OWTF database&lt;br /&gt;
&lt;br /&gt;
5) IMPORTANT: OWTF should ideally be able to invoke the uploader right after running a tool&lt;br /&gt;
	Example: OWTF runs skipfish, skipfish finishes, OWTF runs the HTTP traffic uploader, all skipfish data is pushed to the OWTF DB.&lt;br /&gt;
&lt;br /&gt;
6) CRITICAL: The off-line HTTP traffic uploader should be smart enough to read + push 1-by-1 instead of *stupidly* trying to load everything into memory first, you have been warned! :)&lt;br /&gt;
&lt;br /&gt;
	Why? Because in a huge assessment, the output of &amp;quot;tool X&amp;quot; can be &amp;quot;10 GB&amp;quot;, which is *stupid* to load into memory, this is OWTF, we *really* try to foresee the crash before it happens! ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CRITICAL: It is important to implement a plugin-based uploader system, so that other projects can benefit from this work (i.e. to be able to import third-party tool data to ZAP, Burp, and other tools in a similar fashion), and hence hopefully join us in maintaining this project moving forward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren - OWASP OWTF Project Leader - Contact: Abraham.Aranguren@owasp.org&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Health Monitor (FREE!) ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
In some cases, especially on large assessments (think: &amp;gt; 30 URLs) a number of things often go wrong and OWTF needs to recover from everything, which is difficult.&lt;br /&gt;
&lt;br /&gt;
For this reason, OWTF needs an independent module, which is completely detached from OWTF (a different process), to ensure the health of the assessment is in check at all times, this includes the following:&lt;br /&gt;
&lt;br /&gt;
'''Feature 1) Alerting mechanisms'''&lt;br /&gt;
&lt;br /&gt;
When any of the monitor alerts (see below) is triggered. The OWTF user will be notified immediately through ALL of the following means:&lt;br /&gt;
* Playing an mp3 song (both local and possibly remote locations)&lt;br /&gt;
* Scan status overview on the CLI&lt;br /&gt;
* Scan status overview on the GUI&lt;br /&gt;
&lt;br /&gt;
NOTE: A configuration file from where the user can enable/disable/configure all these mechanisms is desired.&lt;br /&gt;
&lt;br /&gt;
'''Feature 2) Corrective mechanisms'''&lt;br /&gt;
&lt;br /&gt;
Corrective mechanisms are also expected in this project, these will be accomplished sending OWTF api messages such as:&lt;br /&gt;
* Stop this tool&lt;br /&gt;
* Freeze this process (to continue later)&lt;br /&gt;
* Freeze the whole scan (to continue later)&lt;br /&gt;
&lt;br /&gt;
Additional mechanisms:&lt;br /&gt;
* Show a ranking of files that take the most space&lt;br /&gt;
&lt;br /&gt;
'''Feature 3) Target monitor'''&lt;br /&gt;
&lt;br /&gt;
Brief overview:&lt;br /&gt;
&lt;br /&gt;
All target URLs are checked for availability periodically (i.e. once x 5 minutes?), if a URL in scope goes down the pentester is alerted (see above).&lt;br /&gt;
&lt;br /&gt;
Potential approach: Check if length of 1st page changes every 60 seconds.&lt;br /&gt;
&lt;br /&gt;
NOTE: It might be needed to change this on the fly.&lt;br /&gt;
&lt;br /&gt;
More background&lt;br /&gt;
&lt;br /&gt;
Consider the following scenario:&lt;br /&gt;
&lt;br /&gt;
Current Situation aka &amp;quot;problem to solve&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
1) Website X goes down during a scan&lt;br /&gt;
&lt;br /&gt;
2) the customer notices&lt;br /&gt;
&lt;br /&gt;
3) the customer tells the boss&lt;br /&gt;
&lt;br /&gt;
4) the boss tells the pentester&lt;br /&gt;
&lt;br /&gt;
5) the pentester stops the tool which was *still* trying to scan THAT target (!!!!)&lt;br /&gt;
&lt;br /&gt;
Desired situation aka &amp;quot;solution&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
It would be much more professional AND efficient that:&lt;br /&gt;
&lt;br /&gt;
1) The pentester notices&lt;br /&gt;
&lt;br /&gt;
2) The pentester tells the boss&lt;br /&gt;
&lt;br /&gt;
3) The boss tells the customer&lt;br /&gt;
&lt;br /&gt;
4) OWTF stops the tool because it knows that website is DEAD anyway&lt;br /&gt;
&lt;br /&gt;
A target monitor could easily do this with heartbeat requests + playing mp3s&lt;br /&gt;
&lt;br /&gt;
The target monitor will use the api to tell OWTF &amp;quot;this target is dead: freeze(stop?) current tests, skip target in future tests&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Feature 4) Disk space monitor'''&lt;br /&gt;
&lt;br /&gt;
Another problem that is relatively common in large assessments, is that all disk space is used and the scanning box becomes unresponsive or crashes. When this happens it is too late, the pentester may also see this coming but wonder “which are the biggest files in the filesystem that I can delete”, it is not ideal to have to look for these files in a moment when the scanning box is about to crash :).&lt;br /&gt;
&lt;br /&gt;
Proposed solution:&lt;br /&gt;
&lt;br /&gt;
Regularly monitor how much disk space is left, especially on the partition where OWTF is writing the review (but also tool directories such as /home/username/.w3af/tmp, etc.). Keep track of files created by OWTF and all called tools and sort them by size in descending order. Then when the disk space is going low (i.e. predefined threshold), an mp3 or similar is played and this list is displayed to the user, so that they know what to delete to survive :).&lt;br /&gt;
&lt;br /&gt;
'''Feature 5) Network/Internet Connectivity monitor'''&lt;br /&gt;
&lt;br /&gt;
Sometimes it may also happen that ISP, etc. connectivity go down in the middle of a scan, this is often a very unfortunate situation since most tools are scanning in parallel and they won’t be able to produce a report OR even resume (i.e. A LOT is lost). The goal here is that OWTF does all of the following automatically:&lt;br /&gt;
&lt;br /&gt;
1) Detects the lack of connectivity&lt;br /&gt;
&lt;br /&gt;
2) Freezes all the tools (read: processes) in progress&lt;br /&gt;
&lt;br /&gt;
3) Resumes the scan when the connectivity is back.&lt;br /&gt;
&lt;br /&gt;
'''Feature 6) Tool crash detection'''&lt;br /&gt;
&lt;br /&gt;
Sometimes, certain tools (most notably, ahem, w3af), when they crash they do NOT exit. This leaves OWTF in a difficult position where 1+ process is waiting for nothing, forever (i.e. because “Tool X” will never finish)&lt;br /&gt;
&lt;br /&gt;
'''Feature 7) Tool (Plugin?) CPU/RAM/Bandwidth abuse detection and correction'''&lt;br /&gt;
&lt;br /&gt;
OWTF needs to notice when some tools crash and/or “go beserk” with RAM/CPU/Bandwidth consumption, this is different from the existing built-in checks in OWTF like “do not launch a new tool if there is less than XYZ RAM free” and more like “if tool X is using &amp;gt; XYZ of the available RAM/CPU/Bandwidth” and this is (potentially) negatively affecting other tools/tests, then throttle it.&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* CRITICAL: Excellent reliability -i.e. the Health Monitor cannot crash! :)-&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren - OWASP OWTF Project Leader - Contact: Abraham.Aranguren@owasp.org&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Installation Improvements and Package manager (FREE!) ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
This project is to implement what was suggested in the following github issue:&lt;br /&gt;
[https://github.com/owtf/owtf/issues/192 https://github.com/owtf/owtf/issues/192]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recently i tried to make a fresh installation of OWTF. The installation process takes too much time. Is there any way to make the installation faster?&lt;br /&gt;
Having a private server with:&lt;br /&gt;
* pre-installed files for VMs&lt;br /&gt;
* pre-configured and patched tools&lt;br /&gt;
* Merged Lists&lt;br /&gt;
* Pre-configured certificates&lt;br /&gt;
Additionally a minimal installation which will install the core of OWTF with the option of update can increase the installation speed. The update procedure will start fetching the latest file versions from the server and copy them to the right path.&lt;br /&gt;
Additional ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
-- They could be hosted on Dropbox or a private VPS :)&lt;br /&gt;
&lt;br /&gt;
2 Installation Modes&lt;br /&gt;
* For high speed connections (Downloading the files uncompressed)&lt;br /&gt;
* For low speed connections (Downloading the files compressed)&lt;br /&gt;
and the installation crashed because i runned out of space in the vm&lt;br /&gt;
IMPORTANT NOTE: OWTF should check the available disk space BEFORE installation starts + warn the user if problems are likely&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* Excellent reliability (i.e. proper exception handling, etc.)&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python and bash experience would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren - OWASP OWTF Project Leader - Contact: Abraham.Aranguren@owasp.org&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - GSoC project extension ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
This is a wildcard entry for all those GSoC project improvements that you had in mind.&lt;br /&gt;
The actual work performed will depend on the GSoC project you would like to extend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* Excellent reliability (i.e. proper exception handling, etc.)&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Ideally be the author of the relevant GSoC project you would like to extend :)&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren - OWASP OWTF Project Leader - Contact: Abraham.Aranguren@owasp.org&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Testing Framework Improvements (TAKEN!) ===&lt;br /&gt;
&lt;br /&gt;
'''WARNING: This idea is taken from the 1st round of OWCS selections (Sept. 15th), please do NOT apply'''&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
As OWASP OWTF grows it makes sense to build custom unit tests to automatically re-test that functionality has not been broken. In this project we would like to improve the existing unit testing framework so that creating OWASP OWTF unit tests is as simple as possible and all missing tests for new functionality are created. The goal of this project is to update the existing Unit Test Framework to create all missing tests as well as improve the existing ones to verify OWASP OWTF functionality in an automated fashion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Top features'''&lt;br /&gt;
&lt;br /&gt;
In this improvement phase, the Testing Framework should:&lt;br /&gt;
* (Top Prio) Focus more on functional tests&lt;br /&gt;
For example: Improve coverage of OWASP Testing Guide, PTES, etc. (lots of room for improvement there!)&lt;br /&gt;
* (Top Prio) Put together a great wiki documentation section for contributors&lt;br /&gt;
The goal here is to help contributors write tests for the functionality that they implement. This should be as easy as possible.&lt;br /&gt;
* (Top Prio) Fix the current Travis issues :)&lt;br /&gt;
* (Nice to have) Bring the unit tests up to speed with the codebase&lt;br /&gt;
This will be challenging but very worth trying after top priorities.&lt;br /&gt;
The wiki should be heavily updated so that contributors create their own unit tests easily moving forward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''General background'''&lt;br /&gt;
&lt;br /&gt;
The Unit Test Framework should be able to:&lt;br /&gt;
* Define test categories: For example, &amp;quot;all plugins&amp;quot;, &amp;quot;web plugins&amp;quot;, &amp;quot;aux plugins&amp;quot;, &amp;quot;test framework core&amp;quot;, etc. (please see [http://www.slideshare.net/abrahamaranguren/introducing-owasp-owtf-workshop-brucon-2012 this presentation] for more background)&lt;br /&gt;
* Allow to regression test isolated plugins (i.e. &amp;quot;only test _this_ plugin&amp;quot;)&lt;br /&gt;
* Allow to regression test by test categories (i.e. &amp;quot;test only web plugins&amp;quot;)&lt;br /&gt;
* Allow to regression test everything (i.e. plugins + framework core: &amp;quot;test all&amp;quot;)&lt;br /&gt;
* Produce meaningful statistics and easy to navigate logs to identify which tests failed and ideally also hints on how to potentially fix the problem where possible&lt;br /&gt;
* Allow for easy creation of _new_ unit tests specific to OWASP OWTF&lt;br /&gt;
* Allow for easy modification and maintenance of _existing_ unit tests specific to OWASP OWTF&lt;br /&gt;
* Perform well so that we can run as many tests as possible in a given period of time&lt;br /&gt;
* Potentially leverage the python unittest library: [http://docs.python.org/2/library/unittest.html http://docs.python.org/2/library/unittest.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* Performant and automated regression testing&lt;br /&gt;
* Unit tests for a wide coverage of OWASP OWTF, ideally leveraging the Unit Test Framework where possible&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python, experience with unit tests and automated regression testing would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren - OWASP OWTF Project Leader - Contact: Abraham.Aranguren@owasp.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Tool utilities module (TAKEN!) ===&lt;br /&gt;
&lt;br /&gt;
'''WARNING: This idea is taken from the 1st round of OWCS selections (Sept. 15th), please do NOT apply'''&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
The spirit of this feature is something that may or may not be used from OWTF: These are utilities that may be chained together by OWTF OR a penetration tester using the command line. The idea is to automate mundane tasks that take time but may provide a lever to a penetration tester short on time.&lt;br /&gt;
&lt;br /&gt;
'''Feature 1) Vulnerable software version database:'''&lt;br /&gt;
&lt;br /&gt;
Implement a searchable vulnerable software version database so that a penetration tester enters a version and gets vulnerabilities sorted by criticality with MAX Impact vulnerabilities at the top (possibly: CVSS score in DESC order).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
[http://www.cvedetails.com/vulnerability-list.php?vendor_id=74&amp;amp;product_id=128&amp;amp;version_id=149817&amp;amp;page=1&amp;amp;hasexp=0&amp;amp;opdos=0&amp;amp;opec=0&amp;amp;opov=0&amp;amp;opcsrf=0&amp;amp;opgpriv=0&amp;amp;opsqli=0&amp;amp;opxss=0&amp;amp;opdirt=0&amp;amp;opmemc=0&amp;amp;ophttprs=0&amp;amp;opbyp=0&amp;amp;opfileinc=0&amp;amp;opginf=0&amp;amp;cvssscoremin=0&amp;amp;cvssscoremax=0&amp;amp;year=0&amp;amp;month=0&amp;amp;cweid=0&amp;amp;order=3&amp;amp;trc=17&amp;amp;sha=0d26af6f3ba8ea20af18d089df40c252ea09b711 Vulnerabilities against specific software version]&lt;br /&gt;
&lt;br /&gt;
'''Feature 2) Nmap output file merger:'''&lt;br /&gt;
&lt;br /&gt;
Unify nmap files *without* losing data: XML, text and greppable formats&lt;br /&gt;
For example: Sometimes 2 scans pass through the same port, one returns the server version, the other does not, we obviously do not want to lose banner information :).&lt;br /&gt;
&lt;br /&gt;
'''Feature 3) Nmap output file vulnerability mapper'''&lt;br /&gt;
&lt;br /&gt;
From an nmap output file, get the unique software version banners, and provide a list of (maybe in tabs?):&lt;br /&gt;
&lt;br /&gt;
1) CVEs in reverse order of CVSS score, with links.&lt;br /&gt;
&lt;br /&gt;
2) Metasploit modules available for each CVE / issue&lt;br /&gt;
&lt;br /&gt;
NOTE: Can supply an *old* shell script for reference&lt;br /&gt;
&lt;br /&gt;
3) Servers/ports affected (i.e. all server / port combinations using that software version)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Feature 4) URL target list creator:'''&lt;br /&gt;
&lt;br /&gt;
Turn all “speaks http” ports (from any nmap format) into a list of URL targets for OWTF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Feature 5) Hydra command creator:'''&lt;br /&gt;
&lt;br /&gt;
nmap file in =&amp;gt; Hydra command list out&lt;br /&gt;
&lt;br /&gt;
grep http auth / login pages in output files to identify login interfaces =&amp;gt; Hydra command list out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Feature 6) WP-scan command creator:'''&lt;br /&gt;
&lt;br /&gt;
look at all URLs (i.e. nmap file), check if they might be running word press, generate a list of suggested wp-scan commands for all targets that might be running word press&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* '''IMPORTANT: [http://legacy.python.org/dev/peps/pep-0008/ PEP-8 compliant code] in all modified code and surrounding areas.'''&lt;br /&gt;
* '''IMPORTANT: [https://github.com/7a/owtf/wiki/Contributor%27s-README OWTF contributor README compliant code]'''&lt;br /&gt;
* '''IMPORTANT: [http://sphinx-doc.org/ Sphinx-friendly python comments] [http://owtf.github.io/ptp/_modules/ptp/tools/w3af/parser.html#W3AFXMLParser example Sphinx-friendly python comments here]'''&lt;br /&gt;
* Excellent reliability (i.e. proper exception handling, etc.)&lt;br /&gt;
* Good performance&lt;br /&gt;
* Unit tests / Functional tests&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python, experience with unit tests and automated regression testing would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OWASP OWTF Mentor:'''&lt;br /&gt;
&lt;br /&gt;
Abraham Aranguren - OWASP OWTF Project Leader - Contact: Abraham.Aranguren@owasp.org&lt;br /&gt;
&lt;br /&gt;
=== OWASP Hackademic Challenges - Source Code testing environment ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
Existing challenges are based on a dynamic application testing concept. We would like to work on a project that will give the capability to the attacker to review a vulnerable piece of source code, make corrections and see the result in a realistic (but yet safe) runtime environment. The code can either be run if needed or tested for correctness and security. The implementation challenges of such a project can be numerous, including creating a realistic but also secure environment, testing submitted solutions and grading them in an automatic manner. At the same time there are now numerous sites that support submitting code and then simulate or implement a compiler's functionality.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
A source code testing and improvement environment where a user will be able to review, improve and test the result of a piece of source code.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Comfortable in PHP, HTML and possibly Java. Good understanding of Application Security, source code analysis and related vulnerabilities. &lt;br /&gt;
&lt;br /&gt;
'''OWASP Hackademic Mentors:''' &lt;br /&gt;
Konstantinos Papapanagiotou, Spyros Gasteratos - Contact: Konstantinos@owasp.org / spyros.gasteratos@owasp.org&lt;br /&gt;
&lt;br /&gt;
=== OWASP Hackademic Challenges - Challenge Sandbox ===&lt;br /&gt;
&lt;br /&gt;
Now, in order to create a challenge, one has to validate the solution with regular expressions (or just plaintext comparison) and report success or failure to the backend,&lt;br /&gt;
we'd like the ability to write a normal vulnerable web application as a challenge and leave it to hackademic to make sure that the server is not affected.&lt;br /&gt;
Since this is probably the most difficult task proposed, if you are considering it, please get in touch with us early on so we can discuss about it and plan it correctly.&lt;br /&gt;
&lt;br /&gt;
Ideas on the project:&lt;br /&gt;
&lt;br /&gt;
''' *Administrator's point of view* '''&lt;br /&gt;
&lt;br /&gt;
Create an infrastructure that spawns virtual environments for users while keeping the load reasonable on the server(s).&lt;br /&gt;
Or configure apache,php,mysql in a way that allows for multiple instances of the programms to run in parallel completely seperated from the rest of the server.&lt;br /&gt;
The student is expected to provide configuration scripts that do the above&lt;br /&gt;
&lt;br /&gt;
''' *Coder's Way* '''&lt;br /&gt;
&lt;br /&gt;
This is better explained with an example:&lt;br /&gt;
In order to create an sql injection challenge one should be able to call a common unsecure mysql execute statement function.&lt;br /&gt;
The student can override common functions like this providing their own implementation of a very temporary database (based on flat files or nosql solutions e.t.c.).&lt;br /&gt;
The new functions should be able to detect the sqli and apply its results in a secure way(if the student drops a table no actual tables should be dropped but the table should not be visible to the student anymore).&lt;br /&gt;
&lt;br /&gt;
''' * Your solution here * '''&lt;br /&gt;
&lt;br /&gt;
''' Expected results '''&lt;br /&gt;
&lt;br /&gt;
You should be able to upload a trully vulnerable web application as a hackademic challenge without compromising the server outside the sandbox.&lt;br /&gt;
&lt;br /&gt;
=== OWASP Hackademic Challenges - CMS improvements ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
The new CMS was created during 2012 GSOC. We have received feedback from users that suggest various improvements regarding functionality e.g. better user, teacher and challenges management. There are also some security improvements that are needed and in general any functionality that adds up to the educational nature of the project is more than welcome.&lt;br /&gt;
For a complete list you can take a look at the issues in our github page here https://github.com/Hackademic/hackademic&lt;br /&gt;
Some ideas to get you started: &lt;br /&gt;
Ideas on this project:&lt;br /&gt;
&lt;br /&gt;
* ''' Template''' *&lt;br /&gt;
&lt;br /&gt;
Since it's creation the project has received a good number of new features, but the visual/ux/ui part has never gotten much love.&lt;br /&gt;
It would be good if we had a new template with proper ui design.&lt;br /&gt;
&lt;br /&gt;
* '''Questionaire creation plugin''' *&lt;br /&gt;
&lt;br /&gt;
We'd like the admin to be able to create questionaires, assign rules for each question (e.g. correct answer +2pts incorrect answer -2, no answer 0)  and assign them to students as homework/exams.&lt;br /&gt;
The grading can either be done automatically (for multiple choice) or be submitted to the creator of the questionaire.&lt;br /&gt;
&lt;br /&gt;
* '''Ability to show different articles on the user's home screen''' &lt;br /&gt;
&lt;br /&gt;
Now each user is served the latest article in her/his home screen. We need the ability for either  the teacher/admin to be able to define what article each class is served.&lt;br /&gt;
&lt;br /&gt;
* '''Gamification of the user's progress''' *&lt;br /&gt;
&lt;br /&gt;
A series of plugins and a template which allow the user to earn badges as they solve challenges and a better visual representation of their progress.&lt;br /&gt;
&lt;br /&gt;
* '''Ability to define series of challenges'''&lt;br /&gt;
&lt;br /&gt;
The teacher/admin should be able to define a series of challenges (e.g. 2,5,3,1) which are meant to be solved in that order and if one is not solved then the student can't try the next one.&lt;br /&gt;
&lt;br /&gt;
* ''' Tagging of articles, users, challenges '''&lt;br /&gt;
&lt;br /&gt;
A user should be able to put tags on articles and challenges if he is a student and on users, classes, articles and challenges if he is a teacher.&lt;br /&gt;
Also the user should be able to search according to the tags.&lt;br /&gt;
&lt;br /&gt;
* '''Your idea here''' &lt;br /&gt;
&lt;br /&gt;
We welcome new ideas to make the project look awesome.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
New features  and security improvements on the CMS part of the project.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Comfortable in PHP and HTML. Good understanding of Application Security and related vulnerabilities if you undertake security improvements. &lt;br /&gt;
&lt;br /&gt;
'''OWASP Hackademic Mentors:''' &lt;br /&gt;
Konstantinos Papapanagiotou, Spyros Gasteratos - Contact: Konstantinos@owasp.org / spyros.gasteratos@owasp.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OWASP Hackademic Challenges - Fix issues ===&lt;br /&gt;
&lt;br /&gt;
Hackdemic has an issues page [here | https://github.com/Hackademic/hackademic/issues] some of the issues are small projects which can be solved in an afternoon, others need more work. If your professor agrees with the workload, you can fix one or multiple issues as part of OWCS. Additionally, you can open some issues that later you can fix, or propose new features.&lt;br /&gt;
&lt;br /&gt;
''' Knowledge Prerequisites '''&lt;br /&gt;
PHP and optionally some knowledge of application security.&lt;br /&gt;
&lt;br /&gt;
''' NOTE '''&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;project&amp;quot; was added to encourage students to be creative and participate, we do accept projects outside the ones proposed if they can be integraded to the platform and are relevant to the purpose of Hackademic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OWASP ZAP - Web  UI ===&lt;br /&gt;
 &lt;br /&gt;
'''Brief explanation: '''&lt;br /&gt;
&lt;br /&gt;
ZAP is already an extremely capable tool used by many different groups of users.  Work has already been done to make ZAP useful in environments where it can't run interactively (e.g. via the API). ZAP main Swing UI doesn't provide convenient access to remote users; a UI which provides some functionality for for users in such environments would be very useful.&lt;br /&gt;
&lt;br /&gt;
Adding a powerful HTML interface to ZAP would allow it to operate in an even wider range of situations.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
* A working example of an effective HTML UI that allows ZAP to be configured or used in a new way.&lt;br /&gt;
&lt;br /&gt;
'''Optional:'''&lt;br /&gt;
&lt;br /&gt;
Multi user / access controls, etc?&lt;br /&gt;
&lt;br /&gt;
'''General background'''&lt;br /&gt;
&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML, CSS and JavaScript. Some knowledge of application security would be useful, but not essential. &lt;br /&gt;
&lt;br /&gt;
'''OWASP ZAP Mentor:''' &lt;br /&gt;
Simon Bennetts - Contact: psiinon@gmail.com&lt;br /&gt;
&lt;br /&gt;
=== OWASP ZAP - Advanced reporting ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
OWASP ZAP has a limited reporting feature. The actual version can print only the 'Alerts' results into a simple pdf, html or in xml format. &lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
We want to be able to print more than the Alerts results , which includes many other outputs such as: Request and Response, Active Scan, Zest among others.&lt;br /&gt;
&lt;br /&gt;
'''General background'''&lt;br /&gt;
During the Gsoc 2013, we did a research and a prototype module was created, using BIRT plugins for Advance reporting. Read more about the results of the explorative research : https://www.owasp.org/index.php/GSoC2013_Ideas/OWASP_ZAP_Exploring_Advanced_reporting_using_BIRT]&lt;br /&gt;
&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential. &lt;br /&gt;
&lt;br /&gt;
'''OWASP ZAP Mentor:''' &lt;br /&gt;
Johanna Curiel - Contact: johanna.curiel@owasp.org&lt;br /&gt;
&lt;br /&gt;
=== OWASP ZAP - CI Integration ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
ZAP is ideally suited for performing security tests in a Continuous Integration environment.&lt;br /&gt;
&lt;br /&gt;
Right now there are a lot of manual steps to perform. This development will be to investigate and implement code/plugins etc to make it much easier to integrate ZAP with tools like Selenium and Jenkins / Hudson.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
Code, plugins and documentation to make it as easy as possible to integrate ZAP with common CI tools.&lt;br /&gt;
&lt;br /&gt;
'''General background'''&lt;br /&gt;
&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential.&lt;br /&gt;
&lt;br /&gt;
'''OWASP ZAP Mentor:''' &lt;br /&gt;
Simon Bennetts - Contact: psiinon@gmail.com&lt;br /&gt;
&lt;br /&gt;
=== OWASP ESAPI - Build Apache Struts 2 component ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
Struts2 is one of the most widely used Java MVC frameworks, users of ESAPI are regularly looking for pluggable components that they can drop into their application to utilize ESAPI within the context of their application framework. The goal of this task is to create a set of pluggable components that integrate ESAPI into Struts2 to utilize ESAPI Encoders, Validation, and Intrusion Detection with the least amount of manual work and configuration.  &lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
A standalone project that uses ESAPI Components in a Struts2 add-on. This can&lt;br /&gt;
be placed with the 'contrib' section of ESAPI.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
A solid understanding of Java and Apache Struts, comfort developing unit tests in JUnit and functional tests using Selenium or HttpUnit as well as maintaining a Maven build.&lt;br /&gt;
&lt;br /&gt;
'''OWASP ESAPI Mentor:'''&lt;br /&gt;
Kevin W. Wall - OWASP ESAPI for Java Project Leader - kevin.w.wall@gmail.com&lt;br /&gt;
&lt;br /&gt;
===OWASP ESAPI -- Port OWASP Swingset Interactive to use ESAPI 2.x===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
The ESAPI Swingset Interactive is a web application which demonstrates common security vulnerabilities and asks users to secure the application against these vulnerabilities using the ESAPI library. The application is intended for Java Developers. The goal of the application is to teach developers about the functionality of the ESAPI library and give users a practical understanding of how it can be used to protect web applications against common security vulnerabilities.  The goal of this project is to adapt the Swingset Interactive to work with the ESAPI 2.x libraries.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
Make the current Swingset Interactive application compatible with ESAPI 2.x.  Swingset Interactive currently comes with ESAPI 1.4. Various changes and improvements were made with ESAPI 2.x and it is generally recommended not to use 1.4 any longer for Java EE Projects.&lt;br /&gt;
&lt;br /&gt;
Additional relevant references:&lt;br /&gt;
Web site: https://www.owasp.org/index.php/Projects/OWASP_ESAPI_Swingset_Interactive_Project&lt;br /&gt;
Mailing List: http://lists.owasp.org/pipermail/owasp-esapi-swingset/ &lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
A basic knowledge of Java, Java Servlets is necessary, as is knowledge of HTML. &lt;br /&gt;
A working knowledge of ESAPI would be helpful.&lt;br /&gt;
&lt;br /&gt;
'''OWASP ESAPI Mentor:'''&lt;br /&gt;
Kevin W. Wall - OWASP ESAPI for Java Project Leader - kevin.w.wall@gmail.com&lt;br /&gt;
&lt;br /&gt;
===OWASP ESAPI 2.x - Enhance Security Configuration===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
There are currently more than a half-dozen of open Google Issues in ESAPI regarding the security configuration component (e.g., see ESAPI Security Configuration Issues).&lt;br /&gt;
&lt;br /&gt;
The ESAPI interface for its configuration (SecurityConfiguration) is overly complicated; it has a 'getter' method specific to almost every ESAPI configuration property. The rules for how and where the ESAPI.properties file is found are overly complicated making questions about it one of the most frequently asked questions on forums such as Stack Exchange and the ESAPI mailing lists. This complication leads to a unduly intricate, non-modular reference implementation (DefaultSecurityConfiguration) that makes it difficult to extend in terms of new functionality.&lt;br /&gt;
&lt;br /&gt;
A new, simpler security configuration interface and implementation is needed. Such an implementation would not only be useful for ESAPI 2.x, but could very well be used to build the configurator needed by ESAPI 3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
As part of this Winder Code Sprint project, expectations would not only to address as many of the open security configuration issues as possible, but to also go beyond this to allow a framework for additional extensions in terms of functionality.&lt;br /&gt;
&lt;br /&gt;
Specific expectations include:&lt;br /&gt;
* An improved, but simpler API for the security configuration part of ESAPI.&lt;br /&gt;
* Alternate configuration stores other than Java properties files (e.g., XML, database), to be supported.&lt;br /&gt;
* The ability to split the ESAPI configuration data into smaller, more manageable chunks to result in more maintainability and allow for better enforcement of corporate security policies.&lt;br /&gt;
* Continued backward compatibility with ESAPI 2.1.x or an extremely simple migration path forward.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Since the ESAPI 2.x project is written in Java, a good knowledge of Java is essential. A strong knowledge of JUnit will also be helpful in creating unit test cases. A working knowledge of XML or JDBC may also prove helpful.&lt;br /&gt;
&lt;br /&gt;
'''OWASP ESAPI Mentor:'''&lt;br /&gt;
Kevin W. Wall - OWASP ESAPI for Java Project Leader - kevin.w.wall@gmail.com&lt;br /&gt;
&lt;br /&gt;
===OWASP ESAPI 2.x - Miscellaneous multiple bug fixes===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
Fix at least 5 bugs listed in Google Issues.&lt;br /&gt;
&lt;br /&gt;
There are currently (as of Oct 11, 2014) 170 open issues for ESAPI listed at https://code.google.com/p/owasp-esapi-java/issues/list.&lt;br /&gt;
&lt;br /&gt;
Students would be expected to fix at least 5 bugs, including at least 3 bugs that do NOT have the &amp;quot;FirstBug&amp;quot; label.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
Students must write well documented code along with appropriate unit tests cases in JUnit. Code will be reviewed by mentor and must meet mentor's possibly subjective code review with respect to correctness, completeness, and quality.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
A solid understanding of Java and comfort developing unit tests in JUnit as well as a beginner understanding of OWASP Top 10 issues. An understanding of ESAPI security controls would also be helpful.&lt;br /&gt;
&lt;br /&gt;
'''OWASP ESAPI Mentor:'''&lt;br /&gt;
Kevin W. Wall - OWASP ESAPI for Java Project Leader - kevin.w.wall@gmail.com&lt;br /&gt;
&lt;br /&gt;
== Participating Universities, Professors ==&lt;br /&gt;
&lt;br /&gt;
Here's a small and not complete list of professors who are accepting participants (If your professor wants to accept more than one team, and you want to help your classmates please add institute name and professor/course here)&lt;br /&gt;
&lt;br /&gt;
== More info? ==&lt;br /&gt;
Please get in touch with the OWASP Winter Code Sprint Lead: spyros.gasteratos@owasp.org&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Governance/ProjectProgramModels&amp;diff=174522</id>
		<title>Governance/ProjectProgramModels</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Governance/ProjectProgramModels&amp;diff=174522"/>
				<updated>2014-05-08T02:02:17Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Kevin Wall added comments about these 3 options. There are more comments under the Discussion page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Purpose = &lt;br /&gt;
OWASP needs help from our community to define an OWASP Projects Program model that will meet the needs of our leaders. To do so we are engaging the community to discuss and flush out different options. We would like to have a vote on this to ensure that the community has a say in how the foundation moves forward. &lt;br /&gt;
&lt;br /&gt;
= The Options =&lt;br /&gt;
''Please feel free to add additional bullets to any of the cells. Please do not remove existing items.''&lt;br /&gt;
&lt;br /&gt;
{| {{table border=1}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Option'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''1 - Flagships get majority of resources to increase quality.'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''2 - Develop two separate programs:  Quality focused and Innovation focused'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''3 - Community project review centric model'''&lt;br /&gt;
|-&lt;br /&gt;
| '''Summary Description'''&lt;br /&gt;
||&amp;lt;!--Option 1--&amp;gt;&lt;br /&gt;
Drop the Lab designation, and only have Incubator and Flagship projects. Flagship project status would be determined by community vote, and our resources would go towards developing Flagship projects, based on community input. Incubators would get less attention and support. &lt;br /&gt;
*Keeps both Flagships and Incubators under the same program (as official &amp;quot;OWASP Projects&amp;quot;).&lt;br /&gt;
*Would remove resources from Incubators and funnel the majority of resources into the Flagship Projects. &lt;br /&gt;
||&amp;lt;!--Option 2--&amp;gt;&lt;br /&gt;
Separate focus of OWASP projects into two separate programs. One will focus on increasing the quality of a handful of projects selected by the community, and the other program will focus on developing a platform for new leaders that facilitates innovation, research, and testing. &lt;br /&gt;
*Takes two community requests (increase quality, platform for innovation), and separate each request into to programs.&lt;br /&gt;
*Allows the foundation to have clearly defined goals for each program. &lt;br /&gt;
||&amp;lt;!--Option 3--&amp;gt;&lt;br /&gt;
This is the approach we are currently using. This approach requires that the community conduct project reviews to graduate projects, and it requires a twice yearly project audit to demote projects that are currently inactive.&lt;br /&gt;
*Current approach&lt;br /&gt;
*Requires a large task force of community reviewers to make sure our project graduation process is functioning efficiently. &lt;br /&gt;
|-&lt;br /&gt;
| '''How are Flagships Selected?'''&lt;br /&gt;
||Community Vote&lt;br /&gt;
||Community Vote&lt;br /&gt;
||Community Project Health and Quality Reviews&lt;br /&gt;
|-&lt;br /&gt;
| '''New Project Designations'''&lt;br /&gt;
||&lt;br /&gt;
*Official OWASP Project: Projects that OWASP actively maintains and promotes. In reality, these are what flagship projects should be under the current system. The majority of our resources and time should be used to improve the quality and sustain these projects. &lt;br /&gt;
*OWASP Supported Projects: These would be similar to what the incubators are under our current system. Encourages innovation and it allows starting members to become engaged and involved. These can be managed in the same way we manage incubators now. &lt;br /&gt;
*OWASP Sunset Projects: Projects like ESAPI or WebScarab would fit under this title. These are projects that are still being used by consumers, but that we will not directly support as they are not actively maintained or being worked on. &lt;br /&gt;
||&lt;br /&gt;
*OWASP Flagship Project: Projects that OWASP actively maintains and promotes. The majority of our resources and time would be used to improve the quality and sustain these projects. &lt;br /&gt;
*OWASP Incubator Projects: These would be all of the rest of our projects.  These can be managed in the same way we manage incubators and lab projects now. &lt;br /&gt;
*OWASP Sunset Projects: This is the same as Proposal 1. Projects like ESAPI or WebScarab would fit under this title. These are projects that are still being used by consumers, but that we will not directly support as they are not actively maintained or being worked on. &lt;br /&gt;
||&lt;br /&gt;
*OWASP Flagship Project: Projects that OWASP actively maintains (but does not manage) and promotes.&lt;br /&gt;
*OWASP Lab Projects: Projects with beta or stable release that wish to graduate to Lab. &lt;br /&gt;
*OWASP Incubator Projects: All new projects, managed the same way we manage incubators projects now. &lt;br /&gt;
*OWASP Sunset Projects: Projects like ESAPI or WebScarab would fit under this title. These are projects that are still being used by consumers, but that we will not directly support as they are not actively maintained or being worked on. &lt;br /&gt;
|-&lt;br /&gt;
| '''Project Quality'''&lt;br /&gt;
||&amp;lt;!--Option 1--&amp;gt;&lt;br /&gt;
Consolidate Foundation resources to help improve quality of Flagship projects only. This will give the majority of our resources to a handful of projects.&lt;br /&gt;
||&amp;lt;!--Option 2--&amp;gt;&lt;br /&gt;
*Flagship Project Program: As mentioned above, these projects would be the ones OWASP actively maintains and seeks to increase the quality of. We can re-name this program (if necessary). Recommended that we limit the number of projects in this program for any given year (i.e. no more than 6 projects). Additionally, Flagship projects would be voted on by the community (which projects should be flagship). &lt;br /&gt;
*'''Primary Goal of the Program''': To increase the quality of a select few number of OWASP projects selected by our community stakeholders and consumers. &lt;br /&gt;
*OWASP Projects Program: This would be similar to what we have now which is a platform for research and innovation. All projects under this platform would have the same designation unless they are sunset or inactive projects. They would get the same benefits they do now and the same opportunities. &lt;br /&gt;
*'''Primary Goal of the Program''': To maintain a research and innovation platform for our community to test ideas and theories. &lt;br /&gt;
||&amp;lt;!--Option 3--&amp;gt;&lt;br /&gt;
The foundation has no direct influence over the quality of the project. The quality of the project is dependent on the project leader’s individual time, resources, and output. &lt;br /&gt;
|-&lt;br /&gt;
| '''Project Reviews'''&lt;br /&gt;
||&amp;lt;!--Option 1--&amp;gt;&lt;br /&gt;
The Foundation facilitates a technical review of  the community selected &amp;quot;Official&amp;quot; projects once a year, and the Incubator projects only get reviewed if they ask for one. The reviews are conducted by the community for supported projects. &lt;br /&gt;
||&amp;lt;!--Option 2--&amp;gt;&lt;br /&gt;
*For the OWASP Projects Program, we would only conduct reviews for those projects that ask for them. The reviews will be primarily to give feedback to the leader about their research/ideas and on their project health. &lt;br /&gt;
*For the Flagship Program, reviews would be mandatory, and I recommend the new technical person conduct them. I further recommend they be done every quarter for each project. It is far more manageable since we would only have 6 or so projects in this program. &lt;br /&gt;
||&amp;lt;!--Option 3--&amp;gt;&lt;br /&gt;
Project reviews are only done for those projects that want reviews, or that would like to graduate to the next level.&lt;br /&gt;
|-&lt;br /&gt;
| '''Resources and Funding'''&lt;br /&gt;
||&amp;lt;!--Option 1--&amp;gt;&lt;br /&gt;
The majority of our resources and funding will go towards the development of higher quality Official OWASP projects. Supported projects will still have access to resources, but they will be minimal. &lt;br /&gt;
||&amp;lt;!--Option 2--&amp;gt;&lt;br /&gt;
Each program would need to have their own budget. The Flagship program would only spend their funds on items that increase project quality. It would be required that flagship submit a  detailed project plan and budget. The Projects Program would have a budget that would fund items like project dev work, the project summit, OSS, marketing/design costs, etc. &lt;br /&gt;
||&amp;lt;!--Option 3--&amp;gt;&lt;br /&gt;
All projects get access to funding; however, Flagships get priority for funding for project development work. Funding items like project dev work, the project summit, OSS, marketing/design costs, etc are still available to all projects. &lt;br /&gt;
|-&lt;br /&gt;
| '''Positives of this approach'''&lt;br /&gt;
|| &amp;lt;!--Option 1--&amp;gt;&lt;br /&gt;
# Simplifies the process from an operational perspective as we would be primarily focusing on increasing the quality of a very small community selected group of projects. &lt;br /&gt;
# Increases community involvement. &lt;br /&gt;
# Incentivizes Leaders to make their projects user friendly, high quality, and highly volunteer engaged.&lt;br /&gt;
||&amp;lt;!--Option 2--&amp;gt;&lt;br /&gt;
# Separates two different focus areas into two separate programs.&lt;br /&gt;
# Increases community involvement.  &lt;br /&gt;
# Incentivizes Leaders to make their projects user friendly, high quality, and highly volunteer engaged.&lt;br /&gt;
||&amp;lt;!--Option 3--&amp;gt;&lt;br /&gt;
# No adaptation needed in the operational and financial plan for 2014&lt;br /&gt;
|-&lt;br /&gt;
| '''Negatives of this approach'''&lt;br /&gt;
||&amp;lt;!--Option 1--&amp;gt;&lt;br /&gt;
# Community vote might turn into a popularity contest.  &lt;br /&gt;
# OWASP Official projects will take the majority of resources from all other projects.  &lt;br /&gt;
# We will still have two separate focus areas under one program. &lt;br /&gt;
# Project development work will still be dependent on volunteer resources. &lt;br /&gt;
||&amp;lt;!--Option 2--&amp;gt;&lt;br /&gt;
# Will require an additional foundation hire to manage Flagship Project Program. &lt;br /&gt;
# Project development work will still be dependent on volunteer resources. &lt;br /&gt;
||&amp;lt;!--Option 3--&amp;gt;&lt;br /&gt;
# The model requires too many resources to manage efficiently.&lt;br /&gt;
# Foundation has no direct influence over project quality. Foundation can only suggest improvements. &lt;br /&gt;
|-&lt;br /&gt;
| '''Any other considerations'''&lt;br /&gt;
||&amp;lt;!--Option 1--&amp;gt;&lt;br /&gt;
# Kevin Wall: Regarding &amp;quot;How are flagships selected?&amp;quot;, I would view a community vote as a last resort. Rather I think a better option is to propose some objective criteria by which all projects (or at least projects of a specific type, such as software projects) can be measured. A &amp;quot;community vote&amp;quot; could them be used to vote of the proposed criteria. I think that such an approach is more work initially, but in the long run, I think it is less likely to turn into a popularity vote with the most visible projects becoming flagship projects.&lt;br /&gt;
# Kevin Wall: Under &amp;quot;New Project Designations&amp;quot;, the first bullet states &amp;quot;Projects that OWASP actively maintains and promotes&amp;quot;...what ''specifically'' do you have in mind? This seems rather nebulous, kind of like &amp;quot;I'll know it when I see it&amp;quot; thing, but not everyone may have the same conceptual model in mind. If we are going to give funds to flagship projects, then I want to know details of how this will be done.&lt;br /&gt;
# Kevin Wall: Under &amp;quot;Project Quality&amp;quot;, a similar statement. How exactly will the OWASP Foundation resources help to improve the quality. My personal belief is that whatever we've been doing has failed miserably. The key to sustaining a successful project is to have a sufficiently sized core of engaged OWASP volunteers working on this. I personally don't think that paying people to write code is going to help much. Case in point...I don't think that OWASP could afford the normal rates that any of the ESAPI contributors would normally get. So people have to contribute because they ''want'' to, because they're motivated. So how is the OWASP Foundation going to do that?&lt;br /&gt;
# Kevin Wall: Under reason #2 for &amp;quot;Positives of this approach&amp;quot;...my comment is REALLY??? How? Specifically, how is this different than Option #2?&lt;br /&gt;
# Kevin Wall: Under &amp;quot;Negatives of this approach&amp;quot;, regarding statement #1. I don't think there is any 'might' about it.&lt;br /&gt;
||&amp;lt;!--Option 2--&amp;gt;&lt;br /&gt;
# Kevin Wall: Same comment as comment #1 for Option 1.&lt;br /&gt;
# Kevin Wall: Also under &amp;quot;Summary Description&amp;quot;, the lead in paragraphs...how is this DIFFERENT than Option #1?&lt;br /&gt;
# Kevin Wall: Regarding the 2nd bullet item under &amp;quot;Summary Description&amp;quot; for this option...this bullet is a MIST, but I don't see why it is exclusive to Option #2.&lt;br /&gt;
# Kevin Wall: Regarding &amp;quot;Resources and Funding&amp;quot;, I think this is an excellent idea, but at a bare minimum, some board-given guidelines would be required. I don't think I'd want the project themselves having complete autonomy here. Also, for this to work I think each project would have to have some dedicated PM resources as developer generally are neither very good, nor found of doing things like the issues described here. (But perhaps this was already anticipated and what was in mind in #1 under &amp;quot;Negatives of this approach&amp;quot;???)&lt;br /&gt;
||&amp;lt;!--Option 3--&amp;gt;&lt;br /&gt;
# Kevin Wall: Lead-in sentence under &amp;quot;Summary Description&amp;quot; for Option #3...if this is the approach that we are &amp;quot;currently using&amp;quot; than why have we not been doing regular (twice yearly!) community project reviews? I had not even heard about them until 3Q2013.  And ''if'' we have been doing them, why have they been such a failure?&lt;br /&gt;
# Kevin Wall: Under the 2nd bullet for &amp;quot;New Project Designations&amp;quot;... did you mean to say &amp;quot;graduate to Flagship&amp;quot; rather than &amp;quot;graduate to Lab&amp;quot; since the context here was Lab projects?&lt;br /&gt;
# Kevin Wall: A comment on the 2nd sentence under &amp;quot;Project Quality&amp;quot; for this option: In reality, I believe that this will also be true for Options #1 and #2 for both Flagship and Lab projects. See my earlier comments regarding paid versus volunteer help under Option #1.&lt;br /&gt;
# Kevin Wall: Under &amp;quot;Project Reviews&amp;quot;... this statement is in contradiction to what was stated in the lead-in sentences under &amp;quot;Summary Description&amp;quot; for Option #3 where it discusses two mandatory reviews per year. So apparently I am confused or one or both of these statements need clarification.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Additional Comments =&lt;br /&gt;
Use this space to provide additional comments on any of the existing text. For example, perhaps you disagree with something that is above. Please note your thoughts in this section.&lt;br /&gt;
&lt;br /&gt;
# James McGovern - I can't quite tell if this model will provide service equally to builders vs breakers vs defenders. Has OWASP looked at models that are role-aligned? For example stuff that CISOs care about vs developers vs project managers, etc&lt;br /&gt;
# Kevin Wall - James is absolutely right. I had only considered software vs. documentation projects, but that's another legitimate way to cut the pie.&lt;br /&gt;
# Kevin Wall - I have further comments under the Discussion page.&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:Governance/ProjectProgramModels&amp;diff=174521</id>
		<title>Talk:Governance/ProjectProgramModels</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:Governance/ProjectProgramModels&amp;diff=174521"/>
				<updated>2014-05-08T01:25:54Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Discussion page for ProjectProgramModels&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I wanted to create this discussion page for general questions and discussions of this corresponding wiki page.&lt;br /&gt;
&lt;br /&gt;
'''General Comments'''&lt;br /&gt;
* I don't even think this conversation can be started without a clear definition of terms, goals, benefits, and criteria of the different project types.&lt;br /&gt;
* Beyond that, I think that it is naive to think that projects like Top 10 or Dev Guide, etc.  that are documentation projects which are only published every few years can be / should be treated similar to projects that are some software product. Perhaps the content of this wik page may only be referring to the later, but it is so nebulous in its wording that I can't be sure.&lt;br /&gt;
&lt;br /&gt;
'''Content Comments'''&lt;br /&gt;
* I found the way these options were presented somewhat confusing. The differences between the options, and especially options #1 and #2 (i.e., columns 1 and 2) is in my opinion, rather nuanced because there seemed to be more similarities than differences.&lt;br /&gt;
* I feel that is wrong to try to shoehorn all the different project types into a single categorization. At the very least, I don't see how you can compare a documentation project that only is intended to have some tangible output every N years (e.g., the OWASP Top Ten, the OWASP Development Guide, etc.) with software projects where people are expecting regular updates. At best, that's an apples to oranges comparison. I'm not even sure we can measure it by &amp;quot;activity&amp;quot; because most of the documentation projects that only produce output every N years naturally are going to have a major lull in activity during the off years.&lt;br /&gt;
* I believe that the ''some'' consideration at least should be placed trying to understand the ''reasons'' that a project seems to be failing. As George Santayana said &amp;quot;Those who cannot remember the past are condemned to repeat it&amp;quot;, so if nothing else, we should be collecting &amp;quot;lessons learned&amp;quot; with failed / sunset projects to understand the reasons for their demise.&lt;br /&gt;
* I too have a major concern that if put to community vote, this will become a popularity contest. In fact, in each of the options I see that both WebScarab and ESAPI were listed as &amp;quot;sunset&amp;quot; status, yet if all projects were given a place on the ballot for an OWASP community vote, I would not be surprised if ESAPI ended up getting sufficient votes to remain a flagship project. Should that happen, one has to ask &amp;quot;What then?&amp;quot; People will likely vote for the projects that they know the most about and ESAPI is definitely one of the most visible and widely used of all OWASP projects.&lt;br /&gt;
* I believe the terms &amp;quot;flagship&amp;quot;, &amp;quot;lab&amp;quot;, and &amp;quot;incubator&amp;quot; each carry too much political baggage to be useful. I would propose instead that we talk about having &amp;quot;Tier 1&amp;quot;, &amp;quot;Tier 2&amp;quot;, and &amp;quot;Tier 3&amp;quot; projects, as &amp;quot;Tier n&amp;quot; is much more neutral terminology.&lt;br /&gt;
* If we do wish to keep the same &amp;quot;flagship&amp;quot;, &amp;quot;lab&amp;quot;, and &amp;quot;incubator&amp;quot; terms, is there any reason why we cannot just steal / reuse the Apache Foundations project structure and their criteria for what it takes to obtain and maintain such a label?&lt;br /&gt;
* One last comment, and I apologize in advance for this sounding more negative than constructive... I am disappointed that this is all that the staff and/or board came up with as the initial cut, especially considering that there have been email threads kicking these ideas around not for several months. My expectations we elected the board in part to make the difficult decisions that the community itself seemed to be unable to make, yet to me the majority of these options seem to end up with &amp;quot;punting the decisions back to the community&amp;quot; by calling for a community vote as to which projects are deserving of flagship status, which should be lab projects, etc. I think it is fine to as the community to vote on the ''general approach''. I do '''not''' think it is okay to have them choose the projects. Case in point, I'm sure that there are a number of great OWASP projects that I've heard of. As an example, because I am more of a builder / defender than a breaker, I am not familiar as I'd like to be with many of the breaker projects. And to be honest, if it came to a vote, I am not going to spend more than 5 or 10 minutes familiarizing myself with any new projects--even if there were some project &amp;quot;short list&amp;quot;. I am sure I am not the only one who operates that way, so in the end it will come down to familiarity rather than what is really best for OWASP in the long term.&lt;br /&gt;
* I will try to leave my other comments on the main wiki page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Kevin W. Wall|Kevin W. Wall]] ([[User talk:Kevin W. Wall|talk]]) 20:25, 7 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=173975</id>
		<title>Category:OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=173975"/>
				<updated>2014-05-01T03:10:37Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Added the new OWASP project graphic across all the other ESAPI project tabs.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Home  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design: &lt;br /&gt;
&lt;br /&gt;
*'''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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]. &lt;br /&gt;
&lt;br /&gt;
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.williams@owasp.org here]. &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
== Let's talk here  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-bulb.jpg]]'''ESAPI Communities''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-dev esapi-dev mailing list (this is the main list)] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-user esapi-user mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-php esapi-php mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-python esapi-python mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-ruby esapi-ruby mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-swingset esapi-swingset mailing list]&lt;br /&gt;
*[http://groups.google.com/group/cfesapi esapi-coldfusion mailing list]&lt;br /&gt;
&lt;br /&gt;
IRC Chat&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*Server: irc.freenode.net&lt;br /&gt;
*Channel: #esapi&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
== Got developer cycles?  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-waiting.JPG]]'''ESAPI Coding''' &lt;br /&gt;
&lt;br /&gt;
The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles. &lt;br /&gt;
 &lt;br /&gt;
*ESAPI for other languages developer onboarding instructions -- coming soon!&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
== Related resources  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-satellite.jpg]]{{Cheatsheet_Navigation}} &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Project Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The ESAPI project is sponsored by {{MemberLinks|link=http://www.aspectsecurity.com|logo=Aspect_logo_owasp.jpg}}&lt;br /&gt;
&lt;br /&gt;
= Downloads  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
[[Image:Asvs-step1.jpg]]'''1. About ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*Data sheet([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF],[http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word]) &lt;br /&gt;
*Project presentation ([http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt PowerPoint]) &lt;br /&gt;
*Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step2.jpg]]'''2. Get ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*[http://code.google.com/p/owasp-esapi-java/downloads/list ESAPI for Java Downloads] &lt;br /&gt;
*{{#switchtablink:.NET|ESAPI for .NET}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Classic ASP|ESAPI for Classic ASP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:PHP|ESAPI for PHP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:ColdFusion.2FCFML|ESAPI for ColdFusion &amp;amp; CFML}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Python|ESAPI for Python}}&amp;lt;br&amp;gt; &lt;br /&gt;
*[http://code.google.com/p/owasp-esapi-js/downloads/detail?name=esapi4js-0.1.3.zip ESAPI for Javascript]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
[[Image:Asvs-step3.jpg]]'''3. Learn ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*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)] &lt;br /&gt;
*The [[ESAPI Swingset|ESAPI Swingset]] sample application demonstrates how to leverage ESAPI to protect a web application. &lt;br /&gt;
*LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF]) &lt;br /&gt;
*ESAPI for Java interface documentation ([http://owasp-esapi-java.googlecode.com/svn/trunk_doc/index.html JavaDocs]) &lt;br /&gt;
*ESAPI for PHP interface documentation ([http://owasp-esapi-php.googlecode.com/svn/trunk_doc/latest/index.html phpdoc])&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= What I did with ESAPI  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --[mailto:jeff.williams@owasp.org Jeff]&lt;br /&gt;
&lt;br /&gt;
*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 &amp;quot;Adapter&amp;quot; control to wrap calls to the other ESAPI controls. --[mailto:mike.boberski@owasp.org Mike]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java’s &amp;quot;Logger&amp;quot; control to make it easier for a US Government customer to meet C&amp;amp;amp;A requirements. --[mailto:dave.wichers@owasp.org Dave]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --[mailto:jim.manico@owasp.org Jim]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java's &amp;quot;Authenticator&amp;quot; to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific &amp;quot;Adapter&amp;quot; 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]&lt;br /&gt;
&lt;br /&gt;
*I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --[mailto:yairr@liveperson.com Yair]&lt;br /&gt;
&lt;br /&gt;
*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]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Glossary  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:Asvs-letters.jpg]]'''ESAPI Terminology''' &lt;br /&gt;
&lt;br /&gt;
*'''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. &lt;br /&gt;
*'''built-in singleton design pattern''' - The &amp;quot;built-in&amp;quot; singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact. &lt;br /&gt;
*'''codec''' - ESAPI encoder/decoder reference implementations. &lt;br /&gt;
*'''core''' - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core. &lt;br /&gt;
*'''exception''' - ESAPI exception reference implementations. &lt;br /&gt;
*'''extended factory design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''extended singleton design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''filter''' - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''locator''' - The ESAPI security control interfaces include an &amp;quot;ESAPI&amp;quot; class that is commonly referred to as a &amp;quot;locator&amp;quot; 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). &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Java EE  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
= Dot NET  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_.NET_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
= Classic ASP  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_-_Classic_ASP_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
= PHP  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_-_PHP_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
= ColdFusion CFML =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---{{:GPC_Project_Details/OWASP_Enterprise_Security_API_-_ColdFusion/CFML | OWASP Project Identification Tab}}---&amp;gt; &lt;br /&gt;
{{:Projects/OWASP ESAPI for ColdFusion - CFML Project | Project About}}&lt;br /&gt;
&lt;br /&gt;
= Python =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_-_Python_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
= JavaScript =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_JavaScript_Version  | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
= Objective C =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:Projects/OWASP ESAPI Objective - C Project | Project About}}&lt;br /&gt;
&lt;br /&gt;
= Force com =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_-_Force.com_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
= Ruby =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:Projects/Owasp Esapi Ruby | Project About}} &lt;br /&gt;
&lt;br /&gt;
= Swingset =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
The ESAPI Swingset Project divides itself into sub-projects, i.e., [[Projects/OWASP ESAPI Swingset Interactive Project|Swingset Interactive]] and [[Projects/OWASP ESAPI Swingset Demo Project|Swingset Demo]]. &lt;br /&gt;
&lt;br /&gt;
= ESAPI C =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:Projects/OWASP ESAPI C Project | Project About}} &lt;br /&gt;
&lt;br /&gt;
= ESAPI CPP =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:Projects/OWASP ESAPI C++ Project | Project About}} &lt;br /&gt;
&lt;br /&gt;
= ESAPI Perl =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:Projects/OWASP ESAPI Perl Project | Project About}} &lt;br /&gt;
&lt;br /&gt;
= Project Details  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OWASP Builders}}&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=173974</id>
		<title>Category:OWASP Enterprise Security API</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Enterprise_Security_API&amp;diff=173974"/>
				<updated>2014-05-01T03:03:30Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Insert the DIV tag with the new OWASP graphic.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Home  =&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Allowing for language-specific differences, all OWASP ESAPI versions have the same basic design: &lt;br /&gt;
&lt;br /&gt;
*'''There is a set of security control interfaces.''' They define for example types of parameters that are passed to types of security controls.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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]. &lt;br /&gt;
&lt;br /&gt;
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.williams@owasp.org here]. &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
== Let's talk here  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-bulb.jpg]]'''ESAPI Communities''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-dev esapi-dev mailing list (this is the main list)] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-user esapi-user mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-php esapi-php mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/esapi-python esapi-python mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-ruby esapi-ruby mailing list] &lt;br /&gt;
*[https://lists.owasp.org/mailman/listinfo/owasp-esapi-swingset esapi-swingset mailing list]&lt;br /&gt;
*[http://groups.google.com/group/cfesapi esapi-coldfusion mailing list]&lt;br /&gt;
&lt;br /&gt;
IRC Chat&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*Server: irc.freenode.net&lt;br /&gt;
*Channel: #esapi&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
== Got developer cycles?  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-waiting.JPG]]'''ESAPI Coding''' &lt;br /&gt;
&lt;br /&gt;
The ESAPI project is always on the lookout for volunteers who are interested in contributing developer cycles. &lt;br /&gt;
 &lt;br /&gt;
*ESAPI for other languages developer onboarding instructions -- coming soon!&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
== Related resources  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-satellite.jpg]]{{Cheatsheet_Navigation}} &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Project Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The ESAPI project is sponsored by {{MemberLinks|link=http://www.aspectsecurity.com|logo=Aspect_logo_owasp.jpg}}&lt;br /&gt;
&lt;br /&gt;
= Downloads  =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
[[Image:Asvs-step1.jpg]]'''1. About ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*Data sheet([http://www.owasp.org/images/8/81/Esapi-datasheet.pdf PDF],[http://www.owasp.org/images/3/32/Esapi-datasheet.doc Word]) &lt;br /&gt;
*Project presentation ([http://owasp-esapi-java.googlecode.com/files/OWASP%20ESAPI.ppt PowerPoint]) &lt;br /&gt;
*Video presentation ([http://www.youtube.com/watch?v=QAPD1jPn04g YouTube])&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-step2.jpg]]'''2. Get ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*[http://code.google.com/p/owasp-esapi-java/downloads/list ESAPI for Java Downloads] &lt;br /&gt;
*{{#switchtablink:.NET|ESAPI for .NET}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Classic ASP|ESAPI for Classic ASP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:PHP|ESAPI for PHP}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:ColdFusion.2FCFML|ESAPI for ColdFusion &amp;amp; CFML}}&amp;lt;br&amp;gt; &lt;br /&gt;
*{{#switchtablink:Python|ESAPI for Python}}&amp;lt;br&amp;gt; &lt;br /&gt;
*[http://code.google.com/p/owasp-esapi-js/downloads/detail?name=esapi4js-0.1.3.zip ESAPI for Javascript]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
[[Image:Asvs-step3.jpg]]'''3. Learn ESAPI''' &lt;br /&gt;
&lt;br /&gt;
*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)] &lt;br /&gt;
*The [[ESAPI Swingset|ESAPI Swingset]] sample application demonstrates how to leverage ESAPI to protect a web application. &lt;br /&gt;
*LAMP should be spelled LAMPE ([http://www.owasp.org/images/a/ac/LAMP_Should_be_Spelled_LAMPE.pdf PDF]) &lt;br /&gt;
*ESAPI for Java interface documentation ([http://owasp-esapi-java.googlecode.com/svn/trunk_doc/index.html JavaDocs]) &lt;br /&gt;
*ESAPI for PHP interface documentation ([http://owasp-esapi-php.googlecode.com/svn/trunk_doc/latest/index.html phpdoc])&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= What I did with ESAPI  =&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java with Google AppEngine. I used it for simple validation and encoding. --[mailto:jeff.williams@owasp.org Jeff]&lt;br /&gt;
&lt;br /&gt;
*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 &amp;quot;Adapter&amp;quot; control to wrap calls to the other ESAPI controls. --[mailto:mike.boberski@owasp.org Mike]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java’s &amp;quot;Logger&amp;quot; control to make it easier for a US Government customer to meet C&amp;amp;amp;A requirements. --[mailto:dave.wichers@owasp.org Dave]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java to build a low risk web application that was over 250,000+ lines of code in size. --[mailto:jim.manico@owasp.org Jim]&lt;br /&gt;
&lt;br /&gt;
*I used ESAPI for Java's &amp;quot;Authenticator&amp;quot; to replace a spaghetti-like mechanism in a legacy financial services web application. In hindsight I should have used the application-specific &amp;quot;Adapter&amp;quot; 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]&lt;br /&gt;
&lt;br /&gt;
*I use ESAPI to be our security package for all our product, this way we can set one standard for all products. --[mailto:yairr@liveperson.com Yair]&lt;br /&gt;
&lt;br /&gt;
*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]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Glossary  =&lt;br /&gt;
&lt;br /&gt;
[[Image:Asvs-letters.jpg]]'''ESAPI Terminology''' &lt;br /&gt;
&lt;br /&gt;
*'''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. &lt;br /&gt;
*'''built-in singleton design pattern''' - The &amp;quot;built-in&amp;quot; singleton design pattern refers to the replacement of security control reference implementations with your own implementations. ESAPI interfaces are otherwise left intact. &lt;br /&gt;
*'''codec''' - ESAPI encoder/decoder reference implementations. &lt;br /&gt;
*'''core''' - The ESAPI interfaces and reference implementations that are not intended to be replaced with enterprise-specific versions are called the ESAPI Core. &lt;br /&gt;
*'''exception''' - ESAPI exception reference implementations. &lt;br /&gt;
*'''extended factory design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''extended singleton design pattern''' - The &amp;quot;extended&amp;quot; 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. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''filter''' - In ESAPI for Java, there is additionally an HTTP filter that can be called separately from the other controls. &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''locator''' - The ESAPI security control interfaces include an &amp;quot;ESAPI&amp;quot; class that is commonly referred to as a &amp;quot;locator&amp;quot; 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). &lt;br /&gt;
*'''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. &lt;br /&gt;
*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Java EE  =&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_Java_EE_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
= Dot NET  =&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_.NET_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
= Classic ASP  =&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_-_Classic_ASP_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
= PHP  =&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_-_PHP_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
= ColdFusion CFML =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---{{:GPC_Project_Details/OWASP_Enterprise_Security_API_-_ColdFusion/CFML | OWASP Project Identification Tab}}---&amp;gt; &lt;br /&gt;
{{:Projects/OWASP ESAPI for ColdFusion - CFML Project | Project About}}&lt;br /&gt;
&lt;br /&gt;
= Python =&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_-_Python_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
= JavaScript =&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_JavaScript_Version  | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
= Objective C =&lt;br /&gt;
&lt;br /&gt;
{{:Projects/OWASP ESAPI Objective - C Project | Project About}}&lt;br /&gt;
&lt;br /&gt;
= Force com =&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API_-_Force.com_Version | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
= Ruby =&lt;br /&gt;
&lt;br /&gt;
{{:Projects/Owasp Esapi Ruby | Project About}} &lt;br /&gt;
&lt;br /&gt;
= Swingset =&lt;br /&gt;
&lt;br /&gt;
The ESAPI Swingset Project divides itself into sub-projects, i.e., [[Projects/OWASP ESAPI Swingset Interactive Project|Swingset Interactive]] and [[Projects/OWASP ESAPI Swingset Demo Project|Swingset Demo]]. &lt;br /&gt;
&lt;br /&gt;
= ESAPI C =&lt;br /&gt;
&lt;br /&gt;
{{:Projects/OWASP ESAPI C Project | Project About}} &lt;br /&gt;
&lt;br /&gt;
= ESAPI CPP =&lt;br /&gt;
&lt;br /&gt;
{{:Projects/OWASP ESAPI C++ Project | Project About}} &lt;br /&gt;
&lt;br /&gt;
= ESAPI Perl =&lt;br /&gt;
&lt;br /&gt;
{{:Projects/OWASP ESAPI Perl Project | Project About}} &lt;br /&gt;
&lt;br /&gt;
= Project Details  =&lt;br /&gt;
&lt;br /&gt;
{{:GPC_Project_Details/OWASP_Enterprise_Security_API | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OWASP Builders}}&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=GSoC2014_Ideas&amp;diff=168035</id>
		<title>GSoC2014 Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=GSoC2014_Ideas&amp;diff=168035"/>
				<updated>2014-02-13T02:45:09Z</updated>
		
		<summary type="html">&lt;p&gt;Kevin W. Wall: Fix typos in other Hackademic Challenge ideas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OWASP Project Requests==&lt;br /&gt;
&lt;br /&gt;
=== OWASP Hackademic Challenges - New challenges and Improvements to the existing ones ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
The challenges that have been implemented so far include: web application challenges covering several vulnerabilities included in the OWASP Top 10, cryptographic challenges, and entire virtual machines including several vulnerabilities.&lt;br /&gt;
New challenges need to be created in order to cover a broader set of vulnerabilities.&lt;br /&gt;
Also existing challenges can be modified to accept a broader set of valid answers, e.g. by using regular expressions.&lt;br /&gt;
&lt;br /&gt;
Ideas on the project:&lt;br /&gt;
&lt;br /&gt;
* Simulated simple buffer overflows&lt;br /&gt;
* SQL injections&lt;br /&gt;
* Man in the middle simulation&lt;br /&gt;
* Bypassing regular expression filtering&lt;br /&gt;
* Your idea here&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
New cool challenges&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Comfortable in PHP, HTML and possibly Javascript. Good understanding of Application Security and related vulnerabilities. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' Konstantinos Papapanagiotou, Spyros Gasteratos - Hackademic Challenges Project Leaders&lt;br /&gt;
&lt;br /&gt;
=== OWASP Hackademic Challenges - Source Code testing environment ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
Existing challenges are based on a dynamic application testing concept. We would like to work on a project that will give the capability to the attacker to review a vulnerable piece of source code, make corrections and see the result in a realistic (but yet safe) runtime environment. The code can either be run if needed or tested for correctness and security. The implementation challenges of such a project can be numerous, including creating a realistic but also secure environment, testing submitted solutions and grading them in an automatic manner. At the same time there are now numerous sites that support submitting code and then simulate or implement a compiler's functionality.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
A source code testing and improvement environment where a user will be able to review, improve and test the result of a piece of source code.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Comfortable in PHP, HTML and possibly Java. Good understanding of Application Security, source code analysis and related vulnerabilities. &lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' Konstantinos Papapanagiotou, Spyros Gasteratos - Hackademic Challenges Project Leaders&lt;br /&gt;
&lt;br /&gt;
=== OWASP Hackademic Challenges - Challenge Sandbox ===&lt;br /&gt;
&lt;br /&gt;
Now, in order to create a challenge, one has to validate the solution with regular expressions (or just plaintext comparison) and report success or failure to the backend,&lt;br /&gt;
we'd like the ability to write a normal vulnerable web application as a challenge and leave it to hackademic to make sure that the server is not affected.&lt;br /&gt;
Since this is probably the most difficult task proposed, if you are considering it, please get in touch with us early on so we can discuss about it and plan it correctly.&lt;br /&gt;
&lt;br /&gt;
Ideas on the project:&lt;br /&gt;
&lt;br /&gt;
''' *Administrator's point of view* '''&lt;br /&gt;
&lt;br /&gt;
Create an infrastructure that spawns virtual environments for users while keeping the load reasonable on the server(s).&lt;br /&gt;
Or configure apache,php,mysql in a way that allows for multiple instances of the programms to run in parallel completely seperated from the rest of the server.&lt;br /&gt;
The student is expected to provide configuration scripts that do the above&lt;br /&gt;
&lt;br /&gt;
''' *Coder's Way* '''&lt;br /&gt;
&lt;br /&gt;
This is better explained with an example:&lt;br /&gt;
In order to create an sql injection challenge one should be able to call a common unsecure mysql execute statement function.&lt;br /&gt;
The student can override common functions like this providing their own implementation of a very temporary database (based on flat files or nosql solutions e.t.c.).&lt;br /&gt;
The new functions should be able to detect the sqli and apply its results in a secure way(if the student drops a table no actual tables should be dropped but the table should not be visible to the student anymore).&lt;br /&gt;
&lt;br /&gt;
''' * Your solution here * '''&lt;br /&gt;
&lt;br /&gt;
The above solutions are by no way complete,their intention is to start you thinking.&lt;br /&gt;
This is a difficult task so if you consider takling it talk to us early on so we can reach a good solution which is possible in the GSoC timeframe.&lt;br /&gt;
&lt;br /&gt;
''' Expected results '''&lt;br /&gt;
&lt;br /&gt;
You should be able to run a big enough subset of OWASP WebGoat PHP with minimal modification as a Hackademic Challenge&lt;br /&gt;
&lt;br /&gt;
=== OWASP Hackademic Challenges - CMS improvements ===&lt;br /&gt;
&lt;br /&gt;
'''Brief Explanation:'''&lt;br /&gt;
&lt;br /&gt;
The new CMS was created during last year's GSOC. We have received feedback from users that suggest various improvements regarding functionality e.g. better user, teacher and challenges management. There are also some security improvements that are needed and in general any functionality that adds up to the educational nature of the project is more than welcome.&lt;br /&gt;
&lt;br /&gt;
Ideas on this project:&lt;br /&gt;
&lt;br /&gt;
* ''' Template''' *&lt;br /&gt;
&lt;br /&gt;
Since it's creation the project has received a good number of new features, but the visual/ux/ui part has never gotten much love.&lt;br /&gt;
It would be good if we had a new template with proper ui design.&lt;br /&gt;
&lt;br /&gt;
* '''Questionaire creation plugin''' *&lt;br /&gt;
&lt;br /&gt;
We'd like the admin to be able to create questionaires, assign rules for each question (e.g. correct answer +2pts incorrect answer -2, no answer 0)  and assign them to students as homework/exams.&lt;br /&gt;
The grading can either be done automatically (for multiple choice) or be submitted to the creator of the questionaire.&lt;br /&gt;
&lt;br /&gt;
* '''Ability to show different articles on the user's home screen''' &lt;br /&gt;
&lt;br /&gt;
Now each user is served the latest article in her/his home screen. We need the ability for either  the teacher/admin to be able to define what article each class is served.&lt;br /&gt;
&lt;br /&gt;
* '''Gamification of the user's progress''' *&lt;br /&gt;
&lt;br /&gt;
A series of plugins and a template which allow the user to earn badges as they solve challenges and a better visual representation of their progress.&lt;br /&gt;
&lt;br /&gt;
* '''Ability to define series of challenges'''&lt;br /&gt;
&lt;br /&gt;
The teacher/admin should be able to define a series of challenges (e.g. 2,5,3,1) which are meant to be solved in that order and if one is not solved then the student can't try the next one.&lt;br /&gt;
&lt;br /&gt;
* ''' Tagging of articles, users, challenges '''&lt;br /&gt;
&lt;br /&gt;
A user should be able to put tags on articles and challenges if he is a student and on users, classes, articles and challenges if he is a teacher.&lt;br /&gt;
Also the user should be able to search according to the tags.&lt;br /&gt;
&lt;br /&gt;
* '''Your idea here''' &lt;br /&gt;
&lt;br /&gt;
We welcome new ideas to make the project look awesome.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
&lt;br /&gt;
New features  and security improvements on the CMS part of the project.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisites:'''&lt;br /&gt;
&lt;br /&gt;
Comfortable in PHP and HTML. Good understanding of Application Security and related vulnerabilities if you undertake security improvements. &lt;br /&gt;
&lt;br /&gt;
'''Mentors:''' Konstantinos Papapanagiotou, Spyros Gasteratos - Hackademic Challenges Project Leaders&lt;br /&gt;
&lt;br /&gt;
===OWASP WebGoatPHP===&lt;br /&gt;
'''Description:'''&lt;br /&gt;
[[Webgoat]] is a deliberately insecure open source software made by OWASP using Java programming language. It has a set of challenges and steps, each providing the user with one or more web application vulnerability which user tries to solve. There are also hints and auto-detection of correct solutions. &lt;br /&gt;
Since Java is not the most common web application programming language, and it doesn't have many of the bugs other languages such as PHP have when it comes to security, OWASP has [[OWASP_WebGoat_Reboot2012|dedicated in 2012]] an amount of $5000 for promotion of WebGoatPHP.&lt;br /&gt;
&lt;br /&gt;
If you want to know more about WebGoatPHP, I suggest downloading and giving WebGoat a try. It is one of OWASP prides (about 200000 downloads).&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:''' WebGoatPHP will be a deliberately insecure PHP web application which operates in different modes. A contest mode where challenges are selected by an admin and the system starts a contest. Admins can open up hints for participants and manage everything. A workshop mode, where the educator has control of the most of application features, as well as feedback of user activities and is ideal for learning environments, and a single mode where someone can browse challenges and solve them.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge prerequisite:''' You just need to know PHP. You are supposed to define flawed systems, which is not the hardest thing. Familiarity with web application security and SQL is recommended.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' [[User:Abbas Naderi|Abbas Naderi]]&lt;br /&gt;
&lt;br /&gt;
===OWASP CSRF Guard===&lt;br /&gt;
'''Description:''' [[Cross-Site_Request_Forgery_(CSRF)|CSRF]] is a complicated yet very effective web attack. The most important thing about CSRF is that it's hard to properly defend against it, specially when it comes to Web 2 and AJAX. We have had discussions on means of mitigating CSRF for years at OWASP, and are now ready to develop libraries for it. Many of the key ideas of this library can be found at [http://www.cs.sunysb.edu/~rpelizzi/jcsrf.pdf].&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:''' A transparent Apache 2 module properly mitigating all POST CSRF attacks, as well as a lightweight PHP library doing the same.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge prerequisites:''' Knowing CSRF and at least one way to defend against it, PHP, C/C++, Linux.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' [[User:Abbas Naderi|Abbas Naderi]], Rahul Chaudhary &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===OWASP PHP Security Project===&lt;br /&gt;
&lt;br /&gt;
'''Description:'''&lt;br /&gt;
OWASP PHP Security project plans to gather around secure PHP libraries, and provide a full featured framework of libraries for secure web applications in PHP, both as separate de-coupled libraries and as a whole secure web application framework. Many aspects of this project are already handled, and are being added to OWASP.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results: ''' Result of this project is much more security among PHP applications. Most PHP applications are vulnerable and there's no central approach to secure them (due to open source nature). Many people look at OWASP for such information.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge prerequisite:''' Anyone with adequate PHP programming language experience (possibly web application development in PHP).  There are hard and easy parts of this project. For tougher parts, familiarity with security concepts, advanced SQL, and advanced PHP and web server configuration is required. &lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' [[User:Abbas Naderi|Abbas Naderi]], Rahul Chaudhary , Johanna Curiel&lt;br /&gt;
&lt;br /&gt;
===OWASP RBAC Project===&lt;br /&gt;
'''Description:''' ''For the last 6 years, improper access control has been the issue behind two of the Top Ten lists''. &lt;br /&gt;
&lt;br /&gt;
RBAC stands for Role Based Access Control and is the de-facto access control and authorization standard. It simplifies access control and its maintenance for small and enterprise systems alike. NIST RBAC standard has four levels, the second level hierarchical RBAC is intended for this project.&lt;br /&gt;
&lt;br /&gt;
Unfortunately because of many performance and development problems, no suitable RBAC implementation was available until recently, so developers and admins mostly used ACLs and other forms of simple access control methods, which leads to broken and unmaintainable access control over the time. &lt;br /&gt;
&lt;br /&gt;
OWASP provides the RBAC project, as a stand-alone library with very fast access control checks and standard mature code-base. Currently [[PHPRBAC]] which is the PHP version of the RBAC project is released.&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:''' Standard NIST level 2 hierarchical RBAC libraries for different programming languages, specially web-based ones such as C/C++/Java/ASP/ASPX/Python/Perl/etc.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge prerequisite:''' Good SQL knowledge, library development schemes, familiarity with one of the programming languages.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' [[User:Abbas Naderi|Abbas Naderi]], Rahul Chaudhary &lt;br /&gt;
&lt;br /&gt;
'''Skill Level:''' Advanced&lt;br /&gt;
&lt;br /&gt;
For more info, visit [http://phprbac.net phprbac.net]&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Zest support ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
The Mozilla foundation has done great work with the Zest iniciative, this provides a great automated mechanism to replicate exploitation of security vulnerabilities in a format that makes tool communication easier: For example, ZAP supports Zest, so if OWTF can create a Zest script for a vulnerability in an automated fashion, this may in turn be easier to import into ZAP and other tools.&lt;br /&gt;
&lt;br /&gt;
[https://developer.mozilla.org/en-US/docs/Zest More information on Zest can be found here]&lt;br /&gt;
&lt;br /&gt;
The solution will ideally be as simple and extensible as possible so that the codebase does not become unmaintanable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* High performance&lt;br /&gt;
* Reliability&lt;br /&gt;
* Ease of use&lt;br /&gt;
* Test cases&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Some previous exposure to security concepts, penetration testing, Python and development in general is important for this project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Improved Plug-n-Hack support ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
The Mozilla foundation has done great work with the Plug-n-Hack standard, this provides greatly improved interaction with the web browser.&lt;br /&gt;
Although OWTF already supports Plug-n-Hack for MiTM purposes, there are many other features that could be implemented to leaverage Plug-n-Hack.&lt;br /&gt;
The aim of this project would be to try to cover as much as possible from the Plug-n-Hack standard as relevant to OWTF.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=pYFtLA2yTR8 Please see this demo to see the newest Plug-n-Hack additions]&lt;br /&gt;
&lt;br /&gt;
[https://blog.mozilla.org/security/2013/08/22/plug-n-hack/ For more information about plug and hack please see this]&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* High performance&lt;br /&gt;
* Reliability&lt;br /&gt;
* Ease of use&lt;br /&gt;
* Test cases&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python, experience is very welcome but not strictly necessary, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mentor: Abraham Aranguren - OWASP OWTF Project Leader - Contact: name.surname@owasp.org'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Stateful Browser with configurable authentication ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
The automated functionality of OWASP OWTF is currently limited to the non-authenticated portion of a website. We would like to implement authentication support through:&lt;br /&gt;
&lt;br /&gt;
1) OWTF parameters&lt;br /&gt;
&lt;br /&gt;
2) Configuration files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
What we would like to do here is to leverage the [http://wwwsearch.sourceforge.net/mechanize/ powerful mechanize python library] and build at least support for the following authentication options:&lt;br /&gt;
* Basic authentication [https://github.com/7a/owtf/issues/9 Already implemented here]&lt;br /&gt;
* Cookie based authentication&lt;br /&gt;
* Form-based authentication&lt;br /&gt;
&lt;br /&gt;
Additionally, we would welcome here a feature to detect when the user has been logged off, to log OWTF back in again before retrying the next request. &amp;lt;-- The proxy is probably a better place to implement this since external tools would also benefit from this. This feature will have to be coordinated with the MiTM proxy feature (already implemented).&lt;br /&gt;
&lt;br /&gt;
The solution will ideally be as simple and extensible as possible so that the codebase does not become unmaintanable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* High performance&lt;br /&gt;
* Reliability&lt;br /&gt;
* Ease of use&lt;br /&gt;
* Test cases&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python, experience with the mechanize library or HTTP state is very welcome but not strictly necessary, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mentor: Abraham Aranguren - OWASP OWTF Project Leader - Contact: name.surname@owasp.org'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - SQL database ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
OWASP OWTF scans may take a large amount of disk space due to saving information in text files, we would like to add an option to use a SQL database, probably using the sqlalchemy python library.&lt;br /&gt;
* Keep the current text file format as an option&lt;br /&gt;
* Add a database storage option using the sqlalchemy library &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* Reliability: Both with the sql database option and the text file options.&lt;br /&gt;
* Test cases&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python, sqlalchemy experience would be beneficial for this&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mentor: Abraham Aranguren - OWASP OWTF Project Leader - Contact: name.surname@owasp.org'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Unit Test Framework ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
As OWASP OWTF grows it makes sense to build custom unit tests to automatically re-test that functionality has not been broken. In this project we would like to improve the existing unit testing framework so that creating OWASP OWTF unit tests is as simple as possible and all missing tests for new functionality are created. The goal of this project is to update the existing Unit Test Framework to create all missing tests as well as improve the existing ones to verify OWASP OWTF functionality in an automated fashion.&lt;br /&gt;
&lt;br /&gt;
The Unit Test Framework should be able to:&lt;br /&gt;
* Define test categories: For example, &amp;quot;all plugins&amp;quot;, &amp;quot;web plugins&amp;quot;, &amp;quot;aux plugins&amp;quot;, &amp;quot;test framework core&amp;quot;, etc. (please see [http://www.slideshare.net/abrahamaranguren/introducing-owasp-owtf-workshop-brucon-2012 this presentation] for more background)&lt;br /&gt;
* Allow to regression test isolated plugins (i.e. &amp;quot;only test _this_ plugin&amp;quot;)&lt;br /&gt;
* Allow to regression test by test categories (i.e. &amp;quot;test only web plugins&amp;quot;)&lt;br /&gt;
* Allow to regression test everything (i.e. plugins + framework core: &amp;quot;test all&amp;quot;)&lt;br /&gt;
* Produce meaningful statistics and easy to navigate logs to identify which tests failed and ideally also hints on how to potentially fix the problem where possible&lt;br /&gt;
* Allow for easy creation of _new_ unit tests specific to OWASP OWTF&lt;br /&gt;
* Allow for easy modification and maintenance of _existing_ unit tests specific to OWASP OWTF&lt;br /&gt;
* Perform well so that we can run as many tests as possible in a given period of time&lt;br /&gt;
* Potentially leverage the python unittest library: [http://docs.python.org/2/library/unittest.html http://docs.python.org/2/library/unittest.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* Performant and automated regression testing&lt;br /&gt;
* Unit tests for a wide coverage of OWASP OWTF, ideally leveraging the Unit Test Framework where possible&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python, experience with unit tests and automated regression testing would be beneficial, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mentor: Abraham Aranguren - OWASP OWTF Project Leader - Contact: name.surname@owasp.org'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OWASP OWTF - Python version upgrade and compatibility ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
Right now OWASP OWTF works on Python 2.6.5-2.7.3 (might work on surrounding versions too), the aim of this project would be to change the existing codebase so that it additionally works on newer python versions too, for example Python 3.3.&lt;br /&gt;
The intention here is to take advantage of improvements in newer python versions when available while letting OWASP OWTF work on older python versions too (i.e. 2.6.5) if that is the only option available.&lt;br /&gt;
The solution will ideally be as simple and extensible as possible so that the codebase does not become unmaintanable due to compatibility.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For background on OWASP OWTF please see: [https://www.owasp.org/index.php/OWASP_OWTF https://www.owasp.org/index.php/OWASP_OWTF]&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* Performant and reliable OWASP OWTF execution on multiple python versions, in particular the latest python version (i.e. 3.3.x) as well as the previous 2.6.5-2.7.3 range.&lt;br /&gt;
* Test cases&lt;br /&gt;
* Good documentation&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Python, experience with python version upgrades and python version compatibility implementations, some previous exposure to security concepts and penetration testing is welcome but not strictly necessary as long as there is will to learn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Mentor: Abraham Aranguren - OWASP OWTF Project Leader - Contact: name.surname@owasp.org'''&lt;br /&gt;
&lt;br /&gt;
===OWASP PCI TOOLKIT===&lt;br /&gt;
[[File:Pci-toolkit-items-small.gif]]&amp;lt;br&amp;gt; OWASP PCI toolkit is an Open Source project built using Google Engine App, that will help organizations scope the PCI-DSS requirements for their System Components. The Payment Card Industry Data Security Standard (PCI DSS) is a proprietary information security standard for organizations that handle cardholder information for the major debit, credit, prepaid, e-purse, ATM, and POS cards.&lt;br /&gt;
&lt;br /&gt;
In order to comply with this standard, organizations need to understand the PCI-DSS requirements. Many of these requirements use OWASP guidelines as their baseline.&lt;br /&gt;
 &lt;br /&gt;
The OWASP PCI toolkit is a project focused on helping organization understand how OWASP guidelines apply to the PCI-DSS requirements.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
4 complete modules built as a Google App Engine: &lt;br /&gt;
http://pci-toolkit.appspot.com/&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
Skill Level: Easy-Medium&lt;br /&gt;
Python, HTML, CSS, Google App Engine.&lt;br /&gt;
&lt;br /&gt;
Affinity with financial institutions, Web security and credit card-online transactions&lt;br /&gt;
&lt;br /&gt;
'''OWASP project page:'''&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Category:OWASP_PCI_Project&lt;br /&gt;
&lt;br /&gt;
Mentor: Johanna Curiel - emai: firstname.lastname@owasp.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OWASP iGoat ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
Right now OWASP iGoat works fine as a full universal iOS app on iPhone and iPads up to iOS 6.x and Xcode 4.x. It needs to be updated to properly function under iOS 7.x and Xcode 5.x, which will require some code maintenance, GUI changes, and so on.&lt;br /&gt;
&lt;br /&gt;
Although it is primarily maintenance items that need the updating, the student will gain an intimate familiarity with how the iGoat platform works, including how to write and plug-in new exercise modules. Writing additional exercises, with all due credit, will also be encouraged in an optional second phase of this project.&lt;br /&gt;
&lt;br /&gt;
For background on OWASP iGoat please see: https://www.owasp.org/index.php/OWASP_iGoat_Project&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* iGoat functions properly in all current aspects under iOS 7.x, compiled under Xcode 5.x.&lt;br /&gt;
* All GUI, buttons, and other presentation layer aspects of iGoat are compliant with iOS 7.x look and feel.&lt;br /&gt;
* (Optionally) write one or more new iGoat exercise modules, based on existing design descriptions to be provided by the project mentor.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
iOS app development in Xcode using Objective C will be quite necessary. Familiarity with iOS 7.x user interface updates additionally helpful.&lt;br /&gt;
&lt;br /&gt;
'''Mentor: Ken van Wyk - OWASP iGoat Project Leader - Contact: ken@krvw.com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://www.owasp.org/index.php/ZAP OWASP ZAP] - Advanced access control testing ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
Access control testing is typically difficult for security tools to automate. However previous Google Summer of Code projects have added session, authentication, user and role handling to ZAP, which provide an ideal basis for advanced access control testing.&lt;br /&gt;
&lt;br /&gt;
ZAP is the [https://www.ohloh.net/orgs/OWASP most active OWASP project] and was voted the [http://www.toolswatch.org/2013/12/2013-top-security-tools-as-voted-by-toolswatch-org-readers/ most popular security tool of 2013] by ToolsWatch.org reeaders.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
This development would allow (semi) automated access control testing by:&lt;br /&gt;
* Maintaining and displaying different site trees (application maps) for different users/roles&lt;br /&gt;
* Providing tools which access all of the content accessible via one user/role which should not be accessible via another user/role&lt;br /&gt;
* Ideally allow resources to be tied to users/roles to allow enable horizontal privilege testing &lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential. &lt;br /&gt;
&lt;br /&gt;
'''Mentor: [https://www.owasp.org/index.php/User:Simon_Bennetts Simon Bennetts] - OWASP ZAP Project Leader'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://www.owasp.org/index.php/ZAP OWASP ZAP] - Scripted Add-ons ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
ZAP supports all JSR 223 scripting languages, but only for a limited number of purposes. This development would allow 'full' add-ons to be written in any JSR 223 language.&lt;br /&gt;
&lt;br /&gt;
ZAP is the [https://www.ohloh.net/orgs/OWASP most active OWASP project] and was voted the [http://www.toolswatch.org/2013/12/2013-top-security-tools-as-voted-by-toolswatch-org-readers/ most popular security tool of 2013] by ToolsWatch.org reeaders.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* Users will be able to 'full' add-ons in any JSR 233 scripting language&lt;br /&gt;
* A set of example add-ons demonstrating as much functionality as possible should be developed in at least Java Script, Jython and Jruby.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential. &lt;br /&gt;
&lt;br /&gt;
'''Mentor: [https://www.owasp.org/index.php/User:Simon_Bennetts Simon Bennetts] - OWASP ZAP Project Leader'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://www.owasp.org/index.php/ZAP OWASP ZAP] - AMF Support ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
ZAP has only very limited support for AMF and does not provide an effective graphical representation of it. &lt;br /&gt;
This development will add full support for AMF.&lt;br /&gt;
&lt;br /&gt;
ZAP is the [https://www.ohloh.net/orgs/OWASP most active OWASP project] and was voted the [http://www.toolswatch.org/2013/12/2013-top-security-tools-as-voted-by-toolswatch-org-readers/ most popular security tool of 2013] by ToolsWatch.org reeaders.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
* De-serialise and display AMF messages in ZAP graphically (based on existing POC code)&lt;br /&gt;
* Expose the AMF data as parameters so that ZAP can scan them&lt;br /&gt;
* Add new AMF specific scan rules as required&lt;br /&gt;
* Implement in a way that makes it easier for ZAP to support other technologies (such as Java applets, Silverlight) &lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential. &lt;br /&gt;
&lt;br /&gt;
'''Mentor: Colm O'Flaherty - OWASP ZAP Core team'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://www.owasp.org/index.php/ZAP OWASP ZAP] - Web Service (SOAP) scanning ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
ZAP has only very limited support for web service scanning and has no understanding of WSDL.&lt;br /&gt;
This development will add full support for exploring and scanning SOAP based web services.&lt;br /&gt;
&lt;br /&gt;
ZAP is the [https://www.ohloh.net/orgs/OWASP most active OWASP project] and was voted the [http://www.toolswatch.org/2013/12/2013-top-security-tools-as-voted-by-toolswatch-org-readers/ most popular security tool of 2013] by ToolsWatch.org reeaders.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
The development will allow ZAP to parse WSDL and populate the Sites tree with all of the end points defined. It should also enhance the ZAP scanning capabilities to specifically attack the end points for as wide a range of vulnerabilities. Test cases should be written in [http://code.google.com/p/wavsep/ wavsep] format and contributed back to that project.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential. &lt;br /&gt;
&lt;br /&gt;
'''Mentor: [https://www.owasp.org/index.php/User:Simon_Bennetts Simon Bennetts] - OWASP ZAP Project Leader'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://www.owasp.org/index.php/ZAP OWASP ZAP] - As a long running service ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
ZAP started out as a GUI only desktop tool. It now supports a headless 'daemon' mode but it is still not suitable for running as a long running service. This will require much heavier use of the database, and ideally will allow different databases to be used. &lt;br /&gt;
&lt;br /&gt;
ZAP is the [https://www.ohloh.net/orgs/OWASP most active OWASP project] and was voted the [http://www.toolswatch.org/2013/12/2013-top-security-tools-as-voted-by-toolswatch-org-readers/ most popular security tool of 2013] by ToolsWatch.org reeaders.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
ZAP able to run as a (very) long running service. There must be no memory leaks code and ideally there should still be very little latency while proxying through ZAP.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential. &lt;br /&gt;
&lt;br /&gt;
'''Mentor: [https://www.owasp.org/index.php/User:Simon_Bennetts Simon Bennetts] - OWASP ZAP Project Leader'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://www.owasp.org/index.php/ZAP OWASP ZAP] - GUI unit test framework ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
&lt;br /&gt;
While ZAP does have some low level unit tests it doesnt have any unit tests for the UI. This means that sometimes changes can break the UI without being immediately apparent.&lt;br /&gt;
&lt;br /&gt;
ZAP is the [https://www.ohloh.net/orgs/OWASP most active OWASP project] and was voted the [http://www.toolswatch.org/2013/12/2013-top-security-tools-as-voted-by-toolswatch-org-readers/ most popular security tool of 2013] by ToolsWatch.org reeaders.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
&lt;br /&gt;
A unit test framework which will allow the GUI to be easily tested. A set of unit tests which test the main GUI features and can be easily extended.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prerequisite:'''&lt;br /&gt;
&lt;br /&gt;
ZAP is written in Java, so a good knowledge of this language is recommended, as is knowledge of HTML. Some knowledge of application security would be useful, but not essential. &lt;br /&gt;
&lt;br /&gt;
'''Mentor: [https://www.owasp.org/index.php/User:Simon_Bennetts Simon Bennetts] - OWASP ZAP Project Leader'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://www.owasp.org/index.php/ESAPI OWASP ESAPI] 2.x - Security Configuration ===&lt;br /&gt;
&lt;br /&gt;
'''Brief explanation:'''&lt;br /&gt;
There are currently more than a half-dozen of open Google Issues in ESAPI regarding the security configuration component (e.g., see [http://code.google.com/p/owasp-esapi-java/issues/list?q=component%3DSecurityConfiguration ESAPI Security Configuration Issues]).  &lt;br /&gt;
&lt;br /&gt;
The ESAPI interface for its configuration (SecurityConfiguration) is overly complicated; it has a 'getter' method specific to almost every ESAPI configuration property. The rules for how and where the ESAPI.properties file is found are overly complicated making questions about it one of the most frequently asked questions on forums such as Stack Exchange and the ESAPI mailing lists. This complication leads to a unduly intricate, non-modular reference implementation (DefaultSecurityConfiguration) that makes it difficult to extend in terms of new functionality.&lt;br /&gt;
&lt;br /&gt;
A new, simpler security configuration interface and implementation is needed. Such an implementation would not only be useful for ESAPI 2.x, but could very well be used to build the configurator needed by ESAPI 3.  &lt;br /&gt;
&lt;br /&gt;
As part of this GSoC project, expectations would not only to address as many of the open security configuration issues as possible, but to also go beyond this to allow a framework for additional extensions in terms of functionality.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
1) An improved, but simpler API for the security configuration part of ESAPI.&lt;br /&gt;
2) Alternate configuration stores other than Java properties files (e.g., XML, database), to be supported.&lt;br /&gt;
3) The ability to split the ESAPI configuration data into smaller, more manageable chunks to result in more maintainibility and allow for better enforcement of corporate security policies.&lt;br /&gt;
4) Continued backward compatibility with ESAPI 2.1.x or an extremely simple migration path forward.&lt;br /&gt;
&lt;br /&gt;
'''Knowledge Prequisite:'''&lt;br /&gt;
&lt;br /&gt;
Since the ESAPI 2.x project is written in Java, a good knowledge of Java is essential. A strong knowledge of JUnit will also be helpful in creating unit test cases. A working knowledge of XML or JDBC may also prove helpful.&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [https://www.owasp.org/index.php/User:Kevin_W._Wall Kevin W. Wall] - OWASP ESAPI for Java Project Leader'''&lt;/div&gt;</summary>
		<author><name>Kevin W. Wall</name></author>	</entry>

	</feed>