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

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Deserialization_Cheat_Sheet&amp;diff=244185</id>
		<title>Deserialization Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Deserialization_Cheat_Sheet&amp;diff=244185"/>
				<updated>2018-10-12T06:00:05Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: Fixed variable name in text to match code example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
= Introduction  = &lt;br /&gt;
&lt;br /&gt;
This article is focused on providing clear, actionable guidance for safely deserializing untrusted data in your applications.&lt;br /&gt;
&lt;br /&gt;
=What is Deserialization?=&lt;br /&gt;
&lt;br /&gt;
Serialization is the process of turning some object into a data format that can be restored later. People often serialize objects in order to save them to storage, or to send as part of communications. Deserialization is the reverse of that process -- taking data structured from some format, and rebuilding it into an object. Today, the most popular data format for serializing data is JSON. Before that, it was XML.&lt;br /&gt;
&lt;br /&gt;
However, many programming languages offer a native capability for serializing objects. These native formats usually offer more features than JSON or XML, including customizability of the serialization process. Unfortunately, the features of these native deserialization mechanisms can be repurposed for malicious effect when operating on untrusted data. Attacks against deserializers have been found to allow denial-of-service, access control, and remote code execution attacks.&lt;br /&gt;
&lt;br /&gt;
=Guidance on Deserializing Objects Safely=&lt;br /&gt;
The following language-specific guidance attempts to enumerate safe methodologies for deserializing data that can't be trusted. &lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
===WhiteBox Review===&lt;br /&gt;
Check the use of 'unserialize()' and review how the external parameters are accepted.&lt;br /&gt;
Use a safe, standard data interchange format such as JSON (via json_decode() and json_encode()) if you need to pass serialized data to the user.&lt;br /&gt;
Please also refer to to http://php.net/manual/en/function.unserialize.php&lt;br /&gt;
&lt;br /&gt;
==Python==&lt;br /&gt;
===BlackBox Review===&lt;br /&gt;
If the traffic data contains the symbol dot  .  at the end, it's very likely that the data was sent in serialization.&lt;br /&gt;
&lt;br /&gt;
===WhiteBox Review===&lt;br /&gt;
The following API in Python will be vulnerable to serialization attack. Search code for the pattern below.&lt;br /&gt;
&lt;br /&gt;
1. The uses of pickle/c_pickle/_pickle with load/loads&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  import pickle&lt;br /&gt;
  data = &amp;quot;&amp;quot;&amp;quot; cos.system(S'dir')tR. &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  pickle.loads(data) &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Uses of PyYAML with load&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   import yaml&lt;br /&gt;
   document = &amp;quot;!!python/object/apply:os.system ['ipconfig']&amp;quot;&lt;br /&gt;
   print(yaml.load(document))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Uses of jsonpickle with encode or store methods&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
