|  | # | 
|  | # OWASP Enterprise Security API (ESAPI) Properties file -- PRODUCTION Version | 
|  | # | 
|  | # This file is part of the Open Web de.ids_mannheim.korap.news.Application Security Project (OWASP) | 
|  | # Enterprise Security API (ESAPI) project. For details, please see | 
|  | # http://www.owasp.org/index.php/ESAPI. | 
|  | # | 
|  | # Copyright (c) 2008,2009 - The OWASP Foundation | 
|  | # | 
|  | # DISCUSS: This may cause a major backwards compatibility issue, etc. but | 
|  | #		   from a name space perspective, we probably should have prefaced | 
|  | #		   all the property names with ESAPI or at least OWASP. Otherwise | 
|  | #		   there could be problems is someone loads this properties file into | 
|  | #		   the System properties.  We could also put this file into the | 
|  | #		   esapi.jar file (perhaps as a ResourceBundle) and then allow an external | 
|  | #		   ESAPI properties be defined that would overwrite these defaults. | 
|  | #		   That keeps the application's properties relatively simple as usually | 
|  | #		   they will only want to override a few properties. If looks like we | 
|  | #		   already support multiple override levels of this in the | 
|  | #		   DefaultSecurityConfiguration class, but I'm suggesting placing the | 
|  | #		   defaults in the esapi.jar itself. That way, if the jar is signed, | 
|  | #		   we could detect if those properties had been tampered with. (The | 
|  | #		   code to isSystem the jar signatures is pretty simple... maybe 70-90 LOC, | 
|  | #		   but off course there is an execution penalty (similar to the way | 
|  | #		   that the separate sunjce.jar used to be when a class from it was | 
|  | #		   first loaded). Thoughts? | 
|  | ############################################################################### | 
|  |  | 
|  | ESAPI.Randomizer=org.owasp.esapi.reference.DefaultRandomizer | 
|  | ESAPI.Validator=org.owasp.esapi.reference.DefaultValidator | 
|  |  | 
|  | #=========================================================================== | 
|  | # ESAPI Encoder | 
|  | # | 
|  | # ESAPI canonicalizes input before validation to prevent bypassing filters with encoded attacks. | 
|  | # Failure to canonicalize input is a very common mistake when implementing validation schemes. | 
|  | # Canonicalization is automatic when using the ESAPI Validator, but you can also use the | 
|  | # following code to canonicalize data. | 
|  | # | 
|  | #      ESAPI.Encoder().canonicalize( "%22hello world"" ); | 
|  | # | 
|  | # Multiple encoding is when a single encoding format is applied multiple times. Allowing | 
|  | # multiple encoding is strongly discouraged. | 
|  | Encoder.AllowMultipleEncoding=false | 
|  |  | 
|  | # Mixed encoding is when multiple different encoding formats are applied, or when | 
|  | # multiple formats are nested. Allowing multiple encoding is strongly discouraged. | 
|  | Encoder.AllowMixedEncoding=false | 
|  |  | 
|  | # The default list of codecs to apply when canonicalizing untrusted data. The list should include the codecs | 
|  | # for all downstream interpreters or decoders. For example, if the data is likely to end up in a URL, HTML, or | 
|  | # inside JavaScript, then the list of codecs below is appropriate. The order of the list is not terribly important. | 
|  | Encoder.DefaultCodecList=HTMLEntityCodec,PercentCodec,JavaScriptCodec | 
|  |  | 
|  |  | 
|  | #=========================================================================== | 
|  | # ESAPI Encryption | 
|  | # | 
|  | # The ESAPI Encryptor provides basic cryptographic functions with a simplified API. | 
|  | # To get started, generate a new key using java -classpath esapi.jar org.owasp.esapi.reference.crypto.JavaEncryptor | 
|  | # There is not currently any support for key rotation, so be careful when changing your key and salt as it | 
|  | # will invalidate all signed, encrypted, and hashed data. | 
|  | # | 
|  | # WARNING: Not all combinations of algorithms and key lengths are supported. | 
|  | # If you choose to use a key length greater than 128, you MUST download the | 
|  | # unlimited strength policy files and install in the lib directory of your JRE/JDK. | 
|  | # See http://java.sun.com/javase/downloads/index.jsp for more information. | 
|  | # | 
|  | # Backward compatibility with ESAPI Java 1.4 is supported by the two deprecated API | 
|  | # methods, Encryptor.encrypt(String) and Encryptor.decrypt(String). However, whenever | 
|  | # possible, these methods should be avoided as they use ECB cipher mode, which in almost | 
|  | # all circumstances a poor choice because of it's weakness. CBC cipher mode is the default | 
|  | # for the new Encryptor encrypt / decrypt methods for ESAPI Java 2.0.  In general, you | 
|  | # should only use this compatibility setting if you have persistent data encrypted with | 
|  | # version 1.4 and even then, you should ONLY set this compatibility mode UNTIL | 
|  | # you have decrypted all of your old encrypted data and then re-encrypted it with | 
|  | # ESAPI 2.0 using CBC mode. If you have some reason to mix the deprecated 1.4 mode | 
|  | # with the new 2.0 methods, make sure that you use the same cipher algorithm for both | 
|  | # (256-bit AES was the default for 1.4; 128-bit is the default for 2.0; see below for | 
|  | # more details.) Otherwise, you will have to use the new 2.0 encrypt / decrypt methods | 
|  | # where you can specify a SecretKey. (Note that if you are using the 256-bit AES, | 
|  | # that requires downloading the special jurisdiction policy files mentioned above.) | 
|  | # | 
|  | #		***** IMPORTANT: Do NOT forget to replace these with your own values! ***** | 
|  | # To calculate these values, you can run: | 
|  | #		java -classpath esapi.jar org.owasp.esapi.reference.crypto.JavaEncryptor | 
|  | # | 
|  | #Encryptor.MasterKey= | 
|  | ## default key | 
|  | #Encryptor.MasterSalt=434fsdferbs7sdf5sdf+d23=a | 
|  |  | 
|  | #============================================================== | 
|  | Encryptor.MasterKey=Nowq7w96tBckpYCPkoBtjQ== | 
|  | Encryptor.MasterSalt=vRaKzzh7hLp9v3CXi7KDI/1yO3A= | 
|  | #============================================================== | 
|  |  | 
|  | #=========================================================================== | 
|  | # ESAPI Intrusion Detection | 
|  | # | 
|  | # Each event has a base to which .count, .interval, and .action are added | 
|  | # The IntrusionException will fire if we receive "count" events within "interval" seconds | 
|  | # The IntrusionDetector is configurable to take the following actions: log, logout, and disable | 
|  | #  (multiple actions separated by commas are allowed e.g. event.test.actions=log,disable | 
|  | # | 
|  | # Custom Events | 
|  | # Names must start with "event." as the base | 
|  | # Use IntrusionDetector.addEvent( "test" ) in your code to trigger "event.test" here | 
|  | # You can also disable intrusion detection completely by changing | 
|  | # the following parameter to true | 
|  | # | 
|  | IntrusionDetector.Disable=false | 
|  | # | 
|  | IntrusionDetector.event.test.count=2 | 
|  | IntrusionDetector.event.test.interval=10 | 
|  | IntrusionDetector.event.test.actions=disable,log | 
|  |  | 
|  | # Exception Events | 
|  | # All EnterpriseSecurityExceptions are registered automatically | 
|  | # Call IntrusionDetector.getInstance().addException(e) for Exceptions that do not extend EnterpriseSecurityException | 
|  | # Use the fully qualified classname of the exception as the base | 
|  |  | 
|  | # any intrusion is an attack | 
|  | IntrusionDetector.org.owasp.esapi.errors.IntrusionException.count=1 | 
|  | IntrusionDetector.org.owasp.esapi.errors.IntrusionException.interval=1 | 
|  | IntrusionDetector.org.owasp.esapi.errors.IntrusionException.actions=log,disable,logout | 
|  |  | 
|  | # for test purposes | 
|  | # CHECKME: Shouldn't there be something in the property name itself that designates | 
|  | #		   that these are for testing??? | 
|  | IntrusionDetector.org.owasp.esapi.errors.IntegrityException.count=10 | 
|  | IntrusionDetector.org.owasp.esapi.errors.IntegrityException.interval=5 | 
|  | IntrusionDetector.org.owasp.esapi.errors.IntegrityException.actions=log,disable,logout | 
|  |  | 
|  | # rapid validation errors indicate scans or attacks in progress | 
|  | org.owasp.esapi.errors.ValidationException.count=10 | 
|  | org.owasp.esapi.errors.ValidationException.interval=10 | 
|  | org.owasp.esapi.errors.ValidationException.actions=log,logout | 
|  |  | 
|  | # sessions jumping between hosts indicates session hijacking | 
|  | IntrusionDetector.org.owasp.esapi.errors.AuthenticationHostException.count=2 | 
|  | IntrusionDetector.org.owasp.esapi.errors.AuthenticationHostException.interval=10 | 
|  | IntrusionDetector.org.owasp.esapi.errors.AuthenticationHostException.actions=log,logout | 
|  |  | 
|  |  | 
|  | #=========================================================================== | 
|  | # ESAPI Validation | 
|  | # | 
|  | # The ESAPI Validator works on regular expressions with defined names. You can define names | 
|  | # either here, or you may define application specific patterns in a separate file defined below. | 
|  | # This allows enterprises to specify both organizational standards as well as application specific | 
|  | # validation rules. | 
|  | # | 
|  | Validator.ConfigurationFile=validation.properties | 
|  |  | 
|  | # Validators used by ESAPI | 
|  | Validator.AccountName=^[a-zA-Z0-9]{3,20}$ | 
|  | Validator.SystemCommand=^[a-zA-Z\\-\\/]{1,64}$ | 
|  | Validator.RoleName=^[a-z]{1,20}$ | 
|  |  | 
|  | #the word TEST below should be changed to your application | 
|  | #name - only relative URL's are supported | 
|  | Validator.Redirect=^\\/test.*$ | 
|  |  | 
|  | # Global HTTP Validation Rules | 
|  | # Values with Base64 encoded data (e.g. encrypted state) will need at least [a-zA-Z0-9\/+=] | 
|  | Validator.HTTPScheme=^(http|https)$ | 
|  | Validator.HTTPServerName=^[a-zA-Z0-9_.\\-]*$ | 
|  | Validator.HTTPParameterName=^[a-zA-Z0-9_]{1,32}$ | 
|  | Validator.HTTPParameterValue=^[a-zA-Z0-9.\\-\\/+=@_ ]*$ | 
|  | Validator.HTTPCookieName=^[a-zA-Z0-9\\-_]{1,32}$ | 
|  | Validator.HTTPCookieValue=^[a-zA-Z0-9\\-\\/+=_ ]*$ | 
|  | Validator.HTTPHeaderName=^[a-zA-Z0-9\\-_]{1,32}$ | 
|  | Validator.HTTPHeaderValue=^[a-zA-Z0-9()\\-=\\*\\.\\?;,+\\/:&_ ]*$ | 
|  | Validator.HTTPContextPath=^\\/?[a-zA-Z0-9.\\-\\/_]*$ | 
|  | Validator.HTTPServletPath=^[a-zA-Z0-9.\\-\\/_]*$ | 
|  | Validator.HTTPPath=^[a-zA-Z0-9.\\-_]*$ | 
|  | Validator.HTTPQueryString=^[a-zA-Z0-9()\\-=\\*\\.\\?;,+\\/:&_ %]*$ | 
|  | Validator.HTTPURI=^[a-zA-Z0-9()\\-=\\*\\.\\?;,+\\/:&_ ]*$ | 
|  | Validator.HTTPURL=^.*$ | 
|  | Validator.HTTPJSESSIONID=^[A-Z0-9]{10,30}$ | 
|  |  | 
|  | # Validation of file related input | 
|  | Validator.FileName=^[a-zA-Z0-9!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$ | 
|  | Validator.DirectoryName=^[a-zA-Z0-9:/\\\\!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$ | 
|  |  | 
|  | # Validation of dates. Controls whether or not 'lenient' dates are accepted. | 
|  | # See DataFormat.setLenient(boolean flag) for further details. | 
|  | Validator.AcceptLenientDates=false |