<?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=SteveChristey</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=SteveChristey"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/SteveChristey"/>
		<updated>2026-05-27T07:04:22Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48462</id>
		<title>CWE ESAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48462"/>
				<updated>2008-12-11T20:06:32Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Gap Analysis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ESAPI control coverage of CWEs ==&lt;br /&gt;
&lt;br /&gt;
This page covers the relationships between ESAPI controls and the [http://cwe.mitre.org/ CWE] entries that are eliminated or reduced by the application of those controls.&lt;br /&gt;
&lt;br /&gt;
* Validation&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/20.html CWE-20]: Insufficient Input Validation&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/116.html CWE-116]: Insufficient Output Sanitization&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/228.html CWE-228]: Failure to Handle Syntactically Invalid Structure&lt;br /&gt;
&lt;br /&gt;
* Canonicalization&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/22.html CWE-22]: Path Traversal&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/41.html CWE-41]: Failure to Resolve Path Equivalence&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/178.html CWE-178]: Failure to Resolve Case Sensitivity&lt;br /&gt;
&lt;br /&gt;
* Encoding&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/113.html CWE-113]: Failure to Sanitize CRLF Sequences in HTTP Headers (aka 'HTTP Response Splitting')&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/79.html CWE-79]: Failure to Sanitize Directives in a Web Page (aka 'Cross-site scripting' (XSS))&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/89.html CWE-89]: Failure to Sanitize Data within SQL Queries (aka 'SQL Injection')&lt;br /&gt;
&lt;br /&gt;
* Authentication&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/287.html CWE-287]: Insufficient Authentication&lt;br /&gt;
&lt;br /&gt;
* Session Management&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/488.html CWE-488]: Data Leak Between Sessions&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/613.html CWE-613]: Insufficient Session Expiration&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/384.html CWE-384]: Session Fixation&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/614.html CWE-614]: Sensitive Cookie in HTTPS Session Without &amp;quot;Secure&amp;quot; Attribute&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/352.html CWE-352]: Cross-Site Request Forgery (CSRF)&lt;br /&gt;
&lt;br /&gt;
* Access Control&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/639.html CWE-639]: Access Control Bypass Through User-Controlled Key&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/285.html CWE-285]: Missing or Inconsistent Access Control&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/647.html CWE-647]: Use of Non-Canonical URL Paths for Authorization Decisions&lt;br /&gt;
&lt;br /&gt;
* Encryption&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/311.html CWE-311]: Failure to Encrypt Sensitive Data&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/649.html CWE-649]: Reliance on Obfuscation or Encryption of Security-Relevant Inputs without Integrity Checking&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/323.html CWE-323]: Reusing a Nonce, Key Pair in Encryption&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/327.html CWE-327]: Use of a Broken or Risky Cryptographic Algorithm&lt;br /&gt;
&lt;br /&gt;
* Randomizer&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/330.html CWE-330]: Use of Insufficiently Random Values&lt;br /&gt;
&lt;br /&gt;
* Error Handling&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/209.html CWE-209]: Error Message Information Leaks&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/392.html CWE-392]: Failure to Report Error in Status Code&lt;br /&gt;
&lt;br /&gt;
* Logging&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/222.html CWE-222]: Truncation of Security-relevant Information&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/117.html CWE-117]: Incorrect Output Sanitization for Logs&lt;br /&gt;
** [http://cwe.mitre.org/data/definitions/532.html CWE-532]: Information Leak Through Log Files&lt;br /&gt;
&lt;br /&gt;
* Intrusion Detection&lt;br /&gt;
&lt;br /&gt;
* HTTP Protection&lt;br /&gt;
&lt;br /&gt;
* Utilities&lt;br /&gt;
&lt;br /&gt;
* Filters&lt;br /&gt;
&lt;br /&gt;
== Considerations for the Mapping ==&lt;br /&gt;
&lt;br /&gt;
The mapping is notional; it is not complete.&lt;br /&gt;
&lt;br /&gt;
Just because a feature is mapped to a CWE, does not mean that the feature covers all child nodes of that CWE.&lt;br /&gt;
&lt;br /&gt;
It would be useful to map individual API names, not just features.&lt;br /&gt;
&lt;br /&gt;
== Gap Analysis ==&lt;br /&gt;
&lt;br /&gt;
The CWE team has a capability for providing a &amp;quot;coverage graph&amp;quot; that highlights the location of a subset of CWEs within the context of an entire CWE hierarchy.  This could be used to conduct a gap analysis to see which CWEs are not addressed by ESAPI, which would be useful to ESAPI consumers as well as identifying possible future requirements for ESAPI itself.  See the graphical depictions of the [http://cwe.mitre.org/data/pdfs.html CWE OWASP Top Ten views] for examples.&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
Only CWE identifiers associated with weaknesses were reviewed.  (Some CWE entries are arbitrary categories that organize weaknesses instead of being weaknesses themselves).&lt;br /&gt;
Only the most abstract CWE identifiers were mapped, implying that lower-level variants are also covered (based on the hierarchy imposed by CWE-1000, the research view, which has a different hierarchical structure than CWE-699, the developer view).&lt;br /&gt;
&lt;br /&gt;
As of December 2008, there are two different approaches for conducting mappings: &amp;quot;literal&amp;quot; in which you only map to a CWE if it is specifically mentioned or addressed, and &amp;quot;implied&amp;quot;  in which you map to a CWE if it is associated with general concepts.  For example, the API functions for output encoding can imply some protection against  SQL injection, XSS, and others. &lt;br /&gt;
The initial CWE/ESAPI mapping was implied.&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48460</id>
		<title>CWE ESAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48460"/>
				<updated>2008-12-11T20:05:14Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Method */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CWE and ESAPI ==&lt;br /&gt;
&lt;br /&gt;
This page covers the relationships between ESAPI controls and the CWE entries that are eliminated or reduced by the application of those controls.&lt;br /&gt;
&lt;br /&gt;
* Validation&lt;br /&gt;
** CWE-20: Insufficient Input Validation&lt;br /&gt;
** CWE-116: Insufficient Output Sanitization&lt;br /&gt;
** CWE-228: Failure to Handle Syntactically Invalid Structure&lt;br /&gt;
&lt;br /&gt;
* Canonicalization&lt;br /&gt;
** CWE-22: Path Traversal&lt;br /&gt;
** CWE-41: Failure to Resolve Path Equivalence&lt;br /&gt;
** CWE-178: Failure to Resolve Case Sensitivity&lt;br /&gt;
&lt;br /&gt;
* Encoding&lt;br /&gt;
** CWE-113: Failure to Sanitize CRLF Sequences in HTTP Headers (aka 'HTTP Response Splitting')&lt;br /&gt;
** CWE-79: Failure to Sanitize Directives in a Web Page (aka 'Cross-site scripting' (XSS))&lt;br /&gt;
** CWE-89: Failure to Sanitize Data within SQL Queries (aka 'SQL Injection')&lt;br /&gt;
&lt;br /&gt;
* Authentication&lt;br /&gt;
** CWE-287: Insufficient Authentication&lt;br /&gt;
&lt;br /&gt;
* Session Management&lt;br /&gt;
** CWE-488: Data Leak Between Sessions&lt;br /&gt;
** CWE-613: Insufficient Session Expiration&lt;br /&gt;
** CWE-384: Session Fixation&lt;br /&gt;
** CWE-614: Sensitive Cookie in HTTPS Session Without &amp;quot;Secure&amp;quot; Attribute&lt;br /&gt;
** CWE-352: Cross-Site Request Forgery (CSRF)&lt;br /&gt;
&lt;br /&gt;
* Access Control&lt;br /&gt;
** CWE-639: Access Control Bypass Through User-Controlled Key&lt;br /&gt;
** CWE-285: Missing or Inconsistent Access Control&lt;br /&gt;
** CWE-647: Use of Non-Canonical URL Paths for Authorization Decisions&lt;br /&gt;
&lt;br /&gt;
* Encryption&lt;br /&gt;
** CWE-311: Failure to Encrypt Sensitive Data&lt;br /&gt;
** CWE-649: Reliance on Obfuscation or Encryption of Security-Relevant Inputs without Integrity Checking&lt;br /&gt;
** CWE-323: Reusing a Nonce, Key Pair in Encryption&lt;br /&gt;
** CWE-327: Use of a Broken or Risky Cryptographic Algorithm&lt;br /&gt;
&lt;br /&gt;
* Randomizer&lt;br /&gt;
** CWE-330: Use of Insufficiently Random Values&lt;br /&gt;
&lt;br /&gt;
* Error Handling&lt;br /&gt;
** CWE-209: Error Message Information Leaks&lt;br /&gt;
** CWE-392: Failure to Report Error in Status Code&lt;br /&gt;
&lt;br /&gt;
* Logging&lt;br /&gt;
** CWE-222: Truncation of Security-relevant Information&lt;br /&gt;
** CWE-117: Incorrect Output Sanitization for Logs&lt;br /&gt;
** CWE-532: Information Leak Through Log Files&lt;br /&gt;
&lt;br /&gt;
* Intrusion Detection&lt;br /&gt;
&lt;br /&gt;
* HTTP Protection&lt;br /&gt;
&lt;br /&gt;
* Utilities&lt;br /&gt;
&lt;br /&gt;
* Filters&lt;br /&gt;
&lt;br /&gt;
== Considerations for the Mapping ==&lt;br /&gt;
&lt;br /&gt;
The mapping is notional; it is not complete.&lt;br /&gt;
&lt;br /&gt;
Just because a feature is mapped to a CWE, does not mean that the feature covers all child nodes of that CWE.&lt;br /&gt;
&lt;br /&gt;
It would be useful to map individual API names, not just features.&lt;br /&gt;
&lt;br /&gt;
== Gap Analysis ==&lt;br /&gt;
&lt;br /&gt;
The CWE team has a capability for providing a &amp;quot;coverage graph&amp;quot; that highlights the location of a subset of CWEs within the context of an entire CWE hierarchy.  This could be used to conduct a gap analysis to see which CWEs are not addressed by ESAPI, which would be useful to ESAPI consumers as well as identifying possible future requirements for ESAPI itself.  See the graphical depictions of the [http://cwe.mitre.org/data/pdfs.html | CWE OWASP views] for examples.&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
Only CWE identifiers associated with weaknesses were reviewed.  (Some CWE entries are arbitrary categories that organize weaknesses instead of being weaknesses themselves).&lt;br /&gt;
Only the most abstract CWE identifiers were mapped, implying that lower-level variants are also covered (based on the hierarchy imposed by CWE-1000, the research view, which has a different hierarchical structure than CWE-699, the developer view).&lt;br /&gt;
&lt;br /&gt;
As of December 2008, there are two different approaches for conducting mappings: &amp;quot;literal&amp;quot; in which you only map to a CWE if it is specifically mentioned or addressed, and &amp;quot;implied&amp;quot;  in which you map to a CWE if it is associated with general concepts.  For example, the API functions for output encoding can imply some protection against  SQL injection, XSS, and others. &lt;br /&gt;
The initial CWE/ESAPI mapping was implied.&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48459</id>
		<title>CWE ESAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48459"/>
				<updated>2008-12-11T19:59:22Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Considerations for the Mapping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CWE and ESAPI ==&lt;br /&gt;
&lt;br /&gt;
This page covers the relationships between ESAPI controls and the CWE entries that are eliminated or reduced by the application of those controls.&lt;br /&gt;
&lt;br /&gt;
* Validation&lt;br /&gt;
** CWE-20: Insufficient Input Validation&lt;br /&gt;
** CWE-116: Insufficient Output Sanitization&lt;br /&gt;
** CWE-228: Failure to Handle Syntactically Invalid Structure&lt;br /&gt;
&lt;br /&gt;
* Canonicalization&lt;br /&gt;
** CWE-22: Path Traversal&lt;br /&gt;
** CWE-41: Failure to Resolve Path Equivalence&lt;br /&gt;
** CWE-178: Failure to Resolve Case Sensitivity&lt;br /&gt;
&lt;br /&gt;
* Encoding&lt;br /&gt;
** CWE-113: Failure to Sanitize CRLF Sequences in HTTP Headers (aka 'HTTP Response Splitting')&lt;br /&gt;
** CWE-79: Failure to Sanitize Directives in a Web Page (aka 'Cross-site scripting' (XSS))&lt;br /&gt;
** CWE-89: Failure to Sanitize Data within SQL Queries (aka 'SQL Injection')&lt;br /&gt;
&lt;br /&gt;
* Authentication&lt;br /&gt;
** CWE-287: Insufficient Authentication&lt;br /&gt;
&lt;br /&gt;
* Session Management&lt;br /&gt;
** CWE-488: Data Leak Between Sessions&lt;br /&gt;
** CWE-613: Insufficient Session Expiration&lt;br /&gt;
** CWE-384: Session Fixation&lt;br /&gt;
** CWE-614: Sensitive Cookie in HTTPS Session Without &amp;quot;Secure&amp;quot; Attribute&lt;br /&gt;
** CWE-352: Cross-Site Request Forgery (CSRF)&lt;br /&gt;
&lt;br /&gt;
* Access Control&lt;br /&gt;
** CWE-639: Access Control Bypass Through User-Controlled Key&lt;br /&gt;
** CWE-285: Missing or Inconsistent Access Control&lt;br /&gt;
** CWE-647: Use of Non-Canonical URL Paths for Authorization Decisions&lt;br /&gt;
&lt;br /&gt;
* Encryption&lt;br /&gt;
** CWE-311: Failure to Encrypt Sensitive Data&lt;br /&gt;
** CWE-649: Reliance on Obfuscation or Encryption of Security-Relevant Inputs without Integrity Checking&lt;br /&gt;
** CWE-323: Reusing a Nonce, Key Pair in Encryption&lt;br /&gt;
** CWE-327: Use of a Broken or Risky Cryptographic Algorithm&lt;br /&gt;
&lt;br /&gt;
* Randomizer&lt;br /&gt;
** CWE-330: Use of Insufficiently Random Values&lt;br /&gt;
&lt;br /&gt;
* Error Handling&lt;br /&gt;
** CWE-209: Error Message Information Leaks&lt;br /&gt;
** CWE-392: Failure to Report Error in Status Code&lt;br /&gt;
&lt;br /&gt;
* Logging&lt;br /&gt;
** CWE-222: Truncation of Security-relevant Information&lt;br /&gt;
** CWE-117: Incorrect Output Sanitization for Logs&lt;br /&gt;
** CWE-532: Information Leak Through Log Files&lt;br /&gt;
&lt;br /&gt;
* Intrusion Detection&lt;br /&gt;
&lt;br /&gt;
* HTTP Protection&lt;br /&gt;
&lt;br /&gt;
* Utilities&lt;br /&gt;
&lt;br /&gt;
* Filters&lt;br /&gt;
&lt;br /&gt;
== Considerations for the Mapping ==&lt;br /&gt;
&lt;br /&gt;
The mapping is notional; it is not complete.&lt;br /&gt;
&lt;br /&gt;
Just because a feature is mapped to a CWE, does not mean that the feature covers all child nodes of that CWE.&lt;br /&gt;
&lt;br /&gt;
It would be useful to map individual API names, not just features.&lt;br /&gt;
&lt;br /&gt;
== Gap Analysis ==&lt;br /&gt;
&lt;br /&gt;
The CWE team has a capability for providing a &amp;quot;coverage graph&amp;quot; that highlights the location of a subset of CWEs within the context of an entire CWE hierarchy.  This could be used to conduct a gap analysis to see which CWEs are not addressed by ESAPI, which would be useful to ESAPI consumers as well as identifying possible future requirements for ESAPI itself.  See the graphical depictions of the [http://cwe.mitre.org/data/pdfs.html | CWE OWASP views] for examples.&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
Only CWE identifiers associated with weaknesses were reviewed.  (Some CWE entries are arbitrary groupings that organize weaknesses instead of being weaknesses themselves).&lt;br /&gt;
Only the most abstract CWE identifiers were mapped, implying that lower-level variants are also covered (based on the hierarchy imposed by CWE-1000, the research view, which has a different hierarchical structure than CWE-699, the developer view).&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48458</id>
		<title>CWE ESAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48458"/>
				<updated>2008-12-11T19:58:00Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Considerations for the Mapping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CWE and ESAPI ==&lt;br /&gt;
&lt;br /&gt;
This page covers the relationships between ESAPI controls and the CWE entries that are eliminated or reduced by the application of those controls.&lt;br /&gt;
&lt;br /&gt;
* Validation&lt;br /&gt;
** CWE-20: Insufficient Input Validation&lt;br /&gt;
** CWE-116: Insufficient Output Sanitization&lt;br /&gt;
** CWE-228: Failure to Handle Syntactically Invalid Structure&lt;br /&gt;
&lt;br /&gt;
* Canonicalization&lt;br /&gt;
** CWE-22: Path Traversal&lt;br /&gt;
** CWE-41: Failure to Resolve Path Equivalence&lt;br /&gt;
** CWE-178: Failure to Resolve Case Sensitivity&lt;br /&gt;
&lt;br /&gt;
* Encoding&lt;br /&gt;
** CWE-113: Failure to Sanitize CRLF Sequences in HTTP Headers (aka 'HTTP Response Splitting')&lt;br /&gt;
** CWE-79: Failure to Sanitize Directives in a Web Page (aka 'Cross-site scripting' (XSS))&lt;br /&gt;
** CWE-89: Failure to Sanitize Data within SQL Queries (aka 'SQL Injection')&lt;br /&gt;
&lt;br /&gt;
* Authentication&lt;br /&gt;
** CWE-287: Insufficient Authentication&lt;br /&gt;
&lt;br /&gt;
* Session Management&lt;br /&gt;
** CWE-488: Data Leak Between Sessions&lt;br /&gt;
** CWE-613: Insufficient Session Expiration&lt;br /&gt;
** CWE-384: Session Fixation&lt;br /&gt;
** CWE-614: Sensitive Cookie in HTTPS Session Without &amp;quot;Secure&amp;quot; Attribute&lt;br /&gt;
** CWE-352: Cross-Site Request Forgery (CSRF)&lt;br /&gt;
&lt;br /&gt;
* Access Control&lt;br /&gt;
** CWE-639: Access Control Bypass Through User-Controlled Key&lt;br /&gt;
** CWE-285: Missing or Inconsistent Access Control&lt;br /&gt;
** CWE-647: Use of Non-Canonical URL Paths for Authorization Decisions&lt;br /&gt;
&lt;br /&gt;
* Encryption&lt;br /&gt;
** CWE-311: Failure to Encrypt Sensitive Data&lt;br /&gt;
** CWE-649: Reliance on Obfuscation or Encryption of Security-Relevant Inputs without Integrity Checking&lt;br /&gt;
** CWE-323: Reusing a Nonce, Key Pair in Encryption&lt;br /&gt;
** CWE-327: Use of a Broken or Risky Cryptographic Algorithm&lt;br /&gt;
&lt;br /&gt;
* Randomizer&lt;br /&gt;
** CWE-330: Use of Insufficiently Random Values&lt;br /&gt;
&lt;br /&gt;
* Error Handling&lt;br /&gt;
** CWE-209: Error Message Information Leaks&lt;br /&gt;
** CWE-392: Failure to Report Error in Status Code&lt;br /&gt;
&lt;br /&gt;
* Logging&lt;br /&gt;
** CWE-222: Truncation of Security-relevant Information&lt;br /&gt;
** CWE-117: Incorrect Output Sanitization for Logs&lt;br /&gt;
** CWE-532: Information Leak Through Log Files&lt;br /&gt;
&lt;br /&gt;
* Intrusion Detection&lt;br /&gt;
&lt;br /&gt;
* HTTP Protection&lt;br /&gt;
&lt;br /&gt;
* Utilities&lt;br /&gt;
&lt;br /&gt;
* Filters&lt;br /&gt;
&lt;br /&gt;
== Considerations for the Mapping ==&lt;br /&gt;
&lt;br /&gt;
Just because a feature is mapped to a CWE, does not mean that the feature covers all child nodes of that CWE.&lt;br /&gt;
&lt;br /&gt;
It would be useful to map individual API names, not just features.&lt;br /&gt;
&lt;br /&gt;
== Gap Analysis ==&lt;br /&gt;
&lt;br /&gt;
The CWE team has a capability for providing a &amp;quot;coverage graph&amp;quot; that highlights the location of a subset of CWEs within the context of an entire CWE hierarchy.  This could be used to conduct a gap analysis to see which CWEs are not addressed by ESAPI, which would be useful to ESAPI consumers as well as identifying possible future requirements for ESAPI itself.  See the graphical depictions of the [http://cwe.mitre.org/data/pdfs.html | CWE OWASP views] for examples.&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
Only CWE identifiers associated with weaknesses were reviewed.  (Some CWE entries are arbitrary groupings that organize weaknesses instead of being weaknesses themselves).&lt;br /&gt;
Only the most abstract CWE identifiers were mapped, implying that lower-level variants are also covered (based on the hierarchy imposed by CWE-1000, the research view, which has a different hierarchical structure than CWE-699, the developer view).&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48455</id>
		<title>CWE ESAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48455"/>
				<updated>2008-12-11T19:54:35Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* CWE and ESAPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CWE and ESAPI ==&lt;br /&gt;
&lt;br /&gt;
This page covers the relationships between ESAPI controls and the CWE entries that are eliminated or reduced by the application of those controls.&lt;br /&gt;
&lt;br /&gt;
* Validation&lt;br /&gt;
&lt;br /&gt;
** CWE-20: Insufficient Input Validation&lt;br /&gt;
&lt;br /&gt;
** CWE-116: Insufficient Output Sanitization&lt;br /&gt;
&lt;br /&gt;
** CWE-228: Failure to Handle Syntactically Invalid Structure&lt;br /&gt;
&lt;br /&gt;
* Canonicalization&lt;br /&gt;
&lt;br /&gt;
** CWE-22: Path Traversal&lt;br /&gt;
&lt;br /&gt;
** CWE-41: Failure to Resolve Path Equivalence&lt;br /&gt;
&lt;br /&gt;
** CWE-178: Failure to Resolve Case Sensitivity&lt;br /&gt;
&lt;br /&gt;
* Encoding&lt;br /&gt;
&lt;br /&gt;
** CWE-113: Failure to Sanitize CRLF Sequences in HTTP Headers (aka 'HTTP Response Splitting')&lt;br /&gt;
&lt;br /&gt;
** CWE-79: Failure to Sanitize Directives in a Web Page (aka 'Cross-site scripting' (XSS))&lt;br /&gt;
&lt;br /&gt;
** CWE-89: Failure to Sanitize Data within SQL Queries (aka 'SQL Injection')&lt;br /&gt;
&lt;br /&gt;
* Authentication&lt;br /&gt;
&lt;br /&gt;
** CWE-287: Insufficient Authentication&lt;br /&gt;
&lt;br /&gt;
* Session Management&lt;br /&gt;
&lt;br /&gt;
** CWE-488: Data Leak Between Sessions&lt;br /&gt;
&lt;br /&gt;
** CWE-613: Insufficient Session Expiration&lt;br /&gt;
&lt;br /&gt;
** CWE-384: Session Fixation&lt;br /&gt;
&lt;br /&gt;
** CWE-614: Sensitive Cookie in HTTPS Session Without &amp;quot;Secure&amp;quot; Attribute&lt;br /&gt;
&lt;br /&gt;
** CWE-352: Cross-Site Request Forgery (CSRF)&lt;br /&gt;
&lt;br /&gt;
* Access Control&lt;br /&gt;
&lt;br /&gt;
** CWE-639: Access Control Bypass Through User-Controlled Key&lt;br /&gt;
&lt;br /&gt;
** CWE-285: Missing or Inconsistent Access Control&lt;br /&gt;
&lt;br /&gt;
** CWE-647: Use of Non-Canonical URL Paths for Authorization Decisions&lt;br /&gt;
&lt;br /&gt;
* Encryption&lt;br /&gt;
&lt;br /&gt;
** CWE-311: Failure to Encrypt Sensitive Data&lt;br /&gt;
&lt;br /&gt;
** CWE-649: Reliance on Obfuscation or Encryption of Security-Relevant Inputs without Integrity Checking&lt;br /&gt;
&lt;br /&gt;
** CWE-323: Reusing a Nonce, Key Pair in Encryption&lt;br /&gt;
&lt;br /&gt;
** CWE-327: Use of a Broken or Risky Cryptographic Algorithm&lt;br /&gt;
&lt;br /&gt;
* Randomizer&lt;br /&gt;
&lt;br /&gt;
** CWE-330: Use of Insufficiently Random Values&lt;br /&gt;
&lt;br /&gt;
* Error Handling&lt;br /&gt;
&lt;br /&gt;
** CWE-209: Error Message Information Leaks&lt;br /&gt;
&lt;br /&gt;
** CWE-392: Failure to Report Error in Status Code&lt;br /&gt;
&lt;br /&gt;
* Logging&lt;br /&gt;
&lt;br /&gt;
** CWE-222: Truncation of Security-relevant Information&lt;br /&gt;
&lt;br /&gt;
** CWE-117: Incorrect Output Sanitization for Logs&lt;br /&gt;
&lt;br /&gt;
** CWE-532: Information Leak Through Log Files&lt;br /&gt;
&lt;br /&gt;
* Intrusion Detection&lt;br /&gt;
&lt;br /&gt;
* HTTP Protection&lt;br /&gt;
&lt;br /&gt;
* Utilities&lt;br /&gt;
&lt;br /&gt;
* Filters&lt;br /&gt;
&lt;br /&gt;
== Considerations for the Mapping ==&lt;br /&gt;
&lt;br /&gt;
Just because a feature is mapped to a CWE, does not mean that the feature covers all child nodes of that CWE.&lt;br /&gt;
&lt;br /&gt;
It would be useful to map individual API names, not just features.&lt;br /&gt;
&lt;br /&gt;
The CWE team has a capability for providing a &amp;quot;coverage graph&amp;quot; that highlights the location of a subset of CWEs within the context of an entire CWE hierarchy.  This could be used to conduct a gap analysis to see which CWEs are not addressed by ESAPI, which would be useful to ESAPI consumers as well as identifying possible future requirements for ESAPI itself.&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
Only CWE identifiers associated with weaknesses were reviewed.  (Some CWE entries are arbitrary groupings that organize weaknesses instead of being weaknesses themselves).&lt;br /&gt;
Only the most abstract CWE identifiers were mapped, implying that lower-level variants are also covered (based on the hierarchy imposed by CWE-1000, the research view, which has a different hierarchical structure than CWE-699, the developer view).&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48452</id>
		<title>CWE ESAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48452"/>
				<updated>2008-12-11T19:45:09Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* CWE and ESAPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CWE and ESAPI ==&lt;br /&gt;
&lt;br /&gt;
This page covers the relationships between ESAPI controls and the CWE entries that are eliminated or reduced by the application of those controls.&lt;br /&gt;
&lt;br /&gt;
* Validation&lt;br /&gt;
&lt;br /&gt;
** CWE-20: Insufficient Input Validation&lt;br /&gt;
&lt;br /&gt;
** CWE-116: Insufficient Output Sanitization&lt;br /&gt;
&lt;br /&gt;
** CWE-228: Failure to Handle Syntactically Invalid Structure&lt;br /&gt;
&lt;br /&gt;
* Canonicalization&lt;br /&gt;
&lt;br /&gt;
** CWE-22: Path Traversal&lt;br /&gt;
&lt;br /&gt;
** CWE-41: Failure to Resolve Path Equivalence&lt;br /&gt;
&lt;br /&gt;
** CWE-178: Failure to Resolve Case Sensitivity&lt;br /&gt;
&lt;br /&gt;
* Encoding&lt;br /&gt;
&lt;br /&gt;
** CWE-113: Failure to Sanitize CRLF Sequences in HTTP Headers (aka 'HTTP Response Splitting')&lt;br /&gt;
&lt;br /&gt;
** CWE-79: Failure to Sanitize Directives in a Web Page (aka 'Cross-site scripting' (XSS))&lt;br /&gt;
&lt;br /&gt;
** CWE-89: Failure to Sanitize Data within SQL Queries (aka 'SQL Injection')&lt;br /&gt;
&lt;br /&gt;
* Authentication&lt;br /&gt;
&lt;br /&gt;
** CWE-287: Insufficient Authentication&lt;br /&gt;
&lt;br /&gt;
* Session Management&lt;br /&gt;
&lt;br /&gt;
** CWE-488: Data Leak Between Sessions&lt;br /&gt;
&lt;br /&gt;
** CWE-613: Insufficient Session Expiration&lt;br /&gt;
&lt;br /&gt;
** CWE-384: Session Fixation&lt;br /&gt;
&lt;br /&gt;
** CWE-614: Sensitive Cookie in HTTPS Session Without &amp;quot;Secure&amp;quot; Attribute&lt;br /&gt;
&lt;br /&gt;
* Access Control&lt;br /&gt;
&lt;br /&gt;
** CWE-639: Access Control Bypass Through User-Controlled Key&lt;br /&gt;
&lt;br /&gt;
** CWE-285: Missing or Inconsistent Access Control&lt;br /&gt;
&lt;br /&gt;
** CWE-647: Use of Non-Canonical URL Paths for Authorization Decisions&lt;br /&gt;
&lt;br /&gt;
* Encryption&lt;br /&gt;
&lt;br /&gt;
** CWE-311: Failure to Encrypt Sensitive Data&lt;br /&gt;
&lt;br /&gt;
** CWE-649: Reliance on Obfuscation or Encryption of Security-Relevant Inputs without Integrity Checking&lt;br /&gt;
&lt;br /&gt;
** CWE-323: Reusing a Nonce, Key Pair in Encryption&lt;br /&gt;
&lt;br /&gt;
** CWE-327: Use of a Broken or Risky Cryptographic Algorithm&lt;br /&gt;
&lt;br /&gt;
* Randomizer&lt;br /&gt;
&lt;br /&gt;
** CWE-330: Use of Insufficiently Random Values&lt;br /&gt;
&lt;br /&gt;
* Error Handling&lt;br /&gt;
&lt;br /&gt;
** CWE-209: Error Message Information Leaks&lt;br /&gt;
&lt;br /&gt;
** CWE-392: Failure to Report Error in Status Code&lt;br /&gt;
&lt;br /&gt;
* Logging&lt;br /&gt;
&lt;br /&gt;
** CWE-222: Truncation of Security-relevant Information&lt;br /&gt;
&lt;br /&gt;
** CWE-117: Incorrect Output Sanitization for Logs&lt;br /&gt;
&lt;br /&gt;
** CWE-532: Information Leak Through Log Files&lt;br /&gt;
&lt;br /&gt;
* Intrusion Detection&lt;br /&gt;
&lt;br /&gt;
* HTTP Protection&lt;br /&gt;
&lt;br /&gt;
* Utilities&lt;br /&gt;
&lt;br /&gt;
* Filters&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
Only CWE identifiers associated with weaknesses were reviewed.  (Some CWE entries are arbitrary groupings that organize weaknesses instead of being weaknesses themselves).&lt;br /&gt;
Only the most abstract CWE identifiers were mapped, implying that lower-level variants are also covered (based on the hierarchy imposed by CWE-1000, the research view, which has a different hierarchical structure than CWE-699, the developer view).&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48450</id>
		<title>CWE ESAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48450"/>
				<updated>2008-12-11T19:30:28Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* CWE and ESAPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CWE and ESAPI ==&lt;br /&gt;
&lt;br /&gt;
This page covers the relationships between ESAPI controls and the CWE entries that are eliminated or reduced by the application of those controls.&lt;br /&gt;
&lt;br /&gt;
* Validation&lt;br /&gt;
&lt;br /&gt;
** CWE-20: Insufficient Input Validation&lt;br /&gt;
&lt;br /&gt;
** CWE-116: Insufficient Output Sanitization&lt;br /&gt;
&lt;br /&gt;
** CWE-228: Failure to Handle Syntactically Invalid Structure&lt;br /&gt;
&lt;br /&gt;
* Canonicalization&lt;br /&gt;
&lt;br /&gt;
** CWE-22: Path Traversal&lt;br /&gt;
&lt;br /&gt;
** CWE-41: Failure to Resolve Path Equivalence&lt;br /&gt;
&lt;br /&gt;
** CWE-178: Failure to Resolve Case Sensitivity&lt;br /&gt;
&lt;br /&gt;
* Encoding&lt;br /&gt;
&lt;br /&gt;
** CWE-113: Failure to Sanitize CRLF Sequences in HTTP Headers (aka 'HTTP Response Splitting')&lt;br /&gt;
&lt;br /&gt;
** CWE-79: Failure to Sanitize Directives in a Web Page (aka 'Cross-site scripting' (XSS))&lt;br /&gt;
&lt;br /&gt;
** CWE-89: Failure to Sanitize Data within SQL Queries (aka 'SQL Injection')&lt;br /&gt;
&lt;br /&gt;
* Authentication&lt;br /&gt;
&lt;br /&gt;
** CWE-287: Insufficient Authentication&lt;br /&gt;
&lt;br /&gt;
* Session Management&lt;br /&gt;
&lt;br /&gt;
** CWE-488: Data Leak Between Sessions&lt;br /&gt;
&lt;br /&gt;
** CWE-613: Insufficient Session Expiration&lt;br /&gt;
&lt;br /&gt;
** CWE-384: Session Fixation&lt;br /&gt;
&lt;br /&gt;
** CWE-614: Sensitive Cookie in HTTPS Session Without &amp;quot;Secure&amp;quot; Attribute&lt;br /&gt;
&lt;br /&gt;
* Access Control&lt;br /&gt;
&lt;br /&gt;
* Encryption&lt;br /&gt;
&lt;br /&gt;
* Randomizer&lt;br /&gt;
&lt;br /&gt;
* Error Handling&lt;br /&gt;
&lt;br /&gt;
* Logging&lt;br /&gt;
&lt;br /&gt;
* Intrusion Detection&lt;br /&gt;
&lt;br /&gt;
* HTTP Protection&lt;br /&gt;
&lt;br /&gt;
* Utilities&lt;br /&gt;
&lt;br /&gt;
* Filters&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
Only CWE identifiers associated with weaknesses were reviewed.  (Some CWE entries are arbitrary groupings that organize weaknesses instead of being weaknesses themselves).&lt;br /&gt;
Only the most abstract CWE identifiers were mapped, implying that lower-level variants are also covered (based on the hierarchy imposed by CWE-1000, the research view, which has a different hierarchical structure than CWE-699, the developer view).&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48448</id>
		<title>CWE ESAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48448"/>
				<updated>2008-12-11T19:26:29Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* CWE and ESAPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CWE and ESAPI ==&lt;br /&gt;
&lt;br /&gt;
This page covers the relationships between ESAPI controls and the CWE entries that are eliminated or reduced by the application of those controls.&lt;br /&gt;
&lt;br /&gt;
* Validation&lt;br /&gt;
&lt;br /&gt;
** CWE-20: Insufficient Input Validation&lt;br /&gt;
&lt;br /&gt;
** CWE-116: Insufficient Output Sanitization&lt;br /&gt;
&lt;br /&gt;
** CWE-228: Failure to Handle Syntactically Invalid Structure&lt;br /&gt;
&lt;br /&gt;
* Canonicalization&lt;br /&gt;
&lt;br /&gt;
** CWE-22: Path Traversal&lt;br /&gt;
&lt;br /&gt;
** CWE-41: Failure to Resolve Path Equivalence&lt;br /&gt;
&lt;br /&gt;
** CWE-178: Failure to Resolve Case Sensitivity&lt;br /&gt;
&lt;br /&gt;
* Encoding&lt;br /&gt;
&lt;br /&gt;
** CWE-113: Failure to Sanitize CRLF Sequences in HTTP Headers (aka 'HTTP Response Splitting')&lt;br /&gt;
&lt;br /&gt;
** CWE-79: Failure to Sanitize Directives in a Web Page (aka 'Cross-site scripting' (XSS))&lt;br /&gt;
&lt;br /&gt;
** CWE-89: Failure to Sanitize Data within SQL Queries (aka 'SQL Injection')&lt;br /&gt;
&lt;br /&gt;
* Authentication&lt;br /&gt;
&lt;br /&gt;
* Session Management&lt;br /&gt;
&lt;br /&gt;
* Access Control&lt;br /&gt;
&lt;br /&gt;
* Encryption&lt;br /&gt;
&lt;br /&gt;
* Randomizer&lt;br /&gt;
&lt;br /&gt;
* Error Handling&lt;br /&gt;
&lt;br /&gt;
* Logging&lt;br /&gt;
&lt;br /&gt;
* Intrusion Detection&lt;br /&gt;
&lt;br /&gt;
* HTTP Protection&lt;br /&gt;
&lt;br /&gt;
* Utilities&lt;br /&gt;
&lt;br /&gt;
* Filters&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
Only CWE identifiers associated with weaknesses were reviewed.  (Some CWE entries are arbitrary groupings that organize weaknesses instead of being weaknesses themselves).&lt;br /&gt;
Only the most abstract CWE identifiers were mapped, implying that lower-level variants are also covered (based on the hierarchy imposed by CWE-1000, the research view, which has a different hierarchical structure than CWE-699, the developer view).&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48445</id>
		<title>CWE ESAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CWE_ESAPI&amp;diff=48445"/>
				<updated>2008-12-11T19:16:50Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: New page: == CWE and ESAPI ==  This page covers the relationships between ESAPI controls and the CWE entries that are eliminated or reduced by the application of those controls.  * Validation  * Can...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CWE and ESAPI ==&lt;br /&gt;
&lt;br /&gt;
This page covers the relationships between ESAPI controls and the CWE entries that are eliminated or reduced by the application of those controls.&lt;br /&gt;
&lt;br /&gt;
* Validation&lt;br /&gt;
&lt;br /&gt;
* Canonicalization&lt;br /&gt;
&lt;br /&gt;
* Encoding&lt;br /&gt;
&lt;br /&gt;
* Authentication&lt;br /&gt;
&lt;br /&gt;
* Session Management&lt;br /&gt;
&lt;br /&gt;
* Access Control&lt;br /&gt;
&lt;br /&gt;
* Encryption&lt;br /&gt;
&lt;br /&gt;
* Randomizer&lt;br /&gt;
&lt;br /&gt;
* Error Handling&lt;br /&gt;
&lt;br /&gt;
* Logging&lt;br /&gt;
&lt;br /&gt;
* Intrusion Detection&lt;br /&gt;
&lt;br /&gt;
* HTTP Protection&lt;br /&gt;
&lt;br /&gt;
* Utilities&lt;br /&gt;
&lt;br /&gt;
* Filters&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Static_Analysis_Support&amp;diff=48444</id>
		<title>ESAPI Static Analysis Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Static_Analysis_Support&amp;diff=48444"/>
				<updated>2008-12-11T19:15:58Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are a number of activities related to static analysis tools and ESAPI.&lt;br /&gt;
&lt;br /&gt;
* Claim: Use of ESAPI 'should' make it easier to analyze applications for security using analysis tools. To facilitate this we should:&lt;br /&gt;
** Develop markup for ESAPI for each of the major static analysis tools (open source AND commercial)&lt;br /&gt;
*** This will allow the existing rules provided by the tools to be run against the application, while recognizing what ESAPI does, like validate, encode, etc.&lt;br /&gt;
*** If a tool can recognize ESAPI-based validation/encoding and other controls, it might help to reduce the number of false positives&lt;br /&gt;
*** If there is a [[CWE_ESAPI | mapping]] from CWE names to associated ESAPI controls, then a tool could use its CWE results to suggest which controls to focus on first.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Fact: There are coding rules we would like developers to follow to build secure apps that are not currently being checked for, possibly because developers don't have the capability to do some of these things today. ESAPI is intended to make it far easier for developers to adopt new secure coding practices and we would like to check to make sure they are following these new best practices&lt;br /&gt;
** OWASP should develop its own 'rules' on what it thinks applications should do to use ESAPI correctly, which won't currently be represented in existing tool rulesets&lt;br /&gt;
** OWASP should also develop its own 'rules' on what it thinks that applications should do to be secure, that don't necessarily depend on the use of ESAPI. These rules would be applicable to all applications, regardless of whether they are using ESAPI or not.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We might want to start with something open source like FindBugs and do the above for it first (if it can handle what we want to do), and then encourage the major static analysis tool vendors to implement equivalent API markup and rules for their tool.  There is already precedent for publication of rules for commercial tools&lt;br /&gt;
(see CERT C Secure Coding standard pack for Fortify and others)&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Static_Analysis_Support&amp;diff=48443</id>
		<title>ESAPI Static Analysis Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Static_Analysis_Support&amp;diff=48443"/>
				<updated>2008-12-11T19:13:26Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are a number of activities related to static analysis tools and ESAPI.&lt;br /&gt;
&lt;br /&gt;
* Claim: Use of ESAPI 'should' make it easier to analyze applications for security using analysis tools. To facilitate this we should:&lt;br /&gt;
** Develop markup for ESAPI for each of the major static analysis tools (open source AND commercial)&lt;br /&gt;
*** This will allow the existing rules provided by the tools to be run against the application, while recognizing what ESAPI does, like validate, encode, etc.&lt;br /&gt;
*** If a tool can recognize ESAPI-based validation/encoding and other controls, it might help to reduce the number of false positives&lt;br /&gt;
*** If there is a mapping from CWE names to associated ESAPI controls, then a tool could use its CWE results to suggest which controls to focus on first.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Fact: There are coding rules we would like developers to follow to build secure apps that are not currently being checked for, possibly because developers don't have the capability to do some of these things today. ESAPI is intended to make it far easier for developers to adopt new secure coding practices and we would like to check to make sure they are following these new best practices&lt;br /&gt;
** OWASP should develop its own 'rules' on what it thinks applications should do to use ESAPI correctly, which won't currently be represented in existing tool rulesets&lt;br /&gt;
** OWASP should also develop its own 'rules' on what it thinks that applications should do to be secure, that don't necessarily depend on the use of ESAPI. These rules would be applicable to all applications, regardless of whether they are using ESAPI or not.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We might want to start with something open source like FindBugs and do the above for it first (if it can handle what we want to do), and then encourage the major static analysis tool vendors to implement equivalent API markup and rules for their tool.  There is already precedent for publication of rules for commercial tools&lt;br /&gt;
(see CERT C Secure Coding standard pack for Fortify and others)&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Documentation&amp;diff=48442</id>
		<title>ESAPI Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Documentation&amp;diff=48442"/>
				<updated>2008-12-11T19:11:43Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Documentation Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
This page documents our current thoughts on the various documents we need to produce for the ESAPI project, and the audience, purpose, and high level outline of each document.&lt;br /&gt;
&lt;br /&gt;
== Documentation Plan == &lt;br /&gt;
&lt;br /&gt;
* Smaller Documents&lt;br /&gt;
** ESAPI Executive Overview&lt;br /&gt;
Audience: Executives&amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: To provide executives with an understanding of:&lt;br /&gt;
* What ESAPI is? Goals.&lt;br /&gt;
* Why an ESAPI is necessary. (App Sec is important/why/standardization)&lt;br /&gt;
* The benefits of using an ESAPI? (Cost, ROI)&lt;br /&gt;
* The current status of ESAPI? (Maturity, Stability, Licensing, Support)&lt;br /&gt;
* Who created it, where it came from, credibility, who is using it?&lt;br /&gt;
* How to adopt an ESAPI?&lt;br /&gt;
Outline: (See Purpose)&lt;br /&gt;
** FAQ (For non-users)&lt;br /&gt;
Audience: Potential users of ESAPI&amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: To provide 'quick' hit, information about ESAPI&amp;lt;br&amp;gt;&lt;br /&gt;
Topics: Summary of main points in the Executive Overview&amp;lt;br&amp;gt;&lt;br /&gt;
** FAQ (For people using ESAPI)&lt;br /&gt;
Audience (Technical people using ESAPI)&amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: To provide 'quick' hit, information about how to use ESAPI, and how to add ESAPI to or integrate ESAPI with your existing security controls.&lt;br /&gt;
Outline:&lt;br /&gt;
* How to use it the first time&lt;br /&gt;
* Performance&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Larger Documents&lt;br /&gt;
** Getting Started Guide&lt;br /&gt;
** How to Secure an Existing Application with ESAPI&lt;br /&gt;
** How to Use ESAPI in a New Application&lt;br /&gt;
** How to Create a Custom ESAPI for Your Organization&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Web pages&lt;br /&gt;
** Revamp the ESAPI Website&lt;br /&gt;
** How will the ESAPI be updated and released.&lt;br /&gt;
** [[CWE_ESAPI]] CWEs addressed by ESAPI - Assigned to Steve Christey&lt;br /&gt;
** Features List&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Other&lt;br /&gt;
** ESAPI Architecture/Design Guideline&lt;br /&gt;
** Assurance Argument [[ESAPI_Assurance]]&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Static_Analysis_Support&amp;diff=48438</id>
		<title>ESAPI Static Analysis Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Static_Analysis_Support&amp;diff=48438"/>
				<updated>2008-12-11T18:56:55Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are a number of activities related to static analysis tools and ESAPI.&lt;br /&gt;
&lt;br /&gt;
* Claim: Use of ESAPI 'should' make it easier to analyze applications for security using analysis tools. To facilitate this we should:&lt;br /&gt;
** Develop markup for ESAPI for each of the major static analysis tools (open source AND commercial)&lt;br /&gt;
*** This will allow the existing rules provided by the tools to be run against the application, while recognizing what ESAPI does, like validate, encode, etc.&lt;br /&gt;
*** If a tool can recognize ESAPI-based validation/encoding and other controls, it might help to reduce the number of false positives&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Fact: There are coding rules we would like developers to follow to build secure apps that are not currently being checked for, possibly because developers don't have the capability to do some of these things today. ESAPI is intended to make it far easier for developers to adopt new secure coding practices and we would like to check to make sure they are following these new best practices&lt;br /&gt;
** OWASP should develop its own 'rules' on what it thinks applications should do to use ESAPI correctly, which won't currently be represented in existing tool rulesets&lt;br /&gt;
** OWASP should also develop its own 'rules' on what it thinks that applications should do to be secure, that don't necessarily depend on the use of ESAPI. These rules would be applicable to all applications, regardless of whether they are using ESAPI or not.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
We might want to start with something open source like FindBugs and do the above for it first (if it can handle what we want to do), and then encourage the major static analysis tool vendors to implement equivalent API markup and rules for their tool.  There is already precedent for publication of rules for commercial tools&lt;br /&gt;
(see CERT C Secure Coding standard pack for Fortify and others)&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48437</id>
		<title>ESAPI Assurance</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48437"/>
				<updated>2008-12-11T18:52:38Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Building an Assurance Case for ESAPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building an Assurance Case for ESAPI ==&lt;br /&gt;
&lt;br /&gt;
* [https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/assurance/643-BSI.html  Arguing Security - Creating Security Assurance Cases]&lt;br /&gt;
&lt;br /&gt;
* summary: make Claims, provide supporting Evidence, and make Arguments for how the evidence supports the claims&lt;br /&gt;
&lt;br /&gt;
* Highest level claim is &amp;quot;The system is Acceptably Secure&amp;quot; but how to break this down into sub-claims that map to the provided evidence?  e.g. absence of specific vulns (as investigated by manual testing or tool scans)&lt;br /&gt;
&lt;br /&gt;
* claims could be summarized using a   [http://swaconsortium.org/projects/softwareFacts/softwareFacts.html Software Facts Label]&lt;br /&gt;
&lt;br /&gt;
* each language (Java, ASP, etc.) may need separate claims&lt;br /&gt;
&lt;br /&gt;
* list the third-party software&lt;br /&gt;
&lt;br /&gt;
* discuss coding practices that were followed, skill levels of developers, amount of independent review&lt;br /&gt;
&lt;br /&gt;
* publish scanning tool results.  &amp;quot;Tool X, using rule set R on date D,  was run against ESAPI version Y using configuration Z, and found this set of results with this amount of code coverage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Coding Practices ==&lt;br /&gt;
&lt;br /&gt;
* was OWASP Top Ten followed?&lt;br /&gt;
&lt;br /&gt;
* how was performance and security balanced?&lt;br /&gt;
&lt;br /&gt;
* what is the level of training of the developers?  amount of experience in web development?&lt;br /&gt;
&lt;br /&gt;
* were tools part of the whole process or run at the end?&lt;br /&gt;
&lt;br /&gt;
* how was code repository prevented from unauthorized alterations?&lt;br /&gt;
&lt;br /&gt;
* practices for code check-in and independent review - how is introduction of Trojans avoided?&lt;br /&gt;
&lt;br /&gt;
* what threat level is being accounted for (e.g. will this only work against script kiddies)?  was threat modeling used?&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48436</id>
		<title>ESAPI Assurance</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48436"/>
				<updated>2008-12-11T18:48:05Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Building an Assurance Case for ESAPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building an Assurance Case for ESAPI ==&lt;br /&gt;
&lt;br /&gt;
* [https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/assurance/643-BSI.html  Arguing Security - Creating Security Assurance Cases]&lt;br /&gt;
&lt;br /&gt;
* summary: make Claims, provide supporting Evidence, and make Arguments for how the evidence supports the claims&lt;br /&gt;
&lt;br /&gt;
* Highest level claim is &amp;quot;The system is Acceptably Secure&amp;quot; but how to break this down into sub-claims that map to the provided evidence?  e.g. absence of specific vulns (as investigated by manual testing or tool scans)&lt;br /&gt;
&lt;br /&gt;
* claims could be summarized using a   [http://swaconsortium.org/projects/softwareFacts/softwareFacts.html Software Facts Label]&lt;br /&gt;
&lt;br /&gt;
* each language (Java, ASP, etc.) may need separate claims&lt;br /&gt;
&lt;br /&gt;
* list the third-party software&lt;br /&gt;
&lt;br /&gt;
* discuss coding practices that were followed, skill levels of developers, amount of independent review&lt;br /&gt;
&lt;br /&gt;
* publish scanning tool results&lt;br /&gt;
&lt;br /&gt;
== Coding Practices ==&lt;br /&gt;
&lt;br /&gt;
* was OWASP Top Ten followed?&lt;br /&gt;
&lt;br /&gt;
* how was performance and security balanced?&lt;br /&gt;
&lt;br /&gt;
* what is the level of training of the developers?  amount of experience in web development?&lt;br /&gt;
&lt;br /&gt;
* were tools part of the whole process or run at the end?&lt;br /&gt;
&lt;br /&gt;
* how was code repository prevented from unauthorized alterations?&lt;br /&gt;
&lt;br /&gt;
* practices for code check-in and independent review - how is introduction of Trojans avoided?&lt;br /&gt;
&lt;br /&gt;
* what threat level is being accounted for (e.g. will this only work against script kiddies)?  was threat modeling used?&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Summit&amp;diff=48435</id>
		<title>ESAPI Summit</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Summit&amp;diff=48435"/>
				<updated>2008-12-11T18:46:41Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Summit Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summit Overview ==&lt;br /&gt;
&lt;br /&gt;
The first OWASP ESAPI Summit was held December 9-11, 2008. It was hosted by Aspect Security in their Columbia, MD office.&lt;br /&gt;
&lt;br /&gt;
The following were the attendees of the Summit:&lt;br /&gt;
&lt;br /&gt;
*[[User:Jeff Williams|Jeff Williams]], Aspect Security - [[ESAPI|ESAPI Project Lead]]&lt;br /&gt;
*[[User:Wichers|Dave Wichers]], Aspect Security&lt;br /&gt;
*Ron Monzillo, Sun Microsystems - [http://java.sun.com/javaee/security/ Java EE Security Architect] &lt;br /&gt;
*[[User:Arshan|Arshan Dabirsiaghi]], Aspect Security - [[:Category:Intrinsic_Security_Working_Group|OWASP Intrisic Security Working Group Chair]]&lt;br /&gt;
*[[User:Jerryhoff|Jerry Hoff]], Aspect Security&lt;br /&gt;
*Mike Fauzy, Aspect Security&lt;br /&gt;
*[[User:Kevin.Fealey|Kevin Fealey]], Aspect Security - [[ESAPI Swingset|ESAPI Swingset Lead]]&lt;br /&gt;
*[[User&amp;quot;Jmanico|Jim Manico]], Aspect Security - [http://code.google.com/p/owasp-esapi-java/ ESAPI Java Committer]&lt;br /&gt;
*Steve Lavenhar, Booz Allen Hamilton&lt;br /&gt;
*Lian Jin, Booz Allen Hamilton&lt;br /&gt;
*John Steven, Cigital, Technical Director&lt;br /&gt;
*Joel Winstead, Cigital&lt;br /&gt;
*Alex Smolen, Foundstone - [[.NET ESAPI | ESAPI .NET Lead]]&lt;br /&gt;
*Andy Miller, Lockheed Martin&lt;br /&gt;
*John Munsch, Lockheed Martin&lt;br /&gt;
*Steve Christey, MITRE - [http://cve.mitre.org CVE]/[http://cwe.mitre.org CWE] Project Lead&lt;br /&gt;
&lt;br /&gt;
The following pages contain our thoughts/results from the summit.&lt;br /&gt;
&lt;br /&gt;
Summary: TODO&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[ESAPI Installation]]&lt;br /&gt;
* [[ESAPI Charter]]&lt;br /&gt;
* [[ESAPI Adoption Strategy]]&lt;br /&gt;
* [[ESAPI Framework Strategy]]&lt;br /&gt;
* [[ESAPI Assurance]]&lt;br /&gt;
* [[ESAPI Documentation]]&lt;br /&gt;
* [[ESAPI Marketing]]&lt;br /&gt;
* [[ESAPI Tooling]]&lt;br /&gt;
* [[ESAPI Static Analysis Support]]&lt;br /&gt;
* [[ESAPI Performance]]&lt;br /&gt;
* [[ESAPI Internationalization]]&lt;br /&gt;
* [[ESAPI Roadmap]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
* [[ESAPI API]]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* [[ESAPI Validation]]&lt;br /&gt;
* [[ESAPI Canonicalization]]&lt;br /&gt;
* [[ESAPI Encoding]]&lt;br /&gt;
* [[ESAPI Authentication]]&lt;br /&gt;
* [[ESAPI Session Management]]&lt;br /&gt;
* [[ESAPI Access Control]]&lt;br /&gt;
* [[ESAPI Encryption]]&lt;br /&gt;
* [[ESAPI Randomizer]]&lt;br /&gt;
* [[ESAPI Error Handling]]&lt;br /&gt;
* [[ESAPI Logging]]&lt;br /&gt;
* [[ESAPI Intrusion Detection]]&lt;br /&gt;
* [[ESAPI HTTP Protection]]&lt;br /&gt;
* [[ESAPI Utilities]]&lt;br /&gt;
* [[ESAPI Filters]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
[[Category:OWASP Enterprise Security API]]&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48426</id>
		<title>ESAPI Assurance</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48426"/>
				<updated>2008-12-11T18:20:43Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Building an Assurance Case for ESAPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building an Assurance Case for ESAPI ==&lt;br /&gt;
&lt;br /&gt;
* summary: make Claims, provide supporting Evidence, and make Arguments for how the evidence supports the claims&lt;br /&gt;
&lt;br /&gt;
* Highest level claim is &amp;quot;The system is Acceptably Secure&amp;quot; but how to break this down into sub-claims that map to the provided evidence?  e.g. absence of specific vulns (as investigated by manual testing or tool scans)&lt;br /&gt;
&lt;br /&gt;
*   [http://swaconsortium.org/projects/softwareFacts/softwareFacts.html Software Facts Label]&lt;br /&gt;
&lt;br /&gt;
* each language (Java, ASP, etc.) may need separate claims&lt;br /&gt;
&lt;br /&gt;
* list the third-party software&lt;br /&gt;
&lt;br /&gt;
* discuss coding practices that were followed, skill levels of developers, amount of independent review&lt;br /&gt;
&lt;br /&gt;
* publish scanning tool results&lt;br /&gt;
&lt;br /&gt;
* links to DHS web sites and documents&lt;br /&gt;
&lt;br /&gt;
* [https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/assurance/643-BSI.html  Arguing Security - Creating Security Assurance Cases]&lt;br /&gt;
&lt;br /&gt;
== Coding Practices ==&lt;br /&gt;
&lt;br /&gt;
* was OWASP Top Ten followed?&lt;br /&gt;
&lt;br /&gt;
* how was performance and security balanced?&lt;br /&gt;
&lt;br /&gt;
* what is the level of training of the developers?  amount of experience in web development?&lt;br /&gt;
&lt;br /&gt;
* were tools part of the whole process or run at the end?&lt;br /&gt;
&lt;br /&gt;
* how was code repository prevented from unauthorized alterations?&lt;br /&gt;
&lt;br /&gt;
* practices for code check-in and independent review - how is introduction of Trojans avoided?&lt;br /&gt;
&lt;br /&gt;
* what threat level is being accounted for (e.g. will this only work against script kiddies)?  was threat modeling used?&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48419</id>
		<title>ESAPI Assurance</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48419"/>
				<updated>2008-12-11T17:50:33Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Coding Practices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building an Assurance Case for ESAPI ==&lt;br /&gt;
&lt;br /&gt;
* summary: make Claims, provide supporting Evidence, and make Arguments for how the evidence supports the claims&lt;br /&gt;
&lt;br /&gt;
* Highest level claim is &amp;quot;The system is Acceptably Secure&amp;quot; but how to break this down into sub-claims that map to the provided evidence?  e.g. absence of specific vulns (as investigated by manual testing or tool scans)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Software Facts Label&amp;quot;&lt;br /&gt;
  http://swaconsortium.org/projects/softwareFacts/softwareFacts.html&lt;br /&gt;
&lt;br /&gt;
* each language (Java, ASP, etc.) may need separate claims&lt;br /&gt;
&lt;br /&gt;
* list the third-party software&lt;br /&gt;
&lt;br /&gt;
* discuss coding practices that were followed, skill levels of developers, amount of independent review&lt;br /&gt;
&lt;br /&gt;
* publish scanning tool results&lt;br /&gt;
&lt;br /&gt;
* links to DHS web sites and documents&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Arguing Security - Creating Security Assurance Cases&amp;quot;&lt;br /&gt;
 https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/assurance/643-BSI.html&lt;br /&gt;
&lt;br /&gt;
== Coding Practices ==&lt;br /&gt;
&lt;br /&gt;
* was OWASP Top Ten followed?&lt;br /&gt;
&lt;br /&gt;
* how was performance and security balanced?&lt;br /&gt;
&lt;br /&gt;
* what is the level of training of the developers?  amount of experience in web development?&lt;br /&gt;
&lt;br /&gt;
* were tools part of the whole process or run at the end?&lt;br /&gt;
&lt;br /&gt;
* how was code repository prevented from unauthorized alterations?&lt;br /&gt;
&lt;br /&gt;
* practices for code check-in and independent review - how is introduction of Trojans avoided?&lt;br /&gt;
&lt;br /&gt;
* what threat level is being accounted for (e.g. will this only work against script kiddies)?  was threat modeling used?&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Documentation&amp;diff=48402</id>
		<title>ESAPI Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Documentation&amp;diff=48402"/>
				<updated>2008-12-11T16:07:20Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Documentation Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Documentation Plan == &lt;br /&gt;
&lt;br /&gt;
* Getting Started Guide&lt;br /&gt;
&lt;br /&gt;
* How to Create a Custom ESAPI for Your Organization&lt;br /&gt;
&lt;br /&gt;
* How to Secure an Existing Application with ESAPI&lt;br /&gt;
&lt;br /&gt;
* How to Use ESAPI in a New Application&lt;br /&gt;
&lt;br /&gt;
* FAQ&lt;br /&gt;
&lt;br /&gt;
* Revamp the ESAPI Website&lt;br /&gt;
&lt;br /&gt;
* ESAPI Executive Overview&lt;br /&gt;
&lt;br /&gt;
* ESAPI Architecture/Design Guideline&lt;br /&gt;
&lt;br /&gt;
* Features List&lt;br /&gt;
&lt;br /&gt;
* Assurance Argument [[ESAPI_Assurance]]&lt;br /&gt;
&lt;br /&gt;
* How will the ESAPI be updated and released.&lt;br /&gt;
&lt;br /&gt;
* CWEs addressed by ESAPI&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48389</id>
		<title>ESAPI Assurance</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48389"/>
				<updated>2008-12-11T14:52:36Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Building an Assurance Case for ESAPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building an Assurance Case for ESAPI ==&lt;br /&gt;
&lt;br /&gt;
* summary: make Claims, provide supporting Evidence, and make Arguments for how the evidence supports the claims&lt;br /&gt;
&lt;br /&gt;
* Highest level claim is &amp;quot;The system is Acceptably Secure&amp;quot; but how to break this down into sub-claims that map to the provided evidence?  e.g. absence of specific vulns (as investigated by manual testing or tool scans)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Software Facts Label&amp;quot;&lt;br /&gt;
  http://swaconsortium.org/projects/softwareFacts/softwareFacts.html&lt;br /&gt;
&lt;br /&gt;
* each language (Java, ASP, etc.) may need separate claims&lt;br /&gt;
&lt;br /&gt;
* list the third-party software&lt;br /&gt;
&lt;br /&gt;
* discuss coding practices that were followed, skill levels of developers, amount of independent review&lt;br /&gt;
&lt;br /&gt;
* publish scanning tool results&lt;br /&gt;
&lt;br /&gt;
* links to DHS web sites and documents&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Arguing Security - Creating Security Assurance Cases&amp;quot;&lt;br /&gt;
 https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/assurance/643-BSI.html&lt;br /&gt;
&lt;br /&gt;
== Coding Practices ==&lt;br /&gt;
&lt;br /&gt;
* was OWASP Top Ten followed?&lt;br /&gt;
&lt;br /&gt;
* how was performance and security balanced?&lt;br /&gt;
&lt;br /&gt;
* what is the level of training of the developers?  amount of experience in web development?&lt;br /&gt;
&lt;br /&gt;
* were tools part of the whole process or run at the end?&lt;br /&gt;
&lt;br /&gt;
* how was code repository prevented from unauthorized alterations?&lt;br /&gt;
&lt;br /&gt;
* practices for code check-in and independent review - how is introduction of Trojans avoided?&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48384</id>
		<title>ESAPI Assurance</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48384"/>
				<updated>2008-12-11T14:50:58Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Building an Assurance Case for ESAPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building an Assurance Case for ESAPI ==&lt;br /&gt;
&lt;br /&gt;
* summary: make Claims, provide supporting Evidence, and make Arguments for how the evidence supports the claims&lt;br /&gt;
&lt;br /&gt;
* Highest level claim is &amp;quot;The system is Acceptably Secure&amp;quot; but how to break this down into sub-claims that map to the provided evidence?  e.g. absence of specific vulns (as investigated by manual testing or tool scans)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Software Facts Label&amp;quot;&lt;br /&gt;
  http://swaconsortium.org/projects/softwareFacts/softwareFacts.html&lt;br /&gt;
&lt;br /&gt;
* each language (Java, ASP, etc.) may need separate claims&lt;br /&gt;
&lt;br /&gt;
* list the third-party software&lt;br /&gt;
&lt;br /&gt;
* discuss coding practices that were followed, skill levels of developers, amount of independent review&lt;br /&gt;
&lt;br /&gt;
* publish scanning tool results&lt;br /&gt;
&lt;br /&gt;
* links to DHS web sites and documents&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Arguing Security - Creating Security Assurance Cases&amp;quot;&lt;br /&gt;
https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/assurance/643-BSI.html&lt;br /&gt;
&lt;br /&gt;
== Coding Practices ==&lt;br /&gt;
&lt;br /&gt;
* was OWASP Top Ten followed?&lt;br /&gt;
&lt;br /&gt;
* how was performance and security balanced?&lt;br /&gt;
&lt;br /&gt;
* what is the level of training of the developers?  amount of experience in web development?&lt;br /&gt;
&lt;br /&gt;
* were tools part of the whole process or run at the end?&lt;br /&gt;
&lt;br /&gt;
* how was code repository prevented from unauthorized alterations?&lt;br /&gt;
&lt;br /&gt;
* practices for code check-in and independent review - how is introduction of Trojans avoided?&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48383</id>
		<title>ESAPI Assurance</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48383"/>
				<updated>2008-12-11T14:49:53Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Building an Assurance Case for ESAPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building an Assurance Case for ESAPI ==&lt;br /&gt;
&lt;br /&gt;
* summary: make Claims, provide supporting Evidence, and make Arguments for how the evidence supports the claims&lt;br /&gt;
&lt;br /&gt;
* Highest level claim is &amp;quot;The system is Acceptably Secure&amp;quot; but how to break this down into sub-claims that map to the provided evidence?  e.g. absence of specific vulns (as investigated by manual testing or tool scans)&lt;br /&gt;
&lt;br /&gt;
* consider adopting software facts label&lt;br /&gt;
  http://swaconsortium.org/projects/softwareFacts/softwareFacts.html&lt;br /&gt;
&lt;br /&gt;
* each language (Java, ASP, etc.) may need separate claims&lt;br /&gt;
&lt;br /&gt;
* list the third-party software&lt;br /&gt;
&lt;br /&gt;
* discuss coding practices that were followed, skill levels of developers, amount of independent review&lt;br /&gt;
&lt;br /&gt;
* publish scanning tool results&lt;br /&gt;
&lt;br /&gt;
* links to DHS web sites and documents&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Arguing Security - Creating Security Assurance Cases&amp;quot;&lt;br /&gt;
https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/assurance/643-BSI.html&lt;br /&gt;
&lt;br /&gt;
== Coding Practices ==&lt;br /&gt;
&lt;br /&gt;
* was OWASP Top Ten followed?&lt;br /&gt;
&lt;br /&gt;
* how was performance and security balanced?&lt;br /&gt;
&lt;br /&gt;
* what is the level of training of the developers?  amount of experience in web development?&lt;br /&gt;
&lt;br /&gt;
* were tools part of the whole process or run at the end?&lt;br /&gt;
&lt;br /&gt;
* how was code repository prevented from unauthorized alterations?&lt;br /&gt;
&lt;br /&gt;
* practices for code check-in and independent review - how is introduction of Trojans avoided?&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48371</id>
		<title>ESAPI Assurance</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48371"/>
				<updated>2008-12-11T14:42:23Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Building an Assurance Case for ESAPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building an Assurance Case for ESAPI ==&lt;br /&gt;
&lt;br /&gt;
* consider adopting software facts label&lt;br /&gt;
  http://swaconsortium.org/projects/softwareFacts/softwareFacts.html&lt;br /&gt;
&lt;br /&gt;
* identify third-party software&lt;br /&gt;
&lt;br /&gt;
* discuss coding practices that were followed, skill levels of developers, amount of independent review&lt;br /&gt;
&lt;br /&gt;
* publish scanning tool results&lt;br /&gt;
&lt;br /&gt;
* links to DHS web sites and documents&lt;br /&gt;
&lt;br /&gt;
== Coding Practices ==&lt;br /&gt;
&lt;br /&gt;
* was OWASP Top Ten followed?&lt;br /&gt;
&lt;br /&gt;
* how was performance and security balanced?&lt;br /&gt;
&lt;br /&gt;
* what is the level of training of the developers?  amount of experience in web development?&lt;br /&gt;
&lt;br /&gt;
* were tools part of the whole process or run at the end?&lt;br /&gt;
&lt;br /&gt;
* how was code repository prevented from unauthorized alterations?&lt;br /&gt;
&lt;br /&gt;
* practices for code check-in and independent review - how is introduction of Trojans avoided?&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48364</id>
		<title>ESAPI Assurance</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Assurance&amp;diff=48364"/>
				<updated>2008-12-11T14:36:37Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: New page: == Building an Assurance Case for ESAPI ==  * consider adopting software facts label  * identify third-party software  * discuss coding practices that were followed, skill levels of develo...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building an Assurance Case for ESAPI ==&lt;br /&gt;
&lt;br /&gt;
* consider adopting software facts label&lt;br /&gt;
&lt;br /&gt;
* identify third-party software&lt;br /&gt;
&lt;br /&gt;
* discuss coding practices that were followed, skill levels of developers, amount of independent review&lt;br /&gt;
&lt;br /&gt;
* publish scanning tool results&lt;br /&gt;
&lt;br /&gt;
* links to DHS web sites and documents&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Documentation&amp;diff=48361</id>
		<title>ESAPI Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Documentation&amp;diff=48361"/>
				<updated>2008-12-11T14:33:48Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Documentation Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Documentation Plan == &lt;br /&gt;
&lt;br /&gt;
* Getting Started Guide&lt;br /&gt;
&lt;br /&gt;
* How to Create a Custom ESAPI for Your Organization&lt;br /&gt;
&lt;br /&gt;
* How to Secure an Existing Application with ESAPI&lt;br /&gt;
&lt;br /&gt;
* How to Use ESAPI in a New Application&lt;br /&gt;
&lt;br /&gt;
* FAQ&lt;br /&gt;
&lt;br /&gt;
* Revamp the ESAPI Website&lt;br /&gt;
&lt;br /&gt;
* ESAPI Executive Overview&lt;br /&gt;
&lt;br /&gt;
* ESAPI Architecture/Design Guideline&lt;br /&gt;
&lt;br /&gt;
* Features List&lt;br /&gt;
&lt;br /&gt;
* Assurance Argument [[ESAPI_Assurance]]&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ESAPI_Documentation&amp;diff=48358</id>
		<title>ESAPI Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ESAPI_Documentation&amp;diff=48358"/>
				<updated>2008-12-11T14:31:38Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Documentation Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Documentation Plan == &lt;br /&gt;
&lt;br /&gt;
* Getting Started Guide&lt;br /&gt;
&lt;br /&gt;
* How to Create a Custom ESAPI for Your Organization&lt;br /&gt;
&lt;br /&gt;
* How to Secure an Existing Application with ESAPI&lt;br /&gt;
&lt;br /&gt;
* How to Use ESAPI in a New Application&lt;br /&gt;
&lt;br /&gt;
* FAQ&lt;br /&gt;
&lt;br /&gt;
* Revamp the ESAPI Website&lt;br /&gt;
&lt;br /&gt;
* ESAPI Executive Overview&lt;br /&gt;
&lt;br /&gt;
* ESAPI Architecture/Design Guideline&lt;br /&gt;
&lt;br /&gt;
* Features List&lt;br /&gt;
&lt;br /&gt;
* Assurance Argument[[ESAPI_Assurance]]&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Top_10_2007-Broken_Authentication_and_Session_Management&amp;diff=37231</id>
		<title>Top 10 2007-Broken Authentication and Session Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Top_10_2007-Broken_Authentication_and_Session_Management&amp;diff=37231"/>
				<updated>2008-08-26T05:01:16Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* References */  fixed typo in CWE ID - 301, not 311&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Top_10_2007:TopTemplate|usenext=NextLink|next=-Insecure Cryptographic Storage|useprev=PrevLink|prev=-Information Leakage and Improper Error Handling|usemain=MainLink|main=}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Proper authentication and session management is critical to web application security. Flaws in this area most frequently involve the failure to protect credentials and session tokens through their lifecycle. These flaws can lead to the hijacking of user or administrative accounts, undermine authorization and accountability controls, and cause privacy violations.&lt;br /&gt;
&lt;br /&gt;
== Environments Affected ==&lt;br /&gt;
&lt;br /&gt;
All web application frameworks are vulnerable to authentication and session management flaws. &lt;br /&gt;
&lt;br /&gt;
== Vulnerability ==&lt;br /&gt;
&lt;br /&gt;
Flaws in the main authentication mechanism are not uncommon, but weaknesses are more often introduced through ancillary authentication functions such as logout, password management, timeout, remember me, secret question, and account update.&lt;br /&gt;
&lt;br /&gt;
== Verifying Security ==&lt;br /&gt;
&lt;br /&gt;
The goal is to verify that the application properly authenticates users and properly protects identities and their associated credentials.&lt;br /&gt;
&lt;br /&gt;
Automated approaches: Vulnerability scanning tools have a very difficult time detecting vulnerabilities in custom authentication and session management schemes. Static analysis tools are also not likely to detect authentication and session management problems in custom code.&lt;br /&gt;
&lt;br /&gt;
Manual approaches: Code review and testing, especially in combination, are quite effective at verifying that the authentication, session management, and ancillary functions are all implemented properly.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Authentication relies on secure communication and credential storage. First ensure that SSL is the only option for all authenticated parts of the application (see A9 – Insecure Communications) and that all credentials are stored in hashed or encrypted form (see A8 – Insecure Cryptographic Storage).&lt;br /&gt;
&lt;br /&gt;
Preventing authentication flaws takes careful planning. Among the most important considerations are: &lt;br /&gt;
&lt;br /&gt;
*'''Only use the inbuilt session management mechanism.''' Do not write or use secondary session handlers under any circumstances.&lt;br /&gt;
*'''Do not accept new, preset or invalid session identifiers''' from the URL or in the request. This is called a session fixation attack.&lt;br /&gt;
*'''Limit or rid your code of custom cookies for authentication or session management '''purposes, such as &amp;quot;remember me&amp;quot; type functionality or home grown single-sign on functionality. This does not apply to robust, well proven SSO or federated authentication solutions.&lt;br /&gt;
*'''Use a single authentication mechanism''' with appropriate strength and number of factors.  Make sure that this mechanism is not easily subjected to spoofing or replay attacks. Do not make this mechanism overly complex, which then may become subject to its own attack.&lt;br /&gt;
*'''Do not allow the login process to start from an unencrypted page.''' Always start the login process from a second, encrypted page with a fresh or new session token to prevent credential or session stealing, phishing attacks and session fixation attacks.&lt;br /&gt;
*Consider '''regenerating a new session upon successful authentication''' or privilege level change.&lt;br /&gt;
*'''Ensure that every page has a logout link.''' Logout should destroy all server side session state and client side cookies. Consider human factors: do not ask for confirmation as users will end up just closing the tab or window rather than logging out successfully.&lt;br /&gt;
*'''Use a timeout period''' that automatically logs out an inactive session as per the value of the data being protected (shorter is always better). &lt;br /&gt;
*'''Use only strong ancillary authentication functions''' (questions and answers, password reset) as these are credentials in the same way usernames and passwords or tokens are credentials. Apply a one-One way hash to answers to prevent disclosure attacks.&lt;br /&gt;
*'''Do not expose any session identifiers or any portion of valid credentials in URLs or logs (no session rewriting or storing the user’s password in log files)'''&lt;br /&gt;
*'''Check the old password when the user changes to a new password'''&lt;br /&gt;
*'''Do not rely upon spoofable credentials as the sole form of authentication''', such as IP addresses or address range masks, DNS  or reverse DNS lookups, referrer headers or similar''' '''&lt;br /&gt;
*'''Be careful of sending secrets to registered e-mail addresses''' (see RSNAKE02 in the references) as a mechanism for password resets. Use limited time only random numbers to reset access and send a follow up e-mail as soon as the password has been reset. Be careful of allowing self-registered users changing their e-mail address - send a message to the previous e-mail address before enacting the change&lt;br /&gt;
&lt;br /&gt;
== Samples	 ==&lt;br /&gt;
&lt;br /&gt;
*[http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6145 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6145]    &lt;br /&gt;
*[http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6229 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6229]      &lt;br /&gt;
*[http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6528 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6528]     &lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Guide to Authentication]]&lt;br /&gt;
* [[Testing for authentication]]&lt;br /&gt;
* [[Reviewing Code for Authentication]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*CWE: CWE-287 (Authentication Issues), CWE-522 (Insufficiently Protected Credentials), CWE-301 (Reflection attack in an authentication protocol), others.&lt;br /&gt;
*WASC Threat Classification:&lt;br /&gt;
** [http://www.webappsec.org/projects/threat/classes/insufficient_authentication.shtml http://www.webappsec.org/projects/threat/classes/insufficient_authentication.shtml]&lt;br /&gt;
** [http://www.webappsec.org/projects/threat/classes/credential_session_prediction.shtml http://www.webappsec.org/projects/threat/classes/credential_session_prediction.shtml]&lt;br /&gt;
** [http://www.webappsec.org/projects/threat/classes/session_fixation.shtml http://www.webappsec.org/projects/threat/classes/session_fixation.shtml]&lt;br /&gt;
*RSNAKE01 - http://ha.ckers.org/blog/20070122/ip-trust-relationships-xss-and-you&lt;br /&gt;
*RSNAKE02 - http://ha.ckers.org/blog/20061109/email-as-half-factor-authentication&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Top_10_2007:BottomTemplate|usenext=NextLink|next=-Insecure Cryptographic Storage|useprev=PrevLink|prev=-Information Leakage and Improper Error Handling|usemain=MainLink|main=}}&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Top_10_2007-Failure_to_Restrict_URL_Access&amp;diff=37230</id>
		<title>Top 10 2007-Failure to Restrict URL Access</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Top_10_2007-Failure_to_Restrict_URL_Access&amp;diff=37230"/>
				<updated>2008-08-26T04:52:01Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* References */ fixed CWE typo - 425 not 325&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Top_10_2007:TopTemplate|usenext=NextLink|next=-Where to Go From Here|useprev=PrevLink|prev=-Insecure Cryptographic Storage|usemain=MainLink|main=}}&lt;br /&gt;
&lt;br /&gt;
Frequently, the only protection for a URL is that links to that page are not presented to unauthorized users. However, a motivated, skilled, or just plain lucky attacker may be able to find and access these pages, invoke functions, and view data. Security by obscurity is not sufficient to protect sensitive functions and data in an application. Access control checks must be performed before a request to a sensitive function is granted, which ensures that the user is authorized to access that function.&lt;br /&gt;
&lt;br /&gt;
== Environments Affected ==&lt;br /&gt;
&lt;br /&gt;
All web application frameworks are vulnerable to failure to restrict URL access. &lt;br /&gt;
&lt;br /&gt;
== Vulnerability ==&lt;br /&gt;
&lt;br /&gt;
The primary attack method for this vulnerability is called &amp;quot;forced browsing&amp;quot;, which encompasses guessing links and brute force techniques to find unprotected pages. Applications frequently allow access control code to evolve and spread throughout a codebase, resulting in a complex model that is difficult to understand for developers and security specialists alike. This complexity makes it likely that errors will occur and pages will be missed, leaving them exposed.&lt;br /&gt;
&lt;br /&gt;
Some common examples of these flaws include:&lt;br /&gt;
&lt;br /&gt;
*&amp;quot;Hidden&amp;quot; or &amp;quot;special&amp;quot; URLs, rendered only to administrators or privileged users in the presentation layer, but accessible to all users if they know it exists, such as /admin/adduser.php or /approveTransfer.do. This is particularly prevalent with menu code.&lt;br /&gt;
*Applications often allow access to &amp;quot;hidden&amp;quot; files, such as static XML or system generated reports, trusting security through obscurity to hide them.&lt;br /&gt;
*Code that enforces an access control policy but is out of date or insufficient. For example, imagine /approveTransfer.do was once available to all users, but since SOX controls were brought in, it is only supposed to be available to approvers. A fix might have been to not present it to unauthorized users, but no access control is actually enforced when requesting that page.&lt;br /&gt;
*Code that evaluates privileges on the client but not on the server, as in this [http://grutztopia.jingojango.net/2007/01/your-free-macworld-expo-platinum-pass_11.html attack on MacWorld 2007], which approved &amp;quot;Platinum&amp;quot; passes worth $1700 via JavaScript on the browser rather than on the server.&lt;br /&gt;
&lt;br /&gt;
== Verifying Security ==&lt;br /&gt;
&lt;br /&gt;
The goal is to verify that access control is enforced consistently in the presentation layer and the business logic for all URLs in the application.&lt;br /&gt;
&lt;br /&gt;
Automated approaches: Both vulnerability scanners and static analysis tools have difficulty with verifying URL access control, but for different reasons. Vulnerability scanners have difficulty guessing hidden pages and determining which pages should be allowed for each user, while static analysis engines struggle to identify custom access controls in the code and link the presentation layer with the business logic.&lt;br /&gt;
&lt;br /&gt;
Manual approaches: The most efficient and accurate approach is to use a combination of code review and security testing to verify the access control mechanism. If the mechanism is centralized, the verification can be quite efficient. If the mechanism is distributed across an entire codebase, verification can be more time-consuming. If the mechanism is enforced externally, the configuration must be examined and tested.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Taking the time to plan authorization by creating a matrix to map the roles and functions of the application is a key step in achieving protection against unrestricted URL access. Web applications must enforce access control on every URL and business function. It is not sufficient to put access control into the presentation layer and leave the business logic unprotected. It is also not sufficient to check once during the process to ensure the user is authorized, and then not check again on subsequent steps. Otherwise, an attacker can simply skip the step where authorization is checked, and forge the parameter values necessary to continue on at the next step.&lt;br /&gt;
&lt;br /&gt;
Enabling URL access control takes some careful planning. Among the most important considerations are:&lt;br /&gt;
&lt;br /&gt;
*'''Ensure the access control matrix is part of the business, architecture, and design of the application'''&lt;br /&gt;
*'''Ensure that all URLs and business functions are protected by an effective access control mechanism''' that verifies the user’s role and entitlements prior to any processing taking place. Make sure this is done during every step of the way, not just once towards the beginning of any multi-step process&lt;br /&gt;
*'''Perform a penetration test '''prior to deployment or code delivery to ensure that the application cannot be misused by a motivated skilled attacker&lt;br /&gt;
*'''Pay close attention to include/library files''', especially if they have an executable extension such as .php.  Where feasible, they should be kept outside of the web root.  They should verify that they are not being directly accessed, e.g. by checking for a constant that can only be created by the library’s caller&lt;br /&gt;
*'''Do not''' '''assume that users will be unaware of special or hidden URLs or APIs'''. Always ensure that administrative and high privilege actions are protected&lt;br /&gt;
*'''Block access to all file types that your application should never serve'''. Ideally, this filter would follow the &amp;quot;accept known good&amp;quot; approach and only allow file types that you intend to serve, e.g., .html, .pdf, .php. This would then block any attempts to access log files, xml files, etc. that you never intend to serve directly. &lt;br /&gt;
*'''Keep up to date with virus protection and patches''' to components such as XML processors, word processors, image processors, etc., which handle user supplied data&lt;br /&gt;
&lt;br /&gt;
== Samples ==&lt;br /&gt;
&lt;br /&gt;
*[http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0147 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0147]&lt;br /&gt;
*[http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0131 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0131]  &lt;br /&gt;
*[http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-1227 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-1227]  &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*CWE: CWE-425 (Direct Request), CWE-288 (Authentication Bypass by Alternate Path), CWE-285 (Missing or Inconsistent Access Control)&lt;br /&gt;
*WASC Threat Classification: [http://www.webappsec.org/projects/threat/classes/predictable_resource_location.shtml http://www.webappsec.org/projects/threat/classes/predictable_resource_location.shtml] &lt;br /&gt;
*OWASP, [http://www.owasp.org/index.php/Forced_Browsing http://www.owasp.org/index.php/Forced_Browsing] &lt;br /&gt;
*OWASP Guide, [http://www.owasp.org/index.php/Guide_to_Authorization http://www.owasp.org/index.php/Guide_to_Authorization]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Top_10_2007:BottomTemplate|usenext=NextLink|next=-Where to Go From Here|useprev=PrevLink|prev=-Insecure Cryptographic Storage|usemain=MainLink|main=}}&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:Vulnerability&amp;diff=6604</id>
		<title>Category:Vulnerability</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:Vulnerability&amp;diff=6604"/>
				<updated>2006-06-23T17:53:02Z</updated>
		
		<summary type="html">&lt;p&gt;SteveChristey: /* Examples of vulnerabilities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category is for tagging common types of software vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
==What is a vulnerability?==&lt;br /&gt;
&lt;br /&gt;
A vulnerability is a hole or a weakness in the application, which can be a design flaw or an implementation bug, that allows an attacker to cause harm to the stakeholders of an application. Stakeholders include the application owner, application users, and other entities that rely on the application.  The term &amp;quot;vulnerability&amp;quot; is often used very loosely. However, here we need to distinguish [[:Category:Threat|threats]], [[:Category:Attack|attacks]], and [[:Category:Countermeasure|countermeasures]].&lt;br /&gt;
&lt;br /&gt;
Please '''do not post any actual vulnerabilities''' in products, services, or web applications. Those disclosure reports should be posted to bugtraq or full-disclosure mailing lists.&lt;br /&gt;
&lt;br /&gt;
==Examples of vulnerabilities==&lt;br /&gt;
* Lack of input validation on user input&lt;br /&gt;
* Lack of sufficient logging mechanism&lt;br /&gt;
* Fail-open error handling&lt;br /&gt;
* Not closing the database connection properly&lt;br /&gt;
&lt;br /&gt;
For a great overview, check out the [[OWASP Top Ten Project]]. You can read about the top vulnerabilities and download a paper that covers them in detail. Many organizations and agencies use the Top Ten as a way of creating awareness about application security.&lt;br /&gt;
&lt;br /&gt;
{{Template:PutInCategory}}&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Before you add a vulnerability, please search and make sure there isn't an equivalent one already. You may want to consider creating a redirect if the topic is the same. Every vulnerability article has a defined structure. Please read the details of [[How To Add a Vulnerability]] before creating a new article.&lt;br /&gt;
&lt;br /&gt;
[[Category:Article Type]]&lt;/div&gt;</summary>
		<author><name>SteveChristey</name></author>	</entry>

	</feed>