The following techniques are all good for preventing attacks against deserialization against [http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html Java's Serializable format].&lt;br /&gt;
&lt;br /&gt;
Implementation: In your code, override the ObjectInputStream#resolveClass() method to prevent arbitrary classes from being deserialized. This safe behavior can be wrapped in a library like SerialKiller.&lt;br /&gt;
Implementation: Use a safe replacement for the generic readObject() method as seen here. Note that this addresses &amp;quot;billion laughs&amp;quot; type attacks by checking input length and number of objects deserialized.&lt;br /&gt;
&lt;br /&gt;
===WhiteBox Review ===&lt;br /&gt;
Be aware of the following Java API uses for potential serilization vulnerability.&lt;br /&gt;
  1. 'XMLdecoder' with external user defined parameters&lt;br /&gt;
  2. XStream with fromXML method. (xstream version &amp;lt;= v1.46 is vulnerable to the serialization issue.)&lt;br /&gt;
  3. 'ObjectInputSteam' with 'readObject'&lt;br /&gt;
  4. Uses of 'readObject' 'readObjectNodData' 'readResolve' 'readExternal'&lt;br /&gt;
  5. 'ObjectInputStream.readUnshared'&lt;br /&gt;
  6. 'Serializable'&lt;br /&gt;
&lt;br /&gt;
=== BlackBox Review ===&lt;br /&gt;
If the captured traffic data include the following patterns may suggest that the data was sent in Java serialization streams&lt;br /&gt;
* &amp;quot;AC ED 00 05&amp;quot; in Hex&lt;br /&gt;
* &amp;quot;''rO0&amp;quot;  in Base64''&lt;br /&gt;
* Content-type = '&amp;lt;nowiki/&amp;gt;''application/x-java-serialized-object'''&lt;br /&gt;
&lt;br /&gt;
===Prevent Data Leakage and Trusted Field Clobbering===&lt;br /&gt;
If there are data members of an object that should never be controlled by end users during deserialization or exposed to users during serialization, they should be declared as [https://docs.oracle.com/javase/7/docs/platform/serialization/spec/serial-arch.html#6250 the &amp;lt;code&amp;gt;transient&amp;lt;/code&amp;gt; keyword].&lt;br /&gt;
&lt;br /&gt;
For a class that defined as Serializable, the sensitive information variable should be declared as 'private transient'.&lt;br /&gt;
For example, the class myAccount, the variable 'profit' and 'margin' were declared as transient to avoid to be serialized.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class myAccount implements Serializable&lt;br /&gt;
{&lt;br /&gt;
    private transient double profit; // declared transient&lt;br /&gt;
    &lt;br /&gt;
    private transient double margin; // declared transient&lt;br /&gt;
    ....&lt;br /&gt;
    ....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prevent Deserialization of Domain Objects===&lt;br /&gt;
Some of your application objects may be forced to implement Serializable due to their hierarchy. To guarantee that your application objects can't be deserialized, a &amp;lt;code&amp;gt;readObject()&amp;lt;/code&amp;gt; should be declared (with a &amp;lt;code&amp;gt;final&amp;lt;/code&amp;gt; modifier) which always throws an exception.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;private final void readObject(ObjectInputStream in) throws java.io.IOException {&lt;br /&gt;
   throw new java.io.IOException(&amp;quot;Cannot be deserialized&amp;quot;);&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Harden Your Own java.io.ObjectInputStream===&lt;br /&gt;
The &amp;lt;code&amp;gt;java.io.ObjectInputStream&amp;lt;/code&amp;gt; class is used to deserialize objects. It's possible to harden its behavior by subclassing it. This is the best solution if:&lt;br /&gt;
&lt;br /&gt;
* You can change the code that does the deserialization&lt;br /&gt;
* You know what classes you expect to deserialize&lt;br /&gt;
&lt;br /&gt;
The general idea is to override [http://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html#resolveClass(java.io.ObjectStreamClass) &amp;lt;code&amp;gt;ObjectInputStream.html#resolveClass()&amp;lt;/code&amp;gt;] in order to restrict which classes are allowed to be deserialized. Because this call happens before a &amp;lt;code&amp;gt;readObject()&amp;lt;/code&amp;gt; is called, you can be sure that no deserialization activity will occur unless the type is one that you wish to allow.  A simple example of this shown here, where the the LookAheadObjectInputStream class is guaranteed not to deserialize any other type besides the Bicycle class:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;public class LookAheadObjectInputStream extends ObjectInputStream {&lt;br /&gt;
&lt;br /&gt;
    public LookAheadObjectInputStream(InputStream inputStream) throws IOException {&lt;br /&gt;
        super(inputStream);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Only deserialize instances of our expected Bicycle class&lt;br /&gt;
     */&lt;br /&gt;
    @Override&lt;br /&gt;
    protected Class&amp;lt;?&amp;gt; resolveClass(ObjectStreamClass desc) throws IOException,&lt;br /&gt;
            ClassNotFoundException {&lt;br /&gt;
        if (!desc.getName().equals(Bicycle.class.getName())) {&lt;br /&gt;
            throw new InvalidClassException(&lt;br /&gt;
                    &amp;quot;Unauthorized deserialization attempt&amp;quot;,&lt;br /&gt;
                    desc.getName());&lt;br /&gt;
        }&lt;br /&gt;
        return super.resolveClass(desc);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More complete implementations of this approach have been proposed by various community members:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/ikkisoft/SerialKiller NibbleSec] - a library that allows whitelisting and blacklisting of classes that are allowed to be deserialized&lt;br /&gt;
* [https://www.ibm.com/developerworks/library/se-lookahead/ IBM] - the seminal protection, written years before the most devastating exploitation scenarios were envisioned.&lt;br /&gt;
&lt;br /&gt;
===Harden All java.io.ObjectInputStream Usage with an Agent===&lt;br /&gt;
As mentioned above, the &amp;lt;code&amp;gt;java.io.ObjectInputStream&amp;lt;/code&amp;gt; class is used to deserialize objects. It's possible to harden its behavior by subclassing it. However, if you don't own the code or can't wait for a patch, using an agent to weave in hardening to &amp;lt;code&amp;gt;java.io.ObjectInputStream&amp;lt;/code&amp;gt; is the best solution.&lt;br /&gt;
&lt;br /&gt;
Globally changing ObjectInputStream is only safe for blacklisting known malicious types, because it's not possible to know for all applications what the expected classes to be deserialized are. Fortunately, there are very few classes needed in the blacklist to be safe from all the known attack vectors, today. It's inevitable that more &amp;quot;gadget&amp;quot; classes will be discovered that can be abused. However, there is an incredible amount of vulnerable software&lt;br /&gt;
exposed today, in need of a fix. In some cases, &amp;quot;fixing&amp;quot; the vulnerability may involve re-architecting messaging systems and breaking backwards compatibility as developers move towards not accepting serialized objects.&lt;br /&gt;
&lt;br /&gt;
To enable these agents, simply add a new JVM parameter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-javaagent:name-of-agent.jar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Agents taking this approach have been released by various community members:&lt;br /&gt;
* [https://github.com/gocd/invoker-defender Invoker Defender by Go-CD]&lt;br /&gt;
* [https://github.com/Contrast-Security-OSS/contrast-rO0 rO0 by Contrast Security]&lt;br /&gt;
&lt;br /&gt;
A similar, but less scalable approach would be to manually patch and bootstrap your JVM's ObjectInputStream. Guidance on this approach is available [https://github.com/wsargent/paranoid-java-serialization here].&lt;br /&gt;
&lt;br /&gt;
==.Net C#==&lt;br /&gt;
&lt;br /&gt;
=== WhiteBox Review ===&lt;br /&gt;
Search the source code for the following terms&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# TypeNameHandling&lt;br /&gt;
# JavaScriptTypeResolver&lt;br /&gt;
&lt;br /&gt;
Look for any serializers where the type is set by a user controlled variable.&lt;br /&gt;
&lt;br /&gt;
=== BlackBox Review ===&lt;br /&gt;
Search for the following base64 encoded content that starts with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;AAEAAAD/////&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Search for content with the following text:&lt;br /&gt;
# &amp;quot;TypeObject&amp;quot;&lt;br /&gt;
# &amp;quot;$type&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
=== General Precautions ===&lt;br /&gt;
&lt;br /&gt;
Don't allow the datastream to define the type of object that the stream will be deserialized to. You can prevent this by for example using the '''DataContractSerializer''' or '''XmlSerializer''' if at all possible.&lt;br /&gt;
&lt;br /&gt;
Where '''JSON.Net''' is being used make sure the '''TypeNameHandling''' is only set to '''None'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;TypeNameHandling = TypeNameHandling.None&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If '''JavaScriptSerializer''' is to be used do not use it with a '''JavaScriptTypeResolver'''	&lt;br /&gt;
&lt;br /&gt;
If you must deserialise data streams that define their own type, then restrict the types that are allowed to be deserialized. One should be aware that this is still risky as many native .Net types potentially dangerous in themselves. e.g.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;System.IO.FileInfo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileInfo objects that reference files actually on the server can when deserialized, change the properties of those files e.g. to read-only, creating a potential denial of service attack.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even if you have limited the types that can be deserialised remember that some types have properties that are risky. '''System.ComponentModel.DataAnnotations.ValidationException''', for example has a property '''Value''' of type '''Object'''. if this type is the type allowed for deserialization then an attacker can set the '''Value''' property to any object type they choose.&lt;br /&gt;
&lt;br /&gt;
Attackers should be prevented from steering the type that will be instantiated. If this is possible then even '''DataContractSerializer''' or '''XmlSerializer''' can be subverted e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var typename = GetTransactionTypeFromDatabase();  // &amp;lt;-- this is dangerous if the attacker can change the data in the database&lt;br /&gt;
&lt;br /&gt;
var serializer = new DataContractJsonSerializer(Type.GetType(typename)); &lt;br /&gt;
&lt;br /&gt;
var obj = serializer.ReadObject(ms);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Execution can occur within certain .Net types during deserialization. Creating a control such as the one shown below is ineffective.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var suspectObject = myBinaryFormatter.Deserialize(untrustedData);&lt;br /&gt;
&lt;br /&gt;
if (suspectObject is SomeDangerousObjectType) //Too late! Execution may have already occurred.&lt;br /&gt;
{&lt;br /&gt;
    //generate warnings and dispose of suspectObject&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For '''BinaryFormatter''' and '''JSON.Net''' it is possible to create a safer form of white list control useing a custom '''SerializationBinder'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Try to keep up-to-date on known .Net insecure deserialization gadgets and pay special attention where such types can be created by your deserialization processes. A deserializer can only only instantiate types that it knows about. Try to keep any code that might create potential gagdets separate from any code that Vas internet connectivity. As an example '''System.Windows.Data.ObjectDataProvider''' used in WPF applications is a known gadget that allows arbitrary method invocation. It would be risky to have this a reference to this assembly in a REST service project that deserializes untrusted data.&lt;br /&gt;
&lt;br /&gt;
=== Known .NET RCE Gadgets ===&lt;br /&gt;
System.Configuration.Install.AssemblyInstaller&lt;br /&gt;
* System.Activities.Presentation.WorkflowDesigner&lt;br /&gt;
* System.Windows.ResourceDictionary&lt;br /&gt;
* System.Windows.Data.ObjectDataProvider&lt;br /&gt;
* System.Windows.Forms.BindingSource&lt;br /&gt;
* Microsoft.Exchange.Management.SystemManager.WinForms.ExchangeSettingsProvider&lt;br /&gt;
* System.Data.DataViewManager, System.Xml.XmlDocument/XmlDataDocument&lt;br /&gt;
* System.Management.Automation.PSObject&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Language-Agnostic Methods for Deserializing Safely =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using Alternative Data Formats==&lt;br /&gt;
A great reduction of risk is achieved by avoiding native (de)serialization formats. By switching to a pure data format like JSON or XML, you lessen the chance of custom deserialization logic being repurposed towards malicious ends.&lt;br /&gt;
&lt;br /&gt;
Many applications rely on a [https://en.wikipedia.org/wiki/Data_transfer_object data-transfer object pattern] that involves creating a separate domain of objects for the explicit purpose data transfer. Of course, it's still possible that the application will make security mistakes after a pure data object is parsed.&lt;br /&gt;
&lt;br /&gt;
==Only Deserialize Signed Data==&lt;br /&gt;
If the application knows before deserialization which messages will need to be processed, they could sign them as part of the serialization process. The application could then to choose not to deserialize any message which didn't have an authenticated signature.&lt;br /&gt;
&lt;br /&gt;
= Mitigation Tools/Libraries =&lt;br /&gt;
* Java secure deserialization library https://github.com/ikkisoft/SerialKiller&lt;br /&gt;
&lt;br /&gt;
* SWAT (Serial Whitelist Application Trainer) https://github.com/cschneider4711/SWAT&lt;br /&gt;
* NotSoSerial https://github.com/kantega/notsoserial&lt;br /&gt;
&lt;br /&gt;
= Detection Tools =&lt;br /&gt;
* [https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet Java deserialization cheat sheet aimed at pen testers]&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/frohoff/ysoserial A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization.]&lt;br /&gt;
* Java De-serialization toolkits https://github.com/brianwrf/hackUtils&lt;br /&gt;
* Java de-serialization tool https://github.com/frohoff/ysoserial&lt;br /&gt;
* .Net payload generator https://github.com/pwntester/ysoserial.net&lt;br /&gt;
* Java de-serialization detection by DNS  https://github.com/GoSeecure/break-fast-serial&lt;br /&gt;
* Burp Suite extension https://github.com/federicodotta/Java-Deserialization-Scanner/releases&lt;br /&gt;
* Java secure deserialization library https://github.com/ikkisoft/SerialKiller&lt;br /&gt;
* Serianalyzer is a static bytecode analyzer for deserialization https://github.com/mbechler/serianalyzer&lt;br /&gt;
* Payload generator https://github.com/mbechler/marshalsec&lt;br /&gt;
* Android Java Deserialization Vulnerability Tester https://github.com/modzero/modjoda&lt;br /&gt;
* Burp Suite Extension &lt;br /&gt;
** JavaSerialKiller https://github.com/NetSPI/JavaSerialKiller&lt;br /&gt;
** Java Deserialization Scanner https://github.com/federicodotta/Java-Deserialization-Scanner&lt;br /&gt;
** Burp-ysoserial https://github.com/summitt/burp-ysoserial&lt;br /&gt;
** SuperSerial https://github.com/DirectDefense/SuperSerial&lt;br /&gt;
** SuperSerial-Active https://github.com/DirectDefense/SuperSerial-Active&lt;br /&gt;
&lt;br /&gt;
= References = &lt;br /&gt;
* https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet&lt;br /&gt;
* [[Deserialization of untrusted data]]&lt;br /&gt;
* [[Media:GOD16-Deserialization.pdf|Java Deserialization Attacks - German OWASP Day 2016]]&lt;br /&gt;
* [http://www.slideshare.net/frohoff1/appseccali-2015-marshalling-pickles AppSecCali 2015 - Marshalling Pickles]&lt;br /&gt;
* [http://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/#websphere FoxGlove Security - Vulnerability Announcement]&lt;br /&gt;
* [https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet Java deserialization cheat sheet aimed at pen testers]&lt;br /&gt;
* [https://github.com/frohoff/ysoserial A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization.]&lt;br /&gt;
* Java De-serialization toolkits https://github.com/brianwrf/hackUtils&lt;br /&gt;
* Java de-serialization tool https://github.com/frohoff/ysoserial&lt;br /&gt;
* Java de-serialization detection by DNS  https://github.com/GoSeecure/break-fast-serial&lt;br /&gt;
* Burp Suite extension https://github.com/federicodotta/Java-Deserialization-Scanner/releases&lt;br /&gt;
* Java secure deserialization library https://github.com/ikkisoft/SerialKiller&lt;br /&gt;
* Serianalyzer is a static bytecode analyzer for deserialization https://github.com/mbechler/serianalyzer&lt;br /&gt;
* Payload generator https://github.com/mbechler/marshalsec&lt;br /&gt;
* Android Java Deserialization Vulnerability Tester https://github.com/modzero/modjoda&lt;br /&gt;
* Burp Suite Extension &lt;br /&gt;
** JavaSerialKiller https://github.com/NetSPI/JavaSerialKiller&lt;br /&gt;
** Java Deserialization Scanner https://github.com/federicodotta/Java-Deserialization-Scanner&lt;br /&gt;
** Burp-ysoserial https://github.com/summitt/burp-ysoserial&lt;br /&gt;
** SuperSerial https://github.com/DirectDefense/SuperSerial&lt;br /&gt;
** SuperSerial-Active https://github.com/DirectDefense/SuperSerial-Active&lt;br /&gt;
* .Net&lt;br /&gt;
** Alvaro Muñoz: .NET Serialization: Detecting and defending vulnerable endpoints https://www.youtube.com/watch?v=qDoBlLwREYk&lt;br /&gt;
** James Forshaw - Black Hat USA 2012 - Are You My Type? Breaking .net Sandboxes Through Serialization https://www.youtube.com/watch?v=Xfbu-pQ1tIc&lt;br /&gt;
** Jonathan Birch BlueHat v17 || Dangerous Contents - Securing .Net Deserialization https://www.youtube.com/watch?v=oxlD8VWWHE8&lt;br /&gt;
** Alvaro Muñoz &amp;amp; Oleksandr Mirosh - Friday the 13th: Attacking JSON - AppSecUSA 2017 Https://www.youtube.com/watch?v=NqHsaVhlxAQ&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
Arshan Dabirsiaghi - arshan [at] contrastsecurity dot org&amp;lt;br /&amp;gt;&lt;br /&gt;
Tony Hsu (Hsiang-Chih)&lt;br /&gt;
Shane Murnion&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
[[Category:Cheatsheets]] [[Category:OWASP .NET Project]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRLF_Injection&amp;diff=238606</id>
		<title>CRLF Injection</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRLF_Injection&amp;diff=238606"/>
				<updated>2018-03-14T16:50:54Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: /* Related Attacks */ Added Log Injection&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Vulnerability}}&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
[[ASDR_TOC_Vulnerabilities|Vulnerabilities Table of Contents]]&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
The term CRLF refers to '''C'''arriage '''R'''eturn (ASCII 13, \r) '''L'''ine '''F'''eed (ASCII 10, \n). They're used to note the termination of a line, however, dealt with differently in today’s popular Operating Systems. For example: in Windows both a CR and LF are required to note the end of a line, whereas in Linux/UNIX a LF is only required. In the HTTP protocol, the CR-LF sequence is always used to terminate a line.&lt;br /&gt;
&lt;br /&gt;
A CRLF Injection attack occurs when a user manages to submit a CRLF into an application. This is most commonly done by modifying an HTTP parameter or URL.&lt;br /&gt;
&lt;br /&gt;
==Risk Factors==&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Depending on how the application is developed, this can be a minor problem or a fairly serious security flaw. Let's look at the latter because this is after all a security related post. &lt;br /&gt;
&lt;br /&gt;
Let's assume a file is used at some point to read/write data to  a log of some sort. If an attacker managed to place a CRLF then can then inject some sort of read programmatic method to the file. This could result in the contents being written to screen on the next attempt to use this file.&lt;br /&gt;
&lt;br /&gt;
Another example is the &amp;quot;response splitting&amp;quot; attacks, where CRLFs are injected into an application and included in the response.  The extra CRLFs are interpreted by proxies, caches, and maybe browsers as the end of a packet, causing mayhem.&lt;br /&gt;
&lt;br /&gt;
==Related [[Attacks]]==&lt;br /&gt;
&lt;br /&gt;
* [[HTTP Response Splitting]]&lt;br /&gt;
* [[Log Injection]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related [[Vulnerabilities]]==&lt;br /&gt;
&lt;br /&gt;
* [[Vulnerability 1]]&lt;br /&gt;
* [[Vulnerabiltiy 2]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related [[Controls]]==&lt;br /&gt;
&lt;br /&gt;
* [[Control 1]]&lt;br /&gt;
* [[Control 2]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related [[Technical Impacts]]==&lt;br /&gt;
&lt;br /&gt;
* [[Technical Impact 1]]&lt;br /&gt;
* [[Technical Impact 2]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
[[Category:FIXME|add links&lt;br /&gt;
In addition, one should classify vulnerability based on the following subcategories: Ex:&amp;lt;nowiki&amp;gt;[[Category:Error Handling Vulnerability]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Availability Vulnerability&lt;br /&gt;
Authorization Vulnerability&lt;br /&gt;
Authentication Vulnerability&lt;br /&gt;
Concurrency Vulnerability&lt;br /&gt;
Configuration Vulnerability&lt;br /&gt;
Cryptographic Vulnerability&lt;br /&gt;
Encoding Vulnerability&lt;br /&gt;
Error Handling Vulnerability&lt;br /&gt;
Input Validation Vulnerability&lt;br /&gt;
Logging and Auditing Vulnerability&lt;br /&gt;
Session Management Vulnerability]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
[[Category:Vulnerability]]&lt;br /&gt;
[[Category:Implementation]]&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_File_I_O_Security_Project&amp;diff=209140</id>
		<title>OWASP Java File I O Security Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_File_I_O_Security_Project&amp;diff=209140"/>
				<updated>2016-02-17T23:08:34Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: /* Quick Download */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{taggedDocument}}&lt;br /&gt;
=Main=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- DO NOT ALTER OR REMOVE THE TEXT ON NEXT LINE --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:100px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[Image:OWASP Inactive Banner.jpg|800px| link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Inactive_Projects]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==OWASP Java File I/O Security Project==&lt;br /&gt;
&lt;br /&gt;
The OWASP Java File I/O Security Project provides an easy to use library for validating and sanitizing filenames, directory paths, and uploaded files. This project encapsulates the file handling portions of the ESAPI project and makes them available in an easy to use library that has no dependencies. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
OWASP Java File I/O Security Project is licensed under the Apache 2.0 License. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== What is the OWASP Java File I/O Security Project? ==&lt;br /&gt;
&lt;br /&gt;
OWASP Java File I/O Security Project  provides:&lt;br /&gt;
&lt;br /&gt;
* File name validation&lt;br /&gt;
* Directory path validation&lt;br /&gt;
* File validation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Code Repo ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/augustd/owasp-java-fileio Java File I/O at GitHub]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&lt;br /&gt;
August Detlefsen [mailto:augustd@codemagi.com @]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
[[ESAPI|OWASP Enterprise Security API]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Email List ==&lt;br /&gt;
&lt;br /&gt;
[https://lists.owasp.org/mailman/listinfo/owasp_java_file_i_o_security_project Project Mailing List]&lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
* [20 Nov 2013] News 2&lt;br /&gt;
* [30 Sep 2013] News 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Print ==&lt;br /&gt;
This project can be purchased as a print on demand book from Lulu.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:New projects.png|100px|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects]]&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-builders-small.png|link=]]  &lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| &lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Cc-button-y-sa-small.png|link=http://creativecommons.org/licenses/by-sa/3.0/]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_CODE.jpg|link=]]&lt;br /&gt;
   |}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=FAQs=&lt;br /&gt;
&lt;br /&gt;
; Q1&lt;br /&gt;
: A1&lt;br /&gt;
&lt;br /&gt;
; Q2&lt;br /&gt;
: A2&lt;br /&gt;
&lt;br /&gt;
= Acknowledgements =&lt;br /&gt;
==Volunteers==&lt;br /&gt;
XXX is developed by a worldwide team of volunteers. The primary contributors to date have been:&lt;br /&gt;
&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
==Others==&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
= Road Map and Getting Involved =&lt;br /&gt;
As of [https://www.owasp.org/index.php/Projects/OWASP_Java_File_I_O_Security_Project/Roadmap April 2014], the priorities are:&lt;br /&gt;
&lt;br /&gt;
* Initial version out in one month.&lt;br /&gt;
* Documentation within 4 months.&lt;br /&gt;
* Introduction at JavaOne in September.&lt;br /&gt;
&lt;br /&gt;
Involvement in the development and promotion of the OWASP Java File I O Security Project is actively encouraged!&lt;br /&gt;
You do not have to be a security expert in order to contribute.&lt;br /&gt;
Some of the ways you can help:&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_File_I_O_Security_Project&amp;diff=209128</id>
		<title>OWASP Java File I O Security Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_File_I_O_Security_Project&amp;diff=209128"/>
				<updated>2016-02-17T22:32:36Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: /* Code Repo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{taggedDocument}}&lt;br /&gt;
=Main=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- DO NOT ALTER OR REMOVE THE TEXT ON NEXT LINE --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:100px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[Image:OWASP Inactive Banner.jpg|800px| link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Inactive_Projects]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==OWASP Java File I/O Security Project==&lt;br /&gt;
&lt;br /&gt;
The OWASP Java File I/O Security Project provides an easy to use library for validating and sanitizing filenames, directory paths, and uploaded files. This project encapsulates the file handling portions of the ESAPI project and makes them available in an easy to use library that has no dependencies. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
OWASP Java File I/O Security Project is licensed under the Apache 2.0 License. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== What is the OWASP Java File I/O Security Project? ==&lt;br /&gt;
&lt;br /&gt;
OWASP Java File I/O Security Project  provides:&lt;br /&gt;
&lt;br /&gt;
* File name validation&lt;br /&gt;
* Directory path validation&lt;br /&gt;
* File validation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Code Repo ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/augustd/owasp-java-fileio Java File I/O at GitHub]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&lt;br /&gt;
August Detlefsen [mailto:augustd@codemagi.com @]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
[[ESAPI|OWASP Enterprise Security API]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Quick Download ==&lt;br /&gt;
&lt;br /&gt;
* Link to page/download&lt;br /&gt;
&lt;br /&gt;
== Email List ==&lt;br /&gt;
&lt;br /&gt;
[https://lists.owasp.org/mailman/listinfo/owasp_java_file_i_o_security_project Project Mailing List]&lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
* [20 Nov 2013] News 2&lt;br /&gt;
* [30 Sep 2013] News 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Print ==&lt;br /&gt;
This project can be purchased as a print on demand book from Lulu.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:New projects.png|100px|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects]]&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-builders-small.png|link=]]  &lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| &lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Cc-button-y-sa-small.png|link=http://creativecommons.org/licenses/by-sa/3.0/]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_CODE.jpg|link=]]&lt;br /&gt;
   |}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=FAQs=&lt;br /&gt;
&lt;br /&gt;
; Q1&lt;br /&gt;
: A1&lt;br /&gt;
&lt;br /&gt;
; Q2&lt;br /&gt;
: A2&lt;br /&gt;
&lt;br /&gt;
= Acknowledgements =&lt;br /&gt;
==Volunteers==&lt;br /&gt;
XXX is developed by a worldwide team of volunteers. The primary contributors to date have been:&lt;br /&gt;
&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
==Others==&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
= Road Map and Getting Involved =&lt;br /&gt;
As of [https://www.owasp.org/index.php/Projects/OWASP_Java_File_I_O_Security_Project/Roadmap April 2014], the priorities are:&lt;br /&gt;
&lt;br /&gt;
* Initial version out in one month.&lt;br /&gt;
* Documentation within 4 months.&lt;br /&gt;
* Introduction at JavaOne in September.&lt;br /&gt;
&lt;br /&gt;
Involvement in the development and promotion of the OWASP Java File I O Security Project is actively encouraged!&lt;br /&gt;
You do not have to be a security expert in order to contribute.&lt;br /&gt;
Some of the ways you can help:&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:WebGoat_Installation&amp;diff=207242</id>
		<title>Talk:WebGoat Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:WebGoat_Installation&amp;diff=207242"/>
				<updated>2016-01-21T18:46:43Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: Created page with &amp;quot;All of this documentation is out of date. This page should probably be removed or forwarded to https://github.com/WebGoat/WebGoat-Legacy/wiki/Installation-(WebGoat-6.0)&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;All of this documentation is out of date. This page should probably be removed or forwarded to https://github.com/WebGoat/WebGoat-Legacy/wiki/Installation-(WebGoat-6.0)&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Logging_Project&amp;diff=193468</id>
		<title>OWASP Security Logging Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Logging_Project&amp;diff=193468"/>
				<updated>2015-04-15T23:10:10Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: /* News and Events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Main=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==OWASP Security Logging Project==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The OWASP Security Logging project provides developers and ops personnel with APIs for logging security-related events. The aim is to let developers use the same set of logging APIs they are already familiar with from over a decade of experience with Log4J and its successors, while also adding powerful security features.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Logging is often neglected by developers when thinking of security considerations. However, proper logging practice can provide the crucial forensics needed to investigate after a breach, and perhaps more importantly, a change to detect security issues as they happen. Most developers are already familiar with using logging for debugging and diagnostic purposes, so it should be easy for them to grasp the concept of security logging as well. The OWASP Security Logging project aims to give developers an easy way to get started with logging security events, tracking extra forensic information like the who (username), what (event type), and where (IP address, server name) needed for forensics. It also provides a means for classifying the information in log messages and applying masking if necessary.  &lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
This library is free software: you can redistribute it and/or modify it under the terms of the Apache License, Version 2.0. You can copy, distribute and transmit the work, and you can adapt it, and use it commercially, but all provided that you attribute the work and if you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
[https://github.com/javabeanz/owasp-security-logging Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/javabeanz/owasp-security-logging/wiki Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/javabeanz/owasp-security-logging/issues Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Leaders ==&lt;br /&gt;
[mailto:sytze.vonkoningsveld@owasp.org Sytze van Koningsveld]&lt;br /&gt;
&lt;br /&gt;
[mailto:august.detlefsen@owasp.org August Detlefsen] &lt;br /&gt;
&lt;br /&gt;
[mailto:milton.smith@owasp.org Milton Smith]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Logging_Cheat_Sheet|Logging Cheat Sheet]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_CODE.jpg|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-builders-small.png|link=Builders]]  &lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|Affero General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
5 Mar 2015 Version 1.0.0 deployed to Maven Central&lt;br /&gt;
&lt;br /&gt;
23 Dec 2014 Project Created and source code now available!&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=FAQs=&lt;br /&gt;
&lt;br /&gt;
The following provides answers to frequently asked questions.&lt;br /&gt;
&lt;br /&gt;
==How can I participate in your project?==&lt;br /&gt;
All you have to do is make the Project Leader's aware of your available time to contribute to the project. It is also important to let the Leader's know how you would like to contribute and pitch in to help the project meet it's goals and milestones. There are many different ways you can contribute to an OWASP Project, but communication with the leads is key. &lt;br /&gt;
&lt;br /&gt;
==If I am not a programmer can I participate in your project?==&lt;br /&gt;
Yes, you can certainly participate in the project if you are not a programmer or technical. The project needs different skills and expertise and different times during its development. Currently, we are looking for researchers, writers, graphic designers, and a project administrator.&lt;br /&gt;
&lt;br /&gt;
= Acknowledgements =&lt;br /&gt;
==Volunteers==&lt;br /&gt;
&lt;br /&gt;
Only project leads for the moment.  Email projects leads if you would like to participate.&lt;br /&gt;
&lt;br /&gt;
=Roadmap &amp;amp; Getting Involved=&lt;br /&gt;
&lt;br /&gt;
Today many logging technologies are available providing powerful application logging capabilities.  But while powerful, these technologies are not designed for specific use-cases like security and auditing.  The generalized approach to logging platforms makes these platforms more useful to the widest possible audience but it also places more responsibility on designers.  In short, we don't consider our desire for additional improvement for security and audit logs is no oversight on the part of logging platform designers.&lt;br /&gt;
&lt;br /&gt;
It's the OWASP Security Logging Project desire to leverage existing technologies and apply them to improve security, audit, in addition to diagnostic logging.  We understand logging is mostly an afterthought on many project schedules, if it's included at all.   We believe a logging solution embracing this project will help the community produce better logs, a better understanding of our information systems, and higher quality software.&lt;br /&gt;
&lt;br /&gt;
==Getting involved==&lt;br /&gt;
Are you passionate about logging?  Are you motivated share your time and knowledge with the community?  Send the project leads an email, listed on project home page, and explain your ideas and how you can help.  Don't be discouraged if we don't immediately respond.  We occasionally get distracted with life but rest assured we will respond.&lt;br /&gt;
&lt;br /&gt;
==What is the OWASP Security Logging Project?==&lt;br /&gt;
OWASP Security Logging Project purpose is to deliver a suitable logging solution for general-purpose security, audit, and diagnostics log messaging.  Beyond code and technology, the project provides architectural and implementation considerations you may find useful in your own projects, or technologies you may not have previously considered.&lt;br /&gt;
&lt;br /&gt;
==Project goals==&lt;br /&gt;
* Develop a set of logging requirements for key domains like security, auditing, and diagnostics&lt;br /&gt;
* Develop interface specifications that support the projects requirements&lt;br /&gt;
* Develop a base implementation supporting project interface specifications&lt;br /&gt;
* Develop documentation artifacts (described later)&lt;br /&gt;
&lt;br /&gt;
==Considerations and restraints==&lt;br /&gt;
* Ease of use&lt;br /&gt;
* Compelling value on initial deployment (without any refactoring).  Increased value for refactoring&lt;br /&gt;
* Compatibility with existing industry standard logging technologies (e.g., log4*, logback, FluentD, etc) &lt;br /&gt;
* Typical scenarios considered, 1) stand-alone applications on mobile or desktop, 2) enterprise applications, and 3) cloud-based applications.&lt;br /&gt;
&lt;br /&gt;
==Anticipated support==&lt;br /&gt;
* Java 1.7 and Java 1.8&lt;br /&gt;
* .NET (tbd)&lt;br /&gt;
''We have considered other platforms for the future but everything depends upon community interest and support.''&lt;br /&gt;
&lt;br /&gt;
==Proposed features==&lt;br /&gt;
Following is a list of numbered features.  &lt;br /&gt;
&lt;br /&gt;
:1. MDC metadata improvements&lt;br /&gt;
:: a. process id (TBD)&lt;br /&gt;
:: b. application id and application instance id&lt;br /&gt;
:: c. server time\date in UTC &lt;br /&gt;
:: d. client time\date in UTC &lt;br /&gt;
:: e. client IP address &lt;br /&gt;
:: f. username or ID &lt;br /&gt;
:: g. global client session ID&lt;br /&gt;
:: h. security policy identifier&lt;br /&gt;
:: i. transaction id&lt;br /&gt;
:2. Log system properties on startup&lt;br /&gt;
:3. Log command line options on startup&lt;br /&gt;
:4. Log application server properties on startup&lt;br /&gt;
:5. Log HTTP request parameters &lt;br /&gt;
:6. Log HTTP session attributes&lt;br /&gt;
:7. Internationalization considerations&lt;br /&gt;
:8. Redirect system streams like system.out and system.err security logging framework&lt;br /&gt;
:9. Asynchronous message logging, store and forward&lt;br /&gt;
:10. Message correlation&lt;br /&gt;
:11. Performance options for transport compression&lt;br /&gt;
:12. Authenticated client logging&lt;br /&gt;
:13. Secure log message transport&lt;br /&gt;
:14. Signed log messages&lt;br /&gt;
:15. Guaranteed log message delivery&lt;br /&gt;
&lt;br /&gt;
==Delivery phases==&lt;br /&gt;
'''Alpha 1''', some features code complete.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha 2''', more features code complete.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Beta''', release code complete.  Public encouraged to test and respond with comments.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Early Availability(EA)''', includes improvements to beta based upon public and team recommendations.&amp;lt;br/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==Use-case applicability &amp;amp; delivery schedule==&lt;br /&gt;
The following table shows a proposed applicability of each feature to the projects areas of concern, diagnostics, security, and audit logging along with a suggested delivery phase.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;color:#555555; background-color:#ffffcc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
!&amp;amp;nbsp;&lt;br /&gt;
!Diagnostics&lt;br /&gt;
!Security&lt;br /&gt;
!Audit&lt;br /&gt;
!Delivery&lt;br /&gt;
|-&lt;br /&gt;
|Feature 1a, process id&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 1&lt;br /&gt;
|-&lt;br /&gt;
|Feature 1b, application id and application instance id&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 1&lt;br /&gt;
|-&lt;br /&gt;
|Feature 1c, server time\date in UTC&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 1&lt;br /&gt;
|-&lt;br /&gt;
|Feature 1d, client time\date in UTL&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 1&lt;br /&gt;
|-&lt;br /&gt;
|Feature 1e, client IP address&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 1&lt;br /&gt;
|-&lt;br /&gt;
|Feature 1f, username or ID&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 1&lt;br /&gt;
|-&lt;br /&gt;
|Feature 1g, global client session ID&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 1&lt;br /&gt;
|-&lt;br /&gt;
|Feature 1h, security policy identifier&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|'''M'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 1&lt;br /&gt;
|-&lt;br /&gt;
|Feature 1i, transaction id&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 1&lt;br /&gt;
|-&lt;br /&gt;
|Feature 2, Log system properties on startup&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 1&lt;br /&gt;
|-&lt;br /&gt;
|Feature 3, Log command line properties on startup&lt;br /&gt;
|'''X'''&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Alpha 1&lt;br /&gt;
|-&lt;br /&gt;
|Feature 4, Log application server properties on startup&lt;br /&gt;
|'''X'''&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Alpha 2&lt;br /&gt;
|-&lt;br /&gt;
|Feature 5, Log HTTP request parameters&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Alpha 2&lt;br /&gt;
|-&lt;br /&gt;
|Feature 6, Log HTTP session attributes&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''?'''&lt;br /&gt;
|Alpha 2&lt;br /&gt;
|-&lt;br /&gt;
|Feature 7, Internationalization considerations&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 1&lt;br /&gt;
|-&lt;br /&gt;
|Feature 8, Redirect system streams like System.out and System.err to logging framework&lt;br /&gt;
|'''X'''&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Alpha 2&lt;br /&gt;
|-&lt;br /&gt;
|Feature 9, Asynchronous message logging, store and forward&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 2&lt;br /&gt;
|-&lt;br /&gt;
|Feature 10, Message correlation&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 2&lt;br /&gt;
|-&lt;br /&gt;
|Feature 11, Performance options for transport compression&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 2&lt;br /&gt;
|-&lt;br /&gt;
|Feature 12, Authenticated client logging&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 2&lt;br /&gt;
|-&lt;br /&gt;
|Feature 13, Secure log message transport&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 2&lt;br /&gt;
|-&lt;br /&gt;
|Feature 14, Signed log messages&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 1&lt;br /&gt;
|-&lt;br /&gt;
|Feature 15, Guaranteed log message delivery&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|'''X'''&lt;br /&gt;
|'''X'''&lt;br /&gt;
|Alpha 2&lt;br /&gt;
|}&lt;br /&gt;
'''''Legend, X=applicable use-case, M=maybe useful, ?=tbd'''''&lt;br /&gt;
&lt;br /&gt;
==Project delivery artifacts==&lt;br /&gt;
:'''Logging primer''', architectural considerations for security, audit, and diagnostics for community projects.  Provide information how logging project can be leverage to address concerns provided by each use case, general logging best practices, template for using message levels (e.g., INFO, WARN, etc).&lt;br /&gt;
:'''Logging design''', specific technical details to apply project logging to community logging projects.&lt;br /&gt;
:'''Code''', software program code that implements project feature goals.&lt;br /&gt;
&lt;br /&gt;
==Code areas==&lt;br /&gt;
:'''Logging layouts''', at the moment this is Common Event Format(CEF) and Common Log File System(CLFS).&lt;br /&gt;
:'''MDC filter''', include system information handy for most deployments into logbacks Mapped Diagnostics Context(MDC).&lt;br /&gt;
:'''MDC marker''',&lt;br /&gt;
:'''Unit testing''', various software code we use (and you can also use) to test project code.&lt;br /&gt;
&lt;br /&gt;
==Detailed use-case descriptions==&lt;br /&gt;
Following are detailed use-case descriptions for each feature.  The purpose of this section is to help readers to understand more about each feature and it's potential benefits.&lt;br /&gt;
&lt;br /&gt;
==Feature 1, MDC metadata improvements==&lt;br /&gt;
This feature adds certain metadata useful for security purposes to logback’s Mapped Diagnostics Content.  The following metadata will be mapped where available.&lt;br /&gt;
&lt;br /&gt;
===process id (feature 1a)===&lt;br /&gt;
This is the process id of the application as assigned by the operating system at execution.  On *nix and Windows environments this the PID.  Depending upon the language platform process id may not be readily available.  As an alternative, server hostname or IP may be used.&lt;br /&gt;
&lt;br /&gt;
===application id and application instance id (feature 1b)===&lt;br /&gt;
This an identifier set by the application designer to identify a unique application instance.  This identifier is useful to identify applications uniquely where many instances of the same program (e.g., web application) are hosted on 1 or more physical servers.  The application id is useful visual indicator of the type of application component.  The instance id is useful to identify the application instance.  The instance is particularly useful where the same process may host 2 or more application instances.  An instance id may be a generated hash (e.g., VMID) or unique index where size is a concern.  Once the id is used it should persist between process restarts.  A suggested format:  {APP ID}:{APP INSTANCE ID}.  An sample POS:ace22c02aa858f670e3c227fbab141e2d8d6bea6 or POS:14563.&lt;br /&gt;
&lt;br /&gt;
===server time\date in UTC (feature 1c)===&lt;br /&gt;
Time, date, and day, on the server with timezone offset at the time the message was logged.  A suggested format[1], {yyyy-MM-dd'T'HH:mm:ss.SSSZ}.  An example, 2001-07-04T12:08:56.235-0700&lt;br /&gt;
&lt;br /&gt;
===client time\date in UTC (feature 1d)===&lt;br /&gt;
Time, date, and day, on the client with timezone offset at the time the message was logged.  A suggested format[1], {yyyy-MM-dd'T'HH:mm:ss.SSSZ}.  An example, 2001-07-04T12:08:56.235-0700&lt;br /&gt;
&lt;br /&gt;
===client ip address (feature 1e)===&lt;br /&gt;
MDC property for the IP address of the client host where the log message originated.  An example, 192.168.1.30&lt;br /&gt;
&lt;br /&gt;
===user name or ID (feature 1f)===&lt;br /&gt;
This MDC property to property is an application account name associated with a human (if available) this is associated with this log message.  This property may not be available if the log message is not specifically related to an individual's activity.  An example, milton.smith&lt;br /&gt;
&lt;br /&gt;
===global client session id (feature 1g)===&lt;br /&gt;
This MDC property is a session id assigned by an application designer that is shared across multiple application instances.  Usually this is a secure hash to avoid reverse engineering.  An example, ace22c02aa858f670e3c227fbab141e2d8d6bea6&lt;br /&gt;
&lt;br /&gt;
===security policy identifier (feature 1h)===&lt;br /&gt;
MDC property that identifies activities associated with a sites security policy.  The value is site defined and can be useful when producing information for audits.  An example, Violation:SEC.5.2a&lt;br /&gt;
&lt;br /&gt;
===transaction id (feature 1i)===&lt;br /&gt;
MDC property to identify activities associated with a single user action.  For example, execution of a single application user feature may require many activities from the main application program along with components like LDAP servers and databases.  The transaction id is useful to correlate all the related system activities that support a specific user request.  Each subsequent user request receives a new transaction id.  An example, TRX:1005862&lt;br /&gt;
&lt;br /&gt;
==Feature 2, Log system properties on startup==&lt;br /&gt;
The requirement is to log all system properties on application startup.  Often it’s difficult to perform an investigation without understanding the initial state of the system.  An example how properties may appear in logs (without MDC information).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 *******************************************&lt;br /&gt;
 JAVA PROPERTY SETTINGS&lt;br /&gt;
 *******************************************&lt;br /&gt;
Setting, java.runtime.name=Java(TM) SE Runtime Environment&lt;br /&gt;
Setting, sun.boot.library.path=C:\Program Files\Java\jre6\bin&lt;br /&gt;
Setting, java.vm.version=14.0-b16&lt;br /&gt;
Setting, java.vm.vendor=Sun Microsystems Inc.&lt;br /&gt;
Setting, java.vendor.url=http://java.sun.com/&lt;br /&gt;
Setting, path.separator=;&lt;br /&gt;
Setting, java.vm.name=Java HotSpot(TM) Client VM&lt;br /&gt;
Setting, file.encoding.pkg=sun.io&lt;br /&gt;
Setting, sun.java.launcher=SUN_STANDARD&lt;br /&gt;
 Setting, user.country=US&lt;br /&gt;
Setting, sun.os.patch.level=&lt;br /&gt;
Setting, java.vm.specification.name=Java Virtual Machine Specification&lt;br /&gt;
Setting, user.dir=C:\Users\Milton\workspace\MyProject&lt;br /&gt;
Setting, java.runtime.version=1.6.0_14-b08&lt;br /&gt;
Setting, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment&lt;br /&gt;
Setting, java.endorsed.dirs=C:\Program Files\Java\jre6\lib\endorsed&lt;br /&gt;
Setting, os.arch=x86&lt;br /&gt;
Setting, java.io.tmpdir=C:\Users\Milton\AppData\Local\Temp\&lt;br /&gt;
Setting, line.separator=&lt;br /&gt;
    &lt;br /&gt;
Setting, java.vm.specification.vendor=Sun Microsystems Inc.&lt;br /&gt;
Setting, user.variant=&lt;br /&gt;
Setting, os.name=Windows 7&lt;br /&gt;
Setting, sun.jnu.encoding=Cp1252&lt;br /&gt;
Setting, java.library.path=C:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:\Program Files\JavaFX\javafx-sdk1.2\bin;C:\Program Files\JavaFX\javafx-sdk1.2\emulator\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;c:\usershellcommands;C:\Program Files\QuickTime\QTSystem\&lt;br /&gt;
 Setting, java.specification.name=Java Platform API Specification&lt;br /&gt;
Setting, java.class.version=50.0&lt;br /&gt;
Setting, sun.management.compiler=HotSpot Client Compiler&lt;br /&gt;
Setting, os.version=6.1&lt;br /&gt;
Setting, user.home=C:\Users\Milton&lt;br /&gt;
Setting, user.timezone=&lt;br /&gt;
Setting, java.awt.printerjob=sun.awt.windows.WPrinterJob&lt;br /&gt;
Setting, file.encoding=Cp1252&lt;br /&gt;
Setting, java.specification.version=1.6&lt;br /&gt;
Setting, java.class.path=C:\Users\Milton\workspace\SDA\bin;C:\Java-Libs\jmx-1_2_1-bin\lib\jmxri.jar;C:\Java-Libs\apache-log4j-1.2.15\log4j-1.2.15.jar&lt;br /&gt;
Setting, user.name=Milton&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Feature 3, Log command line options on startup==&lt;br /&gt;
The requirement is to log all command line arguments on application startup.  All command line arguments must be logged.  In Java, the entire arg array passed into the main(String args[]) method should be logged.  Any whitespace or special characters should be filtered before logged.  For example a small program that echos the input to the command line may produce an output that looks like the following.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 *******************************************&lt;br /&gt;
    COMMAND LINE ARGS&lt;br /&gt;
 *******************************************&lt;br /&gt;
java testapp “Hello World!”&lt;br /&gt;
Hello World! &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Feature 4, Log application server properties on startup==&lt;br /&gt;
The requirement is to log all key\value pairs that influence application behavior upon execution.  In Java, there parameters are defined by HttpServlet.getInitParameterNames()  An example of logged J2EE properties may look like the following.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 *******************************************&lt;br /&gt;
    J2EE PROPERTIES&lt;br /&gt;
 *******************************************&lt;br /&gt;
Setting, thread.pool.size=1000&lt;br /&gt;
Setting, request.ttlms=30000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Feature 5, Log HTTP request parameters==&lt;br /&gt;
The requirement is to log all key\value pairs associated with all application HTTP requests.  Raw HTTP requests parameters across the cloud may generate significantly increase log volume.  The goal is to define a request log that overwrites itself (e.g., a ring buffer) at a small designer specified interval or a default of 15 mins.  This allows highly granular diagnostic messages over a short duration.&lt;br /&gt;
&lt;br /&gt;
An ancillary requirement is that sensitive key\value pairs will be masked.  A default set of masking rules will be included with the project with an option for designers to assign their own masking rules specific for their applications.&lt;br /&gt;
 &lt;br /&gt;
(TODOMS: need to insert some raw http requests from zap in a suitable log format)&lt;br /&gt;
&lt;br /&gt;
==Feature 6, Log HTTP session attributes==&lt;br /&gt;
&lt;br /&gt;
The requirement is to log all key\value pairs associated with a users HttpSession instance.  These properties should be logged once upon user session initialization.  In Java, key\value pairs from HttpSession.getAttributeName() should be logged when the HttpSession is created.&lt;br /&gt;
&lt;br /&gt;
(TODOMS: need to insert some sample HTTP session attributes)&lt;br /&gt;
&lt;br /&gt;
==Feature 7, Internationalization considerations==&lt;br /&gt;
The action is to use string resources so that logs are compatible across languages.  The project will initially define US English.  Designers are encouraged to translate resources to different languages.  If the translations are made available to us we may include them.&lt;br /&gt;
&lt;br /&gt;
==Feature 8, Redirect system streams like System.out and System.err to security logging framework==&lt;br /&gt;
This requirement captures any legacy messaging from older code without refactoring.  The approach redirects any messages to system defined streams into the logging framework.  Log messages will not be a content rich since since the caller, old code in this case, does not calling the Security API directly.  The advantage is instant out of the box compatibility with no refactoring.  In Java, the action is to capture calls like System.out.println(“My wife loves security.”) and System.err() reroute them to the logging framework without modification to legacy programs.&lt;br /&gt;
&lt;br /&gt;
An ancillary requirement is that sensitive key\value pairs will be masked.  A default set of masking rules will be included with the project with an option for designers to assign their own masking rules specific for their applications.&lt;br /&gt;
&lt;br /&gt;
==Feature 9, Asynchronous message logging, store and forward==&lt;br /&gt;
The requirement for this feature one of performance.  Log messages sent to a remote location (e.g., central log server) can take some time to send over networks.  It may be desirable in some deployments for the caller not to block when logging these messages.  The goal is to log the message locally, freeing the caller, then send the message in a background thread to the remote server.   See Feature 15 also.&lt;br /&gt;
&lt;br /&gt;
==Feature 10, Message correlation==&lt;br /&gt;
A problem with logs today is that it’s often difficult to reconstruct a series of activities leading to an event of interest.  System logs are often out of order with messages originating from different threads and hosts.  The goal of message correlation is to provide identifier(s) so that all log messages can be sequenced into a narrative of system activities leading to an event of interest.  For example, with correlation it will be possible to separate log entries to see the activities involved in a single administrative user operation like Add User.  Log entries to add a user may begin with HTTP posts from the clients browser, system permission checks, next a log message describing the insert of the new user into the user table, a log message of positive confirmation a SMTP message was sent to indicate the users new account is ready for initial signon.&lt;br /&gt;
&lt;br /&gt;
==Feature 11, Performance options for transport compression==&lt;br /&gt;
Where log message will transit networks facilities will be provided to compress traffic to remote hosts.&lt;br /&gt;
&lt;br /&gt;
==Feature 12, Authenticated client logging==&lt;br /&gt;
This feature is useful to ensure each message logged is attributable to a known source and trusted source.  Messages from anonymous sources may still be allowed, depending upon system preferences, but authenticated messages will clearly indicate the identity of the source.&lt;br /&gt;
&lt;br /&gt;
==Feature 13, Secure transport==&lt;br /&gt;
To facilitate secure transport a TLS 1.2 compliant connection be negotiated.  Options must be provided to allow designers to control ciphersuite negotiation.  Negotiation options must include provision for, a) the name of each ciphersuite permitted, b) order of negotiation which is ideally strongest suites first as a default but can be changed by the designer.  The trust roots will be those supplied by the supporting language platform (e.g., Java, .NET, etc).&lt;br /&gt;
&lt;br /&gt;
==Feature 14, Signed log messages==&lt;br /&gt;
To facilitate tamper resistant log messages log messages will be signed by the client.  Each field of the log message will be included in the signing process.  The signature will be included with the log message entry along with strongest fingerprint included within signing certificate.  The fingerprint of the signing certificate is an aid to identify the signing certificate and may be important for enterprise or cloud environments where many clients are logging.  Signed logs may or may not be encrypted.&lt;br /&gt;
&lt;br /&gt;
==Feature 15, Guaranteed log message delivery==&lt;br /&gt;
This feature builds upon the Feature 9, Asynchronous message logging, store and forward to include guaranteed delivery.  The goal is that no messages are lost.  Messages received from the caller will be queued for delivery.  Clients logging messages must block until their log message is committed to a queue.  For simplicity, the queue will exist on the client computer.  The function is somewhat analogous to a local print spooler.  If committing to a queue is not possible an instance of a RuntimeException must be thrown to the caller.  Once committed to a queue, worker threads will send the message in the background to the remote server.  On the client, worker threads will not remove the log message from the queue until the server has acknowledged receipt.&lt;br /&gt;
&lt;br /&gt;
From the server side, the server must maintain the client connection until the message is logged.  If the message cannot be logged an instance of an Exception must be thrown.  Using this system no message will ever be lost.  A message will exist in only 3 states, 1) with the blocked client, 2) within the client’s log queue, 3) logged on the server.  For a completely reliable solution, HA hardware and RAID media are required which is a consideration for system designers.&lt;br /&gt;
&lt;br /&gt;
==Feedback==&lt;br /&gt;
Please report any concerns, correction, or other feedback to any of the project leads listed on the main project page.&lt;br /&gt;
&lt;br /&gt;
=Minimum Viable Product=&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
This page is where you should indicate what is the minimum set of functionality that is required to make this a useful product that addresses your core security concern.&lt;br /&gt;
Defining this information helps the project leader to think about what is the critical functionality that a user needs for this project to be useful, thereby helping determine what the priorities should be on the roadmap.  And it also helps reviewers who are evaluating the project to determine if the functionality sufficiently provides the critical functionality to determine if the project should be promoted to the next project category.  &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Project About=&lt;br /&gt;
&amp;lt;!-- Instructions are in RED and should be removed from your document by deleting the text with the span tags.--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This page is where you need to place your legacy project template page if your project was created before October 2013. To edit this page you will need to edit your project information template. You can typically find this page by following this address and substituting your project name where it says &amp;quot;OWASP_Example_Project&amp;quot;. When in doubt, ask the OWASP Projects Manager. &lt;br /&gt;
Example template page: https://www.owasp.org/index.php/Projects/OWASP_Example_Project&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Projects/OWASP_Example_Project_About_Page}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]  [[Category:OWASP_Builders]] [[Category:OWASP_Defenders]]  [[Category:OWASP_Code]]&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Logging_Project&amp;diff=188005</id>
		<title>OWASP Security Logging Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Logging_Project&amp;diff=188005"/>
				<updated>2015-01-13T19:22:34Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: /* Main */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Main=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==OWASP Security Logging Project==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The OWASP Security Logging project provides developers and ops personnel with APIs for logging security-related events. The aim is to let developers use the same set of logging APIs they are already familiar with from over a decade of experience with Log4J and its successors, while also adding powerful security features.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Logging is often neglected by developers when thinking of security considerations. However, proper logging practice can provide the crucial forensics needed to investigate after a breach, and perhaps more importantly, a change to detect security issues as they happen. Most developers are already familiar with using logging for debugging and diagnostic purposes, so it should be easy for them to grasp the concept of security logging as well. The OWASP Security Logging project aims to give developers an easy way to get started with logging security events, tracking extra forensic information like the who (username), what (event type), and where (IP address, server name) needed for forensics. It also provides a means for classifying the information in log messages and applying masking if necessary.  &lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
This library is free software: you can redistribute it and/or modify it under the terms of the Apache License, Version 2.0. You can copy, distribute and transmit the work, and you can adapt it, and use it commercially, but all provided that you attribute the work and if you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
[https://github.com/javabeanz/owasp-security-logging Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/javabeanz/owasp-security-logging/wiki Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/javabeanz/owasp-security-logging/issues Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
[mailto:sytze.vonkoningsveld@owasp.org Sytze van Koningsveld]&lt;br /&gt;
&lt;br /&gt;
[mailto:august.detlefsen@owasp.org August Detlefsen] &lt;br /&gt;
&lt;br /&gt;
[mailto:milton.smith@owasp.org Milton Smith]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Logging_Cheat_Sheet|Logging Cheat Sheet]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_CODE.jpg|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-builders-small.png|link=Builders]]  &lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|Affero General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
23 Dec 2014 Project Created and source code now available!&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=FAQs=&lt;br /&gt;
&amp;lt;!-- Instructions are in RED and should be removed from your document by deleting the text with the span tags.--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	Many projects have &amp;quot;Frequently Asked Questions&amp;quot; documents or pages. However, the point of such a document is not the questions. ''The point of a document like this are the '''answers'''''. The document contains the answers that people would otherwise find themselves giving over and over again. The idea is that rather than laboriously compose and post the same answers repeatedly, people can refer to this page with pre-prepared answers. Use this space to communicate your projects 'Frequent Answers.'&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How can I participate in your project?==&lt;br /&gt;
All you have to do is make the Project Leader's aware of your available time to contribute to the project. It is also important to let the Leader's know how you would like to contribute and pitch in to help the project meet it's goals and milestones. There are many different ways you can contribute to an OWASP Project, but communication with the leads is key. &lt;br /&gt;
&lt;br /&gt;
==If I am not a programmer can I participate in your project?==&lt;br /&gt;
Yes, you can certainly participate in the project if you are not a programmer or technical. The project needs different skills and expertise and different times during its development. Currently, we are looking for researchers, writers, graphic designers, and a project administrator. &lt;br /&gt;
&lt;br /&gt;
= Acknowledgements =&lt;br /&gt;
==Volunteers==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Instructions are in RED and should be removed from your document by deleting the text with the span tags.--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	The success of OWASP is due to a community of enthusiasts and contributors that work to make our projects great. This is also true for the success of your project. &lt;br /&gt;
Be sure to give credit where credit is due, no matter how small! This should be a brief list of the most amazing people involved in your project. &lt;br /&gt;
Be sure to provide a link to a complete list of all the amazing people in your project's community as well.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Road Map and Getting Involved =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Instructions are in RED and should be removed from your document by deleting the text with the span tags.--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	A project roadmap is the envisioned plan for the project. The purpose of the roadmap is to help others understand where the project is going as well as areas that volunteers may contribute. It gives the community a chance to understand the context and the vision for the goal of the project. Additionally, if a project becomes inactive, or if the project is abandoned, a roadmap can help ensure a project can be adopted and continued under new leadership.&lt;br /&gt;
	Roadmaps vary in detail from a broad outline to a fully detailed project charter. Generally speaking, projects with detailed roadmaps have tended to develop into successful projects. Some details that leaders may consider placing in the roadmap include: envisioned milestones, planned feature enhancements, essential conditions, project assumptions, development timelines, etc. You are required to have at least 4 milestones for every year the project is active. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Coding===&lt;br /&gt;
