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

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16975</id>
		<title>OWASP Java Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16975"/>
				<updated>2007-03-05T20:21:21Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Session Management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;Key:&amp;lt;/b&amp;gt;&lt;br /&gt;
* xx%: Progress status of the paragraph&lt;br /&gt;
* Review: The paragraph needs a review&lt;br /&gt;
* TD: Paragraph to be assigned&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Architects]]==&lt;br /&gt;
Discuss the security implications of common J2EE architectures.  This could be discussed in terms of: Authentication, Authorisation, Data Validation, Cross Site Scripting protection.  Other architecture concerns such as scalability, performance and maintainability can also be mentioned, but the focus on security should not be lost.&lt;br /&gt;
  &lt;br /&gt;
Any other security concerns that should be addressed during the design phase should also be mentioned here.&lt;br /&gt;
===Design considerations===&lt;br /&gt;
* Architectural considerations (0%, TD)&lt;br /&gt;
** EJB Middle tier (0%, TD)&lt;br /&gt;
** Web Services Middle tier (0%, TD)&lt;br /&gt;
** Spring Middle tier (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Developers]]==&lt;br /&gt;
=== Noteworthy Frameworks ===&lt;br /&gt;
Discuss important and relevant Java security frameworks that would be useful to architects.  The information should be at a suitably high level, for example, by discussing the advantages and features as well as the associated costs (direct and indirect) of using the frameworks.&lt;br /&gt;
&lt;br /&gt;
(0%, Seeking Volunteers)&lt;br /&gt;
*	Struts &lt;br /&gt;
*	Turbine&lt;br /&gt;
*	JFS (MyFaces)&lt;br /&gt;
*	Tapestry&lt;br /&gt;
*	Webwork&lt;br /&gt;
*	Cocoon&lt;br /&gt;
*	Tiles&lt;br /&gt;
*	SiteMesh&lt;br /&gt;
*	Spring&lt;br /&gt;
&lt;br /&gt;
===[[Java Security Basics]]===&lt;br /&gt;
Provide an introduction into the basic security services provided by the Java language and environment.  Remember to keep this relevant for web developers for the initial release - there may be a potential to expand this to thick clients in subsequent releases.&lt;br /&gt;
* Class Loading (0%, Shyaam Sundar, Review)&lt;br /&gt;
* Bytecode verifier (0%, Shyaam Sundar, Review)&lt;br /&gt;
* The Security Manager and security.policy file (0%, Shyaam Sundar, Review)&lt;br /&gt;
&lt;br /&gt;
===Input Validation Overview ===&lt;br /&gt;
Input validation is perhaps the most important category of application security. Any data entering a software system must be verified to contain safe data that is not mounting a SQL Injection, XSS, CSRF or other form of attack. This is done primarily through the use of regular expressions. It's crucial not to hard-code input validation routines. Regular expressions should contained within a configuration file that can easily updated by an InfoSec professional and not require a programmers intervention or deployment of new application code. Application security needs change over time as new attack vectors are discovered. Application administers need to be able to react to these changes as quickly as possible. &lt;br /&gt;
&lt;br /&gt;
===Input Validation ===&lt;br /&gt;
* Dangerous calls (BufferedReader.readLine(), ServletRequest.getParameter(), etc...) (0%, TD)&lt;br /&gt;
* [[How to add validation logic to HttpServletRequest]] (100%, Jeff Williams, Review)&lt;br /&gt;
* [[How to perform HTML entity encoding in Java]] (100%, Jeff Williams, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing SQL Injection in Java]] ====&lt;br /&gt;
* Overview &lt;br /&gt;
* Prevention (60%, Stephen de Vries, Review)&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis (60%, Rohyt Belani, Review)&lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0&lt;br /&gt;
** JDO&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing LDAP Injection in Java]] ====&lt;br /&gt;
* Overview (100%, Stephen de Vries, Review)&lt;br /&gt;
* Prevention (100%, Stephen de Vries, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[XPATH Injection]] ====&lt;br /&gt;
As with the other Injection sections, only provide cursory information on the general case. Should contain practical real-world advise and code examples for preventing XPATH injection.&lt;br /&gt;
* Overview (0%, TD)&lt;br /&gt;
* Prevention (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks  ====&lt;br /&gt;
* HTTP Response splitting (0%, TD)&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec() (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials - (0%, Adrian San Juan, Review)&lt;br /&gt;
* [[Hashing Java|Hashing]] - (100%, Michel Prunet, Review)&lt;br /&gt;
* [[SSL Best Practices]] - (20%, Philippe Curmin, Review)&lt;br /&gt;
* [[Using JCaptcha]] - (100%, Dave Ferguson, Review) &lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
** [[Declarative Access Control in Java]] - (100%, Dave Ferguson, Reviewed by Pierre Parrend, Dave to act on comments)&lt;br /&gt;
* [[JAAS Timed Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[JAAS Tomcat Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[Password length &amp;amp; complexity]] - (0%, Adrian San Juan, Review)&lt;br /&gt;
&lt;br /&gt;
===Session Management ===&lt;br /&gt;
The generic problems and solutions for session management are covered in the Guide.  This section should focus on Java specific examples.&lt;br /&gt;
* Logout (0%, TD)&lt;br /&gt;
* Session Timeout (0%, TD)&lt;br /&gt;
* Absolute Timeout (0%, TD)&lt;br /&gt;
* [[Session Fixation in Java]] (100%, Rohyt Belani, Review)&lt;br /&gt;
* Terminating sessions (0%, TD)&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
&lt;br /&gt;
===Authorization===&lt;br /&gt;
* Declarative v/s Programmatic (0%, TD)&lt;br /&gt;
* EJB Authorization (0%, TD)&lt;br /&gt;
* Acegi (0%, TD)&lt;br /&gt;
* JACC (0%, TD)&lt;br /&gt;
* Check horizontal privilege (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions JCE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* Storing db secrets (0%, TD)&lt;br /&gt;
* Encrypting JDBC connections (0%, TD)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Secure_Socket_Extensions JSSE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions Random number generation] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Logging - why log? what to log? log4j, etc. (0%, TD)&lt;br /&gt;
* Exception handling techniques (0%, TD)&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks (50%, TD)&lt;br /&gt;
** Servlet spec - web.xml [[Securing tomcat]] (100%, Darren Edmonds, Review)&lt;br /&gt;
** JSP errorPage (0%, TD)&lt;br /&gt;
* Web application forensics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML (0%, TD)&lt;br /&gt;
* (X)WS-Security (0%, TD)&lt;br /&gt;
* SunJWSDP (0%, TD)&lt;br /&gt;
* XML Signature (JSR 105) (0%, TD)&lt;br /&gt;
* XML Encryption (JSR 106) (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
The introduction should cover the advantages and short comings of code analysis tools.  An overview of the current state of the art and the available tools would go well here.  As a start, only open source tools are listed, but if vendors of commercial tools adhere to the [[Tutorial]] guidelines, these submissions will be gladly received.&lt;br /&gt;
* Introduction (0%, TD)&lt;br /&gt;
* [[:Category:OWASP LAPSE Project]] (100%, Review)&lt;br /&gt;
* FindBugs (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint (0%, TD)&lt;br /&gt;
* Jmetrics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[J2EE Security For Deployers]] ==&lt;br /&gt;
Practical step-by-step guides to securing various J2EE servers.  Examples of secure configurations can also be provided for download.  If configurations are provided, they should be properly commented so that the rationale for configuration settings is clearly explained.  Users of the configurations should be provided with enough information to make their own risk decisions.&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* [[Securing tomcat|Securing Tomcat]] - (100%, Darren Edmonds, Review)&lt;br /&gt;
* Securing JBoss (0%, TD)&lt;br /&gt;
* Securing WebLogic (0%, TD)&lt;br /&gt;
* Securing WebSphere (0%, TD)&lt;br /&gt;
* Others...&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
Practical information on creating a Java security policies for J2EE servers.&lt;br /&gt;
* PolicyTool (80%, Jeff Williams, Needs a new owner, Review)&lt;br /&gt;
* jChains (www.jchains.org) - (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode manipulation tools and techniques (0%, TD)&lt;br /&gt;
* [[Bytecode obfuscation]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* Convert bytecode to native machine code (0%, TD)&lt;br /&gt;
* [[Protecting code archives with digital signatures]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* [[Signing jar files with jarsigner]] (20%, Pierre Parrend)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Security Analysts and Testers]]==&lt;br /&gt;
* Using Eclipse to verify Java applications (0%, TD)&lt;br /&gt;
* Using [[:Category:OWASP WebScarab Project|WebScarab]] to find vulnerabilities in J2EE applications - (0%, TD)&lt;br /&gt;
* Decompiling Java bytecode (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[Java Security Resources]] (ongoing)==&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16974</id>
		<title>OWASP Java Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16974"/>
				<updated>2007-03-05T20:20:41Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Preventing SQL Injection in Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;Key:&amp;lt;/b&amp;gt;&lt;br /&gt;
* xx%: Progress status of the paragraph&lt;br /&gt;
* Review: The paragraph needs a review&lt;br /&gt;
* TD: Paragraph to be assigned&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Architects]]==&lt;br /&gt;
Discuss the security implications of common J2EE architectures.  This could be discussed in terms of: Authentication, Authorisation, Data Validation, Cross Site Scripting protection.  Other architecture concerns such as scalability, performance and maintainability can also be mentioned, but the focus on security should not be lost.&lt;br /&gt;
  &lt;br /&gt;
Any other security concerns that should be addressed during the design phase should also be mentioned here.&lt;br /&gt;
===Design considerations===&lt;br /&gt;
* Architectural considerations (0%, TD)&lt;br /&gt;
** EJB Middle tier (0%, TD)&lt;br /&gt;
** Web Services Middle tier (0%, TD)&lt;br /&gt;
** Spring Middle tier (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Developers]]==&lt;br /&gt;
=== Noteworthy Frameworks ===&lt;br /&gt;
Discuss important and relevant Java security frameworks that would be useful to architects.  The information should be at a suitably high level, for example, by discussing the advantages and features as well as the associated costs (direct and indirect) of using the frameworks.&lt;br /&gt;
&lt;br /&gt;
(0%, Seeking Volunteers)&lt;br /&gt;
*	Struts &lt;br /&gt;
*	Turbine&lt;br /&gt;
*	JFS (MyFaces)&lt;br /&gt;
*	Tapestry&lt;br /&gt;
*	Webwork&lt;br /&gt;
*	Cocoon&lt;br /&gt;
*	Tiles&lt;br /&gt;
*	SiteMesh&lt;br /&gt;
*	Spring&lt;br /&gt;
&lt;br /&gt;
===[[Java Security Basics]]===&lt;br /&gt;
Provide an introduction into the basic security services provided by the Java language and environment.  Remember to keep this relevant for web developers for the initial release - there may be a potential to expand this to thick clients in subsequent releases.&lt;br /&gt;
* Class Loading (0%, Shyaam Sundar, Review)&lt;br /&gt;
* Bytecode verifier (0%, Shyaam Sundar, Review)&lt;br /&gt;
* The Security Manager and security.policy file (0%, Shyaam Sundar, Review)&lt;br /&gt;
&lt;br /&gt;
===Input Validation Overview ===&lt;br /&gt;
Input validation is perhaps the most important category of application security. Any data entering a software system must be verified to contain safe data that is not mounting a SQL Injection, XSS, CSRF or other form of attack. This is done primarily through the use of regular expressions. It's crucial not to hard-code input validation routines. Regular expressions should contained within a configuration file that can easily updated by an InfoSec professional and not require a programmers intervention or deployment of new application code. Application security needs change over time as new attack vectors are discovered. Application administers need to be able to react to these changes as quickly as possible. &lt;br /&gt;
&lt;br /&gt;
===Input Validation ===&lt;br /&gt;
* Dangerous calls (BufferedReader.readLine(), ServletRequest.getParameter(), etc...) (0%, TD)&lt;br /&gt;
* [[How to add validation logic to HttpServletRequest]] (100%, Jeff Williams, Review)&lt;br /&gt;
* [[How to perform HTML entity encoding in Java]] (100%, Jeff Williams, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing SQL Injection in Java]] ====&lt;br /&gt;
* Overview &lt;br /&gt;
* Prevention (60%, Stephen de Vries, Review)&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis (60%, Rohyt Belani, Review)&lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0&lt;br /&gt;
** JDO&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing LDAP Injection in Java]] ====&lt;br /&gt;
* Overview (100%, Stephen de Vries, Review)&lt;br /&gt;
* Prevention (100%, Stephen de Vries, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[XPATH Injection]] ====&lt;br /&gt;
As with the other Injection sections, only provide cursory information on the general case. Should contain practical real-world advise and code examples for preventing XPATH injection.&lt;br /&gt;
* Overview (0%, TD)&lt;br /&gt;
* Prevention (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks  ====&lt;br /&gt;
* HTTP Response splitting (0%, TD)&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec() (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials - (0%, Adrian San Juan, Review)&lt;br /&gt;
* [[Hashing Java|Hashing]] - (100%, Michel Prunet, Review)&lt;br /&gt;
* [[SSL Best Practices]] - (20%, Philippe Curmin, Review)&lt;br /&gt;
* [[Using JCaptcha]] - (100%, Dave Ferguson, Review) &lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
** [[Declarative Access Control in Java]] - (100%, Dave Ferguson, Reviewed by Pierre Parrend, Dave to act on comments)&lt;br /&gt;
* [[JAAS Timed Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[JAAS Tomcat Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[Password length &amp;amp; complexity]] - (0%, Adrian San Juan, Review)&lt;br /&gt;
&lt;br /&gt;
===Session Management ===&lt;br /&gt;
The generic problems and solutions for session management are covered in the Guide.  This section should focus on Java specific examples.&lt;br /&gt;
* Logout (0%, TD)&lt;br /&gt;
* Session Timeout (0%, TD)&lt;br /&gt;
* Absolute Timeout (0%, TD)&lt;br /&gt;
* [[Session Fixation in Java]] (50%, Rohyt Belani)&lt;br /&gt;
* Terminating sessions (0%, TD)&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
&lt;br /&gt;
===Authorization===&lt;br /&gt;
* Declarative v/s Programmatic (0%, TD)&lt;br /&gt;
* EJB Authorization (0%, TD)&lt;br /&gt;
* Acegi (0%, TD)&lt;br /&gt;
* JACC (0%, TD)&lt;br /&gt;
* Check horizontal privilege (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions JCE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* Storing db secrets (0%, TD)&lt;br /&gt;
* Encrypting JDBC connections (0%, TD)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Secure_Socket_Extensions JSSE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions Random number generation] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Logging - why log? what to log? log4j, etc. (0%, TD)&lt;br /&gt;
* Exception handling techniques (0%, TD)&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks (50%, TD)&lt;br /&gt;
** Servlet spec - web.xml [[Securing tomcat]] (100%, Darren Edmonds, Review)&lt;br /&gt;
** JSP errorPage (0%, TD)&lt;br /&gt;
* Web application forensics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML (0%, TD)&lt;br /&gt;
* (X)WS-Security (0%, TD)&lt;br /&gt;
* SunJWSDP (0%, TD)&lt;br /&gt;
* XML Signature (JSR 105) (0%, TD)&lt;br /&gt;
* XML Encryption (JSR 106) (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
The introduction should cover the advantages and short comings of code analysis tools.  An overview of the current state of the art and the available tools would go well here.  As a start, only open source tools are listed, but if vendors of commercial tools adhere to the [[Tutorial]] guidelines, these submissions will be gladly received.&lt;br /&gt;
* Introduction (0%, TD)&lt;br /&gt;
* [[:Category:OWASP LAPSE Project]] (100%, Review)&lt;br /&gt;
* FindBugs (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint (0%, TD)&lt;br /&gt;
* Jmetrics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[J2EE Security For Deployers]] ==&lt;br /&gt;
Practical step-by-step guides to securing various J2EE servers.  Examples of secure configurations can also be provided for download.  If configurations are provided, they should be properly commented so that the rationale for configuration settings is clearly explained.  Users of the configurations should be provided with enough information to make their own risk decisions.&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* [[Securing tomcat|Securing Tomcat]] - (100%, Darren Edmonds, Review)&lt;br /&gt;
* Securing JBoss (0%, TD)&lt;br /&gt;
* Securing WebLogic (0%, TD)&lt;br /&gt;
* Securing WebSphere (0%, TD)&lt;br /&gt;
* Others...&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
Practical information on creating a Java security policies for J2EE servers.&lt;br /&gt;
* PolicyTool (80%, Jeff Williams, Needs a new owner, Review)&lt;br /&gt;
* jChains (www.jchains.org) - (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode manipulation tools and techniques (0%, TD)&lt;br /&gt;
* [[Bytecode obfuscation]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* Convert bytecode to native machine code (0%, TD)&lt;br /&gt;
* [[Protecting code archives with digital signatures]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* [[Signing jar files with jarsigner]] (20%, Pierre Parrend)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Security Analysts and Testers]]==&lt;br /&gt;
* Using Eclipse to verify Java applications (0%, TD)&lt;br /&gt;
* Using [[:Category:OWASP WebScarab Project|WebScarab]] to find vulnerabilities in J2EE applications - (0%, TD)&lt;br /&gt;
* Decompiling Java bytecode (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[Java Security Resources]] (ongoing)==&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Preventing_SQL_Injection_in_Java&amp;diff=16973</id>
		<title>Preventing SQL Injection in Java</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Preventing_SQL_Injection_in_Java&amp;diff=16973"/>
				<updated>2007-03-05T20:19:33Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Ibatis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
As the name implies, SQL injection vulnerabilities allow an attacker to inject (or execute) SQL commands within an application.  It is one of the most wide spread and dangerous application vulnerability.  The CLASP project provides a good overview of [[SQL injection]].&lt;br /&gt;
===Example of SQL injection===&lt;br /&gt;
The following Java servlet code, used to perform a login function, illustrates the vulnerability by accepting user input without performing adequate input validation or escaping meta-characters:&lt;br /&gt;
 conn = pool.getConnection( );&lt;br /&gt;
 String sql = &amp;quot;select * from user where username='&amp;quot; + username +&amp;quot;' and password='&amp;quot; + password + &amp;quot;'&amp;quot;;&lt;br /&gt;
 stmt = conn.createStatement();&lt;br /&gt;
 rs = stmt.executeQuery(sql);&lt;br /&gt;
 if (rs.next()) {&lt;br /&gt;
 loggedIn = true;&lt;br /&gt;
 	out.println(&amp;quot;Successfully logged in&amp;quot;);&lt;br /&gt;
 } else {&lt;br /&gt;
 	out.println(&amp;quot;Username and/or password not recognized&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
It is possible for attackers to provide a username containing SQL meta-characters that subvert the intended function of the SQL statement.  For example, by providing a username of:&lt;br /&gt;
 admin' OR '1'='1&lt;br /&gt;
and a blank password, the generated SQL statement becomes:&lt;br /&gt;
 select * from user where username='admin' OR '1'='1' and password=' '&lt;br /&gt;
This allows an attacker to log in to the site without supplying a password, since the ‘OR’ expression is always true.  Using the same technique attackers can inject other SQL commands which could extract, modify or delete data within the database.&lt;br /&gt;
===Attack techniques===&lt;br /&gt;
For more information on SQL injection attacks see:&lt;br /&gt;
* http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf&lt;br /&gt;
* http://www.nextgenss.com/papers/advanced_sql_injection.pdf&lt;br /&gt;
* http://www.appsecinc.com/presentations/Manipulating_SQL_Server_Using_SQL_Injection.pdf &lt;br /&gt;
==Defence Strategy==&lt;br /&gt;
To prevent SQL injection, a two pronged approach is recommended:&lt;br /&gt;
* Firstly, all data accepted from user input should be thoroughly &amp;lt;b&amp;gt;validated&amp;lt;/b&amp;gt; to ensure that the characters received are part of the set of valid characters for that field;&lt;br /&gt;
* Secondly, all data acted on by SQL commands should be &amp;lt;b&amp;gt;escaped for meta-characters&amp;lt;/b&amp;gt;.&lt;br /&gt;
=== Validating Input ===&lt;br /&gt;
A general security principle which applies itself well to data validation is that of “deny by default” where data is rejected unless it specifically matches the criteria for known good data.  This is also known as a “white list” approach and is the preferred method for performing data validation.  It allows one to define a restricted range for valid data and reject everything that does not fit this set.  The set of valid data should be constrained by:&lt;br /&gt;
* Type – String, integer, unsigned integer, float etc;&lt;br /&gt;
* Length;&lt;br /&gt;
* Set of character – for example, only alphabetic characters [a-zA-Z]*; &lt;br /&gt;
* Format – if appropriate the data could be further constrained by specifying a format, e.g.: \d\d\/\d\d\/\d\d&lt;br /&gt;
* Reasonableness – where possible, values should be compared to expected ranges.  For example, a customer ordering 1000 televisions could be suspicious.&lt;br /&gt;
It is essential that the data validation routines themselves can be trusted, therefore they must be performed on the server side.  Client side validation can be performed as a useful user interface feature, but it must be reinforced by server side validation.&lt;br /&gt;
Where input validation is performed on the server side will depend largely on the frameworks available.  JSF and Struts provide validation functions that are defined in the view layer, while Spring and EJB 3.0 allow validation to be defined in the model.&amp;lt;br&amp;gt; &lt;br /&gt;
Input validation provides the first line of defence in preventing dangerous characters from being processed by the application.&lt;br /&gt;
But even if data is constrained in this way it does not solve the meta-character problem: How should the application handle meta-characters that are defined as valid data, but cannot be used in certain processing contexts?  For example, the single quote (') character may be a valid character in a surname, but this character cannot simply be used in a string that is used to form an SQL statement.  The OWASP Guide project has more information on [[Data Validation]].&lt;br /&gt;
=== Escaping Meta-characters ===&lt;br /&gt;
All data access techniques provide some means for escaping SQL meta-characters automatically.  The important thing to remember is to &amp;lt;b&amp;gt;never construct SQL statements using string concatenation of unchecked input values.&amp;lt;/b&amp;gt;  The following sections detail how to perform input validation and meta-character escaping using popular data access technologies.&lt;br /&gt;
==Prepared Statements==&lt;br /&gt;
Variables passed as arguments to prepared statements will automatically be escaped by the JDBC driver.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example: &amp;lt;/b&amp;gt;ps.1&amp;lt;br&amp;gt;&lt;br /&gt;
 String selectStatement = &amp;quot;SELECT * FROM User WHERE userId = ? &amp;quot;;&lt;br /&gt;
 PreparedStatement prepStmt = con.prepareStatement(selectStatement);&lt;br /&gt;
 prepStmt.setString(1, userId);&lt;br /&gt;
 ResultSet rs = prepStmt.executeQuery();&lt;br /&gt;
&lt;br /&gt;
Although Prepared Statements helps in defending against SQL Injection, there are possibilities of SQL Injection attacks through inappropriate usage of Prepared Statements. The example below explains such a scenario where the input variables are passed directly into the Prepared Statement and thereby paving way for SQL Injection attacks. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example: &amp;lt;/b&amp;gt;ps.2&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
String strUserName = request.getParameter(&amp;quot;Txt_UserName&amp;quot;); &lt;br /&gt;
PreparedStatement prepStmt = con.prepareStatement(&amp;quot;SELECT * FROM user WHERE userId = '+strUserName+'&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is highly recommended to use Bind Variables as mentioned in the example ps.1 above. Usage of PreparedStatement with Bind variables defends SQL Injection attacks and improves the performance.&lt;br /&gt;
&lt;br /&gt;
==Stored Procedures==&lt;br /&gt;
==Hibernate==&lt;br /&gt;
According to [http://forum.hibernate.org/viewtopic.php?t=960817&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc this forum thread] hibernate uses prepared statements, so it is protected from sql injection.&lt;br /&gt;
&lt;br /&gt;
==Ibatis==&lt;br /&gt;
&lt;br /&gt;
Ibatis creates prepared statements for database access.&lt;br /&gt;
However, SQL injection is possible in Ibatis if the $$ variable replacement syntax is used.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Vulnerable: &amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;select id=“vuln&amp;quot; resultMap=“myResultMap”&amp;gt; select * from table where id = &amp;lt;b&amp;gt;$&amp;lt;/b&amp;gt;value&amp;lt;b&amp;gt;$&amp;lt;/b&amp;gt;&amp;lt;/select&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
The above query is called as follows:&lt;br /&gt;
 MyBean b = (MyBean)sqlMap.queryForObject(&amp;quot;vuln&amp;quot;, new Integer(1));&lt;br /&gt;
 &lt;br /&gt;
The SQL statement thus created, looks as follows:&lt;br /&gt;
&lt;br /&gt;
select * from table where id = 1&lt;br /&gt;
&lt;br /&gt;
The object passed as parameter is directly fed to the SQL query making it susceptible to SQL injection&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Secure: &amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;select id=“vuln&amp;quot; resultMap=“myResultMap”&amp;gt; select * from table where id = &amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt;value&amp;lt;b&amp;gt;#&amp;lt;/b&amp;gt;&amp;lt;/select&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using this form instead generates the following SQL&lt;br /&gt;
&lt;br /&gt;
select * from table where id = ?&lt;br /&gt;
&lt;br /&gt;
The value of the parameter is sent directly to the driver and not used to modify the SQL statement itself.&amp;lt;br&amp;gt;&lt;br /&gt;
This approach thwarts SQL injection attacks&lt;br /&gt;
&lt;br /&gt;
==Spring JDBC==&lt;br /&gt;
==EJB 3.0==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[1] [http://research.corsaire.com/whitepapers/060116-a-modular-approach-to-data-validation.pdf A Modular Approach to Data Validation]&lt;br /&gt;
*[2] [http://forum.hibernate.org/viewtopic.php?t=960817&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;highlight= Topic: does Hibernate guard against SQL injection?]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Preventing_SQL_Injection_in_Java&amp;diff=16972</id>
		<title>Preventing SQL Injection in Java</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Preventing_SQL_Injection_in_Java&amp;diff=16972"/>
				<updated>2007-03-05T20:12:01Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Ibatis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
As the name implies, SQL injection vulnerabilities allow an attacker to inject (or execute) SQL commands within an application.  It is one of the most wide spread and dangerous application vulnerability.  The CLASP project provides a good overview of [[SQL injection]].&lt;br /&gt;
===Example of SQL injection===&lt;br /&gt;
The following Java servlet code, used to perform a login function, illustrates the vulnerability by accepting user input without performing adequate input validation or escaping meta-characters:&lt;br /&gt;
 conn = pool.getConnection( );&lt;br /&gt;
 String sql = &amp;quot;select * from user where username='&amp;quot; + username +&amp;quot;' and password='&amp;quot; + password + &amp;quot;'&amp;quot;;&lt;br /&gt;
 stmt = conn.createStatement();&lt;br /&gt;
 rs = stmt.executeQuery(sql);&lt;br /&gt;
 if (rs.next()) {&lt;br /&gt;
 loggedIn = true;&lt;br /&gt;
 	out.println(&amp;quot;Successfully logged in&amp;quot;);&lt;br /&gt;
 } else {&lt;br /&gt;
 	out.println(&amp;quot;Username and/or password not recognized&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
It is possible for attackers to provide a username containing SQL meta-characters that subvert the intended function of the SQL statement.  For example, by providing a username of:&lt;br /&gt;
 admin' OR '1'='1&lt;br /&gt;
and a blank password, the generated SQL statement becomes:&lt;br /&gt;
 select * from user where username='admin' OR '1'='1' and password=' '&lt;br /&gt;
This allows an attacker to log in to the site without supplying a password, since the ‘OR’ expression is always true.  Using the same technique attackers can inject other SQL commands which could extract, modify or delete data within the database.&lt;br /&gt;
===Attack techniques===&lt;br /&gt;
For more information on SQL injection attacks see:&lt;br /&gt;
* http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf&lt;br /&gt;
* http://www.nextgenss.com/papers/advanced_sql_injection.pdf&lt;br /&gt;
* http://www.appsecinc.com/presentations/Manipulating_SQL_Server_Using_SQL_Injection.pdf &lt;br /&gt;
==Defence Strategy==&lt;br /&gt;
To prevent SQL injection, a two pronged approach is recommended:&lt;br /&gt;
* Firstly, all data accepted from user input should be thoroughly &amp;lt;b&amp;gt;validated&amp;lt;/b&amp;gt; to ensure that the characters received are part of the set of valid characters for that field;&lt;br /&gt;
* Secondly, all data acted on by SQL commands should be &amp;lt;b&amp;gt;escaped for meta-characters&amp;lt;/b&amp;gt;.&lt;br /&gt;
=== Validating Input ===&lt;br /&gt;
A general security principle which applies itself well to data validation is that of “deny by default” where data is rejected unless it specifically matches the criteria for known good data.  This is also known as a “white list” approach and is the preferred method for performing data validation.  It allows one to define a restricted range for valid data and reject everything that does not fit this set.  The set of valid data should be constrained by:&lt;br /&gt;
* Type – String, integer, unsigned integer, float etc;&lt;br /&gt;
* Length;&lt;br /&gt;
* Set of character – for example, only alphabetic characters [a-zA-Z]*; &lt;br /&gt;
* Format – if appropriate the data could be further constrained by specifying a format, e.g.: \d\d\/\d\d\/\d\d&lt;br /&gt;
* Reasonableness – where possible, values should be compared to expected ranges.  For example, a customer ordering 1000 televisions could be suspicious.&lt;br /&gt;
It is essential that the data validation routines themselves can be trusted, therefore they must be performed on the server side.  Client side validation can be performed as a useful user interface feature, but it must be reinforced by server side validation.&lt;br /&gt;
Where input validation is performed on the server side will depend largely on the frameworks available.  JSF and Struts provide validation functions that are defined in the view layer, while Spring and EJB 3.0 allow validation to be defined in the model.&amp;lt;br&amp;gt; &lt;br /&gt;
Input validation provides the first line of defence in preventing dangerous characters from being processed by the application.&lt;br /&gt;
But even if data is constrained in this way it does not solve the meta-character problem: How should the application handle meta-characters that are defined as valid data, but cannot be used in certain processing contexts?  For example, the single quote (') character may be a valid character in a surname, but this character cannot simply be used in a string that is used to form an SQL statement.  The OWASP Guide project has more information on [[Data Validation]].&lt;br /&gt;
=== Escaping Meta-characters ===&lt;br /&gt;
All data access techniques provide some means for escaping SQL meta-characters automatically.  The important thing to remember is to &amp;lt;b&amp;gt;never construct SQL statements using string concatenation of unchecked input values.&amp;lt;/b&amp;gt;  The following sections detail how to perform input validation and meta-character escaping using popular data access technologies.&lt;br /&gt;
==Prepared Statements==&lt;br /&gt;
Variables passed as arguments to prepared statements will automatically be escaped by the JDBC driver.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example: &amp;lt;/b&amp;gt;ps.1&amp;lt;br&amp;gt;&lt;br /&gt;
 String selectStatement = &amp;quot;SELECT * FROM User WHERE userId = ? &amp;quot;;&lt;br /&gt;
 PreparedStatement prepStmt = con.prepareStatement(selectStatement);&lt;br /&gt;
 prepStmt.setString(1, userId);&lt;br /&gt;
 ResultSet rs = prepStmt.executeQuery();&lt;br /&gt;
&lt;br /&gt;
Although Prepared Statements helps in defending against SQL Injection, there are possibilities of SQL Injection attacks through inappropriate usage of Prepared Statements. The example below explains such a scenario where the input variables are passed directly into the Prepared Statement and thereby paving way for SQL Injection attacks. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example: &amp;lt;/b&amp;gt;ps.2&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
String strUserName = request.getParameter(&amp;quot;Txt_UserName&amp;quot;); &lt;br /&gt;
PreparedStatement prepStmt = con.prepareStatement(&amp;quot;SELECT * FROM user WHERE userId = '+strUserName+'&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is highly recommended to use Bind Variables as mentioned in the example ps.1 above. Usage of PreparedStatement with Bind variables defends SQL Injection attacks and improves the performance.&lt;br /&gt;
&lt;br /&gt;
==Stored Procedures==&lt;br /&gt;
==Hibernate==&lt;br /&gt;
According to [http://forum.hibernate.org/viewtopic.php?t=960817&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc this forum thread] hibernate uses prepared statements, so it is protected from sql injection.&lt;br /&gt;
&lt;br /&gt;
==Ibatis==&lt;br /&gt;
&lt;br /&gt;
Ibatis creates prepared statements for database access.&lt;br /&gt;
However, SQL injection is possible in Ibatis if the $$ variable replacement syntax is used.&lt;br /&gt;
&lt;br /&gt;
Consider the following examples-&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;select id=“vuln&amp;quot; resultMap=“myResultMap”&amp;gt; select * from table where id = $value$&amp;lt;/select&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  The above query is called as follows:&lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
  MyBean b = (MyBean)sqlMap.queryForObject(&amp;quot;vuln&amp;quot;, new Integer(1));&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  The SQL statement thus created, looks as follows:&lt;br /&gt;
  &lt;br /&gt;
  select * from table where id = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  The object passed as parameter is directly fed to the SQL query making it susceptible to SQL injection&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;select id=“vuln&amp;quot; resultMap=“myResultMap”&amp;gt; select * from table where id = #value#&amp;lt;/select&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Using this form instead generates the following SQL&lt;br /&gt;
  select * from foo where id = ?&lt;br /&gt;
&lt;br /&gt;
  The value of the parameter is sent directly to the driver and not used to modify the SQL statement itself&lt;br /&gt;
  This approach thwarts SQL injection attacks&lt;br /&gt;
&lt;br /&gt;
==Spring JDBC==&lt;br /&gt;
==EJB 3.0==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[1] [http://research.corsaire.com/whitepapers/060116-a-modular-approach-to-data-validation.pdf A Modular Approach to Data Validation]&lt;br /&gt;
*[2] [http://forum.hibernate.org/viewtopic.php?t=960817&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;highlight= Topic: does Hibernate guard against SQL injection?]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Preventing_SQL_Injection_in_Java&amp;diff=16971</id>
		<title>Preventing SQL Injection in Java</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Preventing_SQL_Injection_in_Java&amp;diff=16971"/>
				<updated>2007-03-05T20:10:31Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Ibatis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
As the name implies, SQL injection vulnerabilities allow an attacker to inject (or execute) SQL commands within an application.  It is one of the most wide spread and dangerous application vulnerability.  The CLASP project provides a good overview of [[SQL injection]].&lt;br /&gt;
===Example of SQL injection===&lt;br /&gt;
The following Java servlet code, used to perform a login function, illustrates the vulnerability by accepting user input without performing adequate input validation or escaping meta-characters:&lt;br /&gt;
 conn = pool.getConnection( );&lt;br /&gt;
 String sql = &amp;quot;select * from user where username='&amp;quot; + username +&amp;quot;' and password='&amp;quot; + password + &amp;quot;'&amp;quot;;&lt;br /&gt;
 stmt = conn.createStatement();&lt;br /&gt;
 rs = stmt.executeQuery(sql);&lt;br /&gt;
 if (rs.next()) {&lt;br /&gt;
 loggedIn = true;&lt;br /&gt;
 	out.println(&amp;quot;Successfully logged in&amp;quot;);&lt;br /&gt;
 } else {&lt;br /&gt;
 	out.println(&amp;quot;Username and/or password not recognized&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
It is possible for attackers to provide a username containing SQL meta-characters that subvert the intended function of the SQL statement.  For example, by providing a username of:&lt;br /&gt;
 admin' OR '1'='1&lt;br /&gt;
and a blank password, the generated SQL statement becomes:&lt;br /&gt;
 select * from user where username='admin' OR '1'='1' and password=' '&lt;br /&gt;
This allows an attacker to log in to the site without supplying a password, since the ‘OR’ expression is always true.  Using the same technique attackers can inject other SQL commands which could extract, modify or delete data within the database.&lt;br /&gt;
===Attack techniques===&lt;br /&gt;
For more information on SQL injection attacks see:&lt;br /&gt;
* http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf&lt;br /&gt;
* http://www.nextgenss.com/papers/advanced_sql_injection.pdf&lt;br /&gt;
* http://www.appsecinc.com/presentations/Manipulating_SQL_Server_Using_SQL_Injection.pdf &lt;br /&gt;
==Defence Strategy==&lt;br /&gt;
To prevent SQL injection, a two pronged approach is recommended:&lt;br /&gt;
* Firstly, all data accepted from user input should be thoroughly &amp;lt;b&amp;gt;validated&amp;lt;/b&amp;gt; to ensure that the characters received are part of the set of valid characters for that field;&lt;br /&gt;
* Secondly, all data acted on by SQL commands should be &amp;lt;b&amp;gt;escaped for meta-characters&amp;lt;/b&amp;gt;.&lt;br /&gt;
=== Validating Input ===&lt;br /&gt;
A general security principle which applies itself well to data validation is that of “deny by default” where data is rejected unless it specifically matches the criteria for known good data.  This is also known as a “white list” approach and is the preferred method for performing data validation.  It allows one to define a restricted range for valid data and reject everything that does not fit this set.  The set of valid data should be constrained by:&lt;br /&gt;
* Type – String, integer, unsigned integer, float etc;&lt;br /&gt;
* Length;&lt;br /&gt;
* Set of character – for example, only alphabetic characters [a-zA-Z]*; &lt;br /&gt;
* Format – if appropriate the data could be further constrained by specifying a format, e.g.: \d\d\/\d\d\/\d\d&lt;br /&gt;
* Reasonableness – where possible, values should be compared to expected ranges.  For example, a customer ordering 1000 televisions could be suspicious.&lt;br /&gt;
It is essential that the data validation routines themselves can be trusted, therefore they must be performed on the server side.  Client side validation can be performed as a useful user interface feature, but it must be reinforced by server side validation.&lt;br /&gt;
Where input validation is performed on the server side will depend largely on the frameworks available.  JSF and Struts provide validation functions that are defined in the view layer, while Spring and EJB 3.0 allow validation to be defined in the model.&amp;lt;br&amp;gt; &lt;br /&gt;
Input validation provides the first line of defence in preventing dangerous characters from being processed by the application.&lt;br /&gt;
But even if data is constrained in this way it does not solve the meta-character problem: How should the application handle meta-characters that are defined as valid data, but cannot be used in certain processing contexts?  For example, the single quote (') character may be a valid character in a surname, but this character cannot simply be used in a string that is used to form an SQL statement.  The OWASP Guide project has more information on [[Data Validation]].&lt;br /&gt;
=== Escaping Meta-characters ===&lt;br /&gt;
All data access techniques provide some means for escaping SQL meta-characters automatically.  The important thing to remember is to &amp;lt;b&amp;gt;never construct SQL statements using string concatenation of unchecked input values.&amp;lt;/b&amp;gt;  The following sections detail how to perform input validation and meta-character escaping using popular data access technologies.&lt;br /&gt;
==Prepared Statements==&lt;br /&gt;
Variables passed as arguments to prepared statements will automatically be escaped by the JDBC driver.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example: &amp;lt;/b&amp;gt;ps.1&amp;lt;br&amp;gt;&lt;br /&gt;
 String selectStatement = &amp;quot;SELECT * FROM User WHERE userId = ? &amp;quot;;&lt;br /&gt;
 PreparedStatement prepStmt = con.prepareStatement(selectStatement);&lt;br /&gt;
 prepStmt.setString(1, userId);&lt;br /&gt;
 ResultSet rs = prepStmt.executeQuery();&lt;br /&gt;
&lt;br /&gt;
Although Prepared Statements helps in defending against SQL Injection, there are possibilities of SQL Injection attacks through inappropriate usage of Prepared Statements. The example below explains such a scenario where the input variables are passed directly into the Prepared Statement and thereby paving way for SQL Injection attacks. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example: &amp;lt;/b&amp;gt;ps.2&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
String strUserName = request.getParameter(&amp;quot;Txt_UserName&amp;quot;); &lt;br /&gt;
PreparedStatement prepStmt = con.prepareStatement(&amp;quot;SELECT * FROM user WHERE userId = '+strUserName+'&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is highly recommended to use Bind Variables as mentioned in the example ps.1 above. Usage of PreparedStatement with Bind variables defends SQL Injection attacks and improves the performance.&lt;br /&gt;
&lt;br /&gt;
==Stored Procedures==&lt;br /&gt;
==Hibernate==&lt;br /&gt;
According to [http://forum.hibernate.org/viewtopic.php?t=960817&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc this forum thread] hibernate uses prepared statements, so it is protected from sql injection.&lt;br /&gt;
&lt;br /&gt;
==Ibatis==&lt;br /&gt;
&lt;br /&gt;
Ibatis creates prepared statements for database access.&lt;br /&gt;
However, SQL injection is possible in Ibatis if the $$ variable replacement syntax is used.&lt;br /&gt;
&lt;br /&gt;
Consider the following examples-&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;select id=“vuln&amp;quot; resultMap=“myResultMap”&amp;gt; select * from table where id = $value$&amp;lt;/select&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  The above query is called as follows:&lt;br /&gt;
  &amp;lt;pre&amp;gt;MyBean b = (MyBean)sqlMap.queryForObject(&amp;quot;vuln&amp;quot;, new Integer(1));&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  The SQL statement thus created, looks as follows:&lt;br /&gt;
  &amp;lt;pre&amp;gt;select * from table where id = 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  The object passed as parameter is directly fed to the SQL query making it susceptible to SQL injection&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;select id=“vuln&amp;quot; resultMap=“myResultMap”&amp;gt; select * from table where id = #value#&amp;lt;/select&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Using this form instead generates the following SQL&lt;br /&gt;
  &amp;lt;pre&amp;gt;select * from foo where id = ?&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  The value of the parameter is sent directly to the driver and not used to modify the SQL statement itself&lt;br /&gt;
  This approach thwarts SQL injection attacks&lt;br /&gt;
&lt;br /&gt;
==Spring JDBC==&lt;br /&gt;
==EJB 3.0==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[1] [http://research.corsaire.com/whitepapers/060116-a-modular-approach-to-data-validation.pdf A Modular Approach to Data Validation]&lt;br /&gt;
*[2] [http://forum.hibernate.org/viewtopic.php?t=960817&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;highlight= Topic: does Hibernate guard against SQL injection?]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Preventing_SQL_Injection_in_Java&amp;diff=16970</id>
		<title>Preventing SQL Injection in Java</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Preventing_SQL_Injection_in_Java&amp;diff=16970"/>
				<updated>2007-03-05T20:08:23Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Ibatis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
As the name implies, SQL injection vulnerabilities allow an attacker to inject (or execute) SQL commands within an application.  It is one of the most wide spread and dangerous application vulnerability.  The CLASP project provides a good overview of [[SQL injection]].&lt;br /&gt;
===Example of SQL injection===&lt;br /&gt;
The following Java servlet code, used to perform a login function, illustrates the vulnerability by accepting user input without performing adequate input validation or escaping meta-characters:&lt;br /&gt;
 conn = pool.getConnection( );&lt;br /&gt;
 String sql = &amp;quot;select * from user where username='&amp;quot; + username +&amp;quot;' and password='&amp;quot; + password + &amp;quot;'&amp;quot;;&lt;br /&gt;
 stmt = conn.createStatement();&lt;br /&gt;
 rs = stmt.executeQuery(sql);&lt;br /&gt;
 if (rs.next()) {&lt;br /&gt;
 loggedIn = true;&lt;br /&gt;
 	out.println(&amp;quot;Successfully logged in&amp;quot;);&lt;br /&gt;
 } else {&lt;br /&gt;
 	out.println(&amp;quot;Username and/or password not recognized&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
It is possible for attackers to provide a username containing SQL meta-characters that subvert the intended function of the SQL statement.  For example, by providing a username of:&lt;br /&gt;
 admin' OR '1'='1&lt;br /&gt;
and a blank password, the generated SQL statement becomes:&lt;br /&gt;
 select * from user where username='admin' OR '1'='1' and password=' '&lt;br /&gt;
This allows an attacker to log in to the site without supplying a password, since the ‘OR’ expression is always true.  Using the same technique attackers can inject other SQL commands which could extract, modify or delete data within the database.&lt;br /&gt;
===Attack techniques===&lt;br /&gt;
For more information on SQL injection attacks see:&lt;br /&gt;
* http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf&lt;br /&gt;
* http://www.nextgenss.com/papers/advanced_sql_injection.pdf&lt;br /&gt;
* http://www.appsecinc.com/presentations/Manipulating_SQL_Server_Using_SQL_Injection.pdf &lt;br /&gt;
==Defence Strategy==&lt;br /&gt;
To prevent SQL injection, a two pronged approach is recommended:&lt;br /&gt;
* Firstly, all data accepted from user input should be thoroughly &amp;lt;b&amp;gt;validated&amp;lt;/b&amp;gt; to ensure that the characters received are part of the set of valid characters for that field;&lt;br /&gt;
* Secondly, all data acted on by SQL commands should be &amp;lt;b&amp;gt;escaped for meta-characters&amp;lt;/b&amp;gt;.&lt;br /&gt;
=== Validating Input ===&lt;br /&gt;
A general security principle which applies itself well to data validation is that of “deny by default” where data is rejected unless it specifically matches the criteria for known good data.  This is also known as a “white list” approach and is the preferred method for performing data validation.  It allows one to define a restricted range for valid data and reject everything that does not fit this set.  The set of valid data should be constrained by:&lt;br /&gt;
* Type – String, integer, unsigned integer, float etc;&lt;br /&gt;
* Length;&lt;br /&gt;
* Set of character – for example, only alphabetic characters [a-zA-Z]*; &lt;br /&gt;
* Format – if appropriate the data could be further constrained by specifying a format, e.g.: \d\d\/\d\d\/\d\d&lt;br /&gt;
* Reasonableness – where possible, values should be compared to expected ranges.  For example, a customer ordering 1000 televisions could be suspicious.&lt;br /&gt;
It is essential that the data validation routines themselves can be trusted, therefore they must be performed on the server side.  Client side validation can be performed as a useful user interface feature, but it must be reinforced by server side validation.&lt;br /&gt;
Where input validation is performed on the server side will depend largely on the frameworks available.  JSF and Struts provide validation functions that are defined in the view layer, while Spring and EJB 3.0 allow validation to be defined in the model.&amp;lt;br&amp;gt; &lt;br /&gt;
Input validation provides the first line of defence in preventing dangerous characters from being processed by the application.&lt;br /&gt;
But even if data is constrained in this way it does not solve the meta-character problem: How should the application handle meta-characters that are defined as valid data, but cannot be used in certain processing contexts?  For example, the single quote (') character may be a valid character in a surname, but this character cannot simply be used in a string that is used to form an SQL statement.  The OWASP Guide project has more information on [[Data Validation]].&lt;br /&gt;
=== Escaping Meta-characters ===&lt;br /&gt;
All data access techniques provide some means for escaping SQL meta-characters automatically.  The important thing to remember is to &amp;lt;b&amp;gt;never construct SQL statements using string concatenation of unchecked input values.&amp;lt;/b&amp;gt;  The following sections detail how to perform input validation and meta-character escaping using popular data access technologies.&lt;br /&gt;
==Prepared Statements==&lt;br /&gt;
Variables passed as arguments to prepared statements will automatically be escaped by the JDBC driver.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example: &amp;lt;/b&amp;gt;ps.1&amp;lt;br&amp;gt;&lt;br /&gt;
 String selectStatement = &amp;quot;SELECT * FROM User WHERE userId = ? &amp;quot;;&lt;br /&gt;
 PreparedStatement prepStmt = con.prepareStatement(selectStatement);&lt;br /&gt;
 prepStmt.setString(1, userId);&lt;br /&gt;
 ResultSet rs = prepStmt.executeQuery();&lt;br /&gt;
&lt;br /&gt;
Although Prepared Statements helps in defending against SQL Injection, there are possibilities of SQL Injection attacks through inappropriate usage of Prepared Statements. The example below explains such a scenario where the input variables are passed directly into the Prepared Statement and thereby paving way for SQL Injection attacks. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example: &amp;lt;/b&amp;gt;ps.2&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
String strUserName = request.getParameter(&amp;quot;Txt_UserName&amp;quot;); &lt;br /&gt;
PreparedStatement prepStmt = con.prepareStatement(&amp;quot;SELECT * FROM user WHERE userId = '+strUserName+'&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is highly recommended to use Bind Variables as mentioned in the example ps.1 above. Usage of PreparedStatement with Bind variables defends SQL Injection attacks and improves the performance.&lt;br /&gt;
&lt;br /&gt;
==Stored Procedures==&lt;br /&gt;
==Hibernate==&lt;br /&gt;
According to [http://forum.hibernate.org/viewtopic.php?t=960817&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc this forum thread] hibernate uses prepared statements, so it is protected from sql injection.&lt;br /&gt;
&lt;br /&gt;
==Ibatis==&lt;br /&gt;
&lt;br /&gt;
Ibatis creates prepared statements for database access.&lt;br /&gt;
However, SQL injection is possible in Ibatis if the $$ variable replacement syntax is used.&lt;br /&gt;
&lt;br /&gt;
Consider the following examples-&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;select id=“vuln&amp;quot; resultMap=“myResultMap”&amp;gt; select * from table where id = $value$&amp;lt;/select&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  The above query is called as follows:&lt;br /&gt;
  MyBean b = (MyBean)sqlMap.queryForObject(&amp;quot;vuln&amp;quot;, new Integer(1));&lt;br /&gt;
&lt;br /&gt;
  The SQL statement thus created, looks as follows:&lt;br /&gt;
  select * from table where id = 1&lt;br /&gt;
&lt;br /&gt;
  The object passed as parameter is directly fed to the SQL query making it susceptible to SQL injection&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;select id=“vuln&amp;quot; resultMap=“myResultMap”&amp;gt; select * from table where id = #value#&amp;lt;/select&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Using this form instead generates the following SQL&lt;br /&gt;
  select * from foo where id = ?&lt;br /&gt;
&lt;br /&gt;
  The value of the parameter is sent directly to the driver and not used to modify the SQL statement itself&lt;br /&gt;
  This approach thwarts SQL injection attacks&lt;br /&gt;
&lt;br /&gt;
==Spring JDBC==&lt;br /&gt;
==EJB 3.0==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[1] [http://research.corsaire.com/whitepapers/060116-a-modular-approach-to-data-validation.pdf A Modular Approach to Data Validation]&lt;br /&gt;
*[2] [http://forum.hibernate.org/viewtopic.php?t=960817&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;highlight= Topic: does Hibernate guard against SQL injection?]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16969</id>
		<title>OWASP Java Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16969"/>
				<updated>2007-03-05T19:48:50Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Noteworthy Frameworks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;Key:&amp;lt;/b&amp;gt;&lt;br /&gt;
* xx%: Progress status of the paragraph&lt;br /&gt;
* Review: The paragraph needs a review&lt;br /&gt;
* TD: Paragraph to be assigned&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Architects]]==&lt;br /&gt;
Discuss the security implications of common J2EE architectures.  This could be discussed in terms of: Authentication, Authorisation, Data Validation, Cross Site Scripting protection.  Other architecture concerns such as scalability, performance and maintainability can also be mentioned, but the focus on security should not be lost.&lt;br /&gt;
  &lt;br /&gt;
Any other security concerns that should be addressed during the design phase should also be mentioned here.&lt;br /&gt;
===Design considerations===&lt;br /&gt;
* Architectural considerations (0%, TD)&lt;br /&gt;
** EJB Middle tier (0%, TD)&lt;br /&gt;
** Web Services Middle tier (0%, TD)&lt;br /&gt;
** Spring Middle tier (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Developers]]==&lt;br /&gt;
=== Noteworthy Frameworks ===&lt;br /&gt;
Discuss important and relevant Java security frameworks that would be useful to architects.  The information should be at a suitably high level, for example, by discussing the advantages and features as well as the associated costs (direct and indirect) of using the frameworks.&lt;br /&gt;
&lt;br /&gt;
(0%, Seeking Volunteers)&lt;br /&gt;
*	Struts &lt;br /&gt;
*	Turbine&lt;br /&gt;
*	JFS (MyFaces)&lt;br /&gt;
*	Tapestry&lt;br /&gt;
*	Webwork&lt;br /&gt;
*	Cocoon&lt;br /&gt;
*	Tiles&lt;br /&gt;
*	SiteMesh&lt;br /&gt;
*	Spring&lt;br /&gt;
&lt;br /&gt;
===[[Java Security Basics]]===&lt;br /&gt;
Provide an introduction into the basic security services provided by the Java language and environment.  Remember to keep this relevant for web developers for the initial release - there may be a potential to expand this to thick clients in subsequent releases.&lt;br /&gt;
* Class Loading (0%, Shyaam Sundar, Review)&lt;br /&gt;
* Bytecode verifier (0%, Shyaam Sundar, Review)&lt;br /&gt;
* The Security Manager and security.policy file (0%, Shyaam Sundar, Review)&lt;br /&gt;
&lt;br /&gt;
===Input Validation Overview ===&lt;br /&gt;
Input validation is perhaps the most important category of application security. Any data entering a software system must be verified to contain safe data that is not mounting a SQL Injection, XSS, CSRF or other form of attack. This is done primarily through the use of regular expressions. It's crucial not to hard-code input validation routines. Regular expressions should contained within a configuration file that can easily updated by an InfoSec professional and not require a programmers intervention or deployment of new application code. Application security needs change over time as new attack vectors are discovered. Application administers need to be able to react to these changes as quickly as possible. &lt;br /&gt;
&lt;br /&gt;
===Input Validation ===&lt;br /&gt;
* Dangerous calls (BufferedReader.readLine(), ServletRequest.getParameter(), etc...) (0%, TD)&lt;br /&gt;
* [[How to add validation logic to HttpServletRequest]] (100%, Jeff Williams, Review)&lt;br /&gt;
* [[How to perform HTML entity encoding in Java]] (100%, Jeff Williams, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing SQL Injection in Java]] ====&lt;br /&gt;
* Overview &lt;br /&gt;
* Prevention (60%, Stephen de Vries, Review)&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0&lt;br /&gt;
** JDO&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing LDAP Injection in Java]] ====&lt;br /&gt;
* Overview (100%, Stephen de Vries, Review)&lt;br /&gt;
* Prevention (100%, Stephen de Vries, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[XPATH Injection]] ====&lt;br /&gt;
As with the other Injection sections, only provide cursory information on the general case. Should contain practical real-world advise and code examples for preventing XPATH injection.&lt;br /&gt;
* Overview (0%, TD)&lt;br /&gt;
* Prevention (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks  ====&lt;br /&gt;
* HTTP Response splitting (0%, TD)&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec() (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials - (0%, Adrian San Juan, Review)&lt;br /&gt;
* [[Hashing Java|Hashing]] - (100%, Michel Prunet, Review)&lt;br /&gt;
* [[SSL Best Practices]] - (20%, Philippe Curmin, Review)&lt;br /&gt;
* [[Using JCaptcha]] - (100%, Dave Ferguson, Review) &lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
** [[Declarative Access Control in Java]] - (100%, Dave Ferguson, Reviewed by Pierre Parrend, Dave to act on comments)&lt;br /&gt;
* [[JAAS Timed Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[JAAS Tomcat Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[Password length &amp;amp; complexity]] - (0%, Adrian San Juan, Review)&lt;br /&gt;
&lt;br /&gt;
===Session Management ===&lt;br /&gt;
The generic problems and solutions for session management are covered in the Guide.  This section should focus on Java specific examples.&lt;br /&gt;
* Logout (0%, TD)&lt;br /&gt;
* Session Timeout (0%, TD)&lt;br /&gt;
* Absolute Timeout (0%, TD)&lt;br /&gt;
* [[Session Fixation in Java]] (50%, Rohyt Belani)&lt;br /&gt;
* Terminating sessions (0%, TD)&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
&lt;br /&gt;
===Authorization===&lt;br /&gt;
* Declarative v/s Programmatic (0%, TD)&lt;br /&gt;
* EJB Authorization (0%, TD)&lt;br /&gt;
* Acegi (0%, TD)&lt;br /&gt;
* JACC (0%, TD)&lt;br /&gt;
* Check horizontal privilege (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions JCE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* Storing db secrets (0%, TD)&lt;br /&gt;
* Encrypting JDBC connections (0%, TD)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Secure_Socket_Extensions JSSE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions Random number generation] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Logging - why log? what to log? log4j, etc. (0%, TD)&lt;br /&gt;
* Exception handling techniques (0%, TD)&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks (50%, TD)&lt;br /&gt;
** Servlet spec - web.xml [[Securing tomcat]] (100%, Darren Edmonds, Review)&lt;br /&gt;
** JSP errorPage (0%, TD)&lt;br /&gt;
* Web application forensics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML (0%, TD)&lt;br /&gt;
* (X)WS-Security (0%, TD)&lt;br /&gt;
* SunJWSDP (0%, TD)&lt;br /&gt;
* XML Signature (JSR 105) (0%, TD)&lt;br /&gt;
* XML Encryption (JSR 106) (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
The introduction should cover the advantages and short comings of code analysis tools.  An overview of the current state of the art and the available tools would go well here.  As a start, only open source tools are listed, but if vendors of commercial tools adhere to the [[Tutorial]] guidelines, these submissions will be gladly received.&lt;br /&gt;
* Introduction (0%, TD)&lt;br /&gt;
* [[:Category:OWASP LAPSE Project]] (100%, Review)&lt;br /&gt;
* FindBugs (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint (0%, TD)&lt;br /&gt;
* Jmetrics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[J2EE Security For Deployers]] ==&lt;br /&gt;
Practical step-by-step guides to securing various J2EE servers.  Examples of secure configurations can also be provided for download.  If configurations are provided, they should be properly commented so that the rationale for configuration settings is clearly explained.  Users of the configurations should be provided with enough information to make their own risk decisions.&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* [[Securing tomcat|Securing Tomcat]] - (100%, Darren Edmonds, Review)&lt;br /&gt;
* Securing JBoss (0%, TD)&lt;br /&gt;
* Securing WebLogic (0%, TD)&lt;br /&gt;
* Securing WebSphere (0%, TD)&lt;br /&gt;
* Others...&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
Practical information on creating a Java security policies for J2EE servers.&lt;br /&gt;
* PolicyTool (80%, Jeff Williams, Needs a new owner, Review)&lt;br /&gt;
* jChains (www.jchains.org) - (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode manipulation tools and techniques (0%, TD)&lt;br /&gt;
* [[Bytecode obfuscation]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* Convert bytecode to native machine code (0%, TD)&lt;br /&gt;
* [[Protecting code archives with digital signatures]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* [[Signing jar files with jarsigner]] (20%, Pierre Parrend)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Security Analysts and Testers]]==&lt;br /&gt;
* Using Eclipse to verify Java applications (0%, TD)&lt;br /&gt;
* Using [[:Category:OWASP WebScarab Project|WebScarab]] to find vulnerabilities in J2EE applications - (0%, TD)&lt;br /&gt;
* Decompiling Java bytecode (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[Java Security Resources]] (ongoing)==&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16968</id>
		<title>OWASP Java Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16968"/>
				<updated>2007-03-05T19:47:36Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Session Management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;Key:&amp;lt;/b&amp;gt;&lt;br /&gt;
* xx%: Progress status of the paragraph&lt;br /&gt;
* Review: The paragraph needs a review&lt;br /&gt;
* TD: Paragraph to be assigned&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Architects]]==&lt;br /&gt;
Discuss the security implications of common J2EE architectures.  This could be discussed in terms of: Authentication, Authorisation, Data Validation, Cross Site Scripting protection.  Other architecture concerns such as scalability, performance and maintainability can also be mentioned, but the focus on security should not be lost.&lt;br /&gt;
  &lt;br /&gt;
Any other security concerns that should be addressed during the design phase should also be mentioned here.&lt;br /&gt;
===Design considerations===&lt;br /&gt;
* Architectural considerations (0%, TD)&lt;br /&gt;
** EJB Middle tier (0%, TD)&lt;br /&gt;
** Web Services Middle tier (0%, TD)&lt;br /&gt;
** Spring Middle tier (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Developers]]==&lt;br /&gt;
=== Noteworthy Frameworks ===&lt;br /&gt;
Discuss important and relevant Java security frameworks that would be useful to architects.  The information should be at a suitably high level, for example, by discussing the advantages and features as well as the associated costs (direct and indirect) of using the frameworks.&lt;br /&gt;
&lt;br /&gt;
(50% ?, Claire McDonough, Ranjita Shankar Iyer, Rohyt Belani to update, Review)&lt;br /&gt;
*	Struts &lt;br /&gt;
*	Turbine&lt;br /&gt;
*	JFS (MyFaces)&lt;br /&gt;
*	Tapestry&lt;br /&gt;
*	Webwork&lt;br /&gt;
*	Cocoon&lt;br /&gt;
*	Tiles&lt;br /&gt;
*	SiteMesh&lt;br /&gt;
*	Spring&lt;br /&gt;
&lt;br /&gt;
===[[Java Security Basics]]===&lt;br /&gt;
Provide an introduction into the basic security services provided by the Java language and environment.  Remember to keep this relevant for web developers for the initial release - there may be a potential to expand this to thick clients in subsequent releases.&lt;br /&gt;
* Class Loading (0%, Shyaam Sundar, Review)&lt;br /&gt;
* Bytecode verifier (0%, Shyaam Sundar, Review)&lt;br /&gt;
* The Security Manager and security.policy file (0%, Shyaam Sundar, Review)&lt;br /&gt;
&lt;br /&gt;
===Input Validation Overview ===&lt;br /&gt;
Input validation is perhaps the most important category of application security. Any data entering a software system must be verified to contain safe data that is not mounting a SQL Injection, XSS, CSRF or other form of attack. This is done primarily through the use of regular expressions. It's crucial not to hard-code input validation routines. Regular expressions should contained within a configuration file that can easily updated by an InfoSec professional and not require a programmers intervention or deployment of new application code. Application security needs change over time as new attack vectors are discovered. Application administers need to be able to react to these changes as quickly as possible. &lt;br /&gt;
&lt;br /&gt;
===Input Validation ===&lt;br /&gt;
* Dangerous calls (BufferedReader.readLine(), ServletRequest.getParameter(), etc...) (0%, TD)&lt;br /&gt;
* [[How to add validation logic to HttpServletRequest]] (100%, Jeff Williams, Review)&lt;br /&gt;
* [[How to perform HTML entity encoding in Java]] (100%, Jeff Williams, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing SQL Injection in Java]] ====&lt;br /&gt;
* Overview &lt;br /&gt;
* Prevention (60%, Stephen de Vries, Review)&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0&lt;br /&gt;
** JDO&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing LDAP Injection in Java]] ====&lt;br /&gt;
* Overview (100%, Stephen de Vries, Review)&lt;br /&gt;
* Prevention (100%, Stephen de Vries, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[XPATH Injection]] ====&lt;br /&gt;
As with the other Injection sections, only provide cursory information on the general case. Should contain practical real-world advise and code examples for preventing XPATH injection.&lt;br /&gt;
* Overview (0%, TD)&lt;br /&gt;
* Prevention (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks  ====&lt;br /&gt;
* HTTP Response splitting (0%, TD)&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec() (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials - (0%, Adrian San Juan, Review)&lt;br /&gt;
* [[Hashing Java|Hashing]] - (100%, Michel Prunet, Review)&lt;br /&gt;
* [[SSL Best Practices]] - (20%, Philippe Curmin, Review)&lt;br /&gt;
* [[Using JCaptcha]] - (100%, Dave Ferguson, Review) &lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
** [[Declarative Access Control in Java]] - (100%, Dave Ferguson, Reviewed by Pierre Parrend, Dave to act on comments)&lt;br /&gt;
* [[JAAS Timed Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[JAAS Tomcat Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[Password length &amp;amp; complexity]] - (0%, Adrian San Juan, Review)&lt;br /&gt;
&lt;br /&gt;
===Session Management ===&lt;br /&gt;
The generic problems and solutions for session management are covered in the Guide.  This section should focus on Java specific examples.&lt;br /&gt;
* Logout (0%, TD)&lt;br /&gt;
* Session Timeout (0%, TD)&lt;br /&gt;
* Absolute Timeout (0%, TD)&lt;br /&gt;
* [[Session Fixation in Java]] (50%, Rohyt Belani)&lt;br /&gt;
* Terminating sessions (0%, TD)&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
&lt;br /&gt;
===Authorization===&lt;br /&gt;
* Declarative v/s Programmatic (0%, TD)&lt;br /&gt;
* EJB Authorization (0%, TD)&lt;br /&gt;
* Acegi (0%, TD)&lt;br /&gt;
* JACC (0%, TD)&lt;br /&gt;
* Check horizontal privilege (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions JCE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* Storing db secrets (0%, TD)&lt;br /&gt;
* Encrypting JDBC connections (0%, TD)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Secure_Socket_Extensions JSSE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions Random number generation] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Logging - why log? what to log? log4j, etc. (0%, TD)&lt;br /&gt;
* Exception handling techniques (0%, TD)&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks (50%, TD)&lt;br /&gt;
** Servlet spec - web.xml [[Securing tomcat]] (100%, Darren Edmonds, Review)&lt;br /&gt;
** JSP errorPage (0%, TD)&lt;br /&gt;
* Web application forensics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML (0%, TD)&lt;br /&gt;
* (X)WS-Security (0%, TD)&lt;br /&gt;
* SunJWSDP (0%, TD)&lt;br /&gt;
* XML Signature (JSR 105) (0%, TD)&lt;br /&gt;
* XML Encryption (JSR 106) (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
The introduction should cover the advantages and short comings of code analysis tools.  An overview of the current state of the art and the available tools would go well here.  As a start, only open source tools are listed, but if vendors of commercial tools adhere to the [[Tutorial]] guidelines, these submissions will be gladly received.&lt;br /&gt;
* Introduction (0%, TD)&lt;br /&gt;
* [[:Category:OWASP LAPSE Project]] (100%, Review)&lt;br /&gt;
* FindBugs (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint (0%, TD)&lt;br /&gt;
* Jmetrics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[J2EE Security For Deployers]] ==&lt;br /&gt;
Practical step-by-step guides to securing various J2EE servers.  Examples of secure configurations can also be provided for download.  If configurations are provided, they should be properly commented so that the rationale for configuration settings is clearly explained.  Users of the configurations should be provided with enough information to make their own risk decisions.&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* [[Securing tomcat|Securing Tomcat]] - (100%, Darren Edmonds, Review)&lt;br /&gt;
* Securing JBoss (0%, TD)&lt;br /&gt;
* Securing WebLogic (0%, TD)&lt;br /&gt;
* Securing WebSphere (0%, TD)&lt;br /&gt;
* Others...&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
Practical information on creating a Java security policies for J2EE servers.&lt;br /&gt;
* PolicyTool (80%, Jeff Williams, Needs a new owner, Review)&lt;br /&gt;
* jChains (www.jchains.org) - (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode manipulation tools and techniques (0%, TD)&lt;br /&gt;
* [[Bytecode obfuscation]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* Convert bytecode to native machine code (0%, TD)&lt;br /&gt;
* [[Protecting code archives with digital signatures]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* [[Signing jar files with jarsigner]] (20%, Pierre Parrend)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Security Analysts and Testers]]==&lt;br /&gt;
* Using Eclipse to verify Java applications (0%, TD)&lt;br /&gt;
* Using [[:Category:OWASP WebScarab Project|WebScarab]] to find vulnerabilities in J2EE applications - (0%, TD)&lt;br /&gt;
* Decompiling Java bytecode (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[Java Security Resources]] (ongoing)==&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16967</id>
		<title>OWASP Java Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16967"/>
				<updated>2007-03-05T19:45:15Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Session Management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;Key:&amp;lt;/b&amp;gt;&lt;br /&gt;
* xx%: Progress status of the paragraph&lt;br /&gt;
* Review: The paragraph needs a review&lt;br /&gt;
* TD: Paragraph to be assigned&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Architects]]==&lt;br /&gt;
Discuss the security implications of common J2EE architectures.  This could be discussed in terms of: Authentication, Authorisation, Data Validation, Cross Site Scripting protection.  Other architecture concerns such as scalability, performance and maintainability can also be mentioned, but the focus on security should not be lost.&lt;br /&gt;
  &lt;br /&gt;
Any other security concerns that should be addressed during the design phase should also be mentioned here.&lt;br /&gt;
===Design considerations===&lt;br /&gt;
* Architectural considerations (0%, TD)&lt;br /&gt;
** EJB Middle tier (0%, TD)&lt;br /&gt;
** Web Services Middle tier (0%, TD)&lt;br /&gt;
** Spring Middle tier (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Developers]]==&lt;br /&gt;
=== Noteworthy Frameworks ===&lt;br /&gt;
Discuss important and relevant Java security frameworks that would be useful to architects.  The information should be at a suitably high level, for example, by discussing the advantages and features as well as the associated costs (direct and indirect) of using the frameworks.&lt;br /&gt;
&lt;br /&gt;
(50% ?, Claire McDonough, Ranjita Shankar Iyer, Rohyt Belani to update, Review)&lt;br /&gt;
*	Struts &lt;br /&gt;
*	Turbine&lt;br /&gt;
*	JFS (MyFaces)&lt;br /&gt;
*	Tapestry&lt;br /&gt;
*	Webwork&lt;br /&gt;
*	Cocoon&lt;br /&gt;
*	Tiles&lt;br /&gt;
*	SiteMesh&lt;br /&gt;
*	Spring&lt;br /&gt;
&lt;br /&gt;
===[[Java Security Basics]]===&lt;br /&gt;
Provide an introduction into the basic security services provided by the Java language and environment.  Remember to keep this relevant for web developers for the initial release - there may be a potential to expand this to thick clients in subsequent releases.&lt;br /&gt;
* Class Loading (0%, Shyaam Sundar, Review)&lt;br /&gt;
* Bytecode verifier (0%, Shyaam Sundar, Review)&lt;br /&gt;
* The Security Manager and security.policy file (0%, Shyaam Sundar, Review)&lt;br /&gt;
&lt;br /&gt;
===Input Validation Overview ===&lt;br /&gt;
Input validation is perhaps the most important category of application security. Any data entering a software system must be verified to contain safe data that is not mounting a SQL Injection, XSS, CSRF or other form of attack. This is done primarily through the use of regular expressions. It's crucial not to hard-code input validation routines. Regular expressions should contained within a configuration file that can easily updated by an InfoSec professional and not require a programmers intervention or deployment of new application code. Application security needs change over time as new attack vectors are discovered. Application administers need to be able to react to these changes as quickly as possible. &lt;br /&gt;
&lt;br /&gt;
===Input Validation ===&lt;br /&gt;
* Dangerous calls (BufferedReader.readLine(), ServletRequest.getParameter(), etc...) (0%, TD)&lt;br /&gt;
* [[How to add validation logic to HttpServletRequest]] (100%, Jeff Williams, Review)&lt;br /&gt;
* [[How to perform HTML entity encoding in Java]] (100%, Jeff Williams, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing SQL Injection in Java]] ====&lt;br /&gt;
* Overview &lt;br /&gt;
* Prevention (60%, Stephen de Vries, Review)&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0&lt;br /&gt;
** JDO&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing LDAP Injection in Java]] ====&lt;br /&gt;
* Overview (100%, Stephen de Vries, Review)&lt;br /&gt;
* Prevention (100%, Stephen de Vries, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[XPATH Injection]] ====&lt;br /&gt;
As with the other Injection sections, only provide cursory information on the general case. Should contain practical real-world advise and code examples for preventing XPATH injection.&lt;br /&gt;
* Overview (0%, TD)&lt;br /&gt;
* Prevention (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks  ====&lt;br /&gt;
* HTTP Response splitting (0%, TD)&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec() (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials - (0%, Adrian San Juan, Review)&lt;br /&gt;
* [[Hashing Java|Hashing]] - (100%, Michel Prunet, Review)&lt;br /&gt;
* [[SSL Best Practices]] - (20%, Philippe Curmin, Review)&lt;br /&gt;
* [[Using JCaptcha]] - (100%, Dave Ferguson, Review) &lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
** [[Declarative Access Control in Java]] - (100%, Dave Ferguson, Reviewed by Pierre Parrend, Dave to act on comments)&lt;br /&gt;
* [[JAAS Timed Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[JAAS Tomcat Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[Password length &amp;amp; complexity]] - (0%, Adrian San Juan, Review)&lt;br /&gt;
&lt;br /&gt;
===Session Management ===&lt;br /&gt;
The generic problems and solutions for session management are covered in the Guide.  This section should focus on Java specific examples.&lt;br /&gt;
* Logout (0%, TD)&lt;br /&gt;
* Session Timeout (0%, TD)&lt;br /&gt;
* Absolute Timeout (0%, TD)&lt;br /&gt;
* [[Session Fixation in Java]] [[User:Rohyt|Rohyt]]&lt;br /&gt;
* Terminating sessions (0%, TD)&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
&lt;br /&gt;
===Authorization===&lt;br /&gt;
* Declarative v/s Programmatic (0%, TD)&lt;br /&gt;
* EJB Authorization (0%, TD)&lt;br /&gt;
* Acegi (0%, TD)&lt;br /&gt;
* JACC (0%, TD)&lt;br /&gt;
* Check horizontal privilege (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions JCE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* Storing db secrets (0%, TD)&lt;br /&gt;
* Encrypting JDBC connections (0%, TD)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Secure_Socket_Extensions JSSE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions Random number generation] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Logging - why log? what to log? log4j, etc. (0%, TD)&lt;br /&gt;
* Exception handling techniques (0%, TD)&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks (50%, TD)&lt;br /&gt;
** Servlet spec - web.xml [[Securing tomcat]] (100%, Darren Edmonds, Review)&lt;br /&gt;
** JSP errorPage (0%, TD)&lt;br /&gt;
* Web application forensics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML (0%, TD)&lt;br /&gt;
* (X)WS-Security (0%, TD)&lt;br /&gt;
* SunJWSDP (0%, TD)&lt;br /&gt;
* XML Signature (JSR 105) (0%, TD)&lt;br /&gt;
* XML Encryption (JSR 106) (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
The introduction should cover the advantages and short comings of code analysis tools.  An overview of the current state of the art and the available tools would go well here.  As a start, only open source tools are listed, but if vendors of commercial tools adhere to the [[Tutorial]] guidelines, these submissions will be gladly received.&lt;br /&gt;
* Introduction (0%, TD)&lt;br /&gt;
* [[:Category:OWASP LAPSE Project]] (100%, Review)&lt;br /&gt;
* FindBugs (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint (0%, TD)&lt;br /&gt;
* Jmetrics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[J2EE Security For Deployers]] ==&lt;br /&gt;
Practical step-by-step guides to securing various J2EE servers.  Examples of secure configurations can also be provided for download.  If configurations are provided, they should be properly commented so that the rationale for configuration settings is clearly explained.  Users of the configurations should be provided with enough information to make their own risk decisions.&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* [[Securing tomcat|Securing Tomcat]] - (100%, Darren Edmonds, Review)&lt;br /&gt;
* Securing JBoss (0%, TD)&lt;br /&gt;
* Securing WebLogic (0%, TD)&lt;br /&gt;
* Securing WebSphere (0%, TD)&lt;br /&gt;
* Others...&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
Practical information on creating a Java security policies for J2EE servers.&lt;br /&gt;
* PolicyTool (80%, Jeff Williams, Needs a new owner, Review)&lt;br /&gt;
* jChains (www.jchains.org) - (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode manipulation tools and techniques (0%, TD)&lt;br /&gt;
* [[Bytecode obfuscation]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* Convert bytecode to native machine code (0%, TD)&lt;br /&gt;
* [[Protecting code archives with digital signatures]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* [[Signing jar files with jarsigner]] (20%, Pierre Parrend)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Security Analysts and Testers]]==&lt;br /&gt;
* Using Eclipse to verify Java applications (0%, TD)&lt;br /&gt;
* Using [[:Category:OWASP WebScarab Project|WebScarab]] to find vulnerabilities in J2EE applications - (0%, TD)&lt;br /&gt;
* Decompiling Java bytecode (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[Java Security Resources]] (ongoing)==&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Session_Fixation_in_Java&amp;diff=16966</id>
		<title>Session Fixation in Java</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Session_Fixation_in_Java&amp;diff=16966"/>
				<updated>2007-03-05T19:44:19Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: New page: ==Overview of Session Fixation==  A detailed overview on session fixation can be found here: Session Fixation  ==Countermeasures==  * Session ID should be regenerated after login, and ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview of Session Fixation==&lt;br /&gt;
&lt;br /&gt;
A detailed overview on session fixation can be found here: [[Session Fixation]]&lt;br /&gt;
&lt;br /&gt;
==Countermeasures==&lt;br /&gt;
&lt;br /&gt;
* Session ID should be regenerated after login, and switching in and out of SSL&lt;br /&gt;
  &lt;br /&gt;
  session.invalidate();&lt;br /&gt;
  session=request.getSession(true);&lt;br /&gt;
&lt;br /&gt;
* Disable URL rewriting&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16965</id>
		<title>OWASP Java Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16965"/>
				<updated>2007-03-05T19:31:48Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Session Management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;Key:&amp;lt;/b&amp;gt;&lt;br /&gt;
* xx%: Progress status of the paragraph&lt;br /&gt;
* Review: The paragraph needs a review&lt;br /&gt;
* TD: Paragraph to be assigned&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Architects]]==&lt;br /&gt;
Discuss the security implications of common J2EE architectures.  This could be discussed in terms of: Authentication, Authorisation, Data Validation, Cross Site Scripting protection.  Other architecture concerns such as scalability, performance and maintainability can also be mentioned, but the focus on security should not be lost.&lt;br /&gt;
  &lt;br /&gt;
Any other security concerns that should be addressed during the design phase should also be mentioned here.&lt;br /&gt;
===Design considerations===&lt;br /&gt;
* Architectural considerations (0%, TD)&lt;br /&gt;
** EJB Middle tier (0%, TD)&lt;br /&gt;
** Web Services Middle tier (0%, TD)&lt;br /&gt;
** Spring Middle tier (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Developers]]==&lt;br /&gt;
=== Noteworthy Frameworks ===&lt;br /&gt;
Discuss important and relevant Java security frameworks that would be useful to architects.  The information should be at a suitably high level, for example, by discussing the advantages and features as well as the associated costs (direct and indirect) of using the frameworks.&lt;br /&gt;
&lt;br /&gt;
(50% ?, Claire McDonough, Ranjita Shankar Iyer, Rohyt Belani to update, Review)&lt;br /&gt;
*	Struts &lt;br /&gt;
*	Turbine&lt;br /&gt;
*	JFS (MyFaces)&lt;br /&gt;
*	Tapestry&lt;br /&gt;
*	Webwork&lt;br /&gt;
*	Cocoon&lt;br /&gt;
*	Tiles&lt;br /&gt;
*	SiteMesh&lt;br /&gt;
*	Spring&lt;br /&gt;
&lt;br /&gt;
===[[Java Security Basics]]===&lt;br /&gt;
Provide an introduction into the basic security services provided by the Java language and environment.  Remember to keep this relevant for web developers for the initial release - there may be a potential to expand this to thick clients in subsequent releases.&lt;br /&gt;
* Class Loading (0%, Shyaam Sundar, Review)&lt;br /&gt;
* Bytecode verifier (0%, Shyaam Sundar, Review)&lt;br /&gt;
* The Security Manager and security.policy file (0%, Shyaam Sundar, Review)&lt;br /&gt;
&lt;br /&gt;
===Input Validation Overview ===&lt;br /&gt;
Input validation is perhaps the most important category of application security. Any data entering a software system must be verified to contain safe data that is not mounting a SQL Injection, XSS, CSRF or other form of attack. This is done primarily through the use of regular expressions. It's crucial not to hard-code input validation routines. Regular expressions should contained within a configuration file that can easily updated by an InfoSec professional and not require a programmers intervention or deployment of new application code. Application security needs change over time as new attack vectors are discovered. Application administers need to be able to react to these changes as quickly as possible. &lt;br /&gt;
&lt;br /&gt;
===Input Validation ===&lt;br /&gt;
* Dangerous calls (BufferedReader.readLine(), ServletRequest.getParameter(), etc...) (0%, TD)&lt;br /&gt;
* [[How to add validation logic to HttpServletRequest]] (100%, Jeff Williams, Review)&lt;br /&gt;
* [[How to perform HTML entity encoding in Java]] (100%, Jeff Williams, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing SQL Injection in Java]] ====&lt;br /&gt;
* Overview &lt;br /&gt;
* Prevention (60%, Stephen de Vries, Review)&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0&lt;br /&gt;
** JDO&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing LDAP Injection in Java]] ====&lt;br /&gt;
* Overview (100%, Stephen de Vries, Review)&lt;br /&gt;
* Prevention (100%, Stephen de Vries, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[XPATH Injection]] ====&lt;br /&gt;
As with the other Injection sections, only provide cursory information on the general case. Should contain practical real-world advise and code examples for preventing XPATH injection.&lt;br /&gt;
* Overview (0%, TD)&lt;br /&gt;
* Prevention (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks  ====&lt;br /&gt;
* HTTP Response splitting (0%, TD)&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec() (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials - (0%, Adrian San Juan, Review)&lt;br /&gt;
* [[Hashing Java|Hashing]] - (100%, Michel Prunet, Review)&lt;br /&gt;
* [[SSL Best Practices]] - (20%, Philippe Curmin, Review)&lt;br /&gt;
* [[Using JCaptcha]] - (100%, Dave Ferguson, Review) &lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
** [[Declarative Access Control in Java]] - (100%, Dave Ferguson, Reviewed by Pierre Parrend, Dave to act on comments)&lt;br /&gt;
* [[JAAS Timed Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[JAAS Tomcat Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[Password length &amp;amp; complexity]] - (0%, Adrian San Juan, Review)&lt;br /&gt;
&lt;br /&gt;
===Session Management ===&lt;br /&gt;
The generic problems and solutions for session management are covered in the Guide.  This section should focus on Java specific examples.&lt;br /&gt;
* Logout (0%, TD)&lt;br /&gt;
* Session Timeout (0%, TD)&lt;br /&gt;
* Absolute Timeout (0%, TD)&lt;br /&gt;
* [[Session Fixation in Java]] &lt;br /&gt;
* Terminating sessions (0%, TD)&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
&lt;br /&gt;
===Authorization===&lt;br /&gt;
* Declarative v/s Programmatic (0%, TD)&lt;br /&gt;
* EJB Authorization (0%, TD)&lt;br /&gt;
* Acegi (0%, TD)&lt;br /&gt;
* JACC (0%, TD)&lt;br /&gt;
* Check horizontal privilege (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions JCE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* Storing db secrets (0%, TD)&lt;br /&gt;
* Encrypting JDBC connections (0%, TD)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Secure_Socket_Extensions JSSE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions Random number generation] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Logging - why log? what to log? log4j, etc. (0%, TD)&lt;br /&gt;
* Exception handling techniques (0%, TD)&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks (50%, TD)&lt;br /&gt;
** Servlet spec - web.xml [[Securing tomcat]] (100%, Darren Edmonds, Review)&lt;br /&gt;
** JSP errorPage (0%, TD)&lt;br /&gt;
* Web application forensics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML (0%, TD)&lt;br /&gt;
* (X)WS-Security (0%, TD)&lt;br /&gt;
* SunJWSDP (0%, TD)&lt;br /&gt;
* XML Signature (JSR 105) (0%, TD)&lt;br /&gt;
* XML Encryption (JSR 106) (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
The introduction should cover the advantages and short comings of code analysis tools.  An overview of the current state of the art and the available tools would go well here.  As a start, only open source tools are listed, but if vendors of commercial tools adhere to the [[Tutorial]] guidelines, these submissions will be gladly received.&lt;br /&gt;
* Introduction (0%, TD)&lt;br /&gt;
* [[:Category:OWASP LAPSE Project]] (100%, Review)&lt;br /&gt;
* FindBugs (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint (0%, TD)&lt;br /&gt;
* Jmetrics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[J2EE Security For Deployers]] ==&lt;br /&gt;
Practical step-by-step guides to securing various J2EE servers.  Examples of secure configurations can also be provided for download.  If configurations are provided, they should be properly commented so that the rationale for configuration settings is clearly explained.  Users of the configurations should be provided with enough information to make their own risk decisions.&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* [[Securing tomcat|Securing Tomcat]] - (100%, Darren Edmonds, Review)&lt;br /&gt;
* Securing JBoss (0%, TD)&lt;br /&gt;
* Securing WebLogic (0%, TD)&lt;br /&gt;
* Securing WebSphere (0%, TD)&lt;br /&gt;
* Others...&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
Practical information on creating a Java security policies for J2EE servers.&lt;br /&gt;
* PolicyTool (80%, Jeff Williams, Needs a new owner, Review)&lt;br /&gt;
* jChains (www.jchains.org) - (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode manipulation tools and techniques (0%, TD)&lt;br /&gt;
* [[Bytecode obfuscation]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* Convert bytecode to native machine code (0%, TD)&lt;br /&gt;
* [[Protecting code archives with digital signatures]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* [[Signing jar files with jarsigner]] (20%, Pierre Parrend)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Security Analysts and Testers]]==&lt;br /&gt;
* Using Eclipse to verify Java applications (0%, TD)&lt;br /&gt;
* Using [[:Category:OWASP WebScarab Project|WebScarab]] to find vulnerabilities in J2EE applications - (0%, TD)&lt;br /&gt;
* Decompiling Java bytecode (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[Java Security Resources]] (ongoing)==&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16964</id>
		<title>OWASP Java Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16964"/>
				<updated>2007-03-05T19:28:27Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Session Management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;Key:&amp;lt;/b&amp;gt;&lt;br /&gt;
* xx%: Progress status of the paragraph&lt;br /&gt;
* Review: The paragraph needs a review&lt;br /&gt;
* TD: Paragraph to be assigned&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Architects]]==&lt;br /&gt;
Discuss the security implications of common J2EE architectures.  This could be discussed in terms of: Authentication, Authorisation, Data Validation, Cross Site Scripting protection.  Other architecture concerns such as scalability, performance and maintainability can also be mentioned, but the focus on security should not be lost.&lt;br /&gt;
  &lt;br /&gt;
Any other security concerns that should be addressed during the design phase should also be mentioned here.&lt;br /&gt;
===Design considerations===&lt;br /&gt;
* Architectural considerations (0%, TD)&lt;br /&gt;
** EJB Middle tier (0%, TD)&lt;br /&gt;
** Web Services Middle tier (0%, TD)&lt;br /&gt;
** Spring Middle tier (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Developers]]==&lt;br /&gt;
=== Noteworthy Frameworks ===&lt;br /&gt;
Discuss important and relevant Java security frameworks that would be useful to architects.  The information should be at a suitably high level, for example, by discussing the advantages and features as well as the associated costs (direct and indirect) of using the frameworks.&lt;br /&gt;
&lt;br /&gt;
(50% ?, Claire McDonough, Ranjita Shankar Iyer, Rohyt Belani to update, Review)&lt;br /&gt;
*	Struts &lt;br /&gt;
*	Turbine&lt;br /&gt;
*	JFS (MyFaces)&lt;br /&gt;
*	Tapestry&lt;br /&gt;
*	Webwork&lt;br /&gt;
*	Cocoon&lt;br /&gt;
*	Tiles&lt;br /&gt;
*	SiteMesh&lt;br /&gt;
*	Spring&lt;br /&gt;
&lt;br /&gt;
===[[Java Security Basics]]===&lt;br /&gt;
Provide an introduction into the basic security services provided by the Java language and environment.  Remember to keep this relevant for web developers for the initial release - there may be a potential to expand this to thick clients in subsequent releases.&lt;br /&gt;
* Class Loading (0%, Shyaam Sundar, Review)&lt;br /&gt;
* Bytecode verifier (0%, Shyaam Sundar, Review)&lt;br /&gt;
* The Security Manager and security.policy file (0%, Shyaam Sundar, Review)&lt;br /&gt;
&lt;br /&gt;
===Input Validation Overview ===&lt;br /&gt;
Input validation is perhaps the most important category of application security. Any data entering a software system must be verified to contain safe data that is not mounting a SQL Injection, XSS, CSRF or other form of attack. This is done primarily through the use of regular expressions. It's crucial not to hard-code input validation routines. Regular expressions should contained within a configuration file that can easily updated by an InfoSec professional and not require a programmers intervention or deployment of new application code. Application security needs change over time as new attack vectors are discovered. Application administers need to be able to react to these changes as quickly as possible. &lt;br /&gt;
&lt;br /&gt;
===Input Validation ===&lt;br /&gt;
* Dangerous calls (BufferedReader.readLine(), ServletRequest.getParameter(), etc...) (0%, TD)&lt;br /&gt;
* [[How to add validation logic to HttpServletRequest]] (100%, Jeff Williams, Review)&lt;br /&gt;
* [[How to perform HTML entity encoding in Java]] (100%, Jeff Williams, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing SQL Injection in Java]] ====&lt;br /&gt;
* Overview &lt;br /&gt;
* Prevention (60%, Stephen de Vries, Review)&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0&lt;br /&gt;
** JDO&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing LDAP Injection in Java]] ====&lt;br /&gt;
* Overview (100%, Stephen de Vries, Review)&lt;br /&gt;
* Prevention (100%, Stephen de Vries, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[XPATH Injection]] ====&lt;br /&gt;
As with the other Injection sections, only provide cursory information on the general case. Should contain practical real-world advise and code examples for preventing XPATH injection.&lt;br /&gt;
* Overview (0%, TD)&lt;br /&gt;
* Prevention (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks  ====&lt;br /&gt;
* HTTP Response splitting (0%, TD)&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec() (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials - (0%, Adrian San Juan, Review)&lt;br /&gt;
* [[Hashing Java|Hashing]] - (100%, Michel Prunet, Review)&lt;br /&gt;
* [[SSL Best Practices]] - (20%, Philippe Curmin, Review)&lt;br /&gt;
* [[Using JCaptcha]] - (100%, Dave Ferguson, Review) &lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
** [[Declarative Access Control in Java]] - (100%, Dave Ferguson, Reviewed by Pierre Parrend, Dave to act on comments)&lt;br /&gt;
* [[JAAS Timed Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[JAAS Tomcat Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[Password length &amp;amp; complexity]] - (0%, Adrian San Juan, Review)&lt;br /&gt;
&lt;br /&gt;
===Session Management ===&lt;br /&gt;
The generic problems and solutions for session management are covered in the Guide.  This section should focus on Java specific examples.&lt;br /&gt;
* Logout (0%, TD)&lt;br /&gt;
* Session Timeout (0%, TD)&lt;br /&gt;
* Absolute Timeout (0%, TD)&lt;br /&gt;
* [[Session Fixation]] &lt;br /&gt;
* Terminating sessions (0%, TD)&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
&lt;br /&gt;
===Authorization===&lt;br /&gt;
* Declarative v/s Programmatic (0%, TD)&lt;br /&gt;
* EJB Authorization (0%, TD)&lt;br /&gt;
* Acegi (0%, TD)&lt;br /&gt;
* JACC (0%, TD)&lt;br /&gt;
* Check horizontal privilege (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions JCE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* Storing db secrets (0%, TD)&lt;br /&gt;
* Encrypting JDBC connections (0%, TD)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Secure_Socket_Extensions JSSE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions Random number generation] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Logging - why log? what to log? log4j, etc. (0%, TD)&lt;br /&gt;
* Exception handling techniques (0%, TD)&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks (50%, TD)&lt;br /&gt;
** Servlet spec - web.xml [[Securing tomcat]] (100%, Darren Edmonds, Review)&lt;br /&gt;
** JSP errorPage (0%, TD)&lt;br /&gt;
* Web application forensics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML (0%, TD)&lt;br /&gt;
* (X)WS-Security (0%, TD)&lt;br /&gt;
* SunJWSDP (0%, TD)&lt;br /&gt;
* XML Signature (JSR 105) (0%, TD)&lt;br /&gt;
* XML Encryption (JSR 106) (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
The introduction should cover the advantages and short comings of code analysis tools.  An overview of the current state of the art and the available tools would go well here.  As a start, only open source tools are listed, but if vendors of commercial tools adhere to the [[Tutorial]] guidelines, these submissions will be gladly received.&lt;br /&gt;
* Introduction (0%, TD)&lt;br /&gt;
* [[:Category:OWASP LAPSE Project]] (100%, Review)&lt;br /&gt;
* FindBugs (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint (0%, TD)&lt;br /&gt;
* Jmetrics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[J2EE Security For Deployers]] ==&lt;br /&gt;
Practical step-by-step guides to securing various J2EE servers.  Examples of secure configurations can also be provided for download.  If configurations are provided, they should be properly commented so that the rationale for configuration settings is clearly explained.  Users of the configurations should be provided with enough information to make their own risk decisions.&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* [[Securing tomcat|Securing Tomcat]] - (100%, Darren Edmonds, Review)&lt;br /&gt;
* Securing JBoss (0%, TD)&lt;br /&gt;
* Securing WebLogic (0%, TD)&lt;br /&gt;
* Securing WebSphere (0%, TD)&lt;br /&gt;
* Others...&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
Practical information on creating a Java security policies for J2EE servers.&lt;br /&gt;
* PolicyTool (80%, Jeff Williams, Needs a new owner, Review)&lt;br /&gt;
* jChains (www.jchains.org) - (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode manipulation tools and techniques (0%, TD)&lt;br /&gt;
* [[Bytecode obfuscation]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* Convert bytecode to native machine code (0%, TD)&lt;br /&gt;
* [[Protecting code archives with digital signatures]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* [[Signing jar files with jarsigner]] (20%, Pierre Parrend)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Security Analysts and Testers]]==&lt;br /&gt;
* Using Eclipse to verify Java applications (0%, TD)&lt;br /&gt;
* Using [[:Category:OWASP WebScarab Project|WebScarab]] to find vulnerabilities in J2EE applications - (0%, TD)&lt;br /&gt;
* Decompiling Java bytecode (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[Java Security Resources]] (ongoing)==&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16963</id>
		<title>OWASP Java Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_Table_of_Contents&amp;diff=16963"/>
				<updated>2007-03-05T19:28:13Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Session Management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;Key:&amp;lt;/b&amp;gt;&lt;br /&gt;
* xx%: Progress status of the paragraph&lt;br /&gt;
* Review: The paragraph needs a review&lt;br /&gt;
* TD: Paragraph to be assigned&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Architects]]==&lt;br /&gt;
Discuss the security implications of common J2EE architectures.  This could be discussed in terms of: Authentication, Authorisation, Data Validation, Cross Site Scripting protection.  Other architecture concerns such as scalability, performance and maintainability can also be mentioned, but the focus on security should not be lost.&lt;br /&gt;
  &lt;br /&gt;
Any other security concerns that should be addressed during the design phase should also be mentioned here.&lt;br /&gt;
===Design considerations===&lt;br /&gt;
* Architectural considerations (0%, TD)&lt;br /&gt;
** EJB Middle tier (0%, TD)&lt;br /&gt;
** Web Services Middle tier (0%, TD)&lt;br /&gt;
** Spring Middle tier (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Developers]]==&lt;br /&gt;
=== Noteworthy Frameworks ===&lt;br /&gt;
Discuss important and relevant Java security frameworks that would be useful to architects.  The information should be at a suitably high level, for example, by discussing the advantages and features as well as the associated costs (direct and indirect) of using the frameworks.&lt;br /&gt;
&lt;br /&gt;
(50% ?, Claire McDonough, Ranjita Shankar Iyer, Rohyt Belani to update, Review)&lt;br /&gt;
*	Struts &lt;br /&gt;
*	Turbine&lt;br /&gt;
*	JFS (MyFaces)&lt;br /&gt;
*	Tapestry&lt;br /&gt;
*	Webwork&lt;br /&gt;
*	Cocoon&lt;br /&gt;
*	Tiles&lt;br /&gt;
*	SiteMesh&lt;br /&gt;
*	Spring&lt;br /&gt;
&lt;br /&gt;
===[[Java Security Basics]]===&lt;br /&gt;
Provide an introduction into the basic security services provided by the Java language and environment.  Remember to keep this relevant for web developers for the initial release - there may be a potential to expand this to thick clients in subsequent releases.&lt;br /&gt;
* Class Loading (0%, Shyaam Sundar, Review)&lt;br /&gt;
* Bytecode verifier (0%, Shyaam Sundar, Review)&lt;br /&gt;
* The Security Manager and security.policy file (0%, Shyaam Sundar, Review)&lt;br /&gt;
&lt;br /&gt;
===Input Validation Overview ===&lt;br /&gt;
Input validation is perhaps the most important category of application security. Any data entering a software system must be verified to contain safe data that is not mounting a SQL Injection, XSS, CSRF or other form of attack. This is done primarily through the use of regular expressions. It's crucial not to hard-code input validation routines. Regular expressions should contained within a configuration file that can easily updated by an InfoSec professional and not require a programmers intervention or deployment of new application code. Application security needs change over time as new attack vectors are discovered. Application administers need to be able to react to these changes as quickly as possible. &lt;br /&gt;
&lt;br /&gt;
===Input Validation ===&lt;br /&gt;
* Dangerous calls (BufferedReader.readLine(), ServletRequest.getParameter(), etc...) (0%, TD)&lt;br /&gt;
* [[How to add validation logic to HttpServletRequest]] (100%, Jeff Williams, Review)&lt;br /&gt;
* [[How to perform HTML entity encoding in Java]] (100%, Jeff Williams, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing SQL Injection in Java]] ====&lt;br /&gt;
* Overview &lt;br /&gt;
* Prevention (60%, Stephen de Vries, Review)&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0&lt;br /&gt;
** JDO&lt;br /&gt;
&lt;br /&gt;
==== [[Preventing LDAP Injection in Java]] ====&lt;br /&gt;
* Overview (100%, Stephen de Vries, Review)&lt;br /&gt;
* Prevention (100%, Stephen de Vries, Review)&lt;br /&gt;
&lt;br /&gt;
==== [[XPATH Injection]] ====&lt;br /&gt;
As with the other Injection sections, only provide cursory information on the general case. Should contain practical real-world advise and code examples for preventing XPATH injection.&lt;br /&gt;
* Overview (0%, TD)&lt;br /&gt;
* Prevention (0%, TD)&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks  ====&lt;br /&gt;
* HTTP Response splitting (0%, TD)&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec() (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials - (0%, Adrian San Juan, Review)&lt;br /&gt;
* [[Hashing Java|Hashing]] - (100%, Michel Prunet, Review)&lt;br /&gt;
* [[SSL Best Practices]] - (20%, Philippe Curmin, Review)&lt;br /&gt;
* [[Using JCaptcha]] - (100%, Dave Ferguson, Review) &lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
** [[Declarative Access Control in Java]] - (100%, Dave Ferguson, Reviewed by Pierre Parrend, Dave to act on comments)&lt;br /&gt;
* [[JAAS Timed Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[JAAS Tomcat Login Module]] - (100%, Stephen de Vries, Review)&lt;br /&gt;
* [[Password length &amp;amp; complexity]] - (0%, Adrian San Juan, Review)&lt;br /&gt;
&lt;br /&gt;
===Session Management ===&lt;br /&gt;
The generic problems and solutions for session management are covered in the Guide.  This section should focus on Java specific examples.&lt;br /&gt;
* Logout (0%, TD)&lt;br /&gt;
* Session Timeout (0%, TD)&lt;br /&gt;
* Absolute Timeout (0%, TD)&lt;br /&gt;
[[Session Fixation]] &lt;br /&gt;
* Terminating sessions (0%, TD)&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
&lt;br /&gt;
===Authorization===&lt;br /&gt;
* Declarative v/s Programmatic (0%, TD)&lt;br /&gt;
* EJB Authorization (0%, TD)&lt;br /&gt;
* Acegi (0%, TD)&lt;br /&gt;
* JACC (0%, TD)&lt;br /&gt;
* Check horizontal privilege (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions JCE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* Storing db secrets (0%, TD)&lt;br /&gt;
* Encrypting JDBC connections (0%, TD)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Secure_Socket_Extensions JSSE] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
* [http://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions Random number generation] (80%, Joe Prasanna Kumar - To be reviewed)&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Logging - why log? what to log? log4j, etc. (0%, TD)&lt;br /&gt;
* Exception handling techniques (0%, TD)&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks (50%, TD)&lt;br /&gt;
** Servlet spec - web.xml [[Securing tomcat]] (100%, Darren Edmonds, Review)&lt;br /&gt;
** JSP errorPage (0%, TD)&lt;br /&gt;
* Web application forensics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML (0%, TD)&lt;br /&gt;
* (X)WS-Security (0%, TD)&lt;br /&gt;
* SunJWSDP (0%, TD)&lt;br /&gt;
* XML Signature (JSR 105) (0%, TD)&lt;br /&gt;
* XML Encryption (JSR 106) (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
The introduction should cover the advantages and short comings of code analysis tools.  An overview of the current state of the art and the available tools would go well here.  As a start, only open source tools are listed, but if vendors of commercial tools adhere to the [[Tutorial]] guidelines, these submissions will be gladly received.&lt;br /&gt;
* Introduction (0%, TD)&lt;br /&gt;
* [[:Category:OWASP LAPSE Project]] (100%, Review)&lt;br /&gt;
* FindBugs (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD (0%, TD)&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint (0%, TD)&lt;br /&gt;
* Jmetrics (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[J2EE Security For Deployers]] ==&lt;br /&gt;
Practical step-by-step guides to securing various J2EE servers.  Examples of secure configurations can also be provided for download.  If configurations are provided, they should be properly commented so that the rationale for configuration settings is clearly explained.  Users of the configurations should be provided with enough information to make their own risk decisions.&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* [[Securing tomcat|Securing Tomcat]] - (100%, Darren Edmonds, Review)&lt;br /&gt;
* Securing JBoss (0%, TD)&lt;br /&gt;
* Securing WebLogic (0%, TD)&lt;br /&gt;
* Securing WebSphere (0%, TD)&lt;br /&gt;
* Others...&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
Practical information on creating a Java security policies for J2EE servers.&lt;br /&gt;
* PolicyTool (80%, Jeff Williams, Needs a new owner, Review)&lt;br /&gt;
* jChains (www.jchains.org) - (0%, TD)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode manipulation tools and techniques (0%, TD)&lt;br /&gt;
* [[Bytecode obfuscation]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* Convert bytecode to native machine code (0%, TD)&lt;br /&gt;
* [[Protecting code archives with digital signatures]] (100%, Pierre Parrend, Review)&lt;br /&gt;
* [[Signing jar files with jarsigner]] (20%, Pierre Parrend)&lt;br /&gt;
&lt;br /&gt;
==[[J2EE Security for Security Analysts and Testers]]==&lt;br /&gt;
* Using Eclipse to verify Java applications (0%, TD)&lt;br /&gt;
* Using [[:Category:OWASP WebScarab Project|WebScarab]] to find vulnerabilities in J2EE applications - (0%, TD)&lt;br /&gt;
* Decompiling Java bytecode (0%, TD)&lt;br /&gt;
&lt;br /&gt;
== [[Java Security Resources]] (ongoing)==&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6469</id>
		<title>Talk:OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6469"/>
				<updated>2006-06-17T20:03:44Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Java Security Basics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==J2EE Security for Architects==&lt;br /&gt;
&lt;br /&gt;
=== Risk Analysis===&lt;br /&gt;
To my mind, Risk Analysis is a general exercise that will apply equaly to all apps irrespective of the language used to implement the app.  So would say that this belongs in the Guide rather than the Java project, unless you have some ideas on how to make this Java specific?  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Mapping Regulatory requirements to technical requirements===&lt;br /&gt;
Same as above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Design considerations===&lt;br /&gt;
This is quite general.  Shall we narrow it down to the architectural issues that should be considered for each of the popular architectures such as:&lt;br /&gt;
* Architectural considerations&lt;br /&gt;
** EJB Middle tier&lt;br /&gt;
** Web Services Middle tier&lt;br /&gt;
** Spring Middle tier&lt;br /&gt;
--[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Frameworks you should be aware of (e.g. struts, stinger, etc.)===&lt;br /&gt;
There are many frameworks out there, so I'd suggest we keep this down to frameworks that specifically offer security functionality such as: &lt;br /&gt;
* Acegi&lt;br /&gt;
* Commons validator&lt;br /&gt;
* jGuard &lt;br /&gt;
* Stinger seems to be parked for a while now, is this correct Jeff?&lt;br /&gt;
** Stinger is &lt;br /&gt;
** CVS HEAD is in a functional state; needs work on docs and new features [[User:Roman|Roman]] 00:15, 13 June 2006 (EDT)&lt;br /&gt;
Most web tier frameworks will prevent XSS attacks, so listing them all in this section is a bit verbose, would prefer to see them listed in the XSS section.  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I think Struts should be covered too - Rohyt&lt;br /&gt;
&lt;br /&gt;
==J2EE Security for Developers==&lt;br /&gt;
&lt;br /&gt;
===Java Security Basics=== &lt;br /&gt;
* Class Loading&lt;br /&gt;
* Bytecode verifier&lt;br /&gt;
* The Security Manager and security.policy file&lt;br /&gt;
I suggest we do something short here for web developers, and wait on client side apps for now [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree --[[User:Stephendv|Stephendv]] 09:48, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree - the initial focus should be on web apps. We can address security issues pertinent to thick-client apps in the next phase - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Input Validation===&lt;br /&gt;
* Overview&lt;br /&gt;
&lt;br /&gt;
==== SQL Injection====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0? &lt;br /&gt;
** JDO? &lt;br /&gt;
&lt;br /&gt;
====XSS====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing &lt;br /&gt;
** Manual HTML Encoding&lt;br /&gt;
** Preventing XSS in popular Web Frameworks&lt;br /&gt;
*** JSP/JSTL&lt;br /&gt;
*** Struts&lt;br /&gt;
*** Spring MVC&lt;br /&gt;
*** Java Server Faces&lt;br /&gt;
*** WebWork?&lt;br /&gt;
*** Wicket?&lt;br /&gt;
*** Tapestry? &lt;br /&gt;
* &amp;lt;s&amp;gt;Misc I/P Validation Attacks (e.g. HTTP Response Splitting)&amp;lt;/s&amp;gt; - Moved this out to a separate section below.  --[[User:Stephendv|Stephendv]] 08:41, 12 June 2006 (EDT)&lt;br /&gt;
* &amp;lt;s&amp;gt;Using struts&amp;lt;/s&amp;gt; Would recommend we cover a number of frameworks as mentioned above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
* CSRF attack&lt;br /&gt;
&lt;br /&gt;
==== LDAP Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== XPATH Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks ====&lt;br /&gt;
* HTTP Response splitting&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec()&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials&lt;br /&gt;
* Hashing&lt;br /&gt;
* SSL Best Practices&lt;br /&gt;
* CAPTCHA systems (jcaptcha?)&lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
* JAAS Authentication&lt;br /&gt;
* Password length &amp;amp; complexity&lt;br /&gt;
&lt;br /&gt;
===Session Management===&lt;br /&gt;
* Logout&lt;br /&gt;
* Session Timeout&lt;br /&gt;
* Absolute Timeout&lt;br /&gt;
* Session Fixation&lt;br /&gt;
* Terminating sessions&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
 &lt;br /&gt;
===Authorization===&lt;br /&gt;
* In presentation layer&lt;br /&gt;
* In business logic&lt;br /&gt;
* In data layer&lt;br /&gt;
* Declarative v/s Programmatic&lt;br /&gt;
* web.xml configuration&lt;br /&gt;
* [[Forced browsing]]&lt;br /&gt;
* JAAS&lt;br /&gt;
* EJB Authorization&lt;br /&gt;
* Acegi?&lt;br /&gt;
* JACC&lt;br /&gt;
* Check horizontal privilege&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* JCE&lt;br /&gt;
* Storing db secrets&lt;br /&gt;
* Encrypting JDBC connections&lt;br /&gt;
* JSSE&lt;br /&gt;
* Random number generation&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Output Validation&lt;br /&gt;
* Custom Errors&lt;br /&gt;
* Logging - why log? what to log? log4j, etc.&lt;br /&gt;
* Exception handling techniques&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks&lt;br /&gt;
** Servlet spec - web.xml&lt;br /&gt;
** JSP errorPage&lt;br /&gt;
&lt;br /&gt;
- Web application forensics and how it differs from conventional forensics. This will emphasize the importance of appropriate exception handling and logging   - Rohyt&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML&lt;br /&gt;
* WS-Security&lt;br /&gt;
* ...?&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
* FindBugs&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint&lt;br /&gt;
* Jmetrics&lt;br /&gt;
&lt;br /&gt;
== J2EE Security For Deployers ==&lt;br /&gt;
&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* Securing Tomcat&lt;br /&gt;
* Securing JBoss&lt;br /&gt;
* Securing WebLogic&lt;br /&gt;
* Securing WebSphere&lt;br /&gt;
* Securing x...&lt;br /&gt;
Would be nice to include an example secure by default configuration file for each server that has additional comments in it which expands on the security repurcussions of the various sections.&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
* Jeff's tool? --[[User:Stephendv|Stephendv]] 08:37, 12 June 2006 (EDT)&lt;br /&gt;
* jChains (www.jchains.org)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
- Discuss Bytecode Manipulation Tools and Techniques - Rohyt&lt;br /&gt;
* Bytecode obfuscation&lt;br /&gt;
* Convert bytecode to native machine code&lt;br /&gt;
* jarsigner&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6403</id>
		<title>Talk:OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6403"/>
				<updated>2006-06-16T14:34:40Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Frameworks you should be aware of (e.g. struts, stinger, etc.) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==J2EE Security for Architects==&lt;br /&gt;
&lt;br /&gt;
=== Risk Analysis===&lt;br /&gt;
To my mind, Risk Analysis is a general exercise that will apply equaly to all apps irrespective of the language used to implement the app.  So would say that this belongs in the Guide rather than the Java project, unless you have some ideas on how to make this Java specific?  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Mapping Regulatory requirements to technical requirements===&lt;br /&gt;
Same as above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Design considerations===&lt;br /&gt;
This is quite general.  Shall we narrow it down to the architectural issues that should be considered for each of the popular architectures such as:&lt;br /&gt;
* Architectural considerations&lt;br /&gt;
** EJB Middle tier&lt;br /&gt;
** Web Services Middle tier&lt;br /&gt;
** Spring Middle tier&lt;br /&gt;
--[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Frameworks you should be aware of (e.g. struts, stinger, etc.)===&lt;br /&gt;
There are many frameworks out there, so I'd suggest we keep this down to frameworks that specifically offer security functionality such as: &lt;br /&gt;
* Acegi&lt;br /&gt;
* Commons validator&lt;br /&gt;
* jGuard &lt;br /&gt;
* Stinger seems to be parked for a while now, is this correct Jeff?&lt;br /&gt;
** Stinger is &lt;br /&gt;
** CVS HEAD is in a functional state; needs work on docs and new features [[User:Roman|Roman]] 00:15, 13 June 2006 (EDT)&lt;br /&gt;
Most web tier frameworks will prevent XSS attacks, so listing them all in this section is a bit verbose, would prefer to see them listed in the XSS section.  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I think Struts should be covered too - Rohyt&lt;br /&gt;
&lt;br /&gt;
==J2EE Security for Developers==&lt;br /&gt;
&lt;br /&gt;
===Java Security Basics=== &lt;br /&gt;
* Class Loading&lt;br /&gt;
* Bytecode verifier&lt;br /&gt;
* The Security Manager and security.policy file&lt;br /&gt;
I suggest we do something short here for web developers, and wait on client side apps for now [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree --[[User:Stephendv|Stephendv]] 09:48, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree - the initial focus should be on web app appss. We can address security issues pertinent to thick-client apps in the next phase - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Input Validation===&lt;br /&gt;
* Overview&lt;br /&gt;
&lt;br /&gt;
==== SQL Injection====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0? &lt;br /&gt;
** JDO? &lt;br /&gt;
&lt;br /&gt;
====XSS====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing &lt;br /&gt;
** Manual HTML Encoding&lt;br /&gt;
** Preventing XSS in popular Web Frameworks&lt;br /&gt;
*** JSP/JSTL&lt;br /&gt;
*** Struts&lt;br /&gt;
*** Spring MVC&lt;br /&gt;
*** Java Server Faces&lt;br /&gt;
*** WebWork?&lt;br /&gt;
*** Wicket?&lt;br /&gt;
*** Tapestry? &lt;br /&gt;
* &amp;lt;s&amp;gt;Misc I/P Validation Attacks (e.g. HTTP Response Splitting)&amp;lt;/s&amp;gt; - Moved this out to a separate section below.  --[[User:Stephendv|Stephendv]] 08:41, 12 June 2006 (EDT)&lt;br /&gt;
* &amp;lt;s&amp;gt;Using struts&amp;lt;/s&amp;gt; Would recommend we cover a number of frameworks as mentioned above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
* CSRF attack&lt;br /&gt;
&lt;br /&gt;
==== LDAP Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== XPATH Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks ====&lt;br /&gt;
* HTTP Response splitting&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec()&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials&lt;br /&gt;
* Hashing&lt;br /&gt;
* SSL Best Practices&lt;br /&gt;
* CAPTCHA systems (jcaptcha?)&lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
* JAAS Authentication&lt;br /&gt;
* Password length &amp;amp; complexity&lt;br /&gt;
&lt;br /&gt;
===Session Management===&lt;br /&gt;
* Logout&lt;br /&gt;
* Session Timeout&lt;br /&gt;
* Absolute Timeout&lt;br /&gt;
* Session Fixation&lt;br /&gt;
* Terminating sessions&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
 &lt;br /&gt;
===Authorization===&lt;br /&gt;
* In presentation layer&lt;br /&gt;
* In business logic&lt;br /&gt;
* In data layer&lt;br /&gt;
* Declarative v/s Programmatic&lt;br /&gt;
* web.xml configuration&lt;br /&gt;
* [[Forced browsing]]&lt;br /&gt;
* JAAS&lt;br /&gt;
* EJB Authorization&lt;br /&gt;
* Acegi?&lt;br /&gt;
* JACC&lt;br /&gt;
* Check horizontal privilege&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* JCE&lt;br /&gt;
* Storing db secrets&lt;br /&gt;
* Encrypting JDBC connections&lt;br /&gt;
* JSSE&lt;br /&gt;
* Random number generation&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Output Validation&lt;br /&gt;
* Custom Errors&lt;br /&gt;
* Logging - why log? what to log? log4j, etc.&lt;br /&gt;
* Exception handling techniques&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks&lt;br /&gt;
** Servlet spec - web.xml&lt;br /&gt;
** JSP errorPage&lt;br /&gt;
&lt;br /&gt;
- Web application forensics and how it differs from conventional forensics. This will emphasize the importance of appropriate exception handling and logging   - Rohyt&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML&lt;br /&gt;
* WS-Security&lt;br /&gt;
* ...?&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
* FindBugs&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint&lt;br /&gt;
* Jmetrics&lt;br /&gt;
&lt;br /&gt;
== J2EE Security For Deployers ==&lt;br /&gt;
&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* Securing Tomcat&lt;br /&gt;
* Securing JBoss&lt;br /&gt;
* Securing WebLogic&lt;br /&gt;
* Securing WebSphere&lt;br /&gt;
* Securing x...&lt;br /&gt;
Would be nice to include an example secure by default configuration file for each server that has additional comments in it which expands on the security repurcussions of the various sections.&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
* Jeff's tool? --[[User:Stephendv|Stephendv]] 08:37, 12 June 2006 (EDT)&lt;br /&gt;
* jChains (www.jchains.org)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
- Discuss Bytecode Manipulation Tools and Techniques - Rohyt&lt;br /&gt;
* Bytecode obfuscation&lt;br /&gt;
* Convert bytecode to native machine code&lt;br /&gt;
* jarsigner&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6402</id>
		<title>Talk:OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6402"/>
				<updated>2006-06-16T14:33:46Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Protecting Binaries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==J2EE Security for Architects==&lt;br /&gt;
&lt;br /&gt;
=== Risk Analysis===&lt;br /&gt;
To my mind, Risk Analysis is a general exercise that will apply equaly to all apps irrespective of the language used to implement the app.  So would say that this belongs in the Guide rather than the Java project, unless you have some ideas on how to make this Java specific?  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Mapping Regulatory requirements to technical requirements===&lt;br /&gt;
Same as above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Design considerations===&lt;br /&gt;
This is quite general.  Shall we narrow it down to the architectural issues that should be considered for each of the popular architectures such as:&lt;br /&gt;
* Architectural considerations&lt;br /&gt;
** EJB Middle tier&lt;br /&gt;
** Web Services Middle tier&lt;br /&gt;
** Spring Middle tier&lt;br /&gt;
--[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Frameworks you should be aware of (e.g. struts, stinger, etc.)===&lt;br /&gt;
There are many frameworks out there, so I'd suggest we keep this down to frameworks that specifically offer security functionality such as: &lt;br /&gt;
* Acegi&lt;br /&gt;
* Commons validator&lt;br /&gt;
* jGuard &lt;br /&gt;
* Stinger seems to be parked for a while now, is this correct Jeff?&lt;br /&gt;
** Stinger is &lt;br /&gt;
** CVS HEAD is in a functional state; needs work on docs and new features [[User:Roman|Roman]] 00:15, 13 June 2006 (EDT)&lt;br /&gt;
Most web tier frameworks will prevent XSS attacks, so listing them all in this section is a bit verbose, would prefer to see them listed in the XSS section.  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I think Struts should be covered too given the extensive input validation functionality it supports - Rohyt&lt;br /&gt;
&lt;br /&gt;
==J2EE Security for Developers==&lt;br /&gt;
&lt;br /&gt;
===Java Security Basics=== &lt;br /&gt;
* Class Loading&lt;br /&gt;
* Bytecode verifier&lt;br /&gt;
* The Security Manager and security.policy file&lt;br /&gt;
I suggest we do something short here for web developers, and wait on client side apps for now [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree --[[User:Stephendv|Stephendv]] 09:48, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree - the initial focus should be on web app appss. We can address security issues pertinent to thick-client apps in the next phase - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Input Validation===&lt;br /&gt;
* Overview&lt;br /&gt;
&lt;br /&gt;
==== SQL Injection====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0? &lt;br /&gt;
** JDO? &lt;br /&gt;
&lt;br /&gt;
====XSS====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing &lt;br /&gt;
** Manual HTML Encoding&lt;br /&gt;
** Preventing XSS in popular Web Frameworks&lt;br /&gt;
*** JSP/JSTL&lt;br /&gt;
*** Struts&lt;br /&gt;
*** Spring MVC&lt;br /&gt;
*** Java Server Faces&lt;br /&gt;
*** WebWork?&lt;br /&gt;
*** Wicket?&lt;br /&gt;
*** Tapestry? &lt;br /&gt;
* &amp;lt;s&amp;gt;Misc I/P Validation Attacks (e.g. HTTP Response Splitting)&amp;lt;/s&amp;gt; - Moved this out to a separate section below.  --[[User:Stephendv|Stephendv]] 08:41, 12 June 2006 (EDT)&lt;br /&gt;
* &amp;lt;s&amp;gt;Using struts&amp;lt;/s&amp;gt; Would recommend we cover a number of frameworks as mentioned above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
* CSRF attack&lt;br /&gt;
&lt;br /&gt;
==== LDAP Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== XPATH Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks ====&lt;br /&gt;
* HTTP Response splitting&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec()&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials&lt;br /&gt;
* Hashing&lt;br /&gt;
* SSL Best Practices&lt;br /&gt;
* CAPTCHA systems (jcaptcha?)&lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
* JAAS Authentication&lt;br /&gt;
* Password length &amp;amp; complexity&lt;br /&gt;
&lt;br /&gt;
===Session Management===&lt;br /&gt;
* Logout&lt;br /&gt;
* Session Timeout&lt;br /&gt;
* Absolute Timeout&lt;br /&gt;
* Session Fixation&lt;br /&gt;
* Terminating sessions&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
 &lt;br /&gt;
===Authorization===&lt;br /&gt;
* In presentation layer&lt;br /&gt;
* In business logic&lt;br /&gt;
* In data layer&lt;br /&gt;
* Declarative v/s Programmatic&lt;br /&gt;
* web.xml configuration&lt;br /&gt;
* [[Forced browsing]]&lt;br /&gt;
* JAAS&lt;br /&gt;
* EJB Authorization&lt;br /&gt;
* Acegi?&lt;br /&gt;
* JACC&lt;br /&gt;
* Check horizontal privilege&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* JCE&lt;br /&gt;
* Storing db secrets&lt;br /&gt;
* Encrypting JDBC connections&lt;br /&gt;
* JSSE&lt;br /&gt;
* Random number generation&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Output Validation&lt;br /&gt;
* Custom Errors&lt;br /&gt;
* Logging - why log? what to log? log4j, etc.&lt;br /&gt;
* Exception handling techniques&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks&lt;br /&gt;
** Servlet spec - web.xml&lt;br /&gt;
** JSP errorPage&lt;br /&gt;
&lt;br /&gt;
- Web application forensics and how it differs from conventional forensics. This will emphasize the importance of appropriate exception handling and logging   - Rohyt&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML&lt;br /&gt;
* WS-Security&lt;br /&gt;
* ...?&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
* FindBugs&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint&lt;br /&gt;
* Jmetrics&lt;br /&gt;
&lt;br /&gt;
== J2EE Security For Deployers ==&lt;br /&gt;
&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* Securing Tomcat&lt;br /&gt;
* Securing JBoss&lt;br /&gt;
* Securing WebLogic&lt;br /&gt;
* Securing WebSphere&lt;br /&gt;
* Securing x...&lt;br /&gt;
Would be nice to include an example secure by default configuration file for each server that has additional comments in it which expands on the security repurcussions of the various sections.&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
* Jeff's tool? --[[User:Stephendv|Stephendv]] 08:37, 12 June 2006 (EDT)&lt;br /&gt;
* jChains (www.jchains.org)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
- Discuss Bytecode Manipulation Tools and Techniques - Rohyt&lt;br /&gt;
* Bytecode obfuscation&lt;br /&gt;
* Convert bytecode to native machine code&lt;br /&gt;
* jarsigner&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6401</id>
		<title>Talk:OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6401"/>
				<updated>2006-06-16T14:32:12Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Java Security Basics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==J2EE Security for Architects==&lt;br /&gt;
&lt;br /&gt;
=== Risk Analysis===&lt;br /&gt;
To my mind, Risk Analysis is a general exercise that will apply equaly to all apps irrespective of the language used to implement the app.  So would say that this belongs in the Guide rather than the Java project, unless you have some ideas on how to make this Java specific?  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Mapping Regulatory requirements to technical requirements===&lt;br /&gt;
Same as above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Design considerations===&lt;br /&gt;
This is quite general.  Shall we narrow it down to the architectural issues that should be considered for each of the popular architectures such as:&lt;br /&gt;
* Architectural considerations&lt;br /&gt;
** EJB Middle tier&lt;br /&gt;
** Web Services Middle tier&lt;br /&gt;
** Spring Middle tier&lt;br /&gt;
--[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Frameworks you should be aware of (e.g. struts, stinger, etc.)===&lt;br /&gt;
There are many frameworks out there, so I'd suggest we keep this down to frameworks that specifically offer security functionality such as: &lt;br /&gt;
* Acegi&lt;br /&gt;
* Commons validator&lt;br /&gt;
* jGuard &lt;br /&gt;
* Stinger seems to be parked for a while now, is this correct Jeff?&lt;br /&gt;
** Stinger is &lt;br /&gt;
** CVS HEAD is in a functional state; needs work on docs and new features [[User:Roman|Roman]] 00:15, 13 June 2006 (EDT)&lt;br /&gt;
Most web tier frameworks will prevent XSS attacks, so listing them all in this section is a bit verbose, would prefer to see them listed in the XSS section.  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I think Struts should be covered too given the extensive input validation functionality it supports - Rohyt&lt;br /&gt;
&lt;br /&gt;
==J2EE Security for Developers==&lt;br /&gt;
&lt;br /&gt;
===Java Security Basics=== &lt;br /&gt;
* Class Loading&lt;br /&gt;
* Bytecode verifier&lt;br /&gt;
* The Security Manager and security.policy file&lt;br /&gt;
I suggest we do something short here for web developers, and wait on client side apps for now [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree --[[User:Stephendv|Stephendv]] 09:48, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree - the initial focus should be on web app appss. We can address security issues pertinent to thick-client apps in the next phase - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Input Validation===&lt;br /&gt;
* Overview&lt;br /&gt;
&lt;br /&gt;
==== SQL Injection====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0? &lt;br /&gt;
** JDO? &lt;br /&gt;
&lt;br /&gt;
====XSS====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing &lt;br /&gt;
** Manual HTML Encoding&lt;br /&gt;
** Preventing XSS in popular Web Frameworks&lt;br /&gt;
*** JSP/JSTL&lt;br /&gt;
*** Struts&lt;br /&gt;
*** Spring MVC&lt;br /&gt;
*** Java Server Faces&lt;br /&gt;
*** WebWork?&lt;br /&gt;
*** Wicket?&lt;br /&gt;
*** Tapestry? &lt;br /&gt;
* &amp;lt;s&amp;gt;Misc I/P Validation Attacks (e.g. HTTP Response Splitting)&amp;lt;/s&amp;gt; - Moved this out to a separate section below.  --[[User:Stephendv|Stephendv]] 08:41, 12 June 2006 (EDT)&lt;br /&gt;
* &amp;lt;s&amp;gt;Using struts&amp;lt;/s&amp;gt; Would recommend we cover a number of frameworks as mentioned above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
* CSRF attack&lt;br /&gt;
&lt;br /&gt;
==== LDAP Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== XPATH Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks ====&lt;br /&gt;
* HTTP Response splitting&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec()&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials&lt;br /&gt;
* Hashing&lt;br /&gt;
* SSL Best Practices&lt;br /&gt;
* CAPTCHA systems (jcaptcha?)&lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
* JAAS Authentication&lt;br /&gt;
* Password length &amp;amp; complexity&lt;br /&gt;
&lt;br /&gt;
===Session Management===&lt;br /&gt;
* Logout&lt;br /&gt;
* Session Timeout&lt;br /&gt;
* Absolute Timeout&lt;br /&gt;
* Session Fixation&lt;br /&gt;
* Terminating sessions&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
 &lt;br /&gt;
===Authorization===&lt;br /&gt;
* In presentation layer&lt;br /&gt;
* In business logic&lt;br /&gt;
* In data layer&lt;br /&gt;
* Declarative v/s Programmatic&lt;br /&gt;
* web.xml configuration&lt;br /&gt;
* [[Forced browsing]]&lt;br /&gt;
* JAAS&lt;br /&gt;
* EJB Authorization&lt;br /&gt;
* Acegi?&lt;br /&gt;
* JACC&lt;br /&gt;
* Check horizontal privilege&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* JCE&lt;br /&gt;
* Storing db secrets&lt;br /&gt;
* Encrypting JDBC connections&lt;br /&gt;
* JSSE&lt;br /&gt;
* Random number generation&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Output Validation&lt;br /&gt;
* Custom Errors&lt;br /&gt;
* Logging - why log? what to log? log4j, etc.&lt;br /&gt;
* Exception handling techniques&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks&lt;br /&gt;
** Servlet spec - web.xml&lt;br /&gt;
** JSP errorPage&lt;br /&gt;
&lt;br /&gt;
- Web application forensics and how it differs from conventional forensics. This will emphasize the importance of appropriate exception handling and logging   - Rohyt&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML&lt;br /&gt;
* WS-Security&lt;br /&gt;
* ...?&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
* FindBugs&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint&lt;br /&gt;
* Jmetrics&lt;br /&gt;
&lt;br /&gt;
== J2EE Security For Deployers ==&lt;br /&gt;
&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* Securing Tomcat&lt;br /&gt;
* Securing JBoss&lt;br /&gt;
* Securing WebLogic&lt;br /&gt;
* Securing WebSphere&lt;br /&gt;
* Securing x...&lt;br /&gt;
Would be nice to include an example secure by default configuration file for each server that has additional comments in it which expands on the security repurcussions of the various sections.&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
* Jeff's tool? --[[User:Stephendv|Stephendv]] 08:37, 12 June 2006 (EDT)&lt;br /&gt;
* jChains (www.jchains.org)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode obfuscation&lt;br /&gt;
* Convert bytecode to native machine code&lt;br /&gt;
* jarsigner&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6400</id>
		<title>Talk:OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6400"/>
				<updated>2006-06-16T14:30:48Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Error Handling &amp;amp; Logging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==J2EE Security for Architects==&lt;br /&gt;
&lt;br /&gt;
=== Risk Analysis===&lt;br /&gt;
To my mind, Risk Analysis is a general exercise that will apply equaly to all apps irrespective of the language used to implement the app.  So would say that this belongs in the Guide rather than the Java project, unless you have some ideas on how to make this Java specific?  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Mapping Regulatory requirements to technical requirements===&lt;br /&gt;
Same as above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Design considerations===&lt;br /&gt;
This is quite general.  Shall we narrow it down to the architectural issues that should be considered for each of the popular architectures such as:&lt;br /&gt;
* Architectural considerations&lt;br /&gt;
** EJB Middle tier&lt;br /&gt;
** Web Services Middle tier&lt;br /&gt;
** Spring Middle tier&lt;br /&gt;
--[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Frameworks you should be aware of (e.g. struts, stinger, etc.)===&lt;br /&gt;
There are many frameworks out there, so I'd suggest we keep this down to frameworks that specifically offer security functionality such as: &lt;br /&gt;
* Acegi&lt;br /&gt;
* Commons validator&lt;br /&gt;
* jGuard &lt;br /&gt;
* Stinger seems to be parked for a while now, is this correct Jeff?&lt;br /&gt;
** Stinger is &lt;br /&gt;
** CVS HEAD is in a functional state; needs work on docs and new features [[User:Roman|Roman]] 00:15, 13 June 2006 (EDT)&lt;br /&gt;
Most web tier frameworks will prevent XSS attacks, so listing them all in this section is a bit verbose, would prefer to see them listed in the XSS section.  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I think Struts should be covered too given the extensive input validation functionality it supports - Rohyt&lt;br /&gt;
&lt;br /&gt;
==J2EE Security for Developers==&lt;br /&gt;
&lt;br /&gt;
===Java Security Basics=== &lt;br /&gt;
* Class Loading&lt;br /&gt;
* Bytecode verifier&lt;br /&gt;
* The Security Manager and security.policy file&lt;br /&gt;
I suggest we do something short here for web developers, and wait on client side apps for now [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree --[[User:Stephendv|Stephendv]] 09:48, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree - the initial focus should be web app developers. We can then address security issues pertinent to thick-client apps - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Input Validation===&lt;br /&gt;
* Overview&lt;br /&gt;
&lt;br /&gt;
==== SQL Injection====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0? &lt;br /&gt;
** JDO? &lt;br /&gt;
&lt;br /&gt;
====XSS====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing &lt;br /&gt;
** Manual HTML Encoding&lt;br /&gt;
** Preventing XSS in popular Web Frameworks&lt;br /&gt;
*** JSP/JSTL&lt;br /&gt;
*** Struts&lt;br /&gt;
*** Spring MVC&lt;br /&gt;
*** Java Server Faces&lt;br /&gt;
*** WebWork?&lt;br /&gt;
*** Wicket?&lt;br /&gt;
*** Tapestry? &lt;br /&gt;
* &amp;lt;s&amp;gt;Misc I/P Validation Attacks (e.g. HTTP Response Splitting)&amp;lt;/s&amp;gt; - Moved this out to a separate section below.  --[[User:Stephendv|Stephendv]] 08:41, 12 June 2006 (EDT)&lt;br /&gt;
* &amp;lt;s&amp;gt;Using struts&amp;lt;/s&amp;gt; Would recommend we cover a number of frameworks as mentioned above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
* CSRF attack&lt;br /&gt;
&lt;br /&gt;
==== LDAP Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== XPATH Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks ====&lt;br /&gt;
* HTTP Response splitting&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec()&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials&lt;br /&gt;
* Hashing&lt;br /&gt;
* SSL Best Practices&lt;br /&gt;
* CAPTCHA systems (jcaptcha?)&lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
* JAAS Authentication&lt;br /&gt;
* Password length &amp;amp; complexity&lt;br /&gt;
&lt;br /&gt;
===Session Management===&lt;br /&gt;
* Logout&lt;br /&gt;
* Session Timeout&lt;br /&gt;
* Absolute Timeout&lt;br /&gt;
* Session Fixation&lt;br /&gt;
* Terminating sessions&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
 &lt;br /&gt;
===Authorization===&lt;br /&gt;
* In presentation layer&lt;br /&gt;
* In business logic&lt;br /&gt;
* In data layer&lt;br /&gt;
* Declarative v/s Programmatic&lt;br /&gt;
* web.xml configuration&lt;br /&gt;
* [[Forced browsing]]&lt;br /&gt;
* JAAS&lt;br /&gt;
* EJB Authorization&lt;br /&gt;
* Acegi?&lt;br /&gt;
* JACC&lt;br /&gt;
* Check horizontal privilege&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* JCE&lt;br /&gt;
* Storing db secrets&lt;br /&gt;
* Encrypting JDBC connections&lt;br /&gt;
* JSSE&lt;br /&gt;
* Random number generation&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Output Validation&lt;br /&gt;
* Custom Errors&lt;br /&gt;
* Logging - why log? what to log? log4j, etc.&lt;br /&gt;
* Exception handling techniques&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks&lt;br /&gt;
** Servlet spec - web.xml&lt;br /&gt;
** JSP errorPage&lt;br /&gt;
&lt;br /&gt;
- Web application forensics and how it differs from conventional forensics. This will emphasize the importance of appropriate exception handling and logging   - Rohyt&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML&lt;br /&gt;
* WS-Security&lt;br /&gt;
* ...?&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
* FindBugs&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint&lt;br /&gt;
* Jmetrics&lt;br /&gt;
&lt;br /&gt;
== J2EE Security For Deployers ==&lt;br /&gt;
&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* Securing Tomcat&lt;br /&gt;
* Securing JBoss&lt;br /&gt;
* Securing WebLogic&lt;br /&gt;
* Securing WebSphere&lt;br /&gt;
* Securing x...&lt;br /&gt;
Would be nice to include an example secure by default configuration file for each server that has additional comments in it which expands on the security repurcussions of the various sections.&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
* Jeff's tool? --[[User:Stephendv|Stephendv]] 08:37, 12 June 2006 (EDT)&lt;br /&gt;
* jChains (www.jchains.org)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode obfuscation&lt;br /&gt;
* Convert bytecode to native machine code&lt;br /&gt;
* jarsigner&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6399</id>
		<title>Talk:OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6399"/>
				<updated>2006-06-16T14:29:48Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Error Handling &amp;amp; Logging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==J2EE Security for Architects==&lt;br /&gt;
&lt;br /&gt;
=== Risk Analysis===&lt;br /&gt;
To my mind, Risk Analysis is a general exercise that will apply equaly to all apps irrespective of the language used to implement the app.  So would say that this belongs in the Guide rather than the Java project, unless you have some ideas on how to make this Java specific?  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Mapping Regulatory requirements to technical requirements===&lt;br /&gt;
Same as above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Design considerations===&lt;br /&gt;
This is quite general.  Shall we narrow it down to the architectural issues that should be considered for each of the popular architectures such as:&lt;br /&gt;
* Architectural considerations&lt;br /&gt;
** EJB Middle tier&lt;br /&gt;
** Web Services Middle tier&lt;br /&gt;
** Spring Middle tier&lt;br /&gt;
--[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Frameworks you should be aware of (e.g. struts, stinger, etc.)===&lt;br /&gt;
There are many frameworks out there, so I'd suggest we keep this down to frameworks that specifically offer security functionality such as: &lt;br /&gt;
* Acegi&lt;br /&gt;
* Commons validator&lt;br /&gt;
* jGuard &lt;br /&gt;
* Stinger seems to be parked for a while now, is this correct Jeff?&lt;br /&gt;
** Stinger is &lt;br /&gt;
** CVS HEAD is in a functional state; needs work on docs and new features [[User:Roman|Roman]] 00:15, 13 June 2006 (EDT)&lt;br /&gt;
Most web tier frameworks will prevent XSS attacks, so listing them all in this section is a bit verbose, would prefer to see them listed in the XSS section.  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I think Struts should be covered too given the extensive input validation functionality it supports - Rohyt&lt;br /&gt;
&lt;br /&gt;
==J2EE Security for Developers==&lt;br /&gt;
&lt;br /&gt;
===Java Security Basics=== &lt;br /&gt;
* Class Loading&lt;br /&gt;
* Bytecode verifier&lt;br /&gt;
* The Security Manager and security.policy file&lt;br /&gt;
I suggest we do something short here for web developers, and wait on client side apps for now [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree --[[User:Stephendv|Stephendv]] 09:48, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree - the initial focus should be web app developers. We can then address security issues pertinent to thick-client apps - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Input Validation===&lt;br /&gt;
* Overview&lt;br /&gt;
&lt;br /&gt;
==== SQL Injection====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0? &lt;br /&gt;
** JDO? &lt;br /&gt;
&lt;br /&gt;
====XSS====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing &lt;br /&gt;
** Manual HTML Encoding&lt;br /&gt;
** Preventing XSS in popular Web Frameworks&lt;br /&gt;
*** JSP/JSTL&lt;br /&gt;
*** Struts&lt;br /&gt;
*** Spring MVC&lt;br /&gt;
*** Java Server Faces&lt;br /&gt;
*** WebWork?&lt;br /&gt;
*** Wicket?&lt;br /&gt;
*** Tapestry? &lt;br /&gt;
* &amp;lt;s&amp;gt;Misc I/P Validation Attacks (e.g. HTTP Response Splitting)&amp;lt;/s&amp;gt; - Moved this out to a separate section below.  --[[User:Stephendv|Stephendv]] 08:41, 12 June 2006 (EDT)&lt;br /&gt;
* &amp;lt;s&amp;gt;Using struts&amp;lt;/s&amp;gt; Would recommend we cover a number of frameworks as mentioned above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
* CSRF attack&lt;br /&gt;
&lt;br /&gt;
==== LDAP Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== XPATH Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks ====&lt;br /&gt;
* HTTP Response splitting&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec()&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials&lt;br /&gt;
* Hashing&lt;br /&gt;
* SSL Best Practices&lt;br /&gt;
* CAPTCHA systems (jcaptcha?)&lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
* JAAS Authentication&lt;br /&gt;
* Password length &amp;amp; complexity&lt;br /&gt;
&lt;br /&gt;
===Session Management===&lt;br /&gt;
* Logout&lt;br /&gt;
* Session Timeout&lt;br /&gt;
* Absolute Timeout&lt;br /&gt;
* Session Fixation&lt;br /&gt;
* Terminating sessions&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
 &lt;br /&gt;
===Authorization===&lt;br /&gt;
* In presentation layer&lt;br /&gt;
* In business logic&lt;br /&gt;
* In data layer&lt;br /&gt;
* Declarative v/s Programmatic&lt;br /&gt;
* web.xml configuration&lt;br /&gt;
* [[Forced browsing]]&lt;br /&gt;
* JAAS&lt;br /&gt;
* EJB Authorization&lt;br /&gt;
* Acegi?&lt;br /&gt;
* JACC&lt;br /&gt;
* Check horizontal privilege&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* JCE&lt;br /&gt;
* Storing db secrets&lt;br /&gt;
* Encrypting JDBC connections&lt;br /&gt;
* JSSE&lt;br /&gt;
* Random number generation&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Output Validation&lt;br /&gt;
* Custom Errors&lt;br /&gt;
* Logging - why log? what to log? log4j, etc.&lt;br /&gt;
* Exception handling techniques&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks&lt;br /&gt;
** Servlet spec - web.xml&lt;br /&gt;
** JSP errorPage&lt;br /&gt;
&lt;br /&gt;
Talk about web application forensics and how it differs from conventional forensics&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML&lt;br /&gt;
* WS-Security&lt;br /&gt;
* ...?&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
* FindBugs&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint&lt;br /&gt;
* Jmetrics&lt;br /&gt;
&lt;br /&gt;
== J2EE Security For Deployers ==&lt;br /&gt;
&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* Securing Tomcat&lt;br /&gt;
* Securing JBoss&lt;br /&gt;
* Securing WebLogic&lt;br /&gt;
* Securing WebSphere&lt;br /&gt;
* Securing x...&lt;br /&gt;
Would be nice to include an example secure by default configuration file for each server that has additional comments in it which expands on the security repurcussions of the various sections.&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
* Jeff's tool? --[[User:Stephendv|Stephendv]] 08:37, 12 June 2006 (EDT)&lt;br /&gt;
* jChains (www.jchains.org)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode obfuscation&lt;br /&gt;
* Convert bytecode to native machine code&lt;br /&gt;
* jarsigner&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6398</id>
		<title>Talk:OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6398"/>
				<updated>2006-06-16T14:27:47Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Java Security Basics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==J2EE Security for Architects==&lt;br /&gt;
&lt;br /&gt;
=== Risk Analysis===&lt;br /&gt;
To my mind, Risk Analysis is a general exercise that will apply equaly to all apps irrespective of the language used to implement the app.  So would say that this belongs in the Guide rather than the Java project, unless you have some ideas on how to make this Java specific?  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Mapping Regulatory requirements to technical requirements===&lt;br /&gt;
Same as above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Design considerations===&lt;br /&gt;
This is quite general.  Shall we narrow it down to the architectural issues that should be considered for each of the popular architectures such as:&lt;br /&gt;
* Architectural considerations&lt;br /&gt;
** EJB Middle tier&lt;br /&gt;
** Web Services Middle tier&lt;br /&gt;
** Spring Middle tier&lt;br /&gt;
--[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Frameworks you should be aware of (e.g. struts, stinger, etc.)===&lt;br /&gt;
There are many frameworks out there, so I'd suggest we keep this down to frameworks that specifically offer security functionality such as: &lt;br /&gt;
* Acegi&lt;br /&gt;
* Commons validator&lt;br /&gt;
* jGuard &lt;br /&gt;
* Stinger seems to be parked for a while now, is this correct Jeff?&lt;br /&gt;
** Stinger is &lt;br /&gt;
** CVS HEAD is in a functional state; needs work on docs and new features [[User:Roman|Roman]] 00:15, 13 June 2006 (EDT)&lt;br /&gt;
Most web tier frameworks will prevent XSS attacks, so listing them all in this section is a bit verbose, would prefer to see them listed in the XSS section.  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I think Struts should be covered too given the extensive input validation functionality it supports - Rohyt&lt;br /&gt;
&lt;br /&gt;
==J2EE Security for Developers==&lt;br /&gt;
&lt;br /&gt;
===Java Security Basics=== &lt;br /&gt;
* Class Loading&lt;br /&gt;
* Bytecode verifier&lt;br /&gt;
* The Security Manager and security.policy file&lt;br /&gt;
I suggest we do something short here for web developers, and wait on client side apps for now [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree --[[User:Stephendv|Stephendv]] 09:48, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree - the initial focus should be web app developers. We can then address security issues pertinent to thick-client apps - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Input Validation===&lt;br /&gt;
* Overview&lt;br /&gt;
&lt;br /&gt;
==== SQL Injection====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0? &lt;br /&gt;
** JDO? &lt;br /&gt;
&lt;br /&gt;
====XSS====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing &lt;br /&gt;
** Manual HTML Encoding&lt;br /&gt;
** Preventing XSS in popular Web Frameworks&lt;br /&gt;
*** JSP/JSTL&lt;br /&gt;
*** Struts&lt;br /&gt;
*** Spring MVC&lt;br /&gt;
*** Java Server Faces&lt;br /&gt;
*** WebWork?&lt;br /&gt;
*** Wicket?&lt;br /&gt;
*** Tapestry? &lt;br /&gt;
* &amp;lt;s&amp;gt;Misc I/P Validation Attacks (e.g. HTTP Response Splitting)&amp;lt;/s&amp;gt; - Moved this out to a separate section below.  --[[User:Stephendv|Stephendv]] 08:41, 12 June 2006 (EDT)&lt;br /&gt;
* &amp;lt;s&amp;gt;Using struts&amp;lt;/s&amp;gt; Would recommend we cover a number of frameworks as mentioned above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
* CSRF attack&lt;br /&gt;
&lt;br /&gt;
==== LDAP Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== XPATH Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks ====&lt;br /&gt;
* HTTP Response splitting&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec()&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials&lt;br /&gt;
* Hashing&lt;br /&gt;
* SSL Best Practices&lt;br /&gt;
* CAPTCHA systems (jcaptcha?)&lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
* JAAS Authentication&lt;br /&gt;
* Password length &amp;amp; complexity&lt;br /&gt;
&lt;br /&gt;
===Session Management===&lt;br /&gt;
* Logout&lt;br /&gt;
* Session Timeout&lt;br /&gt;
* Absolute Timeout&lt;br /&gt;
* Session Fixation&lt;br /&gt;
* Terminating sessions&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
 &lt;br /&gt;
===Authorization===&lt;br /&gt;
* In presentation layer&lt;br /&gt;
* In business logic&lt;br /&gt;
* In data layer&lt;br /&gt;
* Declarative v/s Programmatic&lt;br /&gt;
* web.xml configuration&lt;br /&gt;
* [[Forced browsing]]&lt;br /&gt;
* JAAS&lt;br /&gt;
* EJB Authorization&lt;br /&gt;
* Acegi?&lt;br /&gt;
* JACC&lt;br /&gt;
* Check horizontal privilege&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* JCE&lt;br /&gt;
* Storing db secrets&lt;br /&gt;
* Encrypting JDBC connections&lt;br /&gt;
* JSSE&lt;br /&gt;
* Random number generation&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Output Validation&lt;br /&gt;
* Custom Errors&lt;br /&gt;
* Logging - why log? what to log? log4j, etc.&lt;br /&gt;
* Exception handling techniques&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks&lt;br /&gt;
** Servlet spec - web.xml&lt;br /&gt;
** JSP errorPage&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML&lt;br /&gt;
* WS-Security&lt;br /&gt;
* ...?&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
* FindBugs&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint&lt;br /&gt;
* Jmetrics&lt;br /&gt;
&lt;br /&gt;
== J2EE Security For Deployers ==&lt;br /&gt;
&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* Securing Tomcat&lt;br /&gt;
* Securing JBoss&lt;br /&gt;
* Securing WebLogic&lt;br /&gt;
* Securing WebSphere&lt;br /&gt;
* Securing x...&lt;br /&gt;
Would be nice to include an example secure by default configuration file for each server that has additional comments in it which expands on the security repurcussions of the various sections.&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
* Jeff's tool? --[[User:Stephendv|Stephendv]] 08:37, 12 June 2006 (EDT)&lt;br /&gt;
* jChains (www.jchains.org)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode obfuscation&lt;br /&gt;
* Convert bytecode to native machine code&lt;br /&gt;
* jarsigner&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6397</id>
		<title>Talk:OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6397"/>
				<updated>2006-06-16T14:26:55Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Frameworks you should be aware of (e.g. struts, stinger, etc.) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==J2EE Security for Architects==&lt;br /&gt;
&lt;br /&gt;
=== Risk Analysis===&lt;br /&gt;
To my mind, Risk Analysis is a general exercise that will apply equaly to all apps irrespective of the language used to implement the app.  So would say that this belongs in the Guide rather than the Java project, unless you have some ideas on how to make this Java specific?  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Mapping Regulatory requirements to technical requirements===&lt;br /&gt;
Same as above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Design considerations===&lt;br /&gt;
This is quite general.  Shall we narrow it down to the architectural issues that should be considered for each of the popular architectures such as:&lt;br /&gt;
* Architectural considerations&lt;br /&gt;
** EJB Middle tier&lt;br /&gt;
** Web Services Middle tier&lt;br /&gt;
** Spring Middle tier&lt;br /&gt;
--[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Frameworks you should be aware of (e.g. struts, stinger, etc.)===&lt;br /&gt;
There are many frameworks out there, so I'd suggest we keep this down to frameworks that specifically offer security functionality such as: &lt;br /&gt;
* Acegi&lt;br /&gt;
* Commons validator&lt;br /&gt;
* jGuard &lt;br /&gt;
* Stinger seems to be parked for a while now, is this correct Jeff?&lt;br /&gt;
** Stinger is &lt;br /&gt;
** CVS HEAD is in a functional state; needs work on docs and new features [[User:Roman|Roman]] 00:15, 13 June 2006 (EDT)&lt;br /&gt;
Most web tier frameworks will prevent XSS attacks, so listing them all in this section is a bit verbose, would prefer to see them listed in the XSS section.  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I think Struts should be covered too given the extensive input validation functionality it supports - Rohyt&lt;br /&gt;
&lt;br /&gt;
==J2EE Security for Developers==&lt;br /&gt;
&lt;br /&gt;
===Java Security Basics=== &lt;br /&gt;
* Class Loading&lt;br /&gt;
* Bytecode verifier&lt;br /&gt;
* The Security Manager and security.policy file&lt;br /&gt;
I suggest we do something short here for web developers, and wait on client side apps for now [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree --[[User:Stephendv|Stephendv]] 09:48, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Input Validation===&lt;br /&gt;
* Overview&lt;br /&gt;
&lt;br /&gt;
==== SQL Injection====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0? &lt;br /&gt;
** JDO? &lt;br /&gt;
&lt;br /&gt;
====XSS====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing &lt;br /&gt;
** Manual HTML Encoding&lt;br /&gt;
** Preventing XSS in popular Web Frameworks&lt;br /&gt;
*** JSP/JSTL&lt;br /&gt;
*** Struts&lt;br /&gt;
*** Spring MVC&lt;br /&gt;
*** Java Server Faces&lt;br /&gt;
*** WebWork?&lt;br /&gt;
*** Wicket?&lt;br /&gt;
*** Tapestry? &lt;br /&gt;
* &amp;lt;s&amp;gt;Misc I/P Validation Attacks (e.g. HTTP Response Splitting)&amp;lt;/s&amp;gt; - Moved this out to a separate section below.  --[[User:Stephendv|Stephendv]] 08:41, 12 June 2006 (EDT)&lt;br /&gt;
* &amp;lt;s&amp;gt;Using struts&amp;lt;/s&amp;gt; Would recommend we cover a number of frameworks as mentioned above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
* CSRF attack&lt;br /&gt;
&lt;br /&gt;
==== LDAP Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== XPATH Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks ====&lt;br /&gt;
* HTTP Response splitting&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec()&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials&lt;br /&gt;
* Hashing&lt;br /&gt;
* SSL Best Practices&lt;br /&gt;
* CAPTCHA systems (jcaptcha?)&lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
* JAAS Authentication&lt;br /&gt;
* Password length &amp;amp; complexity&lt;br /&gt;
&lt;br /&gt;
===Session Management===&lt;br /&gt;
* Logout&lt;br /&gt;
* Session Timeout&lt;br /&gt;
* Absolute Timeout&lt;br /&gt;
* Session Fixation&lt;br /&gt;
* Terminating sessions&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
 &lt;br /&gt;
===Authorization===&lt;br /&gt;
* In presentation layer&lt;br /&gt;
* In business logic&lt;br /&gt;
* In data layer&lt;br /&gt;
* Declarative v/s Programmatic&lt;br /&gt;
* web.xml configuration&lt;br /&gt;
* [[Forced browsing]]&lt;br /&gt;
* JAAS&lt;br /&gt;
* EJB Authorization&lt;br /&gt;
* Acegi?&lt;br /&gt;
* JACC&lt;br /&gt;
* Check horizontal privilege&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* JCE&lt;br /&gt;
* Storing db secrets&lt;br /&gt;
* Encrypting JDBC connections&lt;br /&gt;
* JSSE&lt;br /&gt;
* Random number generation&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Output Validation&lt;br /&gt;
* Custom Errors&lt;br /&gt;
* Logging - why log? what to log? log4j, etc.&lt;br /&gt;
* Exception handling techniques&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks&lt;br /&gt;
** Servlet spec - web.xml&lt;br /&gt;
** JSP errorPage&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML&lt;br /&gt;
* WS-Security&lt;br /&gt;
* ...?&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
* FindBugs&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint&lt;br /&gt;
* Jmetrics&lt;br /&gt;
&lt;br /&gt;
== J2EE Security For Deployers ==&lt;br /&gt;
&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* Securing Tomcat&lt;br /&gt;
* Securing JBoss&lt;br /&gt;
* Securing WebLogic&lt;br /&gt;
* Securing WebSphere&lt;br /&gt;
* Securing x...&lt;br /&gt;
Would be nice to include an example secure by default configuration file for each server that has additional comments in it which expands on the security repurcussions of the various sections.&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
* Jeff's tool? --[[User:Stephendv|Stephendv]] 08:37, 12 June 2006 (EDT)&lt;br /&gt;
* jChains (www.jchains.org)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode obfuscation&lt;br /&gt;
* Convert bytecode to native machine code&lt;br /&gt;
* jarsigner&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6396</id>
		<title>Talk:OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6396"/>
				<updated>2006-06-16T14:25:57Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Mapping Regulatory requirements to technical requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==J2EE Security for Architects==&lt;br /&gt;
&lt;br /&gt;
=== Risk Analysis===&lt;br /&gt;
To my mind, Risk Analysis is a general exercise that will apply equaly to all apps irrespective of the language used to implement the app.  So would say that this belongs in the Guide rather than the Java project, unless you have some ideas on how to make this Java specific?  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Mapping Regulatory requirements to technical requirements===&lt;br /&gt;
Same as above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Design considerations===&lt;br /&gt;
This is quite general.  Shall we narrow it down to the architectural issues that should be considered for each of the popular architectures such as:&lt;br /&gt;
* Architectural considerations&lt;br /&gt;
** EJB Middle tier&lt;br /&gt;
** Web Services Middle tier&lt;br /&gt;
** Spring Middle tier&lt;br /&gt;
--[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Frameworks you should be aware of (e.g. struts, stinger, etc.)===&lt;br /&gt;
There are many frameworks out there, so I'd suggest we keep this down to frameworks that specifically offer security functionality such as: &lt;br /&gt;
* Acegi&lt;br /&gt;
* Commons validator&lt;br /&gt;
* jGuard &lt;br /&gt;
* Stinger seems to be parked for a while now, is this correct Jeff?&lt;br /&gt;
** Stinger is &lt;br /&gt;
** CVS HEAD is in a functional state; needs work on docs and new features [[User:Roman|Roman]] 00:15, 13 June 2006 (EDT)&lt;br /&gt;
Most web tier frameworks will prevent XSS attacks, so listing them all in this section is a bit verbose, would prefer to see them listed in the XSS section.  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
==J2EE Security for Developers==&lt;br /&gt;
&lt;br /&gt;
===Java Security Basics=== &lt;br /&gt;
* Class Loading&lt;br /&gt;
* Bytecode verifier&lt;br /&gt;
* The Security Manager and security.policy file&lt;br /&gt;
I suggest we do something short here for web developers, and wait on client side apps for now [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree --[[User:Stephendv|Stephendv]] 09:48, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Input Validation===&lt;br /&gt;
* Overview&lt;br /&gt;
&lt;br /&gt;
==== SQL Injection====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0? &lt;br /&gt;
** JDO? &lt;br /&gt;
&lt;br /&gt;
====XSS====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing &lt;br /&gt;
** Manual HTML Encoding&lt;br /&gt;
** Preventing XSS in popular Web Frameworks&lt;br /&gt;
*** JSP/JSTL&lt;br /&gt;
*** Struts&lt;br /&gt;
*** Spring MVC&lt;br /&gt;
*** Java Server Faces&lt;br /&gt;
*** WebWork?&lt;br /&gt;
*** Wicket?&lt;br /&gt;
*** Tapestry? &lt;br /&gt;
* &amp;lt;s&amp;gt;Misc I/P Validation Attacks (e.g. HTTP Response Splitting)&amp;lt;/s&amp;gt; - Moved this out to a separate section below.  --[[User:Stephendv|Stephendv]] 08:41, 12 June 2006 (EDT)&lt;br /&gt;
* &amp;lt;s&amp;gt;Using struts&amp;lt;/s&amp;gt; Would recommend we cover a number of frameworks as mentioned above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
* CSRF attack&lt;br /&gt;
&lt;br /&gt;
==== LDAP Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== XPATH Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks ====&lt;br /&gt;
* HTTP Response splitting&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec()&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials&lt;br /&gt;
* Hashing&lt;br /&gt;
* SSL Best Practices&lt;br /&gt;
* CAPTCHA systems (jcaptcha?)&lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
* JAAS Authentication&lt;br /&gt;
* Password length &amp;amp; complexity&lt;br /&gt;
&lt;br /&gt;
===Session Management===&lt;br /&gt;
* Logout&lt;br /&gt;
* Session Timeout&lt;br /&gt;
* Absolute Timeout&lt;br /&gt;
* Session Fixation&lt;br /&gt;
* Terminating sessions&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
 &lt;br /&gt;
===Authorization===&lt;br /&gt;
* In presentation layer&lt;br /&gt;
* In business logic&lt;br /&gt;
* In data layer&lt;br /&gt;
* Declarative v/s Programmatic&lt;br /&gt;
* web.xml configuration&lt;br /&gt;
* [[Forced browsing]]&lt;br /&gt;
* JAAS&lt;br /&gt;
* EJB Authorization&lt;br /&gt;
* Acegi?&lt;br /&gt;
* JACC&lt;br /&gt;
* Check horizontal privilege&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* JCE&lt;br /&gt;
* Storing db secrets&lt;br /&gt;
* Encrypting JDBC connections&lt;br /&gt;
* JSSE&lt;br /&gt;
* Random number generation&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Output Validation&lt;br /&gt;
* Custom Errors&lt;br /&gt;
* Logging - why log? what to log? log4j, etc.&lt;br /&gt;
* Exception handling techniques&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks&lt;br /&gt;
** Servlet spec - web.xml&lt;br /&gt;
** JSP errorPage&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML&lt;br /&gt;
* WS-Security&lt;br /&gt;
* ...?&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
* FindBugs&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint&lt;br /&gt;
* Jmetrics&lt;br /&gt;
&lt;br /&gt;
== J2EE Security For Deployers ==&lt;br /&gt;
&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* Securing Tomcat&lt;br /&gt;
* Securing JBoss&lt;br /&gt;
* Securing WebLogic&lt;br /&gt;
* Securing WebSphere&lt;br /&gt;
* Securing x...&lt;br /&gt;
Would be nice to include an example secure by default configuration file for each server that has additional comments in it which expands on the security repurcussions of the various sections.&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
* Jeff's tool? --[[User:Stephendv|Stephendv]] 08:37, 12 June 2006 (EDT)&lt;br /&gt;
* jChains (www.jchains.org)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode obfuscation&lt;br /&gt;
* Convert bytecode to native machine code&lt;br /&gt;
* jarsigner&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6395</id>
		<title>Talk:OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6395"/>
				<updated>2006-06-16T14:25:39Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Risk Analysis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==J2EE Security for Architects==&lt;br /&gt;
&lt;br /&gt;
=== Risk Analysis===&lt;br /&gt;
To my mind, Risk Analysis is a general exercise that will apply equaly to all apps irrespective of the language used to implement the app.  So would say that this belongs in the Guide rather than the Java project, unless you have some ideas on how to make this Java specific?  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Mapping Regulatory requirements to technical requirements===&lt;br /&gt;
Same as above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Design considerations===&lt;br /&gt;
This is quite general.  Shall we narrow it down to the architectural issues that should be considered for each of the popular architectures such as:&lt;br /&gt;
* Architectural considerations&lt;br /&gt;
** EJB Middle tier&lt;br /&gt;
** Web Services Middle tier&lt;br /&gt;
** Spring Middle tier&lt;br /&gt;
--[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Frameworks you should be aware of (e.g. struts, stinger, etc.)===&lt;br /&gt;
There are many frameworks out there, so I'd suggest we keep this down to frameworks that specifically offer security functionality such as: &lt;br /&gt;
* Acegi&lt;br /&gt;
* Commons validator&lt;br /&gt;
* jGuard &lt;br /&gt;
* Stinger seems to be parked for a while now, is this correct Jeff?&lt;br /&gt;
** Stinger is &lt;br /&gt;
** CVS HEAD is in a functional state; needs work on docs and new features [[User:Roman|Roman]] 00:15, 13 June 2006 (EDT)&lt;br /&gt;
Most web tier frameworks will prevent XSS attacks, so listing them all in this section is a bit verbose, would prefer to see them listed in the XSS section.  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
==J2EE Security for Developers==&lt;br /&gt;
&lt;br /&gt;
===Java Security Basics=== &lt;br /&gt;
* Class Loading&lt;br /&gt;
* Bytecode verifier&lt;br /&gt;
* The Security Manager and security.policy file&lt;br /&gt;
I suggest we do something short here for web developers, and wait on client side apps for now [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree --[[User:Stephendv|Stephendv]] 09:48, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Input Validation===&lt;br /&gt;
* Overview&lt;br /&gt;
&lt;br /&gt;
==== SQL Injection====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0? &lt;br /&gt;
** JDO? &lt;br /&gt;
&lt;br /&gt;
====XSS====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing &lt;br /&gt;
** Manual HTML Encoding&lt;br /&gt;
** Preventing XSS in popular Web Frameworks&lt;br /&gt;
*** JSP/JSTL&lt;br /&gt;
*** Struts&lt;br /&gt;
*** Spring MVC&lt;br /&gt;
*** Java Server Faces&lt;br /&gt;
*** WebWork?&lt;br /&gt;
*** Wicket?&lt;br /&gt;
*** Tapestry? &lt;br /&gt;
* &amp;lt;s&amp;gt;Misc I/P Validation Attacks (e.g. HTTP Response Splitting)&amp;lt;/s&amp;gt; - Moved this out to a separate section below.  --[[User:Stephendv|Stephendv]] 08:41, 12 June 2006 (EDT)&lt;br /&gt;
* &amp;lt;s&amp;gt;Using struts&amp;lt;/s&amp;gt; Would recommend we cover a number of frameworks as mentioned above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
* CSRF attack&lt;br /&gt;
&lt;br /&gt;
==== LDAP Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== XPATH Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks ====&lt;br /&gt;
* HTTP Response splitting&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec()&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials&lt;br /&gt;
* Hashing&lt;br /&gt;
* SSL Best Practices&lt;br /&gt;
* CAPTCHA systems (jcaptcha?)&lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
* JAAS Authentication&lt;br /&gt;
* Password length &amp;amp; complexity&lt;br /&gt;
&lt;br /&gt;
===Session Management===&lt;br /&gt;
* Logout&lt;br /&gt;
* Session Timeout&lt;br /&gt;
* Absolute Timeout&lt;br /&gt;
* Session Fixation&lt;br /&gt;
* Terminating sessions&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
 &lt;br /&gt;
===Authorization===&lt;br /&gt;
* In presentation layer&lt;br /&gt;
* In business logic&lt;br /&gt;
* In data layer&lt;br /&gt;
* Declarative v/s Programmatic&lt;br /&gt;
* web.xml configuration&lt;br /&gt;
* [[Forced browsing]]&lt;br /&gt;
* JAAS&lt;br /&gt;
* EJB Authorization&lt;br /&gt;
* Acegi?&lt;br /&gt;
* JACC&lt;br /&gt;
* Check horizontal privilege&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* JCE&lt;br /&gt;
* Storing db secrets&lt;br /&gt;
* Encrypting JDBC connections&lt;br /&gt;
* JSSE&lt;br /&gt;
* Random number generation&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Output Validation&lt;br /&gt;
* Custom Errors&lt;br /&gt;
* Logging - why log? what to log? log4j, etc.&lt;br /&gt;
* Exception handling techniques&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks&lt;br /&gt;
** Servlet spec - web.xml&lt;br /&gt;
** JSP errorPage&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML&lt;br /&gt;
* WS-Security&lt;br /&gt;
* ...?&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
* FindBugs&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint&lt;br /&gt;
* Jmetrics&lt;br /&gt;
&lt;br /&gt;
== J2EE Security For Deployers ==&lt;br /&gt;
&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* Securing Tomcat&lt;br /&gt;
* Securing JBoss&lt;br /&gt;
* Securing WebLogic&lt;br /&gt;
* Securing WebSphere&lt;br /&gt;
* Securing x...&lt;br /&gt;
Would be nice to include an example secure by default configuration file for each server that has additional comments in it which expands on the security repurcussions of the various sections.&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
* Jeff's tool? --[[User:Stephendv|Stephendv]] 08:37, 12 June 2006 (EDT)&lt;br /&gt;
* jChains (www.jchains.org)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode obfuscation&lt;br /&gt;
* Convert bytecode to native machine code&lt;br /&gt;
* jarsigner&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6394</id>
		<title>Talk:OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Java_Project_Roadmap&amp;diff=6394"/>
				<updated>2006-06-16T14:24:55Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Risk Analysis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==J2EE Security for Architects==&lt;br /&gt;
&lt;br /&gt;
=== Risk Analysis===&lt;br /&gt;
To my mind, Risk Analysis is a general exercise that will apply equaly to all apps irrespective of the language used to implement the app.  So would say that this belongs in the Guide rather than the Java project, unless you have some ideas on how to make this Java specific?  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
Agreed - Rohyt&lt;br /&gt;
&lt;br /&gt;
===Mapping Regulatory requirements to technical requirements===&lt;br /&gt;
Same as above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
 I agree -- suggest deleting this section [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Design considerations===&lt;br /&gt;
This is quite general.  Shall we narrow it down to the architectural issues that should be considered for each of the popular architectures such as:&lt;br /&gt;
* Architectural considerations&lt;br /&gt;
** EJB Middle tier&lt;br /&gt;
** Web Services Middle tier&lt;br /&gt;
** Spring Middle tier&lt;br /&gt;
--[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Frameworks you should be aware of (e.g. struts, stinger, etc.)===&lt;br /&gt;
There are many frameworks out there, so I'd suggest we keep this down to frameworks that specifically offer security functionality such as: &lt;br /&gt;
* Acegi&lt;br /&gt;
* Commons validator&lt;br /&gt;
* jGuard &lt;br /&gt;
* Stinger seems to be parked for a while now, is this correct Jeff?&lt;br /&gt;
** Stinger is &lt;br /&gt;
** CVS HEAD is in a functional state; needs work on docs and new features [[User:Roman|Roman]] 00:15, 13 June 2006 (EDT)&lt;br /&gt;
Most web tier frameworks will prevent XSS attacks, so listing them all in this section is a bit verbose, would prefer to see them listed in the XSS section.  --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
==J2EE Security for Developers==&lt;br /&gt;
&lt;br /&gt;
===Java Security Basics=== &lt;br /&gt;
* Class Loading&lt;br /&gt;
* Bytecode verifier&lt;br /&gt;
* The Security Manager and security.policy file&lt;br /&gt;
I suggest we do something short here for web developers, and wait on client side apps for now [[User:Jeff Williams|Jeff Williams]] 09:04, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
I agree --[[User:Stephendv|Stephendv]] 09:48, 12 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Input Validation===&lt;br /&gt;
* Overview&lt;br /&gt;
&lt;br /&gt;
==== SQL Injection====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing&lt;br /&gt;
** Prepared Statements&lt;br /&gt;
** Stored Procedures &lt;br /&gt;
** Hibernate &lt;br /&gt;
** Ibatis &lt;br /&gt;
** Spring JDBC &lt;br /&gt;
** EJB 3.0? &lt;br /&gt;
** JDO? &lt;br /&gt;
&lt;br /&gt;
====XSS====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
** White Listing &lt;br /&gt;
** Manual HTML Encoding&lt;br /&gt;
** Preventing XSS in popular Web Frameworks&lt;br /&gt;
*** JSP/JSTL&lt;br /&gt;
*** Struts&lt;br /&gt;
*** Spring MVC&lt;br /&gt;
*** Java Server Faces&lt;br /&gt;
*** WebWork?&lt;br /&gt;
*** Wicket?&lt;br /&gt;
*** Tapestry? &lt;br /&gt;
* &amp;lt;s&amp;gt;Misc I/P Validation Attacks (e.g. HTTP Response Splitting)&amp;lt;/s&amp;gt; - Moved this out to a separate section below.  --[[User:Stephendv|Stephendv]] 08:41, 12 June 2006 (EDT)&lt;br /&gt;
* &amp;lt;s&amp;gt;Using struts&amp;lt;/s&amp;gt; Would recommend we cover a number of frameworks as mentioned above. --[[User:Stephendv|Stephendv]] 08:04, 12 June 2006 (EDT)&lt;br /&gt;
* CSRF attack&lt;br /&gt;
&lt;br /&gt;
==== LDAP Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== XPATH Injection ====&lt;br /&gt;
* Overview&lt;br /&gt;
* Prevention&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Injection Attacks ====&lt;br /&gt;
* HTTP Response splitting&lt;br /&gt;
* Command injection - Runtime.getRuntime().exec()&lt;br /&gt;
&lt;br /&gt;
=== Authentication===&lt;br /&gt;
* Storing credentials&lt;br /&gt;
* Hashing&lt;br /&gt;
* SSL Best Practices&lt;br /&gt;
* CAPTCHA systems (jcaptcha?)&lt;br /&gt;
* Container-managed authentication with Realms&lt;br /&gt;
* JAAS Authentication&lt;br /&gt;
* Password length &amp;amp; complexity&lt;br /&gt;
&lt;br /&gt;
===Session Management===&lt;br /&gt;
* Logout&lt;br /&gt;
* Session Timeout&lt;br /&gt;
* Absolute Timeout&lt;br /&gt;
* Session Fixation&lt;br /&gt;
* Terminating sessions&lt;br /&gt;
** Terminating sessions when the browser window is closed&lt;br /&gt;
 &lt;br /&gt;
===Authorization===&lt;br /&gt;
* In presentation layer&lt;br /&gt;
* In business logic&lt;br /&gt;
* In data layer&lt;br /&gt;
* Declarative v/s Programmatic&lt;br /&gt;
* web.xml configuration&lt;br /&gt;
* [[Forced browsing]]&lt;br /&gt;
* JAAS&lt;br /&gt;
* EJB Authorization&lt;br /&gt;
* Acegi?&lt;br /&gt;
* JACC&lt;br /&gt;
* Check horizontal privilege&lt;br /&gt;
&lt;br /&gt;
=== Encryption===&lt;br /&gt;
* JCE&lt;br /&gt;
* Storing db secrets&lt;br /&gt;
* Encrypting JDBC connections&lt;br /&gt;
* JSSE&lt;br /&gt;
* Random number generation&lt;br /&gt;
&lt;br /&gt;
=== Error Handling &amp;amp; Logging===&lt;br /&gt;
* Output Validation&lt;br /&gt;
* Custom Errors&lt;br /&gt;
* Logging - why log? what to log? log4j, etc.&lt;br /&gt;
* Exception handling techniques&lt;br /&gt;
** fail-open/fail-closed&lt;br /&gt;
** resource cleanup&lt;br /&gt;
** finally block&lt;br /&gt;
** swallowing exceptions&lt;br /&gt;
* Exception handling frameworks&lt;br /&gt;
** Servlet spec - web.xml&lt;br /&gt;
** JSP errorPage&lt;br /&gt;
&lt;br /&gt;
=== Web Services Security ===&lt;br /&gt;
* SAML&lt;br /&gt;
* WS-Security&lt;br /&gt;
* ...?&lt;br /&gt;
&lt;br /&gt;
=== Code Analysis Tools ===&lt;br /&gt;
* FindBugs&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* PMD&lt;br /&gt;
** Creating custom rules&lt;br /&gt;
* JLint&lt;br /&gt;
* Jmetrics&lt;br /&gt;
&lt;br /&gt;
== J2EE Security For Deployers ==&lt;br /&gt;
&lt;br /&gt;
=== Securing Popular J2EE Servers ===&lt;br /&gt;
* Securing Tomcat&lt;br /&gt;
* Securing JBoss&lt;br /&gt;
* Securing WebLogic&lt;br /&gt;
* Securing WebSphere&lt;br /&gt;
* Securing x...&lt;br /&gt;
Would be nice to include an example secure by default configuration file for each server that has additional comments in it which expands on the security repurcussions of the various sections.&lt;br /&gt;
&lt;br /&gt;
=== Defining a Java Security Policy ===&lt;br /&gt;
* Jeff's tool? --[[User:Stephendv|Stephendv]] 08:37, 12 June 2006 (EDT)&lt;br /&gt;
* jChains (www.jchains.org)&lt;br /&gt;
&lt;br /&gt;
=== Protecting Binaries ===&lt;br /&gt;
* Bytecode obfuscation&lt;br /&gt;
* Convert bytecode to native machine code&lt;br /&gt;
* jarsigner&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_Project_Roadmap&amp;diff=5907</id>
		<title>OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_Project_Roadmap&amp;diff=5907"/>
				<updated>2006-06-10T14:34:23Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Goals==&lt;br /&gt;
The OWASP Java Project's overall goal is to...&lt;br /&gt;
&lt;br /&gt;
Produce materials that show J2EE architects, developers, and    deployers how to deal with most common application security problems throughout the lifecycle.&lt;br /&gt;
&lt;br /&gt;
In the near term, we are focused on the following tactical goals:&lt;br /&gt;
&lt;br /&gt;
# Provide examples of how to prevent Cross Site Scripting attacks in popular web frameworks&lt;br /&gt;
# Provide examples of how to prevent SQL Injection in popular data access frameworks&lt;br /&gt;
# Provide examples of how to prevent LDAP injection in Java&lt;br /&gt;
# A practical guide to implementing a security policy for a Java web application&lt;br /&gt;
# Secure configuration guides for popular application servers&lt;br /&gt;
&lt;br /&gt;
==Current Tasks==&lt;br /&gt;
* Decide on the near term tactical goals&lt;br /&gt;
* Define this roadmap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
Please submit your ideas for the OWASP Java Project here (you can sign your ideas by adding four tilde characters like this &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;)&lt;br /&gt;
* It would be useful to have a library of J2EE security resources on the web.  In addition to URLs, I think these should have short summaries that explain what the resource is about.  I've clicked on far too many &amp;quot;J2EE Security&amp;quot; links only to find that the article is about implementing access control in Tomcat.&lt;br /&gt;
* A tool that automatically generates a security policy for a given application could be useful.  The tool is first run in learning mode where it maps all the accesses that the application attempts and then generates a policy based on those access attempts.&lt;br /&gt;
** Note: I built such a tool back in the mid-1990's. It's a custom security manager that intercepts all accesses and has a &amp;quot;learn&amp;quot; mode. If someone is willing to take on the project, I'd be happy to dig it up. [[User:Jeff Williams|Jeff Williams]] 16:18, 8 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_Project_Roadmap&amp;diff=5906</id>
		<title>OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_Project_Roadmap&amp;diff=5906"/>
				<updated>2006-06-10T14:33:14Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Goals==&lt;br /&gt;
The OWASP Java Project's overall goal is to...&lt;br /&gt;
&lt;br /&gt;
 Produce materials that show J2EE architects, developers, and deployers how to deal with most common application security problems throughout the lifecycle.&lt;br /&gt;
&lt;br /&gt;
In the near term, we are focused on the following tactical goals:&lt;br /&gt;
&lt;br /&gt;
# Provide examples of how to prevent Cross Site Scripting attacks in popular web frameworks&lt;br /&gt;
# Provide examples of how to prevent SQL Injection in popular data access frameworks&lt;br /&gt;
# Provide examples of how to prevent LDAP injection in Java&lt;br /&gt;
# A practical guide to implementing a security policy for a Java web application&lt;br /&gt;
# Secure configuration guides for popular application servers&lt;br /&gt;
&lt;br /&gt;
==Current Tasks==&lt;br /&gt;
* Decide on the near term tactical goals&lt;br /&gt;
* Define this roadmap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
Please submit your ideas for the OWASP Java Project here (you can sign your ideas by adding four tilde characters like this &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;)&lt;br /&gt;
* It would be useful to have a library of J2EE security resources on the web.  In addition to URLs, I think these should have short summaries that explain what the resource is about.  I've clicked on far too many &amp;quot;J2EE Security&amp;quot; links only to find that the article is about implementing access control in Tomcat.&lt;br /&gt;
* A tool that automatically generates a security policy for a given application could be useful.  The tool is first run in learning mode where it maps all the accesses that the application attempts and then generates a policy based on those access attempts.&lt;br /&gt;
** Note: I built such a tool back in the mid-1990's. It's a custom security manager that intercepts all accesses and has a &amp;quot;learn&amp;quot; mode. If someone is willing to take on the project, I'd be happy to dig it up. [[User:Jeff Williams|Jeff Williams]] 16:18, 8 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_Project_Roadmap&amp;diff=5905</id>
		<title>OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_Project_Roadmap&amp;diff=5905"/>
				<updated>2006-06-10T14:32:37Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Goals==&lt;br /&gt;
The OWASP Java Project's overall goal is to...&lt;br /&gt;
&lt;br /&gt;
 Produce materials that show J2EE architects, developers, &lt;br /&gt;
and deployers how to deal with most common application security problems throughout the lifecycle.&lt;br /&gt;
&lt;br /&gt;
In the near term, we are focused on the following tactical goals:&lt;br /&gt;
&lt;br /&gt;
# Provide examples of how to prevent Cross Site Scripting attacks in popular web frameworks&lt;br /&gt;
# Provide examples of how to prevent SQL Injection in popular data access frameworks&lt;br /&gt;
# Provide examples of how to prevent LDAP injection in Java&lt;br /&gt;
# A practical guide to implementing a security policy for a Java web application&lt;br /&gt;
# Secure configuration guides for popular application servers&lt;br /&gt;
&lt;br /&gt;
==Current Tasks==&lt;br /&gt;
* Decide on the near term tactical goals&lt;br /&gt;
* Define this roadmap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
Please submit your ideas for the OWASP Java Project here (you can sign your ideas by adding four tilde characters like this &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;)&lt;br /&gt;
* It would be useful to have a library of J2EE security resources on the web.  In addition to URLs, I think these should have short summaries that explain what the resource is about.  I've clicked on far too many &amp;quot;J2EE Security&amp;quot; links only to find that the article is about implementing access control in Tomcat.&lt;br /&gt;
* A tool that automatically generates a security policy for a given application could be useful.  The tool is first run in learning mode where it maps all the accesses that the application attempts and then generates a policy based on those access attempts.&lt;br /&gt;
** Note: I built such a tool back in the mid-1990's. It's a custom security manager that intercepts all accesses and has a &amp;quot;learn&amp;quot; mode. If someone is willing to take on the project, I'd be happy to dig it up. [[User:Jeff Williams|Jeff Williams]] 16:18, 8 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_Project_Roadmap&amp;diff=5904</id>
		<title>OWASP Java Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_Project_Roadmap&amp;diff=5904"/>
				<updated>2006-06-10T14:32:09Z</updated>
		
		<summary type="html">&lt;p&gt;Rohyt: /* Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Goals==&lt;br /&gt;
The OWASP Java Project's overall goal is to...&lt;br /&gt;
&lt;br /&gt;
 Produce materials that show J2EE architects, developers, and deployers how to deal with most common application security problems throughout the lifecycle.&lt;br /&gt;
&lt;br /&gt;
In the near term, we are focused on the following tactical goals:&lt;br /&gt;
&lt;br /&gt;
# Provide examples of how to prevent Cross Site Scripting attacks in popular web frameworks&lt;br /&gt;
# Provide examples of how to prevent SQL Injection in popular data access frameworks&lt;br /&gt;
# Provide examples of how to prevent LDAP injection in Java&lt;br /&gt;
# A practical guide to implementing a security policy for a Java web application&lt;br /&gt;
# Secure configuration guides for popular application servers&lt;br /&gt;
&lt;br /&gt;
==Current Tasks==&lt;br /&gt;
* Decide on the near term tactical goals&lt;br /&gt;
* Define this roadmap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
Please submit your ideas for the OWASP Java Project here (you can sign your ideas by adding four tilde characters like this &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;)&lt;br /&gt;
* It would be useful to have a library of J2EE security resources on the web.  In addition to URLs, I think these should have short summaries that explain what the resource is about.  I've clicked on far too many &amp;quot;J2EE Security&amp;quot; links only to find that the article is about implementing access control in Tomcat.&lt;br /&gt;
* A tool that automatically generates a security policy for a given application could be useful.  The tool is first run in learning mode where it maps all the accesses that the application attempts and then generates a policy based on those access attempts.&lt;br /&gt;
** Note: I built such a tool back in the mid-1990's. It's a custom security manager that intercepts all accesses and has a &amp;quot;learn&amp;quot; mode. If someone is willing to take on the project, I'd be happy to dig it up. [[User:Jeff Williams|Jeff Williams]] 16:18, 8 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Java Project]]&lt;/div&gt;</summary>
		<author><name>Rohyt</name></author>	</entry>

	</feed>