&lt;br /&gt;
===Localization===&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
===Feedback===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Minimum Viable Product=&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
This page is where you should indicate what is the minimum set of functionality that is required to make this a useful product that addresses your core security concern.&lt;br /&gt;
Defining this information helps the project leader to think about what is the critical functionality that a user needs for this project to be useful, thereby helping determine what the priorities should be on the roadmap.  And it also helps reviewers who are evaluating the project to determine if the functionality sufficiently provides the critical functionality to determine if the project should be promoted to the next project category.  &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Project About=&lt;br /&gt;
&amp;lt;!-- Instructions are in RED and should be removed from your document by deleting the text with the span tags.--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This page is where you need to place your legacy project template page if your project was created before October 2013. To edit this page you will need to edit your project information template. You can typically find this page by following this address and substituting your project name where it says &amp;quot;OWASP_Example_Project&amp;quot;. When in doubt, ask the OWASP Projects Manager. &lt;br /&gt;
Example template page: https://www.owasp.org/index.php/Projects/OWASP_Example_Project&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Projects/OWASP_Example_Project_About_Page}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]  [[Category:OWASP_Builders]] [[Category:OWASP_Defenders]]  [[Category:OWASP_Code]]&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Logging_Project&amp;diff=187698</id>
		<title>OWASP Security Logging Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Logging_Project&amp;diff=187698"/>
				<updated>2015-01-07T22:08:30Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: Added external links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Main=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==OWASP Security Logging Project==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The OWASP Security Logging project provides developers and ops personnel with APIs for logging security-related events. The aim is to let developers use the same set of logging APIs they are already familiar with from over a decade of experience with Log4J and its successors, while also adding powerful security features.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Logging is often neglected by developers when thinking of security considerations. However, proper logging practice can provide the crucial forensics needed to investigate after a breach, and perhaps more importantly, a change to detect security issues as they happen. Most developers are already familiar with using logging for debugging and diagnostic purposes, so it should be easy for them to grasp the concept of security logging as well. The OWASP Security Logging project aims to give developers an easy way to get started with logging security events, tracking extra forensic information like the who (username), what (event type), and where (IP address, server name) needed for forensics. It also provides a means for classifying the information in log messages and applying masking if necessary.  &lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under the terms of the Apache License, Version 2.0 OWASP XXX and any contributions are Copyright &amp;amp;copy; by {the Project Leader(s) or OWASP} {Year(s)}. &lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
[https://github.com/javabeanz/owasp-security-logging Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/javabeanz/owasp-security-logging/wiki Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/javabeanz/owasp-security-logging/issues Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
[mailto:sytze.vonkoningsveld@owasp.org Sytze van Koningsveld]&lt;br /&gt;
&lt;br /&gt;
[mailto:august.detlefsen@owasp.org August Detlefsen] &lt;br /&gt;
&lt;br /&gt;
[mailto:milton.smith@owasp.org Milton Smith]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Logging_Cheat_Sheet|Logging Cheat Sheet]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_CODE.jpg|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-builders-small.png|link=Builders]]  &lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|Affero General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
23 Dec 2014 Project Created and source code now available!&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=FAQs=&lt;br /&gt;
&amp;lt;!-- Instructions are in RED and should be removed from your document by deleting the text with the span tags.--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	Many projects have &amp;quot;Frequently Asked Questions&amp;quot; documents or pages. However, the point of such a document is not the questions. ''The point of a document like this are the '''answers'''''. The document contains the answers that people would otherwise find themselves giving over and over again. The idea is that rather than laboriously compose and post the same answers repeatedly, people can refer to this page with pre-prepared answers. Use this space to communicate your projects 'Frequent Answers.'&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How can I participate in your project?==&lt;br /&gt;
All you have to do is make the Project Leader's aware of your available time to contribute to the project. It is also important to let the Leader's know how you would like to contribute and pitch in to help the project meet it's goals and milestones. There are many different ways you can contribute to an OWASP Project, but communication with the leads is key. &lt;br /&gt;
&lt;br /&gt;
==If I am not a programmer can I participate in your project?==&lt;br /&gt;
Yes, you can certainly participate in the project if you are not a programmer or technical. The project needs different skills and expertise and different times during its development. Currently, we are looking for researchers, writers, graphic designers, and a project administrator. &lt;br /&gt;
&lt;br /&gt;
= Acknowledgements =&lt;br /&gt;
==Volunteers==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Instructions are in RED and should be removed from your document by deleting the text with the span tags.--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	The success of OWASP is due to a community of enthusiasts and contributors that work to make our projects great. This is also true for the success of your project. &lt;br /&gt;
Be sure to give credit where credit is due, no matter how small! This should be a brief list of the most amazing people involved in your project. &lt;br /&gt;
Be sure to provide a link to a complete list of all the amazing people in your project's community as well.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Road Map and Getting Involved =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Instructions are in RED and should be removed from your document by deleting the text with the span tags.--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	A project roadmap is the envisioned plan for the project. The purpose of the roadmap is to help others understand where the project is going as well as areas that volunteers may contribute. It gives the community a chance to understand the context and the vision for the goal of the project. Additionally, if a project becomes inactive, or if the project is abandoned, a roadmap can help ensure a project can be adopted and continued under new leadership.&lt;br /&gt;
	Roadmaps vary in detail from a broad outline to a fully detailed project charter. Generally speaking, projects with detailed roadmaps have tended to develop into successful projects. Some details that leaders may consider placing in the roadmap include: envisioned milestones, planned feature enhancements, essential conditions, project assumptions, development timelines, etc. You are required to have at least 4 milestones for every year the project is active. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Coding===&lt;br /&gt;
&lt;br /&gt;
===Localization===&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
===Feedback===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Minimum Viable Product=&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
This page is where you should indicate what is the minimum set of functionality that is required to make this a useful product that addresses your core security concern.&lt;br /&gt;
Defining this information helps the project leader to think about what is the critical functionality that a user needs for this project to be useful, thereby helping determine what the priorities should be on the roadmap.  And it also helps reviewers who are evaluating the project to determine if the functionality sufficiently provides the critical functionality to determine if the project should be promoted to the next project category.  &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Project About=&lt;br /&gt;
&amp;lt;!-- Instructions are in RED and should be removed from your document by deleting the text with the span tags.--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This page is where you need to place your legacy project template page if your project was created before October 2013. To edit this page you will need to edit your project information template. You can typically find this page by following this address and substituting your project name where it says &amp;quot;OWASP_Example_Project&amp;quot;. When in doubt, ask the OWASP Projects Manager. &lt;br /&gt;
Example template page: https://www.owasp.org/index.php/Projects/OWASP_Example_Project&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Projects/OWASP_Example_Project_About_Page}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]  [[Category:OWASP_Builders]] [[Category:OWASP_Defenders]]  [[Category:OWASP_Code]]&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_File_I_O_Security_Project&amp;diff=181151</id>
		<title>OWASP Java File I O Security Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_File_I_O_Security_Project&amp;diff=181151"/>
				<updated>2014-08-26T02:33:52Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Main=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==OWASP Java File I/O Security Project==&lt;br /&gt;
&lt;br /&gt;
The OWASP Java File I/O Security Project provides an easy to use library for validating and sanitizing filenames, directory paths, and uploaded files. This project encapsulates the file handling portions of the ESAPI project and makes them available in an easy to use library that has no dependencies. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
OWASP Java File I/O Security Project is licensed under the Apache 2.0 License. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== What is the OWASP Java File I/O Security Project? ==&lt;br /&gt;
&lt;br /&gt;
OWASP Java File I/O Security Project  provides:&lt;br /&gt;
&lt;br /&gt;
* File name validation&lt;br /&gt;
* Directory path validation&lt;br /&gt;
* File validation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Code Repo ==&lt;br /&gt;
&lt;br /&gt;
[https://code.google.com/p/owasp-java-fileio/ Java File I/O at Google Code]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&lt;br /&gt;
August Detlefsen [mailto:augustd@codemagi.com @]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
[[ESAPI|OWASP Enterprise Security API]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Quick Download ==&lt;br /&gt;
&lt;br /&gt;
* Link to page/download&lt;br /&gt;
&lt;br /&gt;
== Email List ==&lt;br /&gt;
&lt;br /&gt;
[https://lists.owasp.org/mailman/listinfo/owasp_java_file_i_o_security_project Project Mailing List]&lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
* [20 Nov 2013] News 2&lt;br /&gt;
* [30 Sep 2013] News 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Print ==&lt;br /&gt;
This project can be purchased as a print on demand book from Lulu.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:New projects.png|100px|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects]]&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-builders-small.png|link=]]  &lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| &lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Cc-button-y-sa-small.png|link=http://creativecommons.org/licenses/by-sa/3.0/]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_CODE.jpg|link=]]&lt;br /&gt;
   |}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=FAQs=&lt;br /&gt;
&lt;br /&gt;
; Q1&lt;br /&gt;
: A1&lt;br /&gt;
&lt;br /&gt;
; Q2&lt;br /&gt;
: A2&lt;br /&gt;
&lt;br /&gt;
= Acknowledgements =&lt;br /&gt;
==Volunteers==&lt;br /&gt;
XXX is developed by a worldwide team of volunteers. The primary contributors to date have been:&lt;br /&gt;
&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
==Others==&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
= Road Map and Getting Involved =&lt;br /&gt;
As of [https://www.owasp.org/index.php/Projects/OWASP_Java_File_I_O_Security_Project/Roadmap April 2014], the priorities are:&lt;br /&gt;
&lt;br /&gt;
* Initial version out in one month.&lt;br /&gt;
* Documentation within 4 months.&lt;br /&gt;
* Introduction at JavaOne in September.&lt;br /&gt;
&lt;br /&gt;
Involvement in the development and promotion of the OWASP Java File I O Security Project is actively encouraged!&lt;br /&gt;
You do not have to be a security expert in order to contribute.&lt;br /&gt;
Some of the ways you can help:&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_File_I_O_Security_Project&amp;diff=181146</id>
		<title>OWASP Java File I O Security Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_File_I_O_Security_Project&amp;diff=181146"/>
				<updated>2014-08-26T02:09:47Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Main=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==OWASP Java File I/O Security Project==&lt;br /&gt;
&lt;br /&gt;
The OWASP Java File I/O Security Project provides an easy to use library for validating and sanitizing filenames, directory paths, and uploaded files. This project encapsulates the file handling portions of the ESAPI project and makes them available in an easy to use library that has no dependencies. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
OWASP Java File I/O Security Project is licensed under the Apache 2.0 License. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== What is the OWASP Java File I/O Security Project? ==&lt;br /&gt;
&lt;br /&gt;
OWASP Java File I/O Security Project  provides:&lt;br /&gt;
&lt;br /&gt;
* File name validation&lt;br /&gt;
* Directory path validation&lt;br /&gt;
* File validation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Code Repo ==&lt;br /&gt;
&lt;br /&gt;
[https://code.google.com/p/owasp-java-fileio/ Java File I/O at Google Code]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&lt;br /&gt;
August Detlefsen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Quick Download ==&lt;br /&gt;
&lt;br /&gt;
* Link to page/download&lt;br /&gt;
&lt;br /&gt;
== Email List ==&lt;br /&gt;
&lt;br /&gt;
[https://lists.owasp.org/mailman/listinfo/owasp_java_file_i_o_security_project Project Mailing List]&lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
* [20 Nov 2013] News 2&lt;br /&gt;
* [30 Sep 2013] News 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Print ==&lt;br /&gt;
This project can be purchased as a print on demand book from Lulu.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:New projects.png|100px|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects]]&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-builders-small.png|link=]]  &lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-breakers-small.png|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Cc-button-y-sa-small.png|link=http://creativecommons.org/licenses/by-sa/3.0/]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_CODE.jpg|link=]]&lt;br /&gt;
   |}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=FAQs=&lt;br /&gt;
&lt;br /&gt;
; Q1&lt;br /&gt;
: A1&lt;br /&gt;
&lt;br /&gt;
; Q2&lt;br /&gt;
: A2&lt;br /&gt;
&lt;br /&gt;
= Acknowledgements =&lt;br /&gt;
==Volunteers==&lt;br /&gt;
XXX is developed by a worldwide team of volunteers. The primary contributors to date have been:&lt;br /&gt;
&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
==Others==&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
= Road Map and Getting Involved =&lt;br /&gt;
As of [https://www.owasp.org/index.php/Projects/OWASP_Java_File_I_O_Security_Project/Roadmap April 2014], the priorities are:&lt;br /&gt;
&lt;br /&gt;
* Initial version out in one month.&lt;br /&gt;
* Documentation within 4 months.&lt;br /&gt;
* Introduction at JavaOne in September.&lt;br /&gt;
&lt;br /&gt;
Involvement in the development and promotion of the OWASP Java File I O Security Project is actively encouraged!&lt;br /&gt;
You do not have to be a security expert in order to contribute.&lt;br /&gt;
Some of the ways you can help:&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_File_I_O_Security_Project&amp;diff=181145</id>
		<title>OWASP Java File I O Security Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_File_I_O_Security_Project&amp;diff=181145"/>
				<updated>2014-08-26T02:08:23Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Main=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==OWASP Java File I/O Security Project==&lt;br /&gt;
&lt;br /&gt;
The OWASP Java File I/O Security Project provides an easy to use library for validating and sanitizing filenames, directory paths, and uploaded files. This project encapsulates the file handling portions of the ESAPI project and makes them available in an easy to use library that has no dependencies. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
OWASP Java File I/O Security Project is licensed under the Apache 2.0 License. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== What is the OWASP Java File I O Security Project? ==&lt;br /&gt;
&lt;br /&gt;
OWASP Java File I O Security Project  provides:&lt;br /&gt;
&lt;br /&gt;
* File name validation&lt;br /&gt;
* Directory path validation&lt;br /&gt;
* File validation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Code Repo ==&lt;br /&gt;
&lt;br /&gt;
[https://code.google.com/p/owasp-java-fileio/ Java File IO at Google Code]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&lt;br /&gt;
August Detlefsen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Quick Download ==&lt;br /&gt;
&lt;br /&gt;
* Link to page/download&lt;br /&gt;
&lt;br /&gt;
== Email List ==&lt;br /&gt;
&lt;br /&gt;
[https://lists.owasp.org/mailman/listinfo/owasp_java_file_i_o_security_project Project Mailing List]&lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
* [20 Nov 2013] News 2&lt;br /&gt;
* [30 Sep 2013] News 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Print ==&lt;br /&gt;
This project can be purchased as a print on demand book from Lulu.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:New projects.png|100px|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects]]&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-builders-small.png|link=]]  &lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-breakers-small.png|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Cc-button-y-sa-small.png|link=http://creativecommons.org/licenses/by-sa/3.0/]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_CODE.jpg|link=]]&lt;br /&gt;
   |}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=FAQs=&lt;br /&gt;
&lt;br /&gt;
; Q1&lt;br /&gt;
: A1&lt;br /&gt;
&lt;br /&gt;
; Q2&lt;br /&gt;
: A2&lt;br /&gt;
&lt;br /&gt;
= Acknowledgements =&lt;br /&gt;
==Volunteers==&lt;br /&gt;
XXX is developed by a worldwide team of volunteers. The primary contributors to date have been:&lt;br /&gt;
&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
==Others==&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
= Road Map and Getting Involved =&lt;br /&gt;
As of [https://www.owasp.org/index.php/Projects/OWASP_Java_File_I_O_Security_Project/Roadmap April 2014], the priorities are:&lt;br /&gt;
&lt;br /&gt;
* Initial version out in one month.&lt;br /&gt;
* Documentation within 4 months.&lt;br /&gt;
* Introduction at JavaOne in September.&lt;br /&gt;
&lt;br /&gt;
Involvement in the development and promotion of the OWASP Java File I O Security Project is actively encouraged!&lt;br /&gt;
You do not have to be a security expert in order to contribute.&lt;br /&gt;
Some of the ways you can help:&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_File_I_O_Security_Project&amp;diff=173022</id>
		<title>OWASP Java File I O Security Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_File_I_O_Security_Project&amp;diff=173022"/>
				<updated>2014-04-18T21:17:57Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Main=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==OWASP Java File I/O Security Project==&lt;br /&gt;
&lt;br /&gt;
The OWASP Java File I/O Security Project provides an easy to use library for validating and sanitizing filenames, directory paths, and uploaded files. This project encapsulates the file handling portions of the ESAPI project and makes them available in an easy to use library that has no dependencies. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
OWASP Java File I/O Security Project is licensed under the Apache 2.0 License. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== What is the OWASP Java File I O Security Project? ==&lt;br /&gt;
&lt;br /&gt;
OWASP Java File I O Security Project  provides:&lt;br /&gt;
&lt;br /&gt;
* File name validation&lt;br /&gt;
* Directory path validation&lt;br /&gt;
* File validation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Presentation ==&lt;br /&gt;
&lt;br /&gt;
Link to presentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&lt;br /&gt;
August Detlefsen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Quick Download ==&lt;br /&gt;
&lt;br /&gt;
* Link to page/download&lt;br /&gt;
&lt;br /&gt;
== Email List ==&lt;br /&gt;
&lt;br /&gt;
[https://lists.owasp.org/mailman/listinfo/owasp_java_file_i_o_security_project Project Mailing List]&lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
* [20 Nov 2013] News 2&lt;br /&gt;
* [30 Sep 2013] News 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Print ==&lt;br /&gt;
This project can be purchased as a print on demand book from Lulu.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:New projects.png|100px|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects]]&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-builders-small.png|link=]]  &lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-breakers-small.png|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Cc-button-y-sa-small.png|link=http://creativecommons.org/licenses/by-sa/3.0/]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_CODE.jpg|link=]]&lt;br /&gt;
   |}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=FAQs=&lt;br /&gt;
&lt;br /&gt;
; Q1&lt;br /&gt;
: A1&lt;br /&gt;
&lt;br /&gt;
; Q2&lt;br /&gt;
: A2&lt;br /&gt;
&lt;br /&gt;
= Acknowledgements =&lt;br /&gt;
==Volunteers==&lt;br /&gt;
XXX is developed by a worldwide team of volunteers. The primary contributors to date have been:&lt;br /&gt;
&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
==Others==&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
= Road Map and Getting Involved =&lt;br /&gt;
As of [https://www.owasp.org/index.php/Projects/OWASP_Java_File_I_O_Security_Project/Roadmap April 2014], the priorities are:&lt;br /&gt;
&lt;br /&gt;
* Initial version out in one month.&lt;br /&gt;
* Documentation within 4 months.&lt;br /&gt;
* Introduction at JavaOne in September.&lt;br /&gt;
&lt;br /&gt;
Involvement in the development and promotion of the OWASP Java File I O Security Project is actively encouraged!&lt;br /&gt;
You do not have to be a security expert in order to contribute.&lt;br /&gt;
Some of the ways you can help:&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Insecure_Randomness&amp;diff=124042</id>
		<title>Insecure Randomness</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Insecure_Randomness&amp;diff=124042"/>
				<updated>2012-02-09T22:42:19Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Vulnerability}}&lt;br /&gt;
{{Template:Fortify}}&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
[[ASDR_TOC_Vulnerabilities|Vulnerabilities Table of Contents]]&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Standard pseudo-random number generators cannot withstand cryptographic attacks.&lt;br /&gt;
&lt;br /&gt;
Insecure randomness errors occur when a function that can produce predictable values is used as a source of randomness in security-sensitive context.&lt;br /&gt;
&lt;br /&gt;
Computers are deterministic machines, and as such are unable to produce true randomness. Pseudo-Random Number Generators (PRNGs) approximate randomness algorithmically, starting with a seed from which subsequent values are calculated.&lt;br /&gt;
&lt;br /&gt;
There are two types of PRNGs: statistical and cryptographic. Statistical PRNGs provide useful statistical properties, but their output is highly predictable and forms an easy to reproduce numeric stream that is unsuitable for use in cases where security depends on generated values being unpredictable. Cryptographic PRNGs address this problem by generating output that is more difficult to predict. For a value to be cryptographically secure, it must be impossible or highly improbable for an attacker to distinguish between it and a truly random value. In general, if a PRNG algorithm is not advertised as being cryptographically secure, then it is probably a statistical PRNG and should not be used in security-sensitive contexts.&lt;br /&gt;
&lt;br /&gt;
==Risk Factors==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
The following code uses a statistical PRNG to create a URL for a receipt that remains active for some period of time after a purchase (DO NOT DO THIS).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	String GenerateReceiptURL(String baseUrl) {&lt;br /&gt;
		Random ranGen = new Random();&lt;br /&gt;
		ranGen.setSeed((new Date()).getTime());&lt;br /&gt;
		return(baseUrl + Gen.nextInt(400000000) + &amp;quot;.html&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code uses the Random.nextInt() function to generate &amp;quot;unique&amp;quot; identifiers for the receipt pages it generates. Because Random.nextInt() is a statistical PRNG, it is easy for an attacker to guess the strings it generates. Although the underlying design of the receipt system is also faulty, it would be more secure if it used a random number generator that did not produce predictable receipt identifiers, such as a cryptographic PRNG.&lt;br /&gt;
&lt;br /&gt;
The following code uses Java's SecureRandom class to generate a cryptographically strong pseudo-random number (DO THIS): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	public static int generateRandom(int maximumValue) {&lt;br /&gt;
		SecureRandom ranGen = new SecureRandom();&lt;br /&gt;
		return ranGen.nextInt(maximumValue);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related [[Attacks]]==&lt;br /&gt;
&lt;br /&gt;
* [[Attack 1]]&lt;br /&gt;
* [[Attack 2]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related [[Vulnerabilities]]==&lt;br /&gt;
&lt;br /&gt;
* [[Vulnerability 1]]&lt;br /&gt;
* [[Vulnerabiltiy 2]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related [[Controls]]==&lt;br /&gt;
&lt;br /&gt;
* [[Random Number Generator]]&lt;br /&gt;
* [[:Category:Cryptography]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related [[Technical Impacts]]==&lt;br /&gt;
&lt;br /&gt;
* [[Technical Impact 1]]&lt;br /&gt;
* [[Technical Impact 2]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
[[Category:Cryptographic Vulnerability]]&lt;br /&gt;
[[Category:Java]] &lt;br /&gt;
[[Category:Code Snippet]]&lt;br /&gt;
[[Category:Vulnerability]]&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Java_HTML_Sanitizer_Project&amp;diff=116333</id>
		<title>OWASP Java HTML Sanitizer Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Java_HTML_Sanitizer_Project&amp;diff=116333"/>
				<updated>2011-08-26T22:52:57Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Project About ====&lt;br /&gt;
{{:Projects/OWASP Java HTML Sanitizer Project | Project About}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fast and easy to configure HTML Sanitizer written in Java which lets you include HTML authored by third-parties in your web application while protecting against XSS.&lt;br /&gt;
&lt;br /&gt;
The code is hosted on [http://code.google.com/p/owasp-java-html-sanitizer/ Google Code].  The [http://canyouxssthis.com/ attack review] is ongoing so please consider it alpha software. &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP_Tool]] &lt;br /&gt;
[[Category:OWASP_Alpha_Quality_Tool]] &lt;br /&gt;
[[Category:OWASP_Project|Java HTML Sanitizer]]&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=AppSec_US_2010,_CA/Attending_Owasp_Leaders&amp;diff=88708</id>
		<title>AppSec US 2010, CA/Attending Owasp Leaders</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=AppSec_US_2010,_CA/Attending_Owasp_Leaders&amp;diff=88708"/>
				<updated>2010-09-05T20:41:18Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: /* Also attending (part of OWASP community) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Page to manage the participation of the OWASP leaders at the [[AppSec_US_2010,_CA|AppSec USA in Irvine USA]]&lt;br /&gt;
 &lt;br /&gt;
===Attending Leaders - Confirmed===&lt;br /&gt;
&lt;br /&gt;
# [[User:Dancornell|Dan Cornell]]- ''San Antonio Chapter and Global Membership Committee''&lt;br /&gt;
# Tony UV - ''Atlanta Chapter''&lt;br /&gt;
# [[User:Jmanico|Jim Manico]] - ''Podcast Project''&lt;br /&gt;
# [[User:MichaelCoates|Michael Coates]] - ''AppSensor project and Global Membership Committee''&lt;br /&gt;
# [[User:Knoblochmartin|Martin Knobloch]] - ''Education and Connections Committee''&lt;br /&gt;
# [[User:Rsnake|Robert Hansen]] - ''Connections Committee''&lt;br /&gt;
# [[User:Mtesauro|Matt Tesauro]] - ''Live CD project, Board Member''&lt;br /&gt;
# [[User:Wichers|Dave Wichers]] - ''Top 10 project, Board Member''&lt;br /&gt;
# [[User:brennan|Tom Brennan]] - ''NYC Chapter Leader, RFP Criteria project, OWASP-CRM, Board Member''&lt;br /&gt;
# [[User:Jeff_Williams|Jeff Williams]] - ''ESAPI project, Board Member''&lt;br /&gt;
# [[User:Dinis.cruz|Dinis Cruz]] - ''O2 Platform project, Board Member''&lt;br /&gt;
# [[User:Dc|David Campbell]] - ''Denver Chapter, Industry Committee''&lt;br /&gt;
# [[User:Eduprey|Eric Duprey]] - ''Denver Chapter''&lt;br /&gt;
# [[User:Justin42|Justin Clarke]] - ''London Chapter and Connections Committee''&lt;br /&gt;
# Roman Hustad - ''Sacramento Chapter''&lt;br /&gt;
# Peter Dean - ''NYC Chapter Leader''&lt;br /&gt;
# Georg Hess - ''German Chapter, Industry Committee''&lt;br /&gt;
# John Steven - ''NoVA Chapter Lead''&lt;br /&gt;
# [[User:Lorna Alamri|Lorna Alamri]] - ''Connections Committee''&lt;br /&gt;
# [[User:Chris Schmidt|Chris Schmidt]] - ''ESAPI Project''&lt;br /&gt;
&lt;br /&gt;
'''Part of the conference organization'''&lt;br /&gt;
# Cassio Goldschmidt - ''Los Angeles Chapter''&lt;br /&gt;
# [[:User:Tin Zaw|Tin Zaw]] - ''Los Angeles Chapter''&lt;br /&gt;
# [[User:Richard greenberg|Richard Greenberg]] - ''Los Angeles Chapter''&lt;br /&gt;
# [http://twitter.com/nilematotle Neil Matatall] - ''[[http://www.owasp.org/index.php/Orange_County Orange County Chapter]]''&lt;br /&gt;
# Kate Hartmann - OWASP Foundation&lt;br /&gt;
# Alison McNamee - OWASP Foundation (remote support)&lt;br /&gt;
&lt;br /&gt;
===Also attending (part of OWASP community)===&lt;br /&gt;
# Joseph Dawson&lt;br /&gt;
# Howard Fore - ''Atlanta Chapter (Bring a Developer Attendee)''&lt;br /&gt;
# Jon Bango - ''Atlanta Chapter (Bring a Developer Attendee)''&lt;br /&gt;
# August Detlefsen - ''(Bring a Developer Attendee)''&lt;br /&gt;
&lt;br /&gt;
===Key WebAppSec players===&lt;br /&gt;
objective: identfy potential synergies between WebAppSec industry players and OWASP leaders (for example too meet and have a meeting)&lt;br /&gt;
&lt;br /&gt;
* Firefox Browser &lt;br /&gt;
** There are a number of Firefox employees participating and they have shown interest in talking to OWASP about how we can work together&lt;br /&gt;
*** Michael Coates (Owasp Leader)&lt;br /&gt;
*** Sid Stamm&lt;br /&gt;
*** Brandon Sterne&lt;br /&gt;
*** Dan Veditz&lt;br /&gt;
&lt;br /&gt;
===Developers and QA participating===&lt;br /&gt;
'''Sponsored by the Atlanta Chapter'''&lt;br /&gt;
# ''Howard Fore (Atlanta Developer)'' - Howard Fore is a senior web developer in Atlanta, Georgia. He's involved in some high-visibility web projects at the Federal Reserve Bank of Atlanta. Increasing awareness of secure software development practices is an departmental objective for 2010 and he's a member of the security workgroup, which is leading the way in that endeavor. Other practices the security workgroup are implementing include static code analysis and code inspection.&lt;br /&gt;
# ''Jon Bango (Atlanta Developer)'' - Jon Bango is an Information Technology professional with over 13 years experience in the education, financial services and retail industries. Primarily working at the enterprise level, Jon has utilized the J2EE stack in building web applications for the largest home improvement retailer in the world. Most recently he has branched out into RIA technologies working in Adobe Flex and Microsoft Silverlight. Currently, Jon has transitioned into the dark arts at his company’s Information Assurance department in which the groundwork has been laid to utilize his developer talents to create a company wide secure coding initiative.&lt;br /&gt;
# ''August Detlefsen (Oakland Developer)'' - August Detlefsen is a 13+ year Java web architect veteran. As an independent contractor he has developed solutions for such companies as Sun Microsystems, Oracle, VMware, NetApp and others, managing all phases of the software development lifecycle from initial specification to final disposal. August recently began focusing on web application security and has worked on projects for WhiteHat Security, Security Compass, and AppSec Consulting and donated time on the OWASP ESAPI and AppSensor projects.&lt;br /&gt;
&lt;br /&gt;
===Meetings and sessions===&lt;br /&gt;
So far we have identified 6 slots were there will be an event happening around this group&lt;br /&gt;
&lt;br /&gt;
* '''Wed Night''' : 9PM-12PM Drinks at TDB&lt;br /&gt;
* '''Thursday Lunch Break''' : 'OWASP and the Browsers: How can we work together?'&lt;br /&gt;
* '''Thursday After the conference''' : OWASP Leaders meeting&lt;br /&gt;
* '''Thursday Night''' : TBD ''(and maybe the OWASP band?)''&lt;br /&gt;
* '''Friday Lunch Break''' : OWASP Summit 2011&lt;br /&gt;
* '''Friday After the conference''' : AppSec Soccer Tournament&lt;br /&gt;
* '''Friday Night''' : TDB&lt;br /&gt;
&lt;br /&gt;
Note that there are meeting facilities available, so if you need a quite space to meet and talk about OWASP let us know.&lt;br /&gt;
&lt;br /&gt;
=== How to track an OWASP Leader===&lt;br /&gt;
&lt;br /&gt;
Ideally we should be able to track OWASP leaders, the question is how?&lt;br /&gt;
&lt;br /&gt;
What could we give the leaders that would easily identify them (in practical and usable way):&lt;br /&gt;
* a special wristband&lt;br /&gt;
** with a particular color?&lt;br /&gt;
** with a particular logo or message?&lt;br /&gt;
** wth a GPC tag? (or auto-location-tweet)&lt;br /&gt;
* an armband&lt;br /&gt;
* a hat&lt;br /&gt;
* a scarf&lt;br /&gt;
* a t-shirt&lt;br /&gt;
* a bag&lt;br /&gt;
* with a paintball gun?&lt;br /&gt;
&lt;br /&gt;
===AppSec Soccer Tournament===&lt;br /&gt;
'''When:''' Friday after the conference&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Where:''' TBC&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Participants:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
* Dinis Cruz&lt;br /&gt;
* Kate Hartmann (can also be a referre)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===To do (tasks)===&lt;br /&gt;
* for each each participant&lt;br /&gt;
** link to MediaWiki user page&lt;br /&gt;
** add twitter accounts&lt;br /&gt;
*Travel arrangements&lt;br /&gt;
**  map travel dates&lt;br /&gt;
** when/where they are arriving &lt;br /&gt;
** where are they staying&lt;br /&gt;
* figure out what to do with the leaders when they are there&lt;br /&gt;
* should we create a welcome pack for these leaders?&lt;br /&gt;
* should we see if they need help in their travel arrangements?&lt;br /&gt;
* should we see if its possible to find a local host for the accomodation (it is always better than going into an hotel)?&lt;br /&gt;
* do we need a budget? if so, how much?&lt;br /&gt;
&lt;br /&gt;
[[Category:Connections Committee]]&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=AppSec_US_2010,_CA/Attending_Owasp_Leaders&amp;diff=88707</id>
		<title>AppSec US 2010, CA/Attending Owasp Leaders</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=AppSec_US_2010,_CA/Attending_Owasp_Leaders&amp;diff=88707"/>
				<updated>2010-09-05T20:40:26Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: /* Developers and QA participating */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Page to manage the participation of the OWASP leaders at the [[AppSec_US_2010,_CA|AppSec USA in Irvine USA]]&lt;br /&gt;
 &lt;br /&gt;
===Attending Leaders - Confirmed===&lt;br /&gt;
&lt;br /&gt;
# [[User:Dancornell|Dan Cornell]]- ''San Antonio Chapter and Global Membership Committee''&lt;br /&gt;
# Tony UV - ''Atlanta Chapter''&lt;br /&gt;
# [[User:Jmanico|Jim Manico]] - ''Podcast Project''&lt;br /&gt;
# [[User:MichaelCoates|Michael Coates]] - ''AppSensor project and Global Membership Committee''&lt;br /&gt;
# [[User:Knoblochmartin|Martin Knobloch]] - ''Education and Connections Committee''&lt;br /&gt;
# [[User:Rsnake|Robert Hansen]] - ''Connections Committee''&lt;br /&gt;
# [[User:Mtesauro|Matt Tesauro]] - ''Live CD project, Board Member''&lt;br /&gt;
# [[User:Wichers|Dave Wichers]] - ''Top 10 project, Board Member''&lt;br /&gt;
# [[User:brennan|Tom Brennan]] - ''NYC Chapter Leader, RFP Criteria project, OWASP-CRM, Board Member''&lt;br /&gt;
# [[User:Jeff_Williams|Jeff Williams]] - ''ESAPI project, Board Member''&lt;br /&gt;
# [[User:Dinis.cruz|Dinis Cruz]] - ''O2 Platform project, Board Member''&lt;br /&gt;
# [[User:Dc|David Campbell]] - ''Denver Chapter, Industry Committee''&lt;br /&gt;
# [[User:Eduprey|Eric Duprey]] - ''Denver Chapter''&lt;br /&gt;
# [[User:Justin42|Justin Clarke]] - ''London Chapter and Connections Committee''&lt;br /&gt;
# Roman Hustad - ''Sacramento Chapter''&lt;br /&gt;
# Peter Dean - ''NYC Chapter Leader''&lt;br /&gt;
# Georg Hess - ''German Chapter, Industry Committee''&lt;br /&gt;
# John Steven - ''NoVA Chapter Lead''&lt;br /&gt;
# [[User:Lorna Alamri|Lorna Alamri]] - ''Connections Committee''&lt;br /&gt;
# [[User:Chris Schmidt|Chris Schmidt]] - ''ESAPI Project''&lt;br /&gt;
&lt;br /&gt;
'''Part of the conference organization'''&lt;br /&gt;
# Cassio Goldschmidt - ''Los Angeles Chapter''&lt;br /&gt;
# [[:User:Tin Zaw|Tin Zaw]] - ''Los Angeles Chapter''&lt;br /&gt;
# [[User:Richard greenberg|Richard Greenberg]] - ''Los Angeles Chapter''&lt;br /&gt;
# [http://twitter.com/nilematotle Neil Matatall] - ''[[http://www.owasp.org/index.php/Orange_County Orange County Chapter]]''&lt;br /&gt;
# Kate Hartmann - OWASP Foundation&lt;br /&gt;
# Alison McNamee - OWASP Foundation (remote support)&lt;br /&gt;
&lt;br /&gt;
===Also attending (part of OWASP community)===&lt;br /&gt;
# Joseph Dawson&lt;br /&gt;
# Howard Fore - ''Atlanta Chapter (Bring a Developer Attendee)''&lt;br /&gt;
# Jon Bango - ''Atlanta Chapter (Bring a Developer Attendee)''&lt;br /&gt;
&lt;br /&gt;
===Key WebAppSec players===&lt;br /&gt;
objective: identfy potential synergies between WebAppSec industry players and OWASP leaders (for example too meet and have a meeting)&lt;br /&gt;
&lt;br /&gt;
* Firefox Browser &lt;br /&gt;
** There are a number of Firefox employees participating and they have shown interest in talking to OWASP about how we can work together&lt;br /&gt;
*** Michael Coates (Owasp Leader)&lt;br /&gt;
*** Sid Stamm&lt;br /&gt;
*** Brandon Sterne&lt;br /&gt;
*** Dan Veditz&lt;br /&gt;
&lt;br /&gt;
===Developers and QA participating===&lt;br /&gt;
'''Sponsored by the Atlanta Chapter'''&lt;br /&gt;
# ''Howard Fore (Atlanta Developer)'' - Howard Fore is a senior web developer in Atlanta, Georgia. He's involved in some high-visibility web projects at the Federal Reserve Bank of Atlanta. Increasing awareness of secure software development practices is an departmental objective for 2010 and he's a member of the security workgroup, which is leading the way in that endeavor. Other practices the security workgroup are implementing include static code analysis and code inspection.&lt;br /&gt;
# ''Jon Bango (Atlanta Developer)'' - Jon Bango is an Information Technology professional with over 13 years experience in the education, financial services and retail industries. Primarily working at the enterprise level, Jon has utilized the J2EE stack in building web applications for the largest home improvement retailer in the world. Most recently he has branched out into RIA technologies working in Adobe Flex and Microsoft Silverlight. Currently, Jon has transitioned into the dark arts at his company’s Information Assurance department in which the groundwork has been laid to utilize his developer talents to create a company wide secure coding initiative.&lt;br /&gt;
# ''August Detlefsen (Oakland Developer)'' - August Detlefsen is a 13+ year Java web architect veteran. As an independent contractor he has developed solutions for such companies as Sun Microsystems, Oracle, VMware, NetApp and others, managing all phases of the software development lifecycle from initial specification to final disposal. August recently began focusing on web application security and has worked on projects for WhiteHat Security, Security Compass, and AppSec Consulting and donated time on the OWASP ESAPI and AppSensor projects.&lt;br /&gt;
&lt;br /&gt;
===Meetings and sessions===&lt;br /&gt;
So far we have identified 6 slots were there will be an event happening around this group&lt;br /&gt;
&lt;br /&gt;
* '''Wed Night''' : 9PM-12PM Drinks at TDB&lt;br /&gt;
* '''Thursday Lunch Break''' : 'OWASP and the Browsers: How can we work together?'&lt;br /&gt;
* '''Thursday After the conference''' : OWASP Leaders meeting&lt;br /&gt;
* '''Thursday Night''' : TBD ''(and maybe the OWASP band?)''&lt;br /&gt;
* '''Friday Lunch Break''' : OWASP Summit 2011&lt;br /&gt;
* '''Friday After the conference''' : AppSec Soccer Tournament&lt;br /&gt;
* '''Friday Night''' : TDB&lt;br /&gt;
&lt;br /&gt;
Note that there are meeting facilities available, so if you need a quite space to meet and talk about OWASP let us know.&lt;br /&gt;
&lt;br /&gt;
=== How to track an OWASP Leader===&lt;br /&gt;
&lt;br /&gt;
Ideally we should be able to track OWASP leaders, the question is how?&lt;br /&gt;
&lt;br /&gt;
What could we give the leaders that would easily identify them (in practical and usable way):&lt;br /&gt;
* a special wristband&lt;br /&gt;
** with a particular color?&lt;br /&gt;
** with a particular logo or message?&lt;br /&gt;
** wth a GPC tag? (or auto-location-tweet)&lt;br /&gt;
* an armband&lt;br /&gt;
* a hat&lt;br /&gt;
* a scarf&lt;br /&gt;
* a t-shirt&lt;br /&gt;
* a bag&lt;br /&gt;
* with a paintball gun?&lt;br /&gt;
&lt;br /&gt;
===AppSec Soccer Tournament===&lt;br /&gt;
'''When:''' Friday after the conference&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Where:''' TBC&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Participants:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
* Dinis Cruz&lt;br /&gt;
* Kate Hartmann (can also be a referre)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===To do (tasks)===&lt;br /&gt;
* for each each participant&lt;br /&gt;
** link to MediaWiki user page&lt;br /&gt;
** add twitter accounts&lt;br /&gt;
*Travel arrangements&lt;br /&gt;
**  map travel dates&lt;br /&gt;
** when/where they are arriving &lt;br /&gt;
** where are they staying&lt;br /&gt;
* figure out what to do with the leaders when they are there&lt;br /&gt;
* should we create a welcome pack for these leaders?&lt;br /&gt;
* should we see if they need help in their travel arrangements?&lt;br /&gt;
* should we see if its possible to find a local host for the accomodation (it is always better than going into an hotel)?&lt;br /&gt;
* do we need a budget? if so, how much?&lt;br /&gt;
&lt;br /&gt;
[[Category:Connections Committee]]&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=AppSensor_Developer_Guide&amp;diff=88612</id>
		<title>AppSensor Developer Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=AppSensor_Developer_Guide&amp;diff=88612"/>
				<updated>2010-09-02T23:58:38Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: /* ResponseAction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AppSensor Developer Guide =&lt;br /&gt;
&lt;br /&gt;
The [[:Category:OWASP AppSensor Project|AppSensor Project]] describes an application layer intrusion detection system.  There is a Java implementation of this system whose basic usage can be found in the [[AppSensor_GettingStarted|Getting Started]] guide. This document describes in more technical detail for developers how to use and extend AppSensor for a specific environment and application.&lt;br /&gt;
&lt;br /&gt;
== Developer Overview ==&lt;br /&gt;
AppSensor is an application layer intrusion detection system.  The concept in implementation is roughly analogous to an intrusion detection (and prevention) system in the network security world.  However, this concept can be applied inside of an application in a more specific way that (importantly) reduces false positives, which is an issue that often plagues network intrusion detection systems.  This means that the core of the AppSensor system performs detection, monitoring, and (possibly) response depending on configuration settings.  &lt;br /&gt;
&lt;br /&gt;
AppSensor has been built to be quite extensible from the ground up.  Most of the system can be appreciably modified to your needs by simply extending certain key interfaces, and modifying the appsensor configuration file appropriately.  This extensible design makes it possible for various configurations to be applied depending upon the application.  For instance, in a small application, you may choose to use a simple file-based model for storing intrusions that are detected, whereas for a larger application, you may have a relational database serving as your data store.  See the '''Extending AppSensor''' section below for specifics on what can be extended.&lt;br /&gt;
&lt;br /&gt;
== Extending AppSensor ==&lt;br /&gt;
Below you will find the individual interfaces you are likely to extend in order to modify AppSensor for your environment. &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== IntrusionStore ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/IntrusionStore.java IntrusionStore] interface represents, simply enough, the storage mechanism for any intrusions that occur in the system.  The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/AppSensorIntrusionDetector.java AppSensorIntrusionDetector] takes care of adding the intrusions to the intrusion store.  The current [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/reference/DefaultIntrusionStore.java DefaultIntrusionStore] class stores all of the intrusions in a simple HashMap.  The class is fairly small and simple, though, so it is trivial to understand it's inner workings and to use similar concepts to build an implementation that suits your environment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the intrusion store&lt;br /&gt;
AppSensor.intrusionStore=org.owasp.appsensor.intrusiondetection.reference.DefaultIntrusionStore&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== ResponseAction ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/ResponseAction.java ResponseAction] interface is used to simply respond to an intrusion once a threshold has been crossed.  The decision for when to respond is handled by the [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/AppSensorIntrusionDetector.java AppSensorIntrusionDetector], but the actual handling of the response is delegated to implementations of this interface.  The only reason to not use the [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/reference/DefaultResponseAction.java DefaultResponseAction] would be if you have additional response actions you need to take, or if you need to modify the handling of one of the existing responses.  Again, the [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/reference/DefaultResponseAction.java DefaultResponseAction] should give you a good starting point for creating your own implementation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the response actions&lt;br /&gt;
AppSensor.responseAction=org.owasp.appsensor.intrusiondetection.reference.DefaultResponseAction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/reference/DefaultResponseAction.java DefaultResponseAction] supports the following actions:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;log&amp;quot; - logs the activity&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;logout&amp;quot; - logs the currently logged in user out (if one exists)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;disable&amp;quot; - disables the account of the currently logged in user (if one exists)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;disableComponent&amp;quot; - disables access to the location of the intrusion using the AppSensorServiceController&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;disableComponentForUser&amp;quot; - disables access to the location of the intrusion using the AppSensorServiceController for the currently logged in user(if one exists)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;emailAdmin&amp;quot; - Email administrator to notify of what action has occurred&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;smsAdmin&amp;quot; - SMS administrator (via email to sms account) to notify of what action has occurred&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Response actions can be configured for individual detection points using properties like: IntrusionDetector.&amp;lt;detection point&amp;gt;.actions=&lt;br /&gt;
&lt;br /&gt;
# list of actions you want executed in the specified order as the threshold for this intrusion is met - &lt;br /&gt;
# ie. log the first time, logout the user the second time, etc.&lt;br /&gt;
IntrusionDetector.IE99.actions=log,logout,disable,disableComponent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== ASUtilities ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/ASUtilities.java ASUtilities] interface handles a collection of concerns.  It handles retrieving the current user of the application (ie. the user that made the current request and/or caused the current intrusion).  In addition, it handles the retrieval of the logger as well as the current HTTP request.  The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/reference/DefaultASUtilities.java DefaultASUtilities] implementation simply delegates to the equivalent ESAPI method calls to retrieve the appropriate data.  If you are not using ESAPI's logging and/or authentication and/or request binding utilities, you'll need to create your own implementation of this class. ''' ''Note: This is the interface you'll need to implement if you are not using ESAPI.'' '''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the utility retriever&lt;br /&gt;
AppSensor.asUtilities=org.owasp.appsensor.reference.DefaultASUtilities&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== TrendLogger ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/trendmonitoring/TrendLogger.java TrendLogger] interface is in place to handle the logging of events in order to monitor trends.  The techniques for doing this vary widely depending upon environment.  You'll most likely not want to use the existing [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/trendmonitoring/reference/InMemoryTrendLogger.java InMemoryTrendLogger] as it will scale very poorly.  It is simply in place as a starting point for other implementations.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the trend logging&lt;br /&gt;
AppSensor.trendLogger=org.owasp.appsensor.trendmonitoring.reference.InMemoryTrendLogger&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=AppSensor_Developer_Guide&amp;diff=88611</id>
		<title>AppSensor Developer Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=AppSensor_Developer_Guide&amp;diff=88611"/>
				<updated>2010-09-02T23:57:01Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: /* ResponseAction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AppSensor Developer Guide =&lt;br /&gt;
&lt;br /&gt;
The [[:Category:OWASP AppSensor Project|AppSensor Project]] describes an application layer intrusion detection system.  There is a Java implementation of this system whose basic usage can be found in the [[AppSensor_GettingStarted|Getting Started]] guide. This document describes in more technical detail for developers how to use and extend AppSensor for a specific environment and application.&lt;br /&gt;
&lt;br /&gt;
== Developer Overview ==&lt;br /&gt;
AppSensor is an application layer intrusion detection system.  The concept in implementation is roughly analogous to an intrusion detection (and prevention) system in the network security world.  However, this concept can be applied inside of an application in a more specific way that (importantly) reduces false positives, which is an issue that often plagues network intrusion detection systems.  This means that the core of the AppSensor system performs detection, monitoring, and (possibly) response depending on configuration settings.  &lt;br /&gt;
&lt;br /&gt;
AppSensor has been built to be quite extensible from the ground up.  Most of the system can be appreciably modified to your needs by simply extending certain key interfaces, and modifying the appsensor configuration file appropriately.  This extensible design makes it possible for various configurations to be applied depending upon the application.  For instance, in a small application, you may choose to use a simple file-based model for storing intrusions that are detected, whereas for a larger application, you may have a relational database serving as your data store.  See the '''Extending AppSensor''' section below for specifics on what can be extended.&lt;br /&gt;
&lt;br /&gt;
== Extending AppSensor ==&lt;br /&gt;
Below you will find the individual interfaces you are likely to extend in order to modify AppSensor for your environment. &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== IntrusionStore ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/IntrusionStore.java IntrusionStore] interface represents, simply enough, the storage mechanism for any intrusions that occur in the system.  The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/AppSensorIntrusionDetector.java AppSensorIntrusionDetector] takes care of adding the intrusions to the intrusion store.  The current [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/reference/DefaultIntrusionStore.java DefaultIntrusionStore] class stores all of the intrusions in a simple HashMap.  The class is fairly small and simple, though, so it is trivial to understand it's inner workings and to use similar concepts to build an implementation that suits your environment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the intrusion store&lt;br /&gt;
AppSensor.intrusionStore=org.owasp.appsensor.intrusiondetection.reference.DefaultIntrusionStore&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== ResponseAction ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/ResponseAction.java ResponseAction] interface is used to simply respond to an intrusion once a threshold has been crossed.  The decision for when to respond is handled by the [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/AppSensorIntrusionDetector.java AppSensorIntrusionDetector], but the actual handling of the response is delegated to implementations of this interface.  The only reason to not use the [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/reference/DefaultResponseAction.java DefaultResponseAction] would be if you have additional response actions you need to take, or if you need to modify the handling of one of the existing responses.  Again, the [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/reference/DefaultResponseAction.java DefaultResponseAction] should give you a good starting point for creating your own implementation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the response actions&lt;br /&gt;
AppSensor.responseAction=org.owasp.appsensor.intrusiondetection.reference.DefaultResponseAction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The DefaultResponseAction supports the following actions:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;log&amp;quot; - logs the activity&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;logout&amp;quot; - logs the currently logged in user out (if one exists)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;disable&amp;quot; - disables the account of the currently logged in user (if one exists)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;disableComponent&amp;quot; - disables access to the location of the intrusion using the AppSensorServiceController&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;disableComponentForUser&amp;quot; - disables access to the location of the intrusion using the AppSensorServiceController for the currently logged in user(if one exists)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;emailAdmin&amp;quot; - Email administrator to notify of what action has occurred&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;quot;smsAdmin&amp;quot; - SMS administrator (via email to sms account) to notify of what action has occurred&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Response actions can be configured for individual detection points using properties like: IntrusionDetector.&amp;lt;detection point&amp;gt;.actions=&lt;br /&gt;
&lt;br /&gt;
# list of actions you want executed in the specified order as the threshold for this intrusion is met - &lt;br /&gt;
# ie. log the first time, logout the user the second time, etc.&lt;br /&gt;
IntrusionDetector.IE99.actions=log,logout,disable,disableComponent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== ASUtilities ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/ASUtilities.java ASUtilities] interface handles a collection of concerns.  It handles retrieving the current user of the application (ie. the user that made the current request and/or caused the current intrusion).  In addition, it handles the retrieval of the logger as well as the current HTTP request.  The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/reference/DefaultASUtilities.java DefaultASUtilities] implementation simply delegates to the equivalent ESAPI method calls to retrieve the appropriate data.  If you are not using ESAPI's logging and/or authentication and/or request binding utilities, you'll need to create your own implementation of this class. ''' ''Note: This is the interface you'll need to implement if you are not using ESAPI.'' '''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the utility retriever&lt;br /&gt;
AppSensor.asUtilities=org.owasp.appsensor.reference.DefaultASUtilities&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== TrendLogger ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/trendmonitoring/TrendLogger.java TrendLogger] interface is in place to handle the logging of events in order to monitor trends.  The techniques for doing this vary widely depending upon environment.  You'll most likely not want to use the existing [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/trendmonitoring/reference/InMemoryTrendLogger.java InMemoryTrendLogger] as it will scale very poorly.  It is simply in place as a starting point for other implementations.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the trend logging&lt;br /&gt;
AppSensor.trendLogger=org.owasp.appsensor.trendmonitoring.reference.InMemoryTrendLogger&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=AppSensor_Developer_Guide&amp;diff=88606</id>
		<title>AppSensor Developer Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=AppSensor_Developer_Guide&amp;diff=88606"/>
				<updated>2010-09-02T23:35:09Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: /* IntrusionStore */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AppSensor Developer Guide =&lt;br /&gt;
&lt;br /&gt;
The [[:Category:OWASP AppSensor Project|AppSensor Project]] describes an application layer intrusion detection system.  There is a Java implementation of this system whose basic usage can be found in the [[AppSensor_GettingStarted|Getting Started]] guide. This document describes in more technical detail for developers how to use and extend AppSensor for a specific environment and application.&lt;br /&gt;
&lt;br /&gt;
== Developer Overview ==&lt;br /&gt;
AppSensor is an application layer intrusion detection system.  The concept in implementation is roughly analogous to an intrusion detection (and prevention) system in the network security world.  However, this concept can be applied inside of an application in a more specific way that (importantly) reduces false positives, which is an issue that often plagues network intrusion detection systems.  This means that the core of the AppSensor system performs detection, monitoring, and (possibly) response depending on configuration settings.  &lt;br /&gt;
&lt;br /&gt;
AppSensor has been built to be quite extensible from the ground up.  Most of the system can be appreciably modified to your needs by simply extending certain key interfaces, and modifying the appsensor configuration file appropriately.  This extensible design makes it possible for various configurations to be applied depending upon the application.  For instance, in a small application, you may choose to use a simple file-based model for storing intrusions that are detected, whereas for a larger application, you may have a relational database serving as your data store.  See the '''Extending AppSensor''' section below for specifics on what can be extended.&lt;br /&gt;
&lt;br /&gt;
== Extending AppSensor ==&lt;br /&gt;
Below you will find the individual interfaces you are likely to extend in order to modify AppSensor for your environment. &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== IntrusionStore ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/IntrusionStore.java IntrusionStore] interface represents, simply enough, the storage mechanism for any intrusions that occur in the system.  The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/AppSensorIntrusionDetector.java AppSensorIntrusionDetector] takes care of adding the intrusions to the intrusion store.  The current [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/reference/DefaultIntrusionStore.java DefaultIntrusionStore] class stores all of the intrusions in a simple HashMap.  The class is fairly small and simple, though, so it is trivial to understand it's inner workings and to use similar concepts to build an implementation that suits your environment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the intrusion store&lt;br /&gt;
AppSensor.intrusionStore=org.owasp.appsensor.intrusiondetection.reference.DefaultIntrusionStore&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== ResponseAction ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/ResponseAction.java ResponseAction] interface is used to simply respond to an intrusion once a threshold has been crossed.  The decision for when to respond is handled by the [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/AppSensorIntrusionDetector.java AppSensorIntrusionDetector], but the actual handling of the response is delegated to implementations of this interface.  The only reason to not use the [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/reference/DefaultResponseAction.java DefaultResponseAction] would be if you have additional response actions you need to take, or if you need to modify the handling of one of the existing responses.  Again, the [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/reference/DefaultResponseAction.java DefaultResponseAction] should give you a good starting point for creating your own implementation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the response actions&lt;br /&gt;
AppSensor.responseAction=org.owasp.appsensor.intrusiondetection.reference.DefaultResponseAction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== ASUtilities ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/ASUtilities.java ASUtilities] interface handles a collection of concerns.  It handles retrieving the current user of the application (ie. the user that made the current request and/or caused the current intrusion).  In addition, it handles the retrieval of the logger as well as the current HTTP request.  The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/reference/DefaultASUtilities.java DefaultASUtilities] implementation simply delegates to the equivalent ESAPI method calls to retrieve the appropriate data.  If you are not using ESAPI's logging and/or authentication and/or request binding utilities, you'll need to create your own implementation of this class. ''' ''Note: This is the interface you'll need to implement if you are not using ESAPI.'' '''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the utility retriever&lt;br /&gt;
AppSensor.asUtilities=org.owasp.appsensor.reference.DefaultASUtilities&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== TrendLogger ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/trendmonitoring/TrendLogger.java TrendLogger] interface is in place to handle the logging of events in order to monitor trends.  The techniques for doing this vary widely depending upon environment.  You'll most likely not want to use the existing [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/trendmonitoring/reference/InMemoryTrendLogger.java InMemoryTrendLogger] as it will scale very poorly.  It is simply in place as a starting point for other implementations.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the trend logging&lt;br /&gt;
AppSensor.trendLogger=org.owasp.appsensor.trendmonitoring.reference.InMemoryTrendLogger&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=AppSensor_Developer_Guide&amp;diff=88605</id>
		<title>AppSensor Developer Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=AppSensor_Developer_Guide&amp;diff=88605"/>
				<updated>2010-09-02T23:34:02Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: /* ResponseAction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AppSensor Developer Guide =&lt;br /&gt;
&lt;br /&gt;
The [[:Category:OWASP AppSensor Project|AppSensor Project]] describes an application layer intrusion detection system.  There is a Java implementation of this system whose basic usage can be found in the [[AppSensor_GettingStarted|Getting Started]] guide. This document describes in more technical detail for developers how to use and extend AppSensor for a specific environment and application.&lt;br /&gt;
&lt;br /&gt;
== Developer Overview ==&lt;br /&gt;
AppSensor is an application layer intrusion detection system.  The concept in implementation is roughly analogous to an intrusion detection (and prevention) system in the network security world.  However, this concept can be applied inside of an application in a more specific way that (importantly) reduces false positives, which is an issue that often plagues network intrusion detection systems.  This means that the core of the AppSensor system performs detection, monitoring, and (possibly) response depending on configuration settings.  &lt;br /&gt;
&lt;br /&gt;
AppSensor has been built to be quite extensible from the ground up.  Most of the system can be appreciably modified to your needs by simply extending certain key interfaces, and modifying the appsensor configuration file appropriately.  This extensible design makes it possible for various configurations to be applied depending upon the application.  For instance, in a small application, you may choose to use a simple file-based model for storing intrusions that are detected, whereas for a larger application, you may have a relational database serving as your data store.  See the '''Extending AppSensor''' section below for specifics on what can be extended.&lt;br /&gt;
&lt;br /&gt;
== Extending AppSensor ==&lt;br /&gt;
Below you will find the individual interfaces you are likely to extend in order to modify AppSensor for your environment. &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== IntrusionStore ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/IntrusionStore.java IntrusionStore] interface represents, simply enough, the storage mechanism for any intrusions that occur in the system.  The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/AppSensorIntrusionDetector.java AppSensorIntrusionDetector] takes care of adding the intrusions to the intrusion store.  The current [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/reference/DefaultIntrusionStore.java DefaultIntrusionStore] class stores all of the intrusions in a simple HashMap.  The class is fairly small and simple, though, so it is trivial to understand it's inner workings and to use similar concepts to build an implementation that suits your environment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the response actions&lt;br /&gt;
AppSensor.responseAction=org.owasp.appsensor.intrusiondetection.reference.DefaultResponseAction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== ResponseAction ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/ResponseAction.java ResponseAction] interface is used to simply respond to an intrusion once a threshold has been crossed.  The decision for when to respond is handled by the [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/AppSensorIntrusionDetector.java AppSensorIntrusionDetector], but the actual handling of the response is delegated to implementations of this interface.  The only reason to not use the [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/reference/DefaultResponseAction.java DefaultResponseAction] would be if you have additional response actions you need to take, or if you need to modify the handling of one of the existing responses.  Again, the [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/intrusiondetection/reference/DefaultResponseAction.java DefaultResponseAction] should give you a good starting point for creating your own implementation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the response actions&lt;br /&gt;
AppSensor.responseAction=org.owasp.appsensor.intrusiondetection.reference.DefaultResponseAction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== ASUtilities ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/ASUtilities.java ASUtilities] interface handles a collection of concerns.  It handles retrieving the current user of the application (ie. the user that made the current request and/or caused the current intrusion).  In addition, it handles the retrieval of the logger as well as the current HTTP request.  The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/reference/DefaultASUtilities.java DefaultASUtilities] implementation simply delegates to the equivalent ESAPI method calls to retrieve the appropriate data.  If you are not using ESAPI's logging and/or authentication and/or request binding utilities, you'll need to create your own implementation of this class. ''' ''Note: This is the interface you'll need to implement if you are not using ESAPI.'' '''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the utility retriever&lt;br /&gt;
AppSensor.asUtilities=org.owasp.appsensor.reference.DefaultASUtilities&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== TrendLogger ====&lt;br /&gt;
The [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/trendmonitoring/TrendLogger.java TrendLogger] interface is in place to handle the logging of events in order to monitor trends.  The techniques for doing this vary widely depending upon environment.  You'll most likely not want to use the existing [http://code.google.com/p/appsensor/source/browse/trunk/AppSensor/src/main/java/org/owasp/appsensor/trendmonitoring/reference/InMemoryTrendLogger.java InMemoryTrendLogger] as it will scale very poorly.  It is simply in place as a starting point for other implementations.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The setting you'll need to modify in appsensor.properties to enable your own implementation is:&lt;br /&gt;
&lt;br /&gt;
# This is the class that handles the trend logging&lt;br /&gt;
AppSensor.trendLogger=org.owasp.appsensor.trendmonitoring.reference.InMemoryTrendLogger&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:How_to_perform_HTML_entity_encoding_in_Java&amp;diff=37196</id>
		<title>Talk:How to perform HTML entity encoding in Java</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:How_to_perform_HTML_entity_encoding_in_Java&amp;diff=37196"/>
				<updated>2008-08-25T21:48:51Z</updated>
		
		<summary type="html">&lt;p&gt;Augustd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Status==&lt;br /&gt;
Released [[User:Stephendv|Stephendv]] 09:51, 14 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
==Reviewers==&lt;br /&gt;
* Dave Read&lt;br /&gt;
&lt;br /&gt;
==General Discussion==&lt;br /&gt;
&lt;br /&gt;
The Apache Jakarta Commons Lang package (as of version 2.2) contains a StringEscapeUtils class that contains this functionality.  See the escapeHtml(String) method.  The documentation states: &lt;br /&gt;
&lt;br /&gt;
    Escapes the characters in a String using HTML entities.&lt;br /&gt;
&lt;br /&gt;
    Supports all known HTML 4.0 entities, including funky accents. Note that the commonly used apostrophe escape character (&amp;amp;apos;) is not a legal entity and so is not supported).&lt;br /&gt;
&lt;br /&gt;
Why go to all the trouble of computing int len and running the for loop if the input String is null? I suggest adding a sanity check to the top of the method: &lt;br /&gt;
&lt;br /&gt;
    if (s == null) return &amp;quot;&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Augustd</name></author>	</entry>

	</feed>