<?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=Shruti+kulkarni</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=Shruti+kulkarni"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Shruti_kulkarni"/>
		<updated>2026-05-07T07:51:28Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254163</id>
		<title>OWASP Security Busters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254163"/>
				<updated>2019-08-26T11:35:08Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Getting Involved */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Project About==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
{{:Template:Project About&lt;br /&gt;
   |project_name=Security Busters&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
   |leader__name2=Stefano Belloro&lt;br /&gt;
   |leader__email2=Stefano.belloro@gmail.com&lt;br /&gt;
   |leader__name3=Alexios Mylonas&lt;br /&gt;
   |leader__email3=alexios.mylonas@owasp.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==OWASP Documentation Project Template==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	The main deliverable of this project would be an assessment of the current privacy protection that is offered by popular web browsers for mobile devices (Android, iOS) and desktops. We will document amongst other things the following:&lt;br /&gt;
a.	browser details: name, version number, underlying OS&lt;br /&gt;
&lt;br /&gt;
b.	Protection against tracking mechanism, Tracking mechanism used (other than cookie)&lt;br /&gt;
&lt;br /&gt;
c.	Capability and usability in removing the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
d.	Capability of the browser to show/list the data from the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
e.	Presence of addons that list/delete the data&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
This project would look at different browsers that are used by general population and understand the tracking mechanisms (other than cookies) employed by the browser. These tracking mechanisms are not visible like cookies and need to be explored by getting into developer tools on the browser&lt;br /&gt;
This sort of tracking has an impact on privacy and to some extent on security. &lt;br /&gt;
This project would also look at how these tracking mechanisms can be removed or at least how the contents of these tracking mechanisms can be deleted&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GNU General Public License&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q3, 2019&lt;br /&gt;
* Start of the project&lt;br /&gt;
* Identify team members&lt;br /&gt;
* Design testbed (use of vms, use of phones)&lt;br /&gt;
* Identify different browsers and their versions for testing&lt;br /&gt;
&lt;br /&gt;
Q4, 2019&lt;br /&gt;
&lt;br /&gt;
* Implement testbed&lt;br /&gt;
* Install browsers on VMS&lt;br /&gt;
* Commence testing and document the results&lt;br /&gt;
* Publicize the results on the wiki&lt;br /&gt;
&lt;br /&gt;
The plan to start by replicating the experiments/methodology that is found here: &lt;br /&gt;
Belloro, S., &amp;amp; Mylonas, A. (2018). I know what you did last summer: New persistent tracking mechanisms in the wild. IEEE Access, 6, 52779-52792.&lt;br /&gt;
, and has been presented by Alexios to the London Chapter meeting in November 2018. Then, we plan to expand the work by including other tracking technologies and third-party software (i.e. addons) that can be used to enhance the protection that is offered by current browsers.&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Involvement in the development and promotion of &amp;lt;strong&amp;gt;Security busters&amp;lt;/strong&amp;gt; is actively encouraged!&lt;br /&gt;
You do not have to be a security expert or a programmer to contribute.&lt;br /&gt;
Some of the ways you can help are as follows:&lt;br /&gt;
1. Share the name of the browser on which you have noticed privacy issues&lt;br /&gt;
2. Let us know if you have identified any databases that store user information&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Installation Package]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves What's New (Revision History)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Wiki Home Page]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Slide Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Video]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
   leader_name1=Shruti Kulkarni&lt;br /&gt;
   leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
   leader__name2=Stefano Belloro&lt;br /&gt;
   leader__email2=Stefano.belloro@gmail.com&lt;br /&gt;
   leader__name3=Alexios Mylonas&lt;br /&gt;
   leader__email3=alexios.mylonas@owasp.org&lt;br /&gt;
&lt;br /&gt;
[mailto://shruti.kulkarni@owasp.org Shruti Kulkarni]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to other OWASP Projects that are similar to yours. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[OWASP_Code_Project_Template]]&lt;br /&gt;
* [[OWASP_Tool_Project_Template]]&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_DOC.jpg|link=https://www.owasp.org/index.php/Category:OWASP_Document]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|GNU General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]] [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254162</id>
		<title>OWASP Security Busters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254162"/>
				<updated>2019-08-26T11:34:45Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Getting Involved */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Project About==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
{{:Template:Project About&lt;br /&gt;
   |project_name=Security Busters&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
   |leader__name2=Stefano Belloro&lt;br /&gt;
   |leader__email2=Stefano.belloro@gmail.com&lt;br /&gt;
   |leader__name3=Alexios Mylonas&lt;br /&gt;
   |leader__email3=alexios.mylonas@owasp.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==OWASP Documentation Project Template==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	The main deliverable of this project would be an assessment of the current privacy protection that is offered by popular web browsers for mobile devices (Android, iOS) and desktops. We will document amongst other things the following:&lt;br /&gt;
a.	browser details: name, version number, underlying OS&lt;br /&gt;
&lt;br /&gt;
b.	Protection against tracking mechanism, Tracking mechanism used (other than cookie)&lt;br /&gt;
&lt;br /&gt;
c.	Capability and usability in removing the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
d.	Capability of the browser to show/list the data from the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
e.	Presence of addons that list/delete the data&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
This project would look at different browsers that are used by general population and understand the tracking mechanisms (other than cookies) employed by the browser. These tracking mechanisms are not visible like cookies and need to be explored by getting into developer tools on the browser&lt;br /&gt;
This sort of tracking has an impact on privacy and to some extent on security. &lt;br /&gt;
This project would also look at how these tracking mechanisms can be removed or at least how the contents of these tracking mechanisms can be deleted&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GNU General Public License&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q3, 2019&lt;br /&gt;
* Start of the project&lt;br /&gt;
* Identify team members&lt;br /&gt;
* Design testbed (use of vms, use of phones)&lt;br /&gt;
* Identify different browsers and their versions for testing&lt;br /&gt;
&lt;br /&gt;
Q4, 2019&lt;br /&gt;
&lt;br /&gt;
* Implement testbed&lt;br /&gt;
* Install browsers on VMS&lt;br /&gt;
* Commence testing and document the results&lt;br /&gt;
* Publicize the results on the wiki&lt;br /&gt;
&lt;br /&gt;
The plan to start by replicating the experiments/methodology that is found here: &lt;br /&gt;
Belloro, S., &amp;amp; Mylonas, A. (2018). I know what you did last summer: New persistent tracking mechanisms in the wild. IEEE Access, 6, 52779-52792.&lt;br /&gt;
, and has been presented by Alexios to the London Chapter meeting in November 2018. Then, we plan to expand the work by including other tracking technologies and third-party software (i.e. addons) that can be used to enhance the protection that is offered by current browsers.&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Involvement in the development and promotion of &amp;lt;strong&amp;gt;Documentation Project Template&amp;lt;/strong&amp;gt; is actively encouraged!&lt;br /&gt;
You do not have to be a security expert or a programmer to contribute.&lt;br /&gt;
Some of the ways you can help are as follows:&lt;br /&gt;
1. Share the name of the browser on which you have noticed privacy issues&lt;br /&gt;
2. Let us know if you have identified any databases that store user information&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Installation Package]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves What's New (Revision History)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Wiki Home Page]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Slide Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Video]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
   leader_name1=Shruti Kulkarni&lt;br /&gt;
   leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
   leader__name2=Stefano Belloro&lt;br /&gt;
   leader__email2=Stefano.belloro@gmail.com&lt;br /&gt;
   leader__name3=Alexios Mylonas&lt;br /&gt;
   leader__email3=alexios.mylonas@owasp.org&lt;br /&gt;
&lt;br /&gt;
[mailto://shruti.kulkarni@owasp.org Shruti Kulkarni]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to other OWASP Projects that are similar to yours. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[OWASP_Code_Project_Template]]&lt;br /&gt;
* [[OWASP_Tool_Project_Template]]&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_DOC.jpg|link=https://www.owasp.org/index.php/Category:OWASP_Document]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|GNU General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]] [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254161</id>
		<title>OWASP Security Busters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254161"/>
				<updated>2019-08-26T11:34:34Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Getting Involved */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Project About==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
{{:Template:Project About&lt;br /&gt;
   |project_name=Security Busters&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
   |leader__name2=Stefano Belloro&lt;br /&gt;
   |leader__email2=Stefano.belloro@gmail.com&lt;br /&gt;
   |leader__name3=Alexios Mylonas&lt;br /&gt;
   |leader__email3=alexios.mylonas@owasp.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==OWASP Documentation Project Template==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	The main deliverable of this project would be an assessment of the current privacy protection that is offered by popular web browsers for mobile devices (Android, iOS) and desktops. We will document amongst other things the following:&lt;br /&gt;
a.	browser details: name, version number, underlying OS&lt;br /&gt;
&lt;br /&gt;
b.	Protection against tracking mechanism, Tracking mechanism used (other than cookie)&lt;br /&gt;
&lt;br /&gt;
c.	Capability and usability in removing the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
d.	Capability of the browser to show/list the data from the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
e.	Presence of addons that list/delete the data&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
This project would look at different browsers that are used by general population and understand the tracking mechanisms (other than cookies) employed by the browser. These tracking mechanisms are not visible like cookies and need to be explored by getting into developer tools on the browser&lt;br /&gt;
This sort of tracking has an impact on privacy and to some extent on security. &lt;br /&gt;
This project would also look at how these tracking mechanisms can be removed or at least how the contents of these tracking mechanisms can be deleted&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GNU General Public License&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q3, 2019&lt;br /&gt;
* Start of the project&lt;br /&gt;
* Identify team members&lt;br /&gt;
* Design testbed (use of vms, use of phones)&lt;br /&gt;
* Identify different browsers and their versions for testing&lt;br /&gt;
&lt;br /&gt;
Q4, 2019&lt;br /&gt;
&lt;br /&gt;
* Implement testbed&lt;br /&gt;
* Install browsers on VMS&lt;br /&gt;
* Commence testing and document the results&lt;br /&gt;
* Publicize the results on the wiki&lt;br /&gt;
&lt;br /&gt;
The plan to start by replicating the experiments/methodology that is found here: &lt;br /&gt;
Belloro, S., &amp;amp; Mylonas, A. (2018). I know what you did last summer: New persistent tracking mechanisms in the wild. IEEE Access, 6, 52779-52792.&lt;br /&gt;
, and has been presented by Alexios to the London Chapter meeting in November 2018. Then, we plan to expand the work by including other tracking technologies and third-party software (i.e. addons) that can be used to enhance the protection that is offered by current browsers.&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
Involvement in the development and promotion of &amp;lt;strong&amp;gt;Documentation Project Template&amp;lt;/strong&amp;gt; is actively encouraged!&lt;br /&gt;
You do not have to be a security expert or a programmer to contribute.&lt;br /&gt;
Some of the ways you can help are as follows:&lt;br /&gt;
1. Share the name of the browser on which you have noticed privacy issues&lt;br /&gt;
2. Let us know if you have identified any databases that store user information&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Installation Package]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves What's New (Revision History)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Wiki Home Page]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Slide Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Video]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
   leader_name1=Shruti Kulkarni&lt;br /&gt;
   leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
   leader__name2=Stefano Belloro&lt;br /&gt;
   leader__email2=Stefano.belloro@gmail.com&lt;br /&gt;
   leader__name3=Alexios Mylonas&lt;br /&gt;
   leader__email3=alexios.mylonas@owasp.org&lt;br /&gt;
&lt;br /&gt;
[mailto://shruti.kulkarni@owasp.org Shruti Kulkarni]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to other OWASP Projects that are similar to yours. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[OWASP_Code_Project_Template]]&lt;br /&gt;
* [[OWASP_Tool_Project_Template]]&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_DOC.jpg|link=https://www.owasp.org/index.php/Category:OWASP_Document]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|GNU General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]] [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254160</id>
		<title>OWASP Security Busters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254160"/>
				<updated>2019-08-26T11:32:25Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Project Leader */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Project About==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
{{:Template:Project About&lt;br /&gt;
   |project_name=Security Busters&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
   |leader__name2=Stefano Belloro&lt;br /&gt;
   |leader__email2=Stefano.belloro@gmail.com&lt;br /&gt;
   |leader__name3=Alexios Mylonas&lt;br /&gt;
   |leader__email3=alexios.mylonas@owasp.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==OWASP Documentation Project Template==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	The main deliverable of this project would be an assessment of the current privacy protection that is offered by popular web browsers for mobile devices (Android, iOS) and desktops. We will document amongst other things the following:&lt;br /&gt;
a.	browser details: name, version number, underlying OS&lt;br /&gt;
&lt;br /&gt;
b.	Protection against tracking mechanism, Tracking mechanism used (other than cookie)&lt;br /&gt;
&lt;br /&gt;
c.	Capability and usability in removing the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
d.	Capability of the browser to show/list the data from the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
e.	Presence of addons that list/delete the data&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
This project would look at different browsers that are used by general population and understand the tracking mechanisms (other than cookies) employed by the browser. These tracking mechanisms are not visible like cookies and need to be explored by getting into developer tools on the browser&lt;br /&gt;
This sort of tracking has an impact on privacy and to some extent on security. &lt;br /&gt;
This project would also look at how these tracking mechanisms can be removed or at least how the contents of these tracking mechanisms can be deleted&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GNU General Public License&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q3, 2019&lt;br /&gt;
* Start of the project&lt;br /&gt;
* Identify team members&lt;br /&gt;
* Design testbed (use of vms, use of phones)&lt;br /&gt;
* Identify different browsers and their versions for testing&lt;br /&gt;
&lt;br /&gt;
Q4, 2019&lt;br /&gt;
&lt;br /&gt;
* Implement testbed&lt;br /&gt;
* Install browsers on VMS&lt;br /&gt;
* Commence testing and document the results&lt;br /&gt;
* Publicize the results on the wiki&lt;br /&gt;
&lt;br /&gt;
The plan to start by replicating the experiments/methodology that is found here: &lt;br /&gt;
Belloro, S., &amp;amp; Mylonas, A. (2018). I know what you did last summer: New persistent tracking mechanisms in the wild. IEEE Access, 6, 52779-52792.&lt;br /&gt;
, and has been presented by Alexios to the London Chapter meeting in November 2018. Then, we plan to expand the work by including other tracking technologies and third-party software (i.e. addons) that can be used to enhance the protection that is offered by current browsers.&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Involvement in the development and promotion of &amp;lt;strong&amp;gt;Documentation Project Template&amp;lt;/strong&amp;gt; is actively encouraged!&lt;br /&gt;
You do not have to be a security expert or a programmer to contribute.&lt;br /&gt;
Some of the ways you can help are as follows:&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Installation Package]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves What's New (Revision History)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Wiki Home Page]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Slide Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Video]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
   leader_name1=Shruti Kulkarni&lt;br /&gt;
   leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
   leader__name2=Stefano Belloro&lt;br /&gt;
   leader__email2=Stefano.belloro@gmail.com&lt;br /&gt;
   leader__name3=Alexios Mylonas&lt;br /&gt;
   leader__email3=alexios.mylonas@owasp.org&lt;br /&gt;
&lt;br /&gt;
[mailto://shruti.kulkarni@owasp.org Shruti Kulkarni]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to other OWASP Projects that are similar to yours. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[OWASP_Code_Project_Template]]&lt;br /&gt;
* [[OWASP_Tool_Project_Template]]&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_DOC.jpg|link=https://www.owasp.org/index.php/Category:OWASP_Document]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|GNU General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]] [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254159</id>
		<title>OWASP Security Busters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254159"/>
				<updated>2019-08-26T11:31:58Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Project Leader */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Project About==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
{{:Template:Project About&lt;br /&gt;
   |project_name=Security Busters&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
   |leader__name2=Stefano Belloro&lt;br /&gt;
   |leader__email2=Stefano.belloro@gmail.com&lt;br /&gt;
   |leader__name3=Alexios Mylonas&lt;br /&gt;
   |leader__email3=alexios.mylonas@owasp.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==OWASP Documentation Project Template==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	The main deliverable of this project would be an assessment of the current privacy protection that is offered by popular web browsers for mobile devices (Android, iOS) and desktops. We will document amongst other things the following:&lt;br /&gt;
a.	browser details: name, version number, underlying OS&lt;br /&gt;
&lt;br /&gt;
b.	Protection against tracking mechanism, Tracking mechanism used (other than cookie)&lt;br /&gt;
&lt;br /&gt;
c.	Capability and usability in removing the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
d.	Capability of the browser to show/list the data from the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
e.	Presence of addons that list/delete the data&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
This project would look at different browsers that are used by general population and understand the tracking mechanisms (other than cookies) employed by the browser. These tracking mechanisms are not visible like cookies and need to be explored by getting into developer tools on the browser&lt;br /&gt;
This sort of tracking has an impact on privacy and to some extent on security. &lt;br /&gt;
This project would also look at how these tracking mechanisms can be removed or at least how the contents of these tracking mechanisms can be deleted&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GNU General Public License&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q3, 2019&lt;br /&gt;
* Start of the project&lt;br /&gt;
* Identify team members&lt;br /&gt;
* Design testbed (use of vms, use of phones)&lt;br /&gt;
* Identify different browsers and their versions for testing&lt;br /&gt;
&lt;br /&gt;
Q4, 2019&lt;br /&gt;
&lt;br /&gt;
* Implement testbed&lt;br /&gt;
* Install browsers on VMS&lt;br /&gt;
* Commence testing and document the results&lt;br /&gt;
* Publicize the results on the wiki&lt;br /&gt;
&lt;br /&gt;
The plan to start by replicating the experiments/methodology that is found here: &lt;br /&gt;
Belloro, S., &amp;amp; Mylonas, A. (2018). I know what you did last summer: New persistent tracking mechanisms in the wild. IEEE Access, 6, 52779-52792.&lt;br /&gt;
, and has been presented by Alexios to the London Chapter meeting in November 2018. Then, we plan to expand the work by including other tracking technologies and third-party software (i.e. addons) that can be used to enhance the protection that is offered by current browsers.&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Involvement in the development and promotion of &amp;lt;strong&amp;gt;Documentation Project Template&amp;lt;/strong&amp;gt; is actively encouraged!&lt;br /&gt;
You do not have to be a security expert or a programmer to contribute.&lt;br /&gt;
Some of the ways you can help are as follows:&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Installation Package]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves What's New (Revision History)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Wiki Home Page]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Slide Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Video]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
   |leader__name2=Stefano Belloro&lt;br /&gt;
   |leader__email2=Stefano.belloro@gmail.com&lt;br /&gt;
   |leader__name3=Alexios Mylonas&lt;br /&gt;
   |leader__email3=alexios.mylonas@owasp.org&lt;br /&gt;
&lt;br /&gt;
[mailto://shruti.kulkarni@owasp.org Shruti Kulkarni]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to other OWASP Projects that are similar to yours. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[OWASP_Code_Project_Template]]&lt;br /&gt;
* [[OWASP_Tool_Project_Template]]&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_DOC.jpg|link=https://www.owasp.org/index.php/Category:OWASP_Document]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|GNU General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]] [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254158</id>
		<title>OWASP Security Busters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254158"/>
				<updated>2019-08-26T11:31:17Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Project About */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Project About==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
{{:Template:Project About&lt;br /&gt;
   |project_name=Security Busters&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
   |leader__name2=Stefano Belloro&lt;br /&gt;
   |leader__email2=Stefano.belloro@gmail.com&lt;br /&gt;
   |leader__name3=Alexios Mylonas&lt;br /&gt;
   |leader__email3=alexios.mylonas@owasp.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==OWASP Documentation Project Template==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	The main deliverable of this project would be an assessment of the current privacy protection that is offered by popular web browsers for mobile devices (Android, iOS) and desktops. We will document amongst other things the following:&lt;br /&gt;
a.	browser details: name, version number, underlying OS&lt;br /&gt;
&lt;br /&gt;
b.	Protection against tracking mechanism, Tracking mechanism used (other than cookie)&lt;br /&gt;
&lt;br /&gt;
c.	Capability and usability in removing the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
d.	Capability of the browser to show/list the data from the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
e.	Presence of addons that list/delete the data&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
This project would look at different browsers that are used by general population and understand the tracking mechanisms (other than cookies) employed by the browser. These tracking mechanisms are not visible like cookies and need to be explored by getting into developer tools on the browser&lt;br /&gt;
This sort of tracking has an impact on privacy and to some extent on security. &lt;br /&gt;
This project would also look at how these tracking mechanisms can be removed or at least how the contents of these tracking mechanisms can be deleted&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GNU General Public License&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q3, 2019&lt;br /&gt;
* Start of the project&lt;br /&gt;
* Identify team members&lt;br /&gt;
* Design testbed (use of vms, use of phones)&lt;br /&gt;
* Identify different browsers and their versions for testing&lt;br /&gt;
&lt;br /&gt;
Q4, 2019&lt;br /&gt;
&lt;br /&gt;
* Implement testbed&lt;br /&gt;
* Install browsers on VMS&lt;br /&gt;
* Commence testing and document the results&lt;br /&gt;
* Publicize the results on the wiki&lt;br /&gt;
&lt;br /&gt;
The plan to start by replicating the experiments/methodology that is found here: &lt;br /&gt;
Belloro, S., &amp;amp; Mylonas, A. (2018). I know what you did last summer: New persistent tracking mechanisms in the wild. IEEE Access, 6, 52779-52792.&lt;br /&gt;
, and has been presented by Alexios to the London Chapter meeting in November 2018. Then, we plan to expand the work by including other tracking technologies and third-party software (i.e. addons) that can be used to enhance the protection that is offered by current browsers.&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Involvement in the development and promotion of &amp;lt;strong&amp;gt;Documentation Project Template&amp;lt;/strong&amp;gt; is actively encouraged!&lt;br /&gt;
You do not have to be a security expert or a programmer to contribute.&lt;br /&gt;
Some of the ways you can help are as follows:&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Installation Package]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves What's New (Revision History)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Wiki Home Page]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Slide Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Video]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	A project leader is the individual who decides to lead the project throughout its lifecycle. The project leader is responsible for communicating the project’s progress to the OWASP Foundation, and he/she is ultimately responsible for the project’s deliverables. The project leader must provide OWASP with his/her real name and contact e-mail address for his/her project application to be accepted, as OWASP prides itself on the openness of its products, operations, and members.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mailto://shruti.kulkarni@owasp.org Shruti Kulkarni]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to other OWASP Projects that are similar to yours. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[OWASP_Code_Project_Template]]&lt;br /&gt;
* [[OWASP_Tool_Project_Template]]&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_DOC.jpg|link=https://www.owasp.org/index.php/Category:OWASP_Document]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|GNU General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]] [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254157</id>
		<title>OWASP Security Busters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254157"/>
				<updated>2019-08-26T11:28:01Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Project About */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Project About==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
{{:Template:Project About&lt;br /&gt;
   |project_name=Security Busters&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==OWASP Documentation Project Template==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	The main deliverable of this project would be an assessment of the current privacy protection that is offered by popular web browsers for mobile devices (Android, iOS) and desktops. We will document amongst other things the following:&lt;br /&gt;
a.	browser details: name, version number, underlying OS&lt;br /&gt;
&lt;br /&gt;
b.	Protection against tracking mechanism, Tracking mechanism used (other than cookie)&lt;br /&gt;
&lt;br /&gt;
c.	Capability and usability in removing the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
d.	Capability of the browser to show/list the data from the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
e.	Presence of addons that list/delete the data&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
This project would look at different browsers that are used by general population and understand the tracking mechanisms (other than cookies) employed by the browser. These tracking mechanisms are not visible like cookies and need to be explored by getting into developer tools on the browser&lt;br /&gt;
This sort of tracking has an impact on privacy and to some extent on security. &lt;br /&gt;
This project would also look at how these tracking mechanisms can be removed or at least how the contents of these tracking mechanisms can be deleted&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GNU General Public License&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q3, 2019&lt;br /&gt;
* Start of the project&lt;br /&gt;
* Identify team members&lt;br /&gt;
* Design testbed (use of vms, use of phones)&lt;br /&gt;
* Identify different browsers and their versions for testing&lt;br /&gt;
&lt;br /&gt;
Q4, 2019&lt;br /&gt;
&lt;br /&gt;
* Implement testbed&lt;br /&gt;
* Install browsers on VMS&lt;br /&gt;
* Commence testing and document the results&lt;br /&gt;
* Publicize the results on the wiki&lt;br /&gt;
&lt;br /&gt;
The plan to start by replicating the experiments/methodology that is found here: &lt;br /&gt;
Belloro, S., &amp;amp; Mylonas, A. (2018). I know what you did last summer: New persistent tracking mechanisms in the wild. IEEE Access, 6, 52779-52792.&lt;br /&gt;
, and has been presented by Alexios to the London Chapter meeting in November 2018. Then, we plan to expand the work by including other tracking technologies and third-party software (i.e. addons) that can be used to enhance the protection that is offered by current browsers.&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Involvement in the development and promotion of &amp;lt;strong&amp;gt;Documentation Project Template&amp;lt;/strong&amp;gt; is actively encouraged!&lt;br /&gt;
You do not have to be a security expert or a programmer to contribute.&lt;br /&gt;
Some of the ways you can help are as follows:&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Installation Package]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves What's New (Revision History)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Wiki Home Page]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Slide Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Video]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	A project leader is the individual who decides to lead the project throughout its lifecycle. The project leader is responsible for communicating the project’s progress to the OWASP Foundation, and he/she is ultimately responsible for the project’s deliverables. The project leader must provide OWASP with his/her real name and contact e-mail address for his/her project application to be accepted, as OWASP prides itself on the openness of its products, operations, and members.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mailto://shruti.kulkarni@owasp.org Shruti Kulkarni]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to other OWASP Projects that are similar to yours. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[OWASP_Code_Project_Template]]&lt;br /&gt;
* [[OWASP_Tool_Project_Template]]&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_DOC.jpg|link=https://www.owasp.org/index.php/Category:OWASP_Document]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|GNU General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]] [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254156</id>
		<title>OWASP Security Busters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254156"/>
				<updated>2019-08-26T11:27:24Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Project About */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Project About==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
{{:Template:Project About&lt;br /&gt;
   |project_name=Security Busters&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
   |leader_name1=Stefano Belloro&lt;br /&gt;
   |leader_email1=Stefano.belloro@gmail.com&lt;br /&gt;
   |leader_name1=Alexios Mylonas&lt;br /&gt;
   |leader_email1=alexios.mylonas@owasp.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==OWASP Documentation Project Template==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	The main deliverable of this project would be an assessment of the current privacy protection that is offered by popular web browsers for mobile devices (Android, iOS) and desktops. We will document amongst other things the following:&lt;br /&gt;
a.	browser details: name, version number, underlying OS&lt;br /&gt;
&lt;br /&gt;
b.	Protection against tracking mechanism, Tracking mechanism used (other than cookie)&lt;br /&gt;
&lt;br /&gt;
c.	Capability and usability in removing the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
d.	Capability of the browser to show/list the data from the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
e.	Presence of addons that list/delete the data&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
This project would look at different browsers that are used by general population and understand the tracking mechanisms (other than cookies) employed by the browser. These tracking mechanisms are not visible like cookies and need to be explored by getting into developer tools on the browser&lt;br /&gt;
This sort of tracking has an impact on privacy and to some extent on security. &lt;br /&gt;
This project would also look at how these tracking mechanisms can be removed or at least how the contents of these tracking mechanisms can be deleted&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GNU General Public License&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q3, 2019&lt;br /&gt;
* Start of the project&lt;br /&gt;
* Identify team members&lt;br /&gt;
* Design testbed (use of vms, use of phones)&lt;br /&gt;
* Identify different browsers and their versions for testing&lt;br /&gt;
&lt;br /&gt;
Q4, 2019&lt;br /&gt;
&lt;br /&gt;
* Implement testbed&lt;br /&gt;
* Install browsers on VMS&lt;br /&gt;
* Commence testing and document the results&lt;br /&gt;
* Publicize the results on the wiki&lt;br /&gt;
&lt;br /&gt;
The plan to start by replicating the experiments/methodology that is found here: &lt;br /&gt;
Belloro, S., &amp;amp; Mylonas, A. (2018). I know what you did last summer: New persistent tracking mechanisms in the wild. IEEE Access, 6, 52779-52792.&lt;br /&gt;
, and has been presented by Alexios to the London Chapter meeting in November 2018. Then, we plan to expand the work by including other tracking technologies and third-party software (i.e. addons) that can be used to enhance the protection that is offered by current browsers.&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Involvement in the development and promotion of &amp;lt;strong&amp;gt;Documentation Project Template&amp;lt;/strong&amp;gt; is actively encouraged!&lt;br /&gt;
You do not have to be a security expert or a programmer to contribute.&lt;br /&gt;
Some of the ways you can help are as follows:&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Installation Package]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves What's New (Revision History)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Wiki Home Page]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Slide Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Video]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	A project leader is the individual who decides to lead the project throughout its lifecycle. The project leader is responsible for communicating the project’s progress to the OWASP Foundation, and he/she is ultimately responsible for the project’s deliverables. The project leader must provide OWASP with his/her real name and contact e-mail address for his/her project application to be accepted, as OWASP prides itself on the openness of its products, operations, and members.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mailto://shruti.kulkarni@owasp.org Shruti Kulkarni]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to other OWASP Projects that are similar to yours. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[OWASP_Code_Project_Template]]&lt;br /&gt;
* [[OWASP_Tool_Project_Template]]&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_DOC.jpg|link=https://www.owasp.org/index.php/Category:OWASP_Document]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|GNU General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]] [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254155</id>
		<title>OWASP Security Busters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254155"/>
				<updated>2019-08-26T11:23:53Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Roadmap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Project About==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
{{:Template:Project About&lt;br /&gt;
   |project_name=Security Busters&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==OWASP Documentation Project Template==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	The main deliverable of this project would be an assessment of the current privacy protection that is offered by popular web browsers for mobile devices (Android, iOS) and desktops. We will document amongst other things the following:&lt;br /&gt;
a.	browser details: name, version number, underlying OS&lt;br /&gt;
&lt;br /&gt;
b.	Protection against tracking mechanism, Tracking mechanism used (other than cookie)&lt;br /&gt;
&lt;br /&gt;
c.	Capability and usability in removing the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
d.	Capability of the browser to show/list the data from the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
e.	Presence of addons that list/delete the data&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
This project would look at different browsers that are used by general population and understand the tracking mechanisms (other than cookies) employed by the browser. These tracking mechanisms are not visible like cookies and need to be explored by getting into developer tools on the browser&lt;br /&gt;
This sort of tracking has an impact on privacy and to some extent on security. &lt;br /&gt;
This project would also look at how these tracking mechanisms can be removed or at least how the contents of these tracking mechanisms can be deleted&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GNU General Public License&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q3, 2019&lt;br /&gt;
* Start of the project&lt;br /&gt;
* Identify team members&lt;br /&gt;
* Design testbed (use of vms, use of phones)&lt;br /&gt;
* Identify different browsers and their versions for testing&lt;br /&gt;
&lt;br /&gt;
Q4, 2019&lt;br /&gt;
&lt;br /&gt;
* Implement testbed&lt;br /&gt;
* Install browsers on VMS&lt;br /&gt;
* Commence testing and document the results&lt;br /&gt;
* Publicize the results on the wiki&lt;br /&gt;
&lt;br /&gt;
The plan to start by replicating the experiments/methodology that is found here: &lt;br /&gt;
Belloro, S., &amp;amp; Mylonas, A. (2018). I know what you did last summer: New persistent tracking mechanisms in the wild. IEEE Access, 6, 52779-52792.&lt;br /&gt;
, and has been presented by Alexios to the London Chapter meeting in November 2018. Then, we plan to expand the work by including other tracking technologies and third-party software (i.e. addons) that can be used to enhance the protection that is offered by current browsers.&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Involvement in the development and promotion of &amp;lt;strong&amp;gt;Documentation Project Template&amp;lt;/strong&amp;gt; is actively encouraged!&lt;br /&gt;
You do not have to be a security expert or a programmer to contribute.&lt;br /&gt;
Some of the ways you can help are as follows:&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Installation Package]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves What's New (Revision History)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Wiki Home Page]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Slide Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Video]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	A project leader is the individual who decides to lead the project throughout its lifecycle. The project leader is responsible for communicating the project’s progress to the OWASP Foundation, and he/she is ultimately responsible for the project’s deliverables. The project leader must provide OWASP with his/her real name and contact e-mail address for his/her project application to be accepted, as OWASP prides itself on the openness of its products, operations, and members.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mailto://shruti.kulkarni@owasp.org Shruti Kulkarni]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to other OWASP Projects that are similar to yours. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[OWASP_Code_Project_Template]]&lt;br /&gt;
* [[OWASP_Tool_Project_Template]]&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_DOC.jpg|link=https://www.owasp.org/index.php/Category:OWASP_Document]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|GNU General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]] [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254154</id>
		<title>OWASP Security Busters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254154"/>
				<updated>2019-08-26T11:21:14Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Licensing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Project About==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
{{:Template:Project About&lt;br /&gt;
   |project_name=Security Busters&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==OWASP Documentation Project Template==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	The main deliverable of this project would be an assessment of the current privacy protection that is offered by popular web browsers for mobile devices (Android, iOS) and desktops. We will document amongst other things the following:&lt;br /&gt;
a.	browser details: name, version number, underlying OS&lt;br /&gt;
&lt;br /&gt;
b.	Protection against tracking mechanism, Tracking mechanism used (other than cookie)&lt;br /&gt;
&lt;br /&gt;
c.	Capability and usability in removing the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
d.	Capability of the browser to show/list the data from the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
e.	Presence of addons that list/delete the data&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
This project would look at different browsers that are used by general population and understand the tracking mechanisms (other than cookies) employed by the browser. These tracking mechanisms are not visible like cookies and need to be explored by getting into developer tools on the browser&lt;br /&gt;
This sort of tracking has an impact on privacy and to some extent on security. &lt;br /&gt;
This project would also look at how these tracking mechanisms can be removed or at least how the contents of these tracking mechanisms can be deleted&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GNU General Public License&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
As of &amp;lt;strong&amp;gt;November, 2013, the highest priorities for the next 6 months&amp;lt;/strong&amp;gt; are:&lt;br /&gt;
&amp;lt;strong&amp;gt;&lt;br /&gt;
* Complete the first draft of the Documentation Project Template&lt;br /&gt;
* Get other people to review the Documentation Project Template and provide feedback&lt;br /&gt;
* Incorporate feedback into changes in the Documentation Project Template&lt;br /&gt;
* Finalize the Documentation Project template and have it reviewed to be promoted from an Incubator Project to a Lab Project&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Subsequent Releases will add&lt;br /&gt;
&amp;lt;strong&amp;gt;&lt;br /&gt;
* Internationalization Support&lt;br /&gt;
* Additional Unit Tests&lt;br /&gt;
* Automated Regression tests&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Involvement in the development and promotion of &amp;lt;strong&amp;gt;Documentation Project Template&amp;lt;/strong&amp;gt; is actively encouraged!&lt;br /&gt;
You do not have to be a security expert or a programmer to contribute.&lt;br /&gt;
Some of the ways you can help are as follows:&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Installation Package]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves What's New (Revision History)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Wiki Home Page]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Slide Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Video]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	A project leader is the individual who decides to lead the project throughout its lifecycle. The project leader is responsible for communicating the project’s progress to the OWASP Foundation, and he/she is ultimately responsible for the project’s deliverables. The project leader must provide OWASP with his/her real name and contact e-mail address for his/her project application to be accepted, as OWASP prides itself on the openness of its products, operations, and members.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mailto://shruti.kulkarni@owasp.org Shruti Kulkarni]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to other OWASP Projects that are similar to yours. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[OWASP_Code_Project_Template]]&lt;br /&gt;
* [[OWASP_Tool_Project_Template]]&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_DOC.jpg|link=https://www.owasp.org/index.php/Category:OWASP_Document]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|GNU General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]] [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254153</id>
		<title>OWASP Security Busters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254153"/>
				<updated>2019-08-26T11:20:42Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Project About==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
{{:Template:Project About&lt;br /&gt;
   |project_name=Security Busters&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==OWASP Documentation Project Template==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	The main deliverable of this project would be an assessment of the current privacy protection that is offered by popular web browsers for mobile devices (Android, iOS) and desktops. We will document amongst other things the following:&lt;br /&gt;
a.	browser details: name, version number, underlying OS&lt;br /&gt;
&lt;br /&gt;
b.	Protection against tracking mechanism, Tracking mechanism used (other than cookie)&lt;br /&gt;
&lt;br /&gt;
c.	Capability and usability in removing the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
d.	Capability of the browser to show/list the data from the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
e.	Presence of addons that list/delete the data&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
This project would look at different browsers that are used by general population and understand the tracking mechanisms (other than cookies) employed by the browser. These tracking mechanisms are not visible like cookies and need to be explored by getting into developer tools on the browser&lt;br /&gt;
This sort of tracking has an impact on privacy and to some extent on security. &lt;br /&gt;
This project would also look at how these tracking mechanisms can be removed or at least how the contents of these tracking mechanisms can be deleted&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
A project must be licensed under a community friendly or open source license.  For more information on OWASP recommended licenses, please see [https://www.owasp.org/index.php/OWASP_Licenses OWASP Licenses]. While OWASP does not promote any particular license over another, the vast majority of projects have chosen a Creative Commons license variant for documentation projects, or a GNU General Public License variant for tools and code projects.  This example assumes that you want to use the AGPL 3.0 license.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under the terms of the [http://www.gnu.org/licenses/agpl-3.0.html link GNU Affero General Public License 3.0] as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.  OWASP XXX and any contributions are Copyright &amp;amp;copy; by {the Project Leader(s) or OWASP} {Year(s)}.  &lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
As of &amp;lt;strong&amp;gt;November, 2013, the highest priorities for the next 6 months&amp;lt;/strong&amp;gt; are:&lt;br /&gt;
&amp;lt;strong&amp;gt;&lt;br /&gt;
* Complete the first draft of the Documentation Project Template&lt;br /&gt;
* Get other people to review the Documentation Project Template and provide feedback&lt;br /&gt;
* Incorporate feedback into changes in the Documentation Project Template&lt;br /&gt;
* Finalize the Documentation Project template and have it reviewed to be promoted from an Incubator Project to a Lab Project&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Subsequent Releases will add&lt;br /&gt;
&amp;lt;strong&amp;gt;&lt;br /&gt;
* Internationalization Support&lt;br /&gt;
* Additional Unit Tests&lt;br /&gt;
* Automated Regression tests&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Involvement in the development and promotion of &amp;lt;strong&amp;gt;Documentation Project Template&amp;lt;/strong&amp;gt; is actively encouraged!&lt;br /&gt;
You do not have to be a security expert or a programmer to contribute.&lt;br /&gt;
Some of the ways you can help are as follows:&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Installation Package]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves What's New (Revision History)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Wiki Home Page]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Slide Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Video]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	A project leader is the individual who decides to lead the project throughout its lifecycle. The project leader is responsible for communicating the project’s progress to the OWASP Foundation, and he/she is ultimately responsible for the project’s deliverables. The project leader must provide OWASP with his/her real name and contact e-mail address for his/her project application to be accepted, as OWASP prides itself on the openness of its products, operations, and members.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mailto://shruti.kulkarni@owasp.org Shruti Kulkarni]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to other OWASP Projects that are similar to yours. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[OWASP_Code_Project_Template]]&lt;br /&gt;
* [[OWASP_Tool_Project_Template]]&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_DOC.jpg|link=https://www.owasp.org/index.php/Category:OWASP_Document]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|GNU General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]] [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254152</id>
		<title>OWASP Security Busters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254152"/>
				<updated>2019-08-26T11:19:02Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* OWASP Documentation Project Template */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Project About==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
{{:Template:Project About&lt;br /&gt;
   |project_name=Security Busters&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==OWASP Documentation Project Template==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	The main deliverable of this project would be an assessment of the current privacy protection that is offered by popular web browsers for mobile devices (Android, iOS) and desktops. We will document amongst other things the following:&lt;br /&gt;
a.	browser details: name, version number, underlying OS&lt;br /&gt;
&lt;br /&gt;
b.	Protection against tracking mechanism, Tracking mechanism used (other than cookie)&lt;br /&gt;
&lt;br /&gt;
c.	Capability and usability in removing the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
d.	Capability of the browser to show/list the data from the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
e.	Presence of addons that list/delete the data&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you need to add your more robust project description. A project description should outline the purpose of the project, how it is used, and the value it provides to application security. Ideally, project descriptions should be written in such a way that there is no question what value the project provides to the software security community. This section will be seen and used in various places within the Projects Portal. Poorly written project descriptions therefore detract from a project’s visibility, so project leaders should ensure that the description is meaningful.  &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Documentation Project Template is simply a sample project that was developed for instructional purposes that can be used to create default project pages for a Documentation project.  After copying this template to your new project, all you have to do is follow the instructions in red, replace the sample text with text suited for your project, and then delete the sections in red.  Doing so should make it clearer to both consumers of this project, as well as OWASP reviewers who are trying to determine if the project can be promoted to the next category.  The information requested is also intended to help Project Leaders think about the roadmap and feature priorities, and give guidance to the reviews as a result of that effort.&lt;br /&gt;
&lt;br /&gt;
Creating a new set of project pages from scratch can be a challenging task.  By providing a sample layout, with instructional text and examples, the OWASP Documentation Project Template makes it easier for Project Leaders to create effective security projects and hence helps promote security.&lt;br /&gt;
&lt;br /&gt;
Contextual custom dictionary builder with character substitution and word variations for pen-testers&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
A project must be licensed under a community friendly or open source license.  For more information on OWASP recommended licenses, please see [https://www.owasp.org/index.php/OWASP_Licenses OWASP Licenses]. While OWASP does not promote any particular license over another, the vast majority of projects have chosen a Creative Commons license variant for documentation projects, or a GNU General Public License variant for tools and code projects.  This example assumes that you want to use the AGPL 3.0 license.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under the terms of the [http://www.gnu.org/licenses/agpl-3.0.html link GNU Affero General Public License 3.0] as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.  OWASP XXX and any contributions are Copyright &amp;amp;copy; by {the Project Leader(s) or OWASP} {Year(s)}.  &lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
As of &amp;lt;strong&amp;gt;November, 2013, the highest priorities for the next 6 months&amp;lt;/strong&amp;gt; are:&lt;br /&gt;
&amp;lt;strong&amp;gt;&lt;br /&gt;
* Complete the first draft of the Documentation Project Template&lt;br /&gt;
* Get other people to review the Documentation Project Template and provide feedback&lt;br /&gt;
* Incorporate feedback into changes in the Documentation Project Template&lt;br /&gt;
* Finalize the Documentation Project template and have it reviewed to be promoted from an Incubator Project to a Lab Project&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Subsequent Releases will add&lt;br /&gt;
&amp;lt;strong&amp;gt;&lt;br /&gt;
* Internationalization Support&lt;br /&gt;
* Additional Unit Tests&lt;br /&gt;
* Automated Regression tests&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Involvement in the development and promotion of &amp;lt;strong&amp;gt;Documentation Project Template&amp;lt;/strong&amp;gt; is actively encouraged!&lt;br /&gt;
You do not have to be a security expert or a programmer to contribute.&lt;br /&gt;
Some of the ways you can help are as follows:&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Installation Package]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves What's New (Revision History)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Wiki Home Page]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Slide Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Video]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	A project leader is the individual who decides to lead the project throughout its lifecycle. The project leader is responsible for communicating the project’s progress to the OWASP Foundation, and he/she is ultimately responsible for the project’s deliverables. The project leader must provide OWASP with his/her real name and contact e-mail address for his/her project application to be accepted, as OWASP prides itself on the openness of its products, operations, and members.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mailto://shruti.kulkarni@owasp.org Shruti Kulkarni]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to other OWASP Projects that are similar to yours. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[OWASP_Code_Project_Template]]&lt;br /&gt;
* [[OWASP_Tool_Project_Template]]&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_DOC.jpg|link=https://www.owasp.org/index.php/Category:OWASP_Document]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|GNU General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]] [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254151</id>
		<title>OWASP Security Busters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254151"/>
				<updated>2019-08-26T11:18:17Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* OWASP Documentation Project Template */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Project About==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
{{:Template:Project About&lt;br /&gt;
   |project_name=Security Busters&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==OWASP Documentation Project Template==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt;&lt;br /&gt;
	The main deliverable of this project would be an assessment of the current privacy protection that is offered by popular web browsers for mobile devices (Android, iOS) and desktops. We will document amongst other things the following:&lt;br /&gt;
a.	browser details: name, version number, underlying OS&lt;br /&gt;
&lt;br /&gt;
b.	Protection against tracking mechanism, Tracking mechanism used (other than cookie)&lt;br /&gt;
&lt;br /&gt;
c.	Capability and usability in removing the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
d.	Capability of the browser to show/list the data from the tracking mechanism&lt;br /&gt;
&lt;br /&gt;
e.	Presence of addons that list/delete the data&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you need to add your more robust project description. A project description should outline the purpose of the project, how it is used, and the value it provides to application security. Ideally, project descriptions should be written in such a way that there is no question what value the project provides to the software security community. This section will be seen and used in various places within the Projects Portal. Poorly written project descriptions therefore detract from a project’s visibility, so project leaders should ensure that the description is meaningful.  &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Documentation Project Template is simply a sample project that was developed for instructional purposes that can be used to create default project pages for a Documentation project.  After copying this template to your new project, all you have to do is follow the instructions in red, replace the sample text with text suited for your project, and then delete the sections in red.  Doing so should make it clearer to both consumers of this project, as well as OWASP reviewers who are trying to determine if the project can be promoted to the next category.  The information requested is also intended to help Project Leaders think about the roadmap and feature priorities, and give guidance to the reviews as a result of that effort.&lt;br /&gt;
&lt;br /&gt;
Creating a new set of project pages from scratch can be a challenging task.  By providing a sample layout, with instructional text and examples, the OWASP Documentation Project Template makes it easier for Project Leaders to create effective security projects and hence helps promote security.&lt;br /&gt;
&lt;br /&gt;
Contextual custom dictionary builder with character substitution and word variations for pen-testers&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
A project must be licensed under a community friendly or open source license.  For more information on OWASP recommended licenses, please see [https://www.owasp.org/index.php/OWASP_Licenses OWASP Licenses]. While OWASP does not promote any particular license over another, the vast majority of projects have chosen a Creative Commons license variant for documentation projects, or a GNU General Public License variant for tools and code projects.  This example assumes that you want to use the AGPL 3.0 license.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under the terms of the [http://www.gnu.org/licenses/agpl-3.0.html link GNU Affero General Public License 3.0] as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.  OWASP XXX and any contributions are Copyright &amp;amp;copy; by {the Project Leader(s) or OWASP} {Year(s)}.  &lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
As of &amp;lt;strong&amp;gt;November, 2013, the highest priorities for the next 6 months&amp;lt;/strong&amp;gt; are:&lt;br /&gt;
&amp;lt;strong&amp;gt;&lt;br /&gt;
* Complete the first draft of the Documentation Project Template&lt;br /&gt;
* Get other people to review the Documentation Project Template and provide feedback&lt;br /&gt;
* Incorporate feedback into changes in the Documentation Project Template&lt;br /&gt;
* Finalize the Documentation Project template and have it reviewed to be promoted from an Incubator Project to a Lab Project&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Subsequent Releases will add&lt;br /&gt;
&amp;lt;strong&amp;gt;&lt;br /&gt;
* Internationalization Support&lt;br /&gt;
* Additional Unit Tests&lt;br /&gt;
* Automated Regression tests&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Involvement in the development and promotion of &amp;lt;strong&amp;gt;Documentation Project Template&amp;lt;/strong&amp;gt; is actively encouraged!&lt;br /&gt;
You do not have to be a security expert or a programmer to contribute.&lt;br /&gt;
Some of the ways you can help are as follows:&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Installation Package]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves What's New (Revision History)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Wiki Home Page]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Slide Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Video]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	A project leader is the individual who decides to lead the project throughout its lifecycle. The project leader is responsible for communicating the project’s progress to the OWASP Foundation, and he/she is ultimately responsible for the project’s deliverables. The project leader must provide OWASP with his/her real name and contact e-mail address for his/her project application to be accepted, as OWASP prides itself on the openness of its products, operations, and members.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mailto://shruti.kulkarni@owasp.org Shruti Kulkarni]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to other OWASP Projects that are similar to yours. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[OWASP_Code_Project_Template]]&lt;br /&gt;
* [[OWASP_Tool_Project_Template]]&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_DOC.jpg|link=https://www.owasp.org/index.php/Category:OWASP_Document]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|GNU General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]] [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254150</id>
		<title>OWASP Security Busters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Busters&amp;diff=254150"/>
				<updated>2019-08-26T11:16:40Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* OWASP Documentation Project Template */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
==Project About==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
{{:Template:Project About&lt;br /&gt;
   |project_name=Security Busters&lt;br /&gt;
   |leader_name1=Shruti Kulkarni&lt;br /&gt;
   |leader_email1=shruti.kulkarni@owasp.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==OWASP Documentation Project Template==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	The main deliverable of this project would be an assessment of the current privacy protection that is offered by popular web browsers for mobile devices (Android, iOS) and desktops. We will document amongst other things the following:&lt;br /&gt;
a.	browser details: name, version number, underlying OS&lt;br /&gt;
b.	Protection against tracking mechanism, Tracking mechanism used (other than cookie)&lt;br /&gt;
c.	Capability and usability in removing the tracking mechanism&lt;br /&gt;
d.	Capability of the browser to show/list the data from the tracking mechanism&lt;br /&gt;
e.	Presence of addons that list/delete the data&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you need to add your more robust project description. A project description should outline the purpose of the project, how it is used, and the value it provides to application security. Ideally, project descriptions should be written in such a way that there is no question what value the project provides to the software security community. This section will be seen and used in various places within the Projects Portal. Poorly written project descriptions therefore detract from a project’s visibility, so project leaders should ensure that the description is meaningful.  &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Documentation Project Template is simply a sample project that was developed for instructional purposes that can be used to create default project pages for a Documentation project.  After copying this template to your new project, all you have to do is follow the instructions in red, replace the sample text with text suited for your project, and then delete the sections in red.  Doing so should make it clearer to both consumers of this project, as well as OWASP reviewers who are trying to determine if the project can be promoted to the next category.  The information requested is also intended to help Project Leaders think about the roadmap and feature priorities, and give guidance to the reviews as a result of that effort.&lt;br /&gt;
&lt;br /&gt;
Creating a new set of project pages from scratch can be a challenging task.  By providing a sample layout, with instructional text and examples, the OWASP Documentation Project Template makes it easier for Project Leaders to create effective security projects and hence helps promote security.&lt;br /&gt;
&lt;br /&gt;
Contextual custom dictionary builder with character substitution and word variations for pen-testers&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
A project must be licensed under a community friendly or open source license.  For more information on OWASP recommended licenses, please see [https://www.owasp.org/index.php/OWASP_Licenses OWASP Licenses]. While OWASP does not promote any particular license over another, the vast majority of projects have chosen a Creative Commons license variant for documentation projects, or a GNU General Public License variant for tools and code projects.  This example assumes that you want to use the AGPL 3.0 license.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under the terms of the [http://www.gnu.org/licenses/agpl-3.0.html link GNU Affero General Public License 3.0] as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.  OWASP XXX and any contributions are Copyright &amp;amp;copy; by {the Project Leader(s) or OWASP} {Year(s)}.  &lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
As of &amp;lt;strong&amp;gt;November, 2013, the highest priorities for the next 6 months&amp;lt;/strong&amp;gt; are:&lt;br /&gt;
&amp;lt;strong&amp;gt;&lt;br /&gt;
* Complete the first draft of the Documentation Project Template&lt;br /&gt;
* Get other people to review the Documentation Project Template and provide feedback&lt;br /&gt;
* Incorporate feedback into changes in the Documentation Project Template&lt;br /&gt;
* Finalize the Documentation Project template and have it reviewed to be promoted from an Incubator Project to a Lab Project&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Subsequent Releases will add&lt;br /&gt;
&amp;lt;strong&amp;gt;&lt;br /&gt;
* Internationalization Support&lt;br /&gt;
* Additional Unit Tests&lt;br /&gt;
* Automated Regression tests&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Getting Involved==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
Involvement in the development and promotion of &amp;lt;strong&amp;gt;Documentation Project Template&amp;lt;/strong&amp;gt; is actively encouraged!&lt;br /&gt;
You do not have to be a security expert or a programmer to contribute.&lt;br /&gt;
Some of the ways you can help are as follows:&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Project Resources ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Installation Package]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Source Code]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves What's New (Revision History)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Wiki Home Page]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Slide Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SamanthaGroves Video]&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	A project leader is the individual who decides to lead the project throughout its lifecycle. The project leader is responsible for communicating the project’s progress to the OWASP Foundation, and he/she is ultimately responsible for the project’s deliverables. The project leader must provide OWASP with his/her real name and contact e-mail address for his/her project application to be accepted, as OWASP prides itself on the openness of its products, operations, and members.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mailto://shruti.kulkarni@owasp.org Shruti Kulkarni]&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&lt;br /&gt;
	This is where you can link to other OWASP Projects that are similar to yours. &lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[OWASP_Code_Project_Template]]&lt;br /&gt;
* [[OWASP_Tool_Project_Template]]&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_DOC.jpg|link=https://www.owasp.org/index.php/Category:OWASP_Document]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects|Incubator Project]]&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=Defenders]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|GNU General Public License 3.0]]&lt;br /&gt;
   |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]] [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=236063</id>
		<title>Threat Modeling Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=236063"/>
				<updated>2017-12-06T15:57:38Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
The objective of this cheat sheet is to provide guidance to developers, reviewers, designers and architects on conducting successful threat modeling. The main goal of threat modeling is to understand the controls needed for a software system. This is a complex endeavor that will involve investigations into:&lt;br /&gt;
# The trust boundaries to and within the solution that we build&lt;br /&gt;
# The actors that interact within and outside of the trust boundaries&lt;br /&gt;
# Information flows within and to and from the trust boundaries&lt;br /&gt;
# Information persistence within and out of trust boundaries&lt;br /&gt;
# Vulnerabilities at trust boundaries&lt;br /&gt;
# Threat agents that can exploit the vulnerabilities&lt;br /&gt;
# Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
# Controls  and process needed to treat specific risks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Why do we need to perform threat modeling=&lt;br /&gt;
&lt;br /&gt;
1.	Performing threat model at the architecture level, helps in:&lt;br /&gt;
        a.	confirming suitability of the identified security features to be implemented&lt;br /&gt;
        b.	identification of any gaps in the security features to be implemented&lt;br /&gt;
        c.	identification of any further security features&lt;br /&gt;
        d.	identification of policy and process requirements&lt;br /&gt;
        e.	identification of requirements to be fed into security operations&lt;br /&gt;
        f.	identification of logging and monitoring requirements&lt;br /&gt;
        g.	arriving at abuse cases when used in agile methodology&lt;br /&gt;
        h.	understanding business continuity requirements&lt;br /&gt;
        i.	understanding capacity and availability requirements&lt;br /&gt;
&lt;br /&gt;
2.	Performing threat model at the design level, helps in:&lt;br /&gt;
        a.	identification of vulnerabilities that need to be closed at the design level and input this into the build phase&lt;br /&gt;
        b.	identification of information assets that need security controls&lt;br /&gt;
        c.	mapping of identified security controls into technical / administrative / physical controls as the case may be (this activity can be done at the architecture level as well, but doing it at the design level helps in being granular)&lt;br /&gt;
        d.	identification of security test cases / security test scenarios to test the security requirements&lt;br /&gt;
&lt;br /&gt;
=Starting the threat modeling exercise=&lt;br /&gt;
It is important for an organization to have or create a risk assessment policy that gives practitioner guidance on when to do a threat model, provides management guidance on assigning owners to risks, etc. &lt;br /&gt;
&lt;br /&gt;
An organization should also complete the following before beginning the threat modeling exercise:&lt;br /&gt;
&lt;br /&gt;
1. Make a list of all the stakeholders who need to participate in threat modeling. For example, stakeholders may include application architects, infrastructure architects, solution architects, business owners, etc.&lt;br /&gt;
&lt;br /&gt;
2. Get management buy-in for the exercise to ensure that there is management support for involvement of all necessary stakeholders.&lt;br /&gt;
&lt;br /&gt;
3. Confirm that the threat modeling exercise is led by the security team of the organisation and the risk log is maintained by the security team.&lt;br /&gt;
&lt;br /&gt;
Capturing the following information is part of the exercise:&lt;br /&gt;
&lt;br /&gt;
1. The trust boundaries to and within the solution that we build&lt;br /&gt;
&lt;br /&gt;
2. The actors that interact within and outside of the trust boundaries&lt;br /&gt;
&lt;br /&gt;
3. Information flows within and to and from the trust boundaries&lt;br /&gt;
&lt;br /&gt;
4. Information persistence within and out of trust boundaries 	&lt;br /&gt;
&lt;br /&gt;
5. Threats to transgression of trust boundaries by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
6. Vulnerabilities at trust boundaries as accessed by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
7. Threat agents that can exploit the vulnerabilities&lt;br /&gt;
&lt;br /&gt;
8. Impact of exploitation of vulnerability by a threat agent&lt;br /&gt;
&lt;br /&gt;
9. Decision tree to treat the risk&lt;br /&gt;
&lt;br /&gt;
=Decompose and Model the system=&lt;br /&gt;
&lt;br /&gt;
To perform a threat model, it is important to understand how the system works and interacts with its ecosystem.&lt;br /&gt;
To start with, create a high level information flow diagram, something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;Picture to be embedded&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
1.	Identify the trusted boundaries of your system / application / module / ecosystem that you may want to start off with.&lt;br /&gt;
&lt;br /&gt;
2.	Add actors – internal and external&lt;br /&gt;
&lt;br /&gt;
3.	Define internal trusted boundaries. These can be the different security zones that have been designed&lt;br /&gt;
&lt;br /&gt;
4.	Relook at the actors you have identified in #2 for consistency&lt;br /&gt;
&lt;br /&gt;
5.	Add information flows &lt;br /&gt;
      a.	Information in transit&lt;br /&gt;
      b.	Information at rest&lt;br /&gt;
      c.	Information processing&lt;br /&gt;
      d.	In the above diagram, following are the information flows:&lt;br /&gt;
              i.	Login Information&lt;br /&gt;
             ii.	Transmit login information&lt;br /&gt;
            iii.	Data process&lt;br /&gt;
             iv.	Data store&lt;br /&gt;
&lt;br /&gt;
6.	Identify the information elements and their classification as per your information classification policy&lt;br /&gt;
&lt;br /&gt;
7.	Where possible add assets to the identified information  flows&lt;br /&gt;
&lt;br /&gt;
8.	Identify threat agents for each of the information flows&lt;br /&gt;
&lt;br /&gt;
9.	Draw attack vectors and attack trees in an iteratively to make sure that no major attack vector is missed.&lt;br /&gt;
&lt;br /&gt;
10.	For each of the information flows perform threat assessment using any of the methodologies that meets the organisation’s requirements:&lt;br /&gt;
&lt;br /&gt;
11.	Add a probability value to the materialisation of each threat&lt;br /&gt;
&lt;br /&gt;
12.	Add a value for the impact of each threat materialisation&lt;br /&gt;
&lt;br /&gt;
13.	Identify the acceptable level of risk for the organisation or the identified scope&lt;br /&gt;
&lt;br /&gt;
14.	Identify the risks for mitigation that are above the acceptable level of risk &lt;br /&gt;
&lt;br /&gt;
15.	Manage the risks by doing one or more of the following:&lt;br /&gt;
         a.	Accept&lt;br /&gt;
         b.	Transfer&lt;br /&gt;
         c.	Avoid&lt;br /&gt;
         d.	Reduce&lt;br /&gt;
&lt;br /&gt;
=How to work on getting the mitigations in place, track them to closure and keep monitoring risks=&lt;br /&gt;
1.	Upon completion of the initial threat modelling exercise, assign identified risks to the relevant business / risk owners of threats for example&lt;br /&gt;
        a.	If there is an identified risk with the way the database is implemented, assign the risk responsibility to the owner of the database team. &lt;br /&gt;
        b.	If there is an identified risk with the application design, assign the risk responsibility to the owner of the application team&lt;br /&gt;
        c.	Although the risks are assigned to the database and application teams, the accountability of ensuring the risks are addressed lies with the business owner for the business the application is being developed for. At the end of the day, the business owner needs to understand the risk appetite of his/her business unit and whether the risk is above or below the acceptable level.&lt;br /&gt;
&lt;br /&gt;
2.	Maintain a Threat Traceability Matrix which at the minimum lists the following:&lt;br /&gt;
        a.	Information flow (along with the list of assets)&lt;br /&gt;
        b.	Threats for the information flows&lt;br /&gt;
        c.	Probability of occurrence of the risk&lt;br /&gt;
        d.	Impact of materialisation of the risk &lt;br /&gt;
        e.	Risk owner – responsibility wise&lt;br /&gt;
        f.	Risk owner – accountability wise&lt;br /&gt;
        g.	Mitigation&lt;br /&gt;
        h.	Last review date&lt;br /&gt;
        i.	Next review date&lt;br /&gt;
        j.	Instances of materialisation of the risk&lt;br /&gt;
&lt;br /&gt;
3.	Test the risk as a part of security testing to ensure that the mitigation works as expected&lt;br /&gt;
&lt;br /&gt;
Periodically retest the risk in either a vulnerability scan or as part of penetration test or security test to ensure that the mitigation remains in place and works as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
https://www.owasp.org/index.php/Application_Threat_Modeling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authors and Primary Editors  ==&lt;br /&gt;
&lt;br /&gt;
Shruti Kulkarni - shruti.kulkarni@owasp.org&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;
|}&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=236062</id>
		<title>Threat Modeling Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=236062"/>
				<updated>2017-12-06T15:55:16Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
The objective of this cheat sheet is to provide guidance to developers, reviewers, designers and architects on conducting successful threat modeling. The main goal of threat modeling is to understand the controls needed for a software system. This is a complex endeavor that will involve investigations into:&lt;br /&gt;
# The trust boundaries to and within the solution that we build&lt;br /&gt;
# The actors that interact within and outside of the trust boundaries&lt;br /&gt;
# Information flows within and to and from the trust boundaries&lt;br /&gt;
# Information persistence within and out of trust boundaries&lt;br /&gt;
# Vulnerabilities at trust boundaries&lt;br /&gt;
# Threat agents that can exploit the vulnerabilities&lt;br /&gt;
# Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
# Controls  and process needed to treat specific risks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Why do we need to perform threat modeling=&lt;br /&gt;
&lt;br /&gt;
1.	Performing threat model at the architecture level, helps in:&lt;br /&gt;
        a.	confirming suitability of the identified security features to be implemented&lt;br /&gt;
        b.	identification of any gaps in the security features to be implemented&lt;br /&gt;
        c.	identification of any further security features&lt;br /&gt;
        d.	identification of policy and process requirements&lt;br /&gt;
        e.	identification of requirements to be fed into security operations&lt;br /&gt;
        f.	identification of logging and monitoring requirements&lt;br /&gt;
        g.	arriving at abuse cases when used in agile methodology&lt;br /&gt;
        h.	understanding business continuity requirements&lt;br /&gt;
        i.	understanding capacity and availability requirements&lt;br /&gt;
&lt;br /&gt;
2.	Performing threat model at the design level, helps in:&lt;br /&gt;
        a.	identification of vulnerabilities that need to be closed at the design level and input this into the build phase&lt;br /&gt;
        b.	identification of information assets that need security controls&lt;br /&gt;
        c.	mapping of identified security controls into technical / administrative / physical controls as the case may be (this activity can be done at the architecture level as well, but doing it at the design level helps in being granular)&lt;br /&gt;
        d.	identification of security test cases / security test scenarios to test the security requirements&lt;br /&gt;
&lt;br /&gt;
=Starting the threat modeling exercise=&lt;br /&gt;
It is important for an organization to have or create a risk assessment policy that gives practitioner guidance on when to do a threat model, provides management guidance on assigning owners to risks, etc. &lt;br /&gt;
&lt;br /&gt;
An organization should also complete the following before beginning the threat modeling exercise:&lt;br /&gt;
&lt;br /&gt;
1. Make a list of all the stakeholders who need to participate in threat modeling. For example, stakeholders may include application architects, infrastructure architects, solution architects, business owners, etc.&lt;br /&gt;
&lt;br /&gt;
2. Get management buy-in for the exercise to ensure that there is management support for involvement of all necessary stakeholders.&lt;br /&gt;
&lt;br /&gt;
3. Confirm that the threat modeling exercise is led by the security team of the organisation and the risk log is maintained by the security team.&lt;br /&gt;
&lt;br /&gt;
Capturing the following information is part of the exercise:&lt;br /&gt;
&lt;br /&gt;
1. The trust boundaries to and within the solution that we build&lt;br /&gt;
&lt;br /&gt;
2. The actors that interact within and outside of the trust boundaries&lt;br /&gt;
&lt;br /&gt;
3. Information flows within and to and from the trust boundaries&lt;br /&gt;
&lt;br /&gt;
4. Information persistence within and out of trust boundaries 	&lt;br /&gt;
&lt;br /&gt;
5. Threats to transgression of trust boundaries by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
6. Vulnerabilities at trust boundaries as accessed by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
7. Threat agents that can exploit the vulnerabilities&lt;br /&gt;
&lt;br /&gt;
8. Impact of exploitation of vulnerability by a threat agent&lt;br /&gt;
&lt;br /&gt;
9. Decision tree to treat the risk&lt;br /&gt;
&lt;br /&gt;
=Decompose and Model the system=&lt;br /&gt;
&lt;br /&gt;
To perform a threat model, it is important to understand how the system works and interacts with its ecosystem.&lt;br /&gt;
To start with, create a high level information flow diagram, something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;Picture to be embedded&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
1.	Identify the trusted boundaries of your system / application / module / ecosystem that you may want to start off with.&lt;br /&gt;
&lt;br /&gt;
2.	Add actors – internal and external&lt;br /&gt;
&lt;br /&gt;
3.	Define internal trusted boundaries. These can be the different security zones that have been designed&lt;br /&gt;
&lt;br /&gt;
4.	Relook at the actors you have identified in #2 for consistency&lt;br /&gt;
&lt;br /&gt;
5.	Add information flows &lt;br /&gt;
      a.	Information in transit&lt;br /&gt;
      b.	Information at rest&lt;br /&gt;
      c.	Information processing&lt;br /&gt;
      d.	In the above diagram, following are the information flows:&lt;br /&gt;
              i.	Login Information&lt;br /&gt;
             ii.	Transmit login information&lt;br /&gt;
            iii.	Data process&lt;br /&gt;
             iv.	Data store&lt;br /&gt;
&lt;br /&gt;
6.	Identify the information elements and their classification as per your information classification policy&lt;br /&gt;
&lt;br /&gt;
7.	Where possible add assets to the identified information  flows&lt;br /&gt;
&lt;br /&gt;
8.	Identify threat agents for each of the information flows&lt;br /&gt;
&lt;br /&gt;
9.	Draw attack vectors and attack trees in an iteratively to make sure that no major attack vector is missed.&lt;br /&gt;
&lt;br /&gt;
10.	For each of the information flows perform threat assessment using any of the methodologies that meets the organisation’s requirements:&lt;br /&gt;
&lt;br /&gt;
11.	Add a probability value to the materialisation of each threat&lt;br /&gt;
&lt;br /&gt;
12.	Add a value for the impact of each threat materialisation&lt;br /&gt;
&lt;br /&gt;
13.	Identify the acceptable level of risk for the organisation or the identified scope&lt;br /&gt;
&lt;br /&gt;
14.	Identify the risks for mitigation that are above the acceptable level of risk &lt;br /&gt;
&lt;br /&gt;
15.	Mitigate the risks by doing one or more of the following:&lt;br /&gt;
         a.	Accept&lt;br /&gt;
         b.	Transfer&lt;br /&gt;
         c.	Avoid&lt;br /&gt;
         d.	Reduce&lt;br /&gt;
&lt;br /&gt;
=How to work on getting the mitigations in place, track them to closure and keep monitoring risks=&lt;br /&gt;
1.	Upon completion of the initial threat modelling exercise, assign identified risks to the relevant business / risk owners of threats for example&lt;br /&gt;
        a.	If there is an identified risk with the way the database is implemented, assign the risk responsibility to the owner of the database team. &lt;br /&gt;
        b.	If there is an identified risk with the application design, assign the risk responsibility to the owner of the application team&lt;br /&gt;
        c.	Although the risks are assigned to the database and application teams, the accountability of ensuring the risks are addressed lies with the business owner for the business the application is being developed for. At the end of the day, the business owner needs to understand the risk appetite of his/her business unit and whether the risk is above or below the acceptable level.&lt;br /&gt;
&lt;br /&gt;
2.	Maintain a Threat Traceability Matrix which at the minimum lists the following:&lt;br /&gt;
        a.	Information flow (along with the list of assets)&lt;br /&gt;
        b.	Threats for the information flows&lt;br /&gt;
        c.	Probability of occurrence of the risk&lt;br /&gt;
        d.	Impact of materialisation of the risk &lt;br /&gt;
        e.	Risk owner – responsibility wise&lt;br /&gt;
        f.	Risk owner – accountability wise&lt;br /&gt;
        g.	Mitigation&lt;br /&gt;
        h.	Last review date&lt;br /&gt;
        i.	Next review date&lt;br /&gt;
        j.	Instances of materialisation of the risk&lt;br /&gt;
&lt;br /&gt;
3.	Test the risk as a part of security testing to ensure that the mitigation works as expected&lt;br /&gt;
&lt;br /&gt;
Periodically retest the risk in either a vulnerability scan or as part of penetration test or security test to ensure that the mitigation remains in place and works as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
https://www.owasp.org/index.php/Application_Threat_Modeling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authors and Primary Editors  ==&lt;br /&gt;
&lt;br /&gt;
Shruti Kulkarni - shruti.kulkarni@owasp.org&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;
|}&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Shruti_Kulkarni&amp;diff=221933</id>
		<title>User:Shruti Kulkarni</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Shruti_Kulkarni&amp;diff=221933"/>
				<updated>2016-09-30T13:40:08Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216925</id>
		<title>Threat Modeling Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216925"/>
				<updated>2016-05-16T13:36:49Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
The objective of this cheat sheet is to provide guidance to developers, reviewers, designers and architects on conducting successful threat modeling. The main goal of threat modeling is to understand the controls needed for a software system. This is a complex endeavor that will involve investigations into:&lt;br /&gt;
# The trust boundaries to and within the solution that we build&lt;br /&gt;
# The actors that interact within and outside of the trust boundaries&lt;br /&gt;
# Information flows within and to and from the trust boundaries&lt;br /&gt;
# Information persistence within and out of trust boundaries&lt;br /&gt;
# Vulnerabilities at trust boundaries&lt;br /&gt;
# Threat agents that can exploit the vulnerabilities&lt;br /&gt;
# Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
# Controls  and process needed to treat specific risks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Why do we need to perform threat modeling=&lt;br /&gt;
&lt;br /&gt;
1.	Performing threat model at the architecture level, helps in&lt;br /&gt;
        a.	confirming on suitability of the identified security features to be implemented&lt;br /&gt;
        b.	identification of any gaps in the security features to be implemented&lt;br /&gt;
        c.	identification of any further security features&lt;br /&gt;
        d.	identification of policy and process requirements&lt;br /&gt;
        e.	identification of requirements to be fed into security operations&lt;br /&gt;
        f.	identification of logging and monitoring requirements&lt;br /&gt;
        g.	arriving at abuse cases when used in agile methodology&lt;br /&gt;
        h.	understanding business continuity requirements&lt;br /&gt;
        i.	understanding capacity and availability requirements&lt;br /&gt;
&lt;br /&gt;
2.	Performing threat model at the design level, helps in,&lt;br /&gt;
        a.	identification of vulnerabilities that need to be closed at design level and input this into build phase&lt;br /&gt;
        b.	identification of information assets that need security controls&lt;br /&gt;
        c.	mapping of identified security controls into technical / administrative / physical controls as the case may be (this activity can be done at the architecture level as well, but doing it at design level helps in being granular)&lt;br /&gt;
        d.	identification of security test cases / security test scenarios to test the security requirements&lt;br /&gt;
&lt;br /&gt;
=Starting the threat modeling exercise=&lt;br /&gt;
It is important to have a risk assessment policy at an organisation which gives guidance to the practitioners on when to do a threat model, management guidance, owners of the risks etc&lt;br /&gt;
It is also important to the following before starting with this exercise:&lt;br /&gt;
&lt;br /&gt;
1.Make of list of all the stakeholders who need to participate in this exercise. For example application architects, infrastructure architects, solution architects, business owners&lt;br /&gt;
&lt;br /&gt;
2.Get management buy-in to ensure that there is management support for involvement of all necessary stakeholders.&lt;br /&gt;
&lt;br /&gt;
3.It is assumed that the threat modeling exercise is led by the security team of the organisation and the risk log is maintained by the security team&lt;br /&gt;
&lt;br /&gt;
Following are the activities that are a part of the exercise:&lt;br /&gt;
&lt;br /&gt;
1. The trust boundaries to and within the solution that we build&lt;br /&gt;
&lt;br /&gt;
2. The actors that interact within and outside of the trust boundaries&lt;br /&gt;
&lt;br /&gt;
3. Information flows within and to and from the trust boundaries&lt;br /&gt;
&lt;br /&gt;
4. Information persistence within and out of trust boundaries 	&lt;br /&gt;
&lt;br /&gt;
5. Threats to transgression of trust boundaries by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
6. Vulnerabilities at trust boundaries as accessed by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
7. Threat agents that can exploit the vulnerabilities&lt;br /&gt;
&lt;br /&gt;
8. Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
&lt;br /&gt;
9. Decision tree to treat the risk&lt;br /&gt;
&lt;br /&gt;
=Decompose and Model the system=&lt;br /&gt;
&lt;br /&gt;
To perform a threat model, it is important to understand how the system works and interacts with its ecosystem.&lt;br /&gt;
To start with, create a high level information flow diagram, something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;Picture to be embedded&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
1.	Identify the trusted boundaries of your system / application / module / ecosystem that you may want to start off with.&lt;br /&gt;
&lt;br /&gt;
2.	Add actors – internal and external&lt;br /&gt;
&lt;br /&gt;
3.	Define internal trusted boundaries. These can be the different security zones that have been designed&lt;br /&gt;
&lt;br /&gt;
4.	Relook at the actors you have identified in #2 for consistency&lt;br /&gt;
&lt;br /&gt;
5.	Add information flows &lt;br /&gt;
      a.	Information in transit&lt;br /&gt;
      b.	Information at rest&lt;br /&gt;
      c.	Information processing&lt;br /&gt;
      d.	In the above diagram, following are the information flows:&lt;br /&gt;
              i.	Login Information&lt;br /&gt;
             ii.	Transmit login information&lt;br /&gt;
            iii.	Data process&lt;br /&gt;
             iv.	Data store&lt;br /&gt;
&lt;br /&gt;
6.	Identify the information elements and their classification as per your information classification policy&lt;br /&gt;
&lt;br /&gt;
7.	Where possible add assets to the identified information  flows&lt;br /&gt;
&lt;br /&gt;
8.	Identify threat agents for each of the information flows&lt;br /&gt;
&lt;br /&gt;
9.	Draw attack vectors and attack trees in an iteratively to make sure that no major attack vector is missed.&lt;br /&gt;
&lt;br /&gt;
10.	For each of the information flows perform threat assessment using any of the methodologies that meets the organisation’s requirements:&lt;br /&gt;
&lt;br /&gt;
11.	Add a probability value to the materialisation of each of the threat&lt;br /&gt;
&lt;br /&gt;
12.	Add a value for impact of each threat materialisation&lt;br /&gt;
&lt;br /&gt;
13.	Identify the acceptable level of risk for the organisation or the identified scope&lt;br /&gt;
&lt;br /&gt;
14.	Identify the risks for mitigation that are above the acceptable level of risk &lt;br /&gt;
&lt;br /&gt;
15.	Mitigate the risks by doing one or more of the following:&lt;br /&gt;
         a.	Accept&lt;br /&gt;
         b.	Transfer&lt;br /&gt;
         c.	Avoid&lt;br /&gt;
         d.	Reduce&lt;br /&gt;
&lt;br /&gt;
=How to work on getting the mitigations in place, track them to closure and keep monitoring risks=&lt;br /&gt;
1.	Upon completion of the initial threat modelling exercise, assign the risks to the relevant business / risk owners of threats for example&lt;br /&gt;
        a.	If there is an identified risk with the way the database is implemented, assign the risk to the owner of the database team. &lt;br /&gt;
        b.	If there is an identified risk with the application design assign the risk to the owner of the application team&lt;br /&gt;
        c.	However these are responsibilities that are assigned. The accountability of getting these risks addressed lies with the business owner for whose business the application is being developed for. End of the day, it is the business owner who needs to understand if the risk is aligned with the risk appetite of his/her business unit. And if the risk is above or below the acceptable level.&lt;br /&gt;
&lt;br /&gt;
2.	Maintain a Threat Traceability Matrix which at the minimum lists the following:&lt;br /&gt;
        a.	Information flow (along with the list of assets)&lt;br /&gt;
        b.	Threats for the information flows&lt;br /&gt;
        c.	Probability of occurrence of the risk&lt;br /&gt;
        d.	Impact of materialisation of the risk &lt;br /&gt;
        e.	Risk owner – responsibility wise&lt;br /&gt;
        f.	Risk owner – accountability wise&lt;br /&gt;
        g.	Mitigation&lt;br /&gt;
        h.	Last review date&lt;br /&gt;
        i.	Next review date&lt;br /&gt;
        j.	Instances of materialisation of the risk&lt;br /&gt;
&lt;br /&gt;
3.	Test the risk as a part of security testing to ensure that the mitigation works as expected&lt;br /&gt;
&lt;br /&gt;
Periodically retest the risk in either a vulnerability scan or as a test scenario as part of penetration test or security test to ensure that the mitigation is still in place and works as expected&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
https://www.owasp.org/index.php/Application_Threat_Modeling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authors and Primary Editors  ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Other Cheatsheets ==&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216922</id>
		<title>Threat Modeling Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216922"/>
				<updated>2016-05-16T13:34:10Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Decompose and Model the system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
The objective of this cheat sheet is to provide guidance to developers, reviewers, designers and architects on conducting successful threat modeling. The main goal of threat modeling is to understand the controls needed for a software system. This is a complex endeavor that will involve investigations into:&lt;br /&gt;
# The trust boundaries to and within the solution that we build&lt;br /&gt;
# The actors that interact within and outside of the trust boundaries&lt;br /&gt;
# Information flows within and to and from the trust boundaries&lt;br /&gt;
# Information persistence within and out of trust boundaries&lt;br /&gt;
# Vulnerabilities at trust boundaries&lt;br /&gt;
# Threat agents that can exploit the vulnerabilities&lt;br /&gt;
# Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
# Controls  and process needed to treat specific risks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Why do we need to perform threat modeling=&lt;br /&gt;
&lt;br /&gt;
1.	Performing threat model at the architecture level, helps in&lt;br /&gt;
        a.	confirming on suitability of the identified security features to be implemented&lt;br /&gt;
        b.	identification of any gaps in the security features to be implemented&lt;br /&gt;
        c.	identification of any further security features&lt;br /&gt;
        d.	identification of policy and process requirements&lt;br /&gt;
        e.	identification of requirements to be fed into security operations&lt;br /&gt;
        f.	identification of logging and monitoring requirements&lt;br /&gt;
        g.	arriving at abuse cases when used in agile methodology&lt;br /&gt;
        h.	understanding business continuity requirements&lt;br /&gt;
        i.	understanding capacity and availability requirements&lt;br /&gt;
&lt;br /&gt;
2.	Performing threat model at the design level, helps in,&lt;br /&gt;
        a.	identification of vulnerabilities that need to be closed at design level and input this into build phase&lt;br /&gt;
        b.	identification of information assets that need security controls&lt;br /&gt;
        c.	mapping of identified security controls into technical / administrative / physical controls as the case may be (this activity can be done at the architecture level as well, but doing it at design level helps in being granular)&lt;br /&gt;
        d.	identification of security test cases / security test scenarios to test the security requirements&lt;br /&gt;
&lt;br /&gt;
=Starting the threat modeling exercise=&lt;br /&gt;
It is important to have a risk assessment policy at an organisation which gives guidance to the practitioners on when to do a threat model, management guidance, owners of the risks etc&lt;br /&gt;
It is also important to the following before starting with this exercise:&lt;br /&gt;
&lt;br /&gt;
1.Make of list of all the stakeholders who need to participate in this exercise. For example application architects, infrastructure architects, solution architects, business owners&lt;br /&gt;
&lt;br /&gt;
2.Get management buy-in to ensure that there is management support for involvement of all necessary stakeholders.&lt;br /&gt;
&lt;br /&gt;
3.It is assumed that the threat modeling exercise is led by the security team of the organisation and the risk log is maintained by the security team&lt;br /&gt;
&lt;br /&gt;
Following are the activities that are a part of the exercise:&lt;br /&gt;
&lt;br /&gt;
1. The trust boundaries to and within the solution that we build&lt;br /&gt;
&lt;br /&gt;
2. The actors that interact within and outside of the trust boundaries&lt;br /&gt;
&lt;br /&gt;
3. Information flows within and to and from the trust boundaries&lt;br /&gt;
&lt;br /&gt;
4. Information persistence within and out of trust boundaries 	&lt;br /&gt;
&lt;br /&gt;
5. Threats to transgression of trust boundaries by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
6. Vulnerabilities at trust boundaries as accessed by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
7. Threat agents that can exploit the vulnerabilities&lt;br /&gt;
&lt;br /&gt;
8. Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
&lt;br /&gt;
9. Decision tree to treat the risk&lt;br /&gt;
&lt;br /&gt;
=Decompose and Model the system=&lt;br /&gt;
&lt;br /&gt;
To perform a threat model, it is important to understand how the system works and interacts with its ecosystem.&lt;br /&gt;
To start with, create a high level information flow diagram, something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;File to be embedded&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
1.	Identify the trusted boundaries of your system / application / module / ecosystem that you may want to start off with.&lt;br /&gt;
&lt;br /&gt;
2.	Add actors – internal and external&lt;br /&gt;
&lt;br /&gt;
3.	Define internal trusted boundaries. These can be the different security zones that have been designed&lt;br /&gt;
&lt;br /&gt;
4.	Relook at the actors you have identified in #2 for consistency&lt;br /&gt;
&lt;br /&gt;
5.	Add information flows &lt;br /&gt;
      a.	Information in transit&lt;br /&gt;
      b.	Information at rest&lt;br /&gt;
      c.	Information processing&lt;br /&gt;
      d.	In the above diagram, following are the information flows:&lt;br /&gt;
              i.	Login Information&lt;br /&gt;
             ii.	Transmit login information&lt;br /&gt;
            iii.	Data process&lt;br /&gt;
             iv.	Data store&lt;br /&gt;
&lt;br /&gt;
6.	Identify the information elements and their classification as per your information classification policy&lt;br /&gt;
&lt;br /&gt;
7.	Where possible add assets to the identified information  flows&lt;br /&gt;
&lt;br /&gt;
8.	Identify threat agents for each of the information flows&lt;br /&gt;
&lt;br /&gt;
9.	Draw attack vectors and attack trees in an iteratively to make sure that no major attack vector is missed.&lt;br /&gt;
&lt;br /&gt;
10.	For each of the information flows perform threat assessment using any of the methodologies that meets the organisation’s requirements:&lt;br /&gt;
&lt;br /&gt;
11.	Add a probability value to the materialisation of each of the threat&lt;br /&gt;
&lt;br /&gt;
12.	Add a value for impact of each threat materialisation&lt;br /&gt;
&lt;br /&gt;
13.	Identify the acceptable level of risk for the organisation or the identified scope&lt;br /&gt;
&lt;br /&gt;
14.	Identify the risks for mitigation that are above the acceptable level of risk &lt;br /&gt;
&lt;br /&gt;
15.	Mitigate the risks by doing one or more of the following:&lt;br /&gt;
         a.	Accept&lt;br /&gt;
         b.	Transfer&lt;br /&gt;
         c.	Avoid&lt;br /&gt;
         d.	Reduce&lt;br /&gt;
&lt;br /&gt;
=How to work on getting the mitigations in place, track them to closure and keep monitoring risks=&lt;br /&gt;
1.	Upon completion of the initial threat modelling exercise, assign the risks to the relevant business / risk owners of threats for example&lt;br /&gt;
        a.	If there is an identified risk with the way the database is implemented, assign the risk to the owner of the database team. &lt;br /&gt;
        b.	If there is an identified risk with the application design assign the risk to the owner of the application team&lt;br /&gt;
        c.	However these are responsibilities that are assigned. The accountability of getting these risks addressed lies with the business owner for whose business the application is being developed for. End of the day, it is the business owner who needs to understand if the risk is aligned with the risk appetite of his/her business unit. And if the risk is above or below the acceptable level.&lt;br /&gt;
&lt;br /&gt;
2.	Maintain a Threat Traceability Matrix which at the minimum lists the following:&lt;br /&gt;
        a.	Information flow (along with the list of assets)&lt;br /&gt;
        b.	Threats for the information flows&lt;br /&gt;
        c.	Probability of occurrence of the risk&lt;br /&gt;
        d.	Impact of materialisation of the risk &lt;br /&gt;
        e.	Risk owner – responsibility wise&lt;br /&gt;
        f.	Risk owner – accountability wise&lt;br /&gt;
        g.	Mitigation&lt;br /&gt;
        h.	Last review date&lt;br /&gt;
        i.	Next review date&lt;br /&gt;
        j.	Instances of materialisation of the risk&lt;br /&gt;
&lt;br /&gt;
3.	Test the risk as a part of security testing to ensure that the mitigation works as expected&lt;br /&gt;
&lt;br /&gt;
Periodically retest the risk in either a vulnerability scan or as a test scenario as part of penetration test or security test to ensure that the mitigation is still in place and works as expected&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
https://www.owasp.org/index.php/Application_Threat_Modeling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authors and Primary Editors  ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Other Cheatsheets ==&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216921</id>
		<title>Threat Modeling Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216921"/>
				<updated>2016-05-16T13:32:18Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Decompose and Model the system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
The objective of this cheat sheet is to provide guidance to developers, reviewers, designers and architects on conducting successful threat modeling. The main goal of threat modeling is to understand the controls needed for a software system. This is a complex endeavor that will involve investigations into:&lt;br /&gt;
# The trust boundaries to and within the solution that we build&lt;br /&gt;
# The actors that interact within and outside of the trust boundaries&lt;br /&gt;
# Information flows within and to and from the trust boundaries&lt;br /&gt;
# Information persistence within and out of trust boundaries&lt;br /&gt;
# Vulnerabilities at trust boundaries&lt;br /&gt;
# Threat agents that can exploit the vulnerabilities&lt;br /&gt;
# Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
# Controls  and process needed to treat specific risks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Why do we need to perform threat modeling=&lt;br /&gt;
&lt;br /&gt;
1.	Performing threat model at the architecture level, helps in&lt;br /&gt;
        a.	confirming on suitability of the identified security features to be implemented&lt;br /&gt;
        b.	identification of any gaps in the security features to be implemented&lt;br /&gt;
        c.	identification of any further security features&lt;br /&gt;
        d.	identification of policy and process requirements&lt;br /&gt;
        e.	identification of requirements to be fed into security operations&lt;br /&gt;
        f.	identification of logging and monitoring requirements&lt;br /&gt;
        g.	arriving at abuse cases when used in agile methodology&lt;br /&gt;
        h.	understanding business continuity requirements&lt;br /&gt;
        i.	understanding capacity and availability requirements&lt;br /&gt;
&lt;br /&gt;
2.	Performing threat model at the design level, helps in,&lt;br /&gt;
        a.	identification of vulnerabilities that need to be closed at design level and input this into build phase&lt;br /&gt;
        b.	identification of information assets that need security controls&lt;br /&gt;
        c.	mapping of identified security controls into technical / administrative / physical controls as the case may be (this activity can be done at the architecture level as well, but doing it at design level helps in being granular)&lt;br /&gt;
        d.	identification of security test cases / security test scenarios to test the security requirements&lt;br /&gt;
&lt;br /&gt;
=Starting the threat modeling exercise=&lt;br /&gt;
It is important to have a risk assessment policy at an organisation which gives guidance to the practitioners on when to do a threat model, management guidance, owners of the risks etc&lt;br /&gt;
It is also important to the following before starting with this exercise:&lt;br /&gt;
&lt;br /&gt;
1.Make of list of all the stakeholders who need to participate in this exercise. For example application architects, infrastructure architects, solution architects, business owners&lt;br /&gt;
&lt;br /&gt;
2.Get management buy-in to ensure that there is management support for involvement of all necessary stakeholders.&lt;br /&gt;
&lt;br /&gt;
3.It is assumed that the threat modeling exercise is led by the security team of the organisation and the risk log is maintained by the security team&lt;br /&gt;
&lt;br /&gt;
Following are the activities that are a part of the exercise:&lt;br /&gt;
&lt;br /&gt;
1. The trust boundaries to and within the solution that we build&lt;br /&gt;
&lt;br /&gt;
2. The actors that interact within and outside of the trust boundaries&lt;br /&gt;
&lt;br /&gt;
3. Information flows within and to and from the trust boundaries&lt;br /&gt;
&lt;br /&gt;
4. Information persistence within and out of trust boundaries 	&lt;br /&gt;
&lt;br /&gt;
5. Threats to transgression of trust boundaries by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
6. Vulnerabilities at trust boundaries as accessed by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
7. Threat agents that can exploit the vulnerabilities&lt;br /&gt;
&lt;br /&gt;
8. Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
&lt;br /&gt;
9. Decision tree to treat the risk&lt;br /&gt;
&lt;br /&gt;
=Decompose and Model the system=&lt;br /&gt;
&lt;br /&gt;
To perform a threat model, it is important to understand how the system works and interacts with its ecosystem.&lt;br /&gt;
To start with, create a high level information flow diagram, something like this:&lt;br /&gt;
&lt;br /&gt;
[[File:C:\Users\kulkarnis\Pictures\Threat Model.tif]]&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
1.	Identify the trusted boundaries of your system / application / module / ecosystem that you may want to start off with.&lt;br /&gt;
&lt;br /&gt;
2.	Add actors – internal and external&lt;br /&gt;
&lt;br /&gt;
3.	Define internal trusted boundaries. These can be the different security zones that have been designed&lt;br /&gt;
&lt;br /&gt;
4.	Relook at the actors you have identified in #2 for consistency&lt;br /&gt;
&lt;br /&gt;
5.	Add information flows &lt;br /&gt;
      a.	Information in transit&lt;br /&gt;
      b.	Information at rest&lt;br /&gt;
      c.	Information processing&lt;br /&gt;
      d.	In the above diagram, following are the information flows:&lt;br /&gt;
              i.	Login Information&lt;br /&gt;
             ii.	Transmit login information&lt;br /&gt;
            iii.	Data process&lt;br /&gt;
             iv.	Data store&lt;br /&gt;
&lt;br /&gt;
6.	Identify the information elements and their classification as per your information classification policy&lt;br /&gt;
&lt;br /&gt;
7.	Where possible add assets to the identified information  flows&lt;br /&gt;
&lt;br /&gt;
8.	Identify threat agents for each of the information flows&lt;br /&gt;
&lt;br /&gt;
9.	Draw attack vectors and attack trees in an iteratively to make sure that no major attack vector is missed.&lt;br /&gt;
&lt;br /&gt;
10.	For each of the information flows perform threat assessment using any of the methodologies that meets the organisation’s requirements:&lt;br /&gt;
&lt;br /&gt;
11.	Add a probability value to the materialisation of each of the threat&lt;br /&gt;
&lt;br /&gt;
12.	Add a value for impact of each threat materialisation&lt;br /&gt;
&lt;br /&gt;
13.	Identify the acceptable level of risk for the organisation or the identified scope&lt;br /&gt;
&lt;br /&gt;
14.	Identify the risks for mitigation that are above the acceptable level of risk &lt;br /&gt;
&lt;br /&gt;
15.	Mitigate the risks by doing one or more of the following:&lt;br /&gt;
         a.	Accept&lt;br /&gt;
         b.	Transfer&lt;br /&gt;
         c.	Avoid&lt;br /&gt;
         d.	Reduce&lt;br /&gt;
&lt;br /&gt;
=How to work on getting the mitigations in place, track them to closure and keep monitoring risks=&lt;br /&gt;
1.	Upon completion of the initial threat modelling exercise, assign the risks to the relevant business / risk owners of threats for example&lt;br /&gt;
        a.	If there is an identified risk with the way the database is implemented, assign the risk to the owner of the database team. &lt;br /&gt;
        b.	If there is an identified risk with the application design assign the risk to the owner of the application team&lt;br /&gt;
        c.	However these are responsibilities that are assigned. The accountability of getting these risks addressed lies with the business owner for whose business the application is being developed for. End of the day, it is the business owner who needs to understand if the risk is aligned with the risk appetite of his/her business unit. And if the risk is above or below the acceptable level.&lt;br /&gt;
&lt;br /&gt;
2.	Maintain a Threat Traceability Matrix which at the minimum lists the following:&lt;br /&gt;
        a.	Information flow (along with the list of assets)&lt;br /&gt;
        b.	Threats for the information flows&lt;br /&gt;
        c.	Probability of occurrence of the risk&lt;br /&gt;
        d.	Impact of materialisation of the risk &lt;br /&gt;
        e.	Risk owner – responsibility wise&lt;br /&gt;
        f.	Risk owner – accountability wise&lt;br /&gt;
        g.	Mitigation&lt;br /&gt;
        h.	Last review date&lt;br /&gt;
        i.	Next review date&lt;br /&gt;
        j.	Instances of materialisation of the risk&lt;br /&gt;
&lt;br /&gt;
3.	Test the risk as a part of security testing to ensure that the mitigation works as expected&lt;br /&gt;
&lt;br /&gt;
Periodically retest the risk in either a vulnerability scan or as a test scenario as part of penetration test or security test to ensure that the mitigation is still in place and works as expected&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
https://www.owasp.org/index.php/Application_Threat_Modeling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authors and Primary Editors  ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Other Cheatsheets ==&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216911</id>
		<title>Threat Modeling Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216911"/>
				<updated>2016-05-15T19:47:59Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Why do we need to perform threat modeling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
The objective of this cheat sheet is to provide guidance to developers, reviewers, designers and architects on conducting successful threat modeling. The main goal of threat modeling is to understand the controls needed for a software system. This is a complex endeavor that will involve investigations into:&lt;br /&gt;
# The trust boundaries to and within the solution that we build&lt;br /&gt;
# The actors that interact within and outside of the trust boundaries&lt;br /&gt;
# Information flows within and to and from the trust boundaries&lt;br /&gt;
# Information persistence within and out of trust boundaries&lt;br /&gt;
# Vulnerabilities at trust boundaries&lt;br /&gt;
# Threat agents that can exploit the vulnerabilities&lt;br /&gt;
# Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
# Controls  and process needed to treat specific risks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Why do we need to perform threat modeling=&lt;br /&gt;
&lt;br /&gt;
1.	Performing threat model at the architecture level, helps in&lt;br /&gt;
        a.	confirming on suitability of the identified security features to be implemented&lt;br /&gt;
        b.	identification of any gaps in the security features to be implemented&lt;br /&gt;
        c.	identification of any further security features&lt;br /&gt;
        d.	identification of policy and process requirements&lt;br /&gt;
        e.	identification of requirements to be fed into security operations&lt;br /&gt;
        f.	identification of logging and monitoring requirements&lt;br /&gt;
        g.	arriving at abuse cases when used in agile methodology&lt;br /&gt;
        h.	understanding business continuity requirements&lt;br /&gt;
        i.	understanding capacity and availability requirements&lt;br /&gt;
&lt;br /&gt;
2.	Performing threat model at the design level, helps in,&lt;br /&gt;
        a.	identification of vulnerabilities that need to be closed at design level and input this into build phase&lt;br /&gt;
        b.	identification of information assets that need security controls&lt;br /&gt;
        c.	mapping of identified security controls into technical / administrative / physical controls as the case may be (this activity can be done at the architecture level as well, but doing it at design level helps in being granular)&lt;br /&gt;
        d.	identification of security test cases / security test scenarios to test the security requirements&lt;br /&gt;
&lt;br /&gt;
=Starting the threat modeling exercise=&lt;br /&gt;
It is important to have a risk assessment policy at an organisation which gives guidance to the practitioners on when to do a threat model, management guidance, owners of the risks etc&lt;br /&gt;
It is also important to the following before starting with this exercise:&lt;br /&gt;
&lt;br /&gt;
1.Make of list of all the stakeholders who need to participate in this exercise. For example application architects, infrastructure architects, solution architects, business owners&lt;br /&gt;
&lt;br /&gt;
2.Get management buy-in to ensure that there is management support for involvement of all necessary stakeholders.&lt;br /&gt;
&lt;br /&gt;
3.It is assumed that the threat modeling exercise is led by the security team of the organisation and the risk log is maintained by the security team&lt;br /&gt;
&lt;br /&gt;
Following are the activities that are a part of the exercise:&lt;br /&gt;
&lt;br /&gt;
1. The trust boundaries to and within the solution that we build&lt;br /&gt;
&lt;br /&gt;
2. The actors that interact within and outside of the trust boundaries&lt;br /&gt;
&lt;br /&gt;
3. Information flows within and to and from the trust boundaries&lt;br /&gt;
&lt;br /&gt;
4. Information persistence within and out of trust boundaries 	&lt;br /&gt;
&lt;br /&gt;
5. Threats to transgression of trust boundaries by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
6. Vulnerabilities at trust boundaries as accessed by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
7. Threat agents that can exploit the vulnerabilities&lt;br /&gt;
&lt;br /&gt;
8. Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
&lt;br /&gt;
9. Decision tree to treat the risk&lt;br /&gt;
&lt;br /&gt;
=Decompose and Model the system=&lt;br /&gt;
&lt;br /&gt;
To perform a threat model, it is important to understand how the system works and interacts with its ecosystem.&lt;br /&gt;
To start with, create a high level information flow diagram, something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
1.	Identify the trusted boundaries of your system / application / module / ecosystem that you may want to start off with.&lt;br /&gt;
&lt;br /&gt;
2.	Add actors – internal and external&lt;br /&gt;
&lt;br /&gt;
3.	Define internal trusted boundaries. These can be the different security zones that have been designed&lt;br /&gt;
&lt;br /&gt;
4.	Relook at the actors you have identified in #2 for consistency&lt;br /&gt;
&lt;br /&gt;
5.	Add information flows &lt;br /&gt;
      a.	Information in transit&lt;br /&gt;
      b.	Information at rest&lt;br /&gt;
      c.	Information processing&lt;br /&gt;
      d.	In the above diagram, following are the information flows:&lt;br /&gt;
              i.	Login Information&lt;br /&gt;
             ii.	Transmit login information&lt;br /&gt;
            iii.	Data process&lt;br /&gt;
             iv.	Data store&lt;br /&gt;
&lt;br /&gt;
6.	Identify the information elements and their classification as per your information classification policy&lt;br /&gt;
&lt;br /&gt;
7.	Where possible add assets to the identified information  flows&lt;br /&gt;
&lt;br /&gt;
8.	Identify threat agents for each of the information flows&lt;br /&gt;
&lt;br /&gt;
9.	Draw attack vectors and attack trees in an iteratively to make sure that no major attack vector is missed.&lt;br /&gt;
&lt;br /&gt;
10.	For each of the information flows perform threat assessment using any of the methodologies that meets the organisation’s requirements:&lt;br /&gt;
&lt;br /&gt;
11.	Add a probability value to the materialisation of each of the threat&lt;br /&gt;
&lt;br /&gt;
12.	Add a value for impact of each threat materialisation&lt;br /&gt;
&lt;br /&gt;
13.	Identify the acceptable level of risk for the organisation or the identified scope&lt;br /&gt;
&lt;br /&gt;
14.	Identify the risks for mitigation that are above the acceptable level of risk &lt;br /&gt;
&lt;br /&gt;
15.	Mitigate the risks by doing one or more of the following:&lt;br /&gt;
         a.	Accept&lt;br /&gt;
         b.	Transfer&lt;br /&gt;
         c.	Avoid&lt;br /&gt;
         d.	Reduce&lt;br /&gt;
&lt;br /&gt;
=How to work on getting the mitigations in place, track them to closure and keep monitoring risks=&lt;br /&gt;
1.	Upon completion of the initial threat modelling exercise, assign the risks to the relevant business / risk owners of threats for example&lt;br /&gt;
        a.	If there is an identified risk with the way the database is implemented, assign the risk to the owner of the database team. &lt;br /&gt;
        b.	If there is an identified risk with the application design assign the risk to the owner of the application team&lt;br /&gt;
        c.	However these are responsibilities that are assigned. The accountability of getting these risks addressed lies with the business owner for whose business the application is being developed for. End of the day, it is the business owner who needs to understand if the risk is aligned with the risk appetite of his/her business unit. And if the risk is above or below the acceptable level.&lt;br /&gt;
&lt;br /&gt;
2.	Maintain a Threat Traceability Matrix which at the minimum lists the following:&lt;br /&gt;
        a.	Information flow (along with the list of assets)&lt;br /&gt;
        b.	Threats for the information flows&lt;br /&gt;
        c.	Probability of occurrence of the risk&lt;br /&gt;
        d.	Impact of materialisation of the risk &lt;br /&gt;
        e.	Risk owner – responsibility wise&lt;br /&gt;
        f.	Risk owner – accountability wise&lt;br /&gt;
        g.	Mitigation&lt;br /&gt;
        h.	Last review date&lt;br /&gt;
        i.	Next review date&lt;br /&gt;
        j.	Instances of materialisation of the risk&lt;br /&gt;
&lt;br /&gt;
3.	Test the risk as a part of security testing to ensure that the mitigation works as expected&lt;br /&gt;
&lt;br /&gt;
Periodically retest the risk in either a vulnerability scan or as a test scenario as part of penetration test or security test to ensure that the mitigation is still in place and works as expected&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
https://www.owasp.org/index.php/Application_Threat_Modeling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authors and Primary Editors  ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Other Cheatsheets ==&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216910</id>
		<title>Threat Modeling Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216910"/>
				<updated>2016-05-15T19:46:55Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Further Reading */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
The objective of this cheat sheet is to provide guidance to developers, reviewers, designers and architects on conducting successful threat modeling. The main goal of threat modeling is to understand the controls needed for a software system. This is a complex endeavor that will involve investigations into:&lt;br /&gt;
# The trust boundaries to and within the solution that we build&lt;br /&gt;
# The actors that interact within and outside of the trust boundaries&lt;br /&gt;
# Information flows within and to and from the trust boundaries&lt;br /&gt;
# Information persistence within and out of trust boundaries&lt;br /&gt;
# Vulnerabilities at trust boundaries&lt;br /&gt;
# Threat agents that can exploit the vulnerabilities&lt;br /&gt;
# Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
# Controls  and process needed to treat specific risks&lt;br /&gt;
&lt;br /&gt;
=Why do we need to perform threat modeling=&lt;br /&gt;
&lt;br /&gt;
1.	Performing threat model at the architecture level, helps in&lt;br /&gt;
a.	confirming on suitability of the identified security features to be implemented&lt;br /&gt;
b.	identification of any gaps in the security features to be implemented&lt;br /&gt;
c.	identification of any further security features&lt;br /&gt;
d.	identification of policy and process requirements&lt;br /&gt;
e.	identification of requirements to be fed into security operations&lt;br /&gt;
f.	identification of logging and monitoring requirements&lt;br /&gt;
g.	arriving at abuse cases when used in agile methodology&lt;br /&gt;
h.	understanding business continuity requirements&lt;br /&gt;
i.	understanding capacity and availability requirements&lt;br /&gt;
&lt;br /&gt;
2.	Performing threat model at the design level, helps in,&lt;br /&gt;
a.	identification of vulnerabilities that need to be closed at design level and input this into build phase&lt;br /&gt;
b.	identification of information assets that need security controls&lt;br /&gt;
c.	mapping of identified security controls into technical / administrative / physical controls as the case may be (this activity can be done at the architecture level as well, but doing it at design level helps in being granular)&lt;br /&gt;
d.	identification of security test cases / security test scenarios to test the security requirements&lt;br /&gt;
&lt;br /&gt;
=Starting the threat modeling exercise=&lt;br /&gt;
It is important to have a risk assessment policy at an organisation which gives guidance to the practitioners on when to do a threat model, management guidance, owners of the risks etc&lt;br /&gt;
It is also important to the following before starting with this exercise:&lt;br /&gt;
&lt;br /&gt;
1.Make of list of all the stakeholders who need to participate in this exercise. For example application architects, infrastructure architects, solution architects, business owners&lt;br /&gt;
&lt;br /&gt;
2.Get management buy-in to ensure that there is management support for involvement of all necessary stakeholders.&lt;br /&gt;
&lt;br /&gt;
3.It is assumed that the threat modeling exercise is led by the security team of the organisation and the risk log is maintained by the security team&lt;br /&gt;
&lt;br /&gt;
Following are the activities that are a part of the exercise:&lt;br /&gt;
&lt;br /&gt;
1. The trust boundaries to and within the solution that we build&lt;br /&gt;
&lt;br /&gt;
2. The actors that interact within and outside of the trust boundaries&lt;br /&gt;
&lt;br /&gt;
3. Information flows within and to and from the trust boundaries&lt;br /&gt;
&lt;br /&gt;
4. Information persistence within and out of trust boundaries 	&lt;br /&gt;
&lt;br /&gt;
5. Threats to transgression of trust boundaries by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
6. Vulnerabilities at trust boundaries as accessed by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
7. Threat agents that can exploit the vulnerabilities&lt;br /&gt;
&lt;br /&gt;
8. Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
&lt;br /&gt;
9. Decision tree to treat the risk&lt;br /&gt;
&lt;br /&gt;
=Decompose and Model the system=&lt;br /&gt;
&lt;br /&gt;
To perform a threat model, it is important to understand how the system works and interacts with its ecosystem.&lt;br /&gt;
To start with, create a high level information flow diagram, something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
1.	Identify the trusted boundaries of your system / application / module / ecosystem that you may want to start off with.&lt;br /&gt;
&lt;br /&gt;
2.	Add actors – internal and external&lt;br /&gt;
&lt;br /&gt;
3.	Define internal trusted boundaries. These can be the different security zones that have been designed&lt;br /&gt;
&lt;br /&gt;
4.	Relook at the actors you have identified in #2 for consistency&lt;br /&gt;
&lt;br /&gt;
5.	Add information flows &lt;br /&gt;
      a.	Information in transit&lt;br /&gt;
      b.	Information at rest&lt;br /&gt;
      c.	Information processing&lt;br /&gt;
      d.	In the above diagram, following are the information flows:&lt;br /&gt;
              i.	Login Information&lt;br /&gt;
             ii.	Transmit login information&lt;br /&gt;
            iii.	Data process&lt;br /&gt;
             iv.	Data store&lt;br /&gt;
&lt;br /&gt;
6.	Identify the information elements and their classification as per your information classification policy&lt;br /&gt;
&lt;br /&gt;
7.	Where possible add assets to the identified information  flows&lt;br /&gt;
&lt;br /&gt;
8.	Identify threat agents for each of the information flows&lt;br /&gt;
&lt;br /&gt;
9.	Draw attack vectors and attack trees in an iteratively to make sure that no major attack vector is missed.&lt;br /&gt;
&lt;br /&gt;
10.	For each of the information flows perform threat assessment using any of the methodologies that meets the organisation’s requirements:&lt;br /&gt;
&lt;br /&gt;
11.	Add a probability value to the materialisation of each of the threat&lt;br /&gt;
&lt;br /&gt;
12.	Add a value for impact of each threat materialisation&lt;br /&gt;
&lt;br /&gt;
13.	Identify the acceptable level of risk for the organisation or the identified scope&lt;br /&gt;
&lt;br /&gt;
14.	Identify the risks for mitigation that are above the acceptable level of risk &lt;br /&gt;
&lt;br /&gt;
15.	Mitigate the risks by doing one or more of the following:&lt;br /&gt;
         a.	Accept&lt;br /&gt;
         b.	Transfer&lt;br /&gt;
         c.	Avoid&lt;br /&gt;
         d.	Reduce&lt;br /&gt;
&lt;br /&gt;
=How to work on getting the mitigations in place, track them to closure and keep monitoring risks=&lt;br /&gt;
1.	Upon completion of the initial threat modelling exercise, assign the risks to the relevant business / risk owners of threats for example&lt;br /&gt;
        a.	If there is an identified risk with the way the database is implemented, assign the risk to the owner of the database team. &lt;br /&gt;
        b.	If there is an identified risk with the application design assign the risk to the owner of the application team&lt;br /&gt;
        c.	However these are responsibilities that are assigned. The accountability of getting these risks addressed lies with the business owner for whose business the application is being developed for. End of the day, it is the business owner who needs to understand if the risk is aligned with the risk appetite of his/her business unit. And if the risk is above or below the acceptable level.&lt;br /&gt;
&lt;br /&gt;
2.	Maintain a Threat Traceability Matrix which at the minimum lists the following:&lt;br /&gt;
        a.	Information flow (along with the list of assets)&lt;br /&gt;
        b.	Threats for the information flows&lt;br /&gt;
        c.	Probability of occurrence of the risk&lt;br /&gt;
        d.	Impact of materialisation of the risk &lt;br /&gt;
        e.	Risk owner – responsibility wise&lt;br /&gt;
        f.	Risk owner – accountability wise&lt;br /&gt;
        g.	Mitigation&lt;br /&gt;
        h.	Last review date&lt;br /&gt;
        i.	Next review date&lt;br /&gt;
        j.	Instances of materialisation of the risk&lt;br /&gt;
&lt;br /&gt;
3.	Test the risk as a part of security testing to ensure that the mitigation works as expected&lt;br /&gt;
&lt;br /&gt;
Periodically retest the risk in either a vulnerability scan or as a test scenario as part of penetration test or security test to ensure that the mitigation is still in place and works as expected&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
https://www.owasp.org/index.php/Application_Threat_Modeling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authors and Primary Editors  ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Other Cheatsheets ==&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216909</id>
		<title>Threat Modeling Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216909"/>
				<updated>2016-05-15T19:45:49Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* How to work on getting the mitigations in place, track them to closure and keep monitoring risks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
The objective of this cheat sheet is to provide guidance to developers, reviewers, designers and architects on conducting successful threat modeling. The main goal of threat modeling is to understand the controls needed for a software system. This is a complex endeavor that will involve investigations into:&lt;br /&gt;
# The trust boundaries to and within the solution that we build&lt;br /&gt;
# The actors that interact within and outside of the trust boundaries&lt;br /&gt;
# Information flows within and to and from the trust boundaries&lt;br /&gt;
# Information persistence within and out of trust boundaries&lt;br /&gt;
# Vulnerabilities at trust boundaries&lt;br /&gt;
# Threat agents that can exploit the vulnerabilities&lt;br /&gt;
# Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
# Controls  and process needed to treat specific risks&lt;br /&gt;
&lt;br /&gt;
=Why do we need to perform threat modeling=&lt;br /&gt;
&lt;br /&gt;
1.	Performing threat model at the architecture level, helps in&lt;br /&gt;
a.	confirming on suitability of the identified security features to be implemented&lt;br /&gt;
b.	identification of any gaps in the security features to be implemented&lt;br /&gt;
c.	identification of any further security features&lt;br /&gt;
d.	identification of policy and process requirements&lt;br /&gt;
e.	identification of requirements to be fed into security operations&lt;br /&gt;
f.	identification of logging and monitoring requirements&lt;br /&gt;
g.	arriving at abuse cases when used in agile methodology&lt;br /&gt;
h.	understanding business continuity requirements&lt;br /&gt;
i.	understanding capacity and availability requirements&lt;br /&gt;
&lt;br /&gt;
2.	Performing threat model at the design level, helps in,&lt;br /&gt;
a.	identification of vulnerabilities that need to be closed at design level and input this into build phase&lt;br /&gt;
b.	identification of information assets that need security controls&lt;br /&gt;
c.	mapping of identified security controls into technical / administrative / physical controls as the case may be (this activity can be done at the architecture level as well, but doing it at design level helps in being granular)&lt;br /&gt;
d.	identification of security test cases / security test scenarios to test the security requirements&lt;br /&gt;
&lt;br /&gt;
=Starting the threat modeling exercise=&lt;br /&gt;
It is important to have a risk assessment policy at an organisation which gives guidance to the practitioners on when to do a threat model, management guidance, owners of the risks etc&lt;br /&gt;
It is also important to the following before starting with this exercise:&lt;br /&gt;
&lt;br /&gt;
1.Make of list of all the stakeholders who need to participate in this exercise. For example application architects, infrastructure architects, solution architects, business owners&lt;br /&gt;
&lt;br /&gt;
2.Get management buy-in to ensure that there is management support for involvement of all necessary stakeholders.&lt;br /&gt;
&lt;br /&gt;
3.It is assumed that the threat modeling exercise is led by the security team of the organisation and the risk log is maintained by the security team&lt;br /&gt;
&lt;br /&gt;
Following are the activities that are a part of the exercise:&lt;br /&gt;
&lt;br /&gt;
1. The trust boundaries to and within the solution that we build&lt;br /&gt;
&lt;br /&gt;
2. The actors that interact within and outside of the trust boundaries&lt;br /&gt;
&lt;br /&gt;
3. Information flows within and to and from the trust boundaries&lt;br /&gt;
&lt;br /&gt;
4. Information persistence within and out of trust boundaries 	&lt;br /&gt;
&lt;br /&gt;
5. Threats to transgression of trust boundaries by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
6. Vulnerabilities at trust boundaries as accessed by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
7. Threat agents that can exploit the vulnerabilities&lt;br /&gt;
&lt;br /&gt;
8. Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
&lt;br /&gt;
9. Decision tree to treat the risk&lt;br /&gt;
&lt;br /&gt;
=Decompose and Model the system=&lt;br /&gt;
&lt;br /&gt;
To perform a threat model, it is important to understand how the system works and interacts with its ecosystem.&lt;br /&gt;
To start with, create a high level information flow diagram, something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
1.	Identify the trusted boundaries of your system / application / module / ecosystem that you may want to start off with.&lt;br /&gt;
&lt;br /&gt;
2.	Add actors – internal and external&lt;br /&gt;
&lt;br /&gt;
3.	Define internal trusted boundaries. These can be the different security zones that have been designed&lt;br /&gt;
&lt;br /&gt;
4.	Relook at the actors you have identified in #2 for consistency&lt;br /&gt;
&lt;br /&gt;
5.	Add information flows &lt;br /&gt;
      a.	Information in transit&lt;br /&gt;
      b.	Information at rest&lt;br /&gt;
      c.	Information processing&lt;br /&gt;
      d.	In the above diagram, following are the information flows:&lt;br /&gt;
              i.	Login Information&lt;br /&gt;
             ii.	Transmit login information&lt;br /&gt;
            iii.	Data process&lt;br /&gt;
             iv.	Data store&lt;br /&gt;
&lt;br /&gt;
6.	Identify the information elements and their classification as per your information classification policy&lt;br /&gt;
&lt;br /&gt;
7.	Where possible add assets to the identified information  flows&lt;br /&gt;
&lt;br /&gt;
8.	Identify threat agents for each of the information flows&lt;br /&gt;
&lt;br /&gt;
9.	Draw attack vectors and attack trees in an iteratively to make sure that no major attack vector is missed.&lt;br /&gt;
&lt;br /&gt;
10.	For each of the information flows perform threat assessment using any of the methodologies that meets the organisation’s requirements:&lt;br /&gt;
&lt;br /&gt;
11.	Add a probability value to the materialisation of each of the threat&lt;br /&gt;
&lt;br /&gt;
12.	Add a value for impact of each threat materialisation&lt;br /&gt;
&lt;br /&gt;
13.	Identify the acceptable level of risk for the organisation or the identified scope&lt;br /&gt;
&lt;br /&gt;
14.	Identify the risks for mitigation that are above the acceptable level of risk &lt;br /&gt;
&lt;br /&gt;
15.	Mitigate the risks by doing one or more of the following:&lt;br /&gt;
         a.	Accept&lt;br /&gt;
         b.	Transfer&lt;br /&gt;
         c.	Avoid&lt;br /&gt;
         d.	Reduce&lt;br /&gt;
&lt;br /&gt;
=How to work on getting the mitigations in place, track them to closure and keep monitoring risks=&lt;br /&gt;
1.	Upon completion of the initial threat modelling exercise, assign the risks to the relevant business / risk owners of threats for example&lt;br /&gt;
        a.	If there is an identified risk with the way the database is implemented, assign the risk to the owner of the database team. &lt;br /&gt;
        b.	If there is an identified risk with the application design assign the risk to the owner of the application team&lt;br /&gt;
        c.	However these are responsibilities that are assigned. The accountability of getting these risks addressed lies with the business owner for whose business the application is being developed for. End of the day, it is the business owner who needs to understand if the risk is aligned with the risk appetite of his/her business unit. And if the risk is above or below the acceptable level.&lt;br /&gt;
&lt;br /&gt;
2.	Maintain a Threat Traceability Matrix which at the minimum lists the following:&lt;br /&gt;
        a.	Information flow (along with the list of assets)&lt;br /&gt;
        b.	Threats for the information flows&lt;br /&gt;
        c.	Probability of occurrence of the risk&lt;br /&gt;
        d.	Impact of materialisation of the risk &lt;br /&gt;
        e.	Risk owner – responsibility wise&lt;br /&gt;
        f.	Risk owner – accountability wise&lt;br /&gt;
        g.	Mitigation&lt;br /&gt;
        h.	Last review date&lt;br /&gt;
        i.	Next review date&lt;br /&gt;
        j.	Instances of materialisation of the risk&lt;br /&gt;
&lt;br /&gt;
3.	Test the risk as a part of security testing to ensure that the mitigation works as expected&lt;br /&gt;
&lt;br /&gt;
Periodically retest the risk in either a vulnerability scan or as a test scenario as part of penetration test or security test to ensure that the mitigation is still in place and works as expected&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
https://www.owasp.org/index.php/Application_Threat_Modeling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authors and Primary Editors  ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Other Cheatsheets ==&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216908</id>
		<title>Threat Modeling Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216908"/>
				<updated>2016-05-15T19:43:15Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Decompose and Model the system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
The objective of this cheat sheet is to provide guidance to developers, reviewers, designers and architects on conducting successful threat modeling. The main goal of threat modeling is to understand the controls needed for a software system. This is a complex endeavor that will involve investigations into:&lt;br /&gt;
# The trust boundaries to and within the solution that we build&lt;br /&gt;
# The actors that interact within and outside of the trust boundaries&lt;br /&gt;
# Information flows within and to and from the trust boundaries&lt;br /&gt;
# Information persistence within and out of trust boundaries&lt;br /&gt;
# Vulnerabilities at trust boundaries&lt;br /&gt;
# Threat agents that can exploit the vulnerabilities&lt;br /&gt;
# Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
# Controls  and process needed to treat specific risks&lt;br /&gt;
&lt;br /&gt;
=Why do we need to perform threat modeling=&lt;br /&gt;
&lt;br /&gt;
1.	Performing threat model at the architecture level, helps in&lt;br /&gt;
a.	confirming on suitability of the identified security features to be implemented&lt;br /&gt;
b.	identification of any gaps in the security features to be implemented&lt;br /&gt;
c.	identification of any further security features&lt;br /&gt;
d.	identification of policy and process requirements&lt;br /&gt;
e.	identification of requirements to be fed into security operations&lt;br /&gt;
f.	identification of logging and monitoring requirements&lt;br /&gt;
g.	arriving at abuse cases when used in agile methodology&lt;br /&gt;
h.	understanding business continuity requirements&lt;br /&gt;
i.	understanding capacity and availability requirements&lt;br /&gt;
&lt;br /&gt;
2.	Performing threat model at the design level, helps in,&lt;br /&gt;
a.	identification of vulnerabilities that need to be closed at design level and input this into build phase&lt;br /&gt;
b.	identification of information assets that need security controls&lt;br /&gt;
c.	mapping of identified security controls into technical / administrative / physical controls as the case may be (this activity can be done at the architecture level as well, but doing it at design level helps in being granular)&lt;br /&gt;
d.	identification of security test cases / security test scenarios to test the security requirements&lt;br /&gt;
&lt;br /&gt;
=Starting the threat modeling exercise=&lt;br /&gt;
It is important to have a risk assessment policy at an organisation which gives guidance to the practitioners on when to do a threat model, management guidance, owners of the risks etc&lt;br /&gt;
It is also important to the following before starting with this exercise:&lt;br /&gt;
&lt;br /&gt;
1.Make of list of all the stakeholders who need to participate in this exercise. For example application architects, infrastructure architects, solution architects, business owners&lt;br /&gt;
&lt;br /&gt;
2.Get management buy-in to ensure that there is management support for involvement of all necessary stakeholders.&lt;br /&gt;
&lt;br /&gt;
3.It is assumed that the threat modeling exercise is led by the security team of the organisation and the risk log is maintained by the security team&lt;br /&gt;
&lt;br /&gt;
Following are the activities that are a part of the exercise:&lt;br /&gt;
&lt;br /&gt;
1. The trust boundaries to and within the solution that we build&lt;br /&gt;
&lt;br /&gt;
2. The actors that interact within and outside of the trust boundaries&lt;br /&gt;
&lt;br /&gt;
3. Information flows within and to and from the trust boundaries&lt;br /&gt;
&lt;br /&gt;
4. Information persistence within and out of trust boundaries 	&lt;br /&gt;
&lt;br /&gt;
5. Threats to transgression of trust boundaries by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
6. Vulnerabilities at trust boundaries as accessed by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
7. Threat agents that can exploit the vulnerabilities&lt;br /&gt;
&lt;br /&gt;
8. Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
&lt;br /&gt;
9. Decision tree to treat the risk&lt;br /&gt;
&lt;br /&gt;
=Decompose and Model the system=&lt;br /&gt;
&lt;br /&gt;
To perform a threat model, it is important to understand how the system works and interacts with its ecosystem.&lt;br /&gt;
To start with, create a high level information flow diagram, something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
1.	Identify the trusted boundaries of your system / application / module / ecosystem that you may want to start off with.&lt;br /&gt;
&lt;br /&gt;
2.	Add actors – internal and external&lt;br /&gt;
&lt;br /&gt;
3.	Define internal trusted boundaries. These can be the different security zones that have been designed&lt;br /&gt;
&lt;br /&gt;
4.	Relook at the actors you have identified in #2 for consistency&lt;br /&gt;
&lt;br /&gt;
5.	Add information flows &lt;br /&gt;
      a.	Information in transit&lt;br /&gt;
      b.	Information at rest&lt;br /&gt;
      c.	Information processing&lt;br /&gt;
      d.	In the above diagram, following are the information flows:&lt;br /&gt;
              i.	Login Information&lt;br /&gt;
             ii.	Transmit login information&lt;br /&gt;
            iii.	Data process&lt;br /&gt;
             iv.	Data store&lt;br /&gt;
&lt;br /&gt;
6.	Identify the information elements and their classification as per your information classification policy&lt;br /&gt;
&lt;br /&gt;
7.	Where possible add assets to the identified information  flows&lt;br /&gt;
&lt;br /&gt;
8.	Identify threat agents for each of the information flows&lt;br /&gt;
&lt;br /&gt;
9.	Draw attack vectors and attack trees in an iteratively to make sure that no major attack vector is missed.&lt;br /&gt;
&lt;br /&gt;
10.	For each of the information flows perform threat assessment using any of the methodologies that meets the organisation’s requirements:&lt;br /&gt;
&lt;br /&gt;
11.	Add a probability value to the materialisation of each of the threat&lt;br /&gt;
&lt;br /&gt;
12.	Add a value for impact of each threat materialisation&lt;br /&gt;
&lt;br /&gt;
13.	Identify the acceptable level of risk for the organisation or the identified scope&lt;br /&gt;
&lt;br /&gt;
14.	Identify the risks for mitigation that are above the acceptable level of risk &lt;br /&gt;
&lt;br /&gt;
15.	Mitigate the risks by doing one or more of the following:&lt;br /&gt;
         a.	Accept&lt;br /&gt;
         b.	Transfer&lt;br /&gt;
         c.	Avoid&lt;br /&gt;
         d.	Reduce&lt;br /&gt;
&lt;br /&gt;
=How to work on getting the mitigations in place, track them to closure and keep monitoring risks=&lt;br /&gt;
1.	Upon completion of the initial threat modelling exercise, assign the risks to the relevant business / risk owners of threats for example&lt;br /&gt;
a.	If there is an identified risk with the way the database is implemented, assign the risk to the owner of the database team. &lt;br /&gt;
b.	If there is an identified risk with the application design assign the risk to the owner of the application team&lt;br /&gt;
c.	However these are responsibilities that are assigned. The accountability of getting these risks addressed lies with the business owner for whose business the application is being developed for. End of the day, it is the business owner who needs to understand if the risk is aligned with the risk appetite of his/her business unit. And if the risk is above or below the acceptable level.&lt;br /&gt;
2.	Maintain a Threat Traceability Matrix which at the minimum lists the following:&lt;br /&gt;
a.	Information flow (along with the list of assets)&lt;br /&gt;
b.	Threats for the information flows&lt;br /&gt;
c.	Probability of occurrence of the risk&lt;br /&gt;
d.	Impact of materialisation of the risk &lt;br /&gt;
e.	Risk owner – responsibility wise&lt;br /&gt;
f.	Risk owner – accountability wise&lt;br /&gt;
g.	Mitigation&lt;br /&gt;
h.	Last review date&lt;br /&gt;
i.	Next review date&lt;br /&gt;
j.	Instances of materialisation of the risk&lt;br /&gt;
3.	Test the risk as a part of security testing to ensure that the mitigation works as expected&lt;br /&gt;
Periodically retest the risk in either a vulnerability scan or as a test scenario as part of penetration test or security test to ensure that the mitigation is still in place and works as expected&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
https://www.owasp.org/index.php/Application_Threat_Modeling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authors and Primary Editors  ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Other Cheatsheets ==&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216907</id>
		<title>Threat Modeling Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216907"/>
				<updated>2016-05-15T19:40:42Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Starting the threat modeling exercise */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
The objective of this cheat sheet is to provide guidance to developers, reviewers, designers and architects on conducting successful threat modeling. The main goal of threat modeling is to understand the controls needed for a software system. This is a complex endeavor that will involve investigations into:&lt;br /&gt;
# The trust boundaries to and within the solution that we build&lt;br /&gt;
# The actors that interact within and outside of the trust boundaries&lt;br /&gt;
# Information flows within and to and from the trust boundaries&lt;br /&gt;
# Information persistence within and out of trust boundaries&lt;br /&gt;
# Vulnerabilities at trust boundaries&lt;br /&gt;
# Threat agents that can exploit the vulnerabilities&lt;br /&gt;
# Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
# Controls  and process needed to treat specific risks&lt;br /&gt;
&lt;br /&gt;
=Why do we need to perform threat modeling=&lt;br /&gt;
&lt;br /&gt;
1.	Performing threat model at the architecture level, helps in&lt;br /&gt;
a.	confirming on suitability of the identified security features to be implemented&lt;br /&gt;
b.	identification of any gaps in the security features to be implemented&lt;br /&gt;
c.	identification of any further security features&lt;br /&gt;
d.	identification of policy and process requirements&lt;br /&gt;
e.	identification of requirements to be fed into security operations&lt;br /&gt;
f.	identification of logging and monitoring requirements&lt;br /&gt;
g.	arriving at abuse cases when used in agile methodology&lt;br /&gt;
h.	understanding business continuity requirements&lt;br /&gt;
i.	understanding capacity and availability requirements&lt;br /&gt;
&lt;br /&gt;
2.	Performing threat model at the design level, helps in,&lt;br /&gt;
a.	identification of vulnerabilities that need to be closed at design level and input this into build phase&lt;br /&gt;
b.	identification of information assets that need security controls&lt;br /&gt;
c.	mapping of identified security controls into technical / administrative / physical controls as the case may be (this activity can be done at the architecture level as well, but doing it at design level helps in being granular)&lt;br /&gt;
d.	identification of security test cases / security test scenarios to test the security requirements&lt;br /&gt;
&lt;br /&gt;
=Starting the threat modeling exercise=&lt;br /&gt;
It is important to have a risk assessment policy at an organisation which gives guidance to the practitioners on when to do a threat model, management guidance, owners of the risks etc&lt;br /&gt;
It is also important to the following before starting with this exercise:&lt;br /&gt;
&lt;br /&gt;
1.Make of list of all the stakeholders who need to participate in this exercise. For example application architects, infrastructure architects, solution architects, business owners&lt;br /&gt;
&lt;br /&gt;
2.Get management buy-in to ensure that there is management support for involvement of all necessary stakeholders.&lt;br /&gt;
&lt;br /&gt;
3.It is assumed that the threat modeling exercise is led by the security team of the organisation and the risk log is maintained by the security team&lt;br /&gt;
&lt;br /&gt;
Following are the activities that are a part of the exercise:&lt;br /&gt;
&lt;br /&gt;
1. The trust boundaries to and within the solution that we build&lt;br /&gt;
&lt;br /&gt;
2. The actors that interact within and outside of the trust boundaries&lt;br /&gt;
&lt;br /&gt;
3. Information flows within and to and from the trust boundaries&lt;br /&gt;
&lt;br /&gt;
4. Information persistence within and out of trust boundaries 	&lt;br /&gt;
&lt;br /&gt;
5. Threats to transgression of trust boundaries by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
6. Vulnerabilities at trust boundaries as accessed by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
7. Threat agents that can exploit the vulnerabilities&lt;br /&gt;
&lt;br /&gt;
8. Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
&lt;br /&gt;
9. Decision tree to treat the risk&lt;br /&gt;
&lt;br /&gt;
=Decompose and Model the system=&lt;br /&gt;
&lt;br /&gt;
To perform a threat model, it is important to understand how the system works and interacts with its ecosystem.&lt;br /&gt;
To start with, create a high level information flow diagram, something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
1.	Identify the trusted boundaries of your system / application / module / ecosystem that you may want to start off with.&lt;br /&gt;
2.	Add actors – internal and external&lt;br /&gt;
3.	Define internal trusted boundaries. These can be the different security zones that have been designed&lt;br /&gt;
4.	Relook at the actors you have identified in #2 for consistency&lt;br /&gt;
5.	Add information flows &lt;br /&gt;
a.	Information in transit&lt;br /&gt;
b.	Information at rest&lt;br /&gt;
c.	Information processing&lt;br /&gt;
d.	In the above diagram, following are the information flows:&lt;br /&gt;
i.	Login Information&lt;br /&gt;
ii.	Transmit login information&lt;br /&gt;
iii.	Data process&lt;br /&gt;
iv.	Data store&lt;br /&gt;
6.	Identify the information elements and their classification as per your information classification policy&lt;br /&gt;
7.	Where possible add assets to the identified information  flows&lt;br /&gt;
8.	Identify threat agents for each of the information flows&lt;br /&gt;
9.	Draw attack vectors and attack trees in an iteratively to make sure that no major attack vector is missed.&lt;br /&gt;
10.	For each of the information flows perform threat assessment using any of the methodologies that meets the organisation’s requirements:&lt;br /&gt;
a.	STRIDE&lt;br /&gt;
b.	DREAD&lt;br /&gt;
c.	Any other model that meets your organisation’s requirements&lt;br /&gt;
11.	Add a probability value to the materialisation of each of the threat&lt;br /&gt;
12.	Add a value for impact of each threat materialisation&lt;br /&gt;
13.	Identify the acceptable level of risk for the organisation or the identified scope&lt;br /&gt;
14.	Identify the risks for mitigation that are above the acceptable level of risk &lt;br /&gt;
15.	Mitigate the risks by doing one or more of the following:&lt;br /&gt;
a.	Accept&lt;br /&gt;
b.	Transfer&lt;br /&gt;
c.	Avoid&lt;br /&gt;
d.	Reduce&lt;br /&gt;
&lt;br /&gt;
=How to work on getting the mitigations in place, track them to closure and keep monitoring risks=&lt;br /&gt;
1.	Upon completion of the initial threat modelling exercise, assign the risks to the relevant business / risk owners of threats for example&lt;br /&gt;
a.	If there is an identified risk with the way the database is implemented, assign the risk to the owner of the database team. &lt;br /&gt;
b.	If there is an identified risk with the application design assign the risk to the owner of the application team&lt;br /&gt;
c.	However these are responsibilities that are assigned. The accountability of getting these risks addressed lies with the business owner for whose business the application is being developed for. End of the day, it is the business owner who needs to understand if the risk is aligned with the risk appetite of his/her business unit. And if the risk is above or below the acceptable level.&lt;br /&gt;
2.	Maintain a Threat Traceability Matrix which at the minimum lists the following:&lt;br /&gt;
a.	Information flow (along with the list of assets)&lt;br /&gt;
b.	Threats for the information flows&lt;br /&gt;
c.	Probability of occurrence of the risk&lt;br /&gt;
d.	Impact of materialisation of the risk &lt;br /&gt;
e.	Risk owner – responsibility wise&lt;br /&gt;
f.	Risk owner – accountability wise&lt;br /&gt;
g.	Mitigation&lt;br /&gt;
h.	Last review date&lt;br /&gt;
i.	Next review date&lt;br /&gt;
j.	Instances of materialisation of the risk&lt;br /&gt;
3.	Test the risk as a part of security testing to ensure that the mitigation works as expected&lt;br /&gt;
Periodically retest the risk in either a vulnerability scan or as a test scenario as part of penetration test or security test to ensure that the mitigation is still in place and works as expected&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
https://www.owasp.org/index.php/Application_Threat_Modeling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authors and Primary Editors  ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Other Cheatsheets ==&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216906</id>
		<title>Threat Modeling Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216906"/>
				<updated>2016-05-15T19:39:44Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Starting the threat modeling exercise */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
The objective of this cheat sheet is to provide guidance to developers, reviewers, designers and architects on conducting successful threat modeling. The main goal of threat modeling is to understand the controls needed for a software system. This is a complex endeavor that will involve investigations into:&lt;br /&gt;
# The trust boundaries to and within the solution that we build&lt;br /&gt;
# The actors that interact within and outside of the trust boundaries&lt;br /&gt;
# Information flows within and to and from the trust boundaries&lt;br /&gt;
# Information persistence within and out of trust boundaries&lt;br /&gt;
# Vulnerabilities at trust boundaries&lt;br /&gt;
# Threat agents that can exploit the vulnerabilities&lt;br /&gt;
# Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
# Controls  and process needed to treat specific risks&lt;br /&gt;
&lt;br /&gt;
=Why do we need to perform threat modeling=&lt;br /&gt;
&lt;br /&gt;
1.	Performing threat model at the architecture level, helps in&lt;br /&gt;
a.	confirming on suitability of the identified security features to be implemented&lt;br /&gt;
b.	identification of any gaps in the security features to be implemented&lt;br /&gt;
c.	identification of any further security features&lt;br /&gt;
d.	identification of policy and process requirements&lt;br /&gt;
e.	identification of requirements to be fed into security operations&lt;br /&gt;
f.	identification of logging and monitoring requirements&lt;br /&gt;
g.	arriving at abuse cases when used in agile methodology&lt;br /&gt;
h.	understanding business continuity requirements&lt;br /&gt;
i.	understanding capacity and availability requirements&lt;br /&gt;
&lt;br /&gt;
2.	Performing threat model at the design level, helps in,&lt;br /&gt;
a.	identification of vulnerabilities that need to be closed at design level and input this into build phase&lt;br /&gt;
b.	identification of information assets that need security controls&lt;br /&gt;
c.	mapping of identified security controls into technical / administrative / physical controls as the case may be (this activity can be done at the architecture level as well, but doing it at design level helps in being granular)&lt;br /&gt;
d.	identification of security test cases / security test scenarios to test the security requirements&lt;br /&gt;
&lt;br /&gt;
=Starting the threat modeling exercise=&lt;br /&gt;
It is important to have a risk assessment policy at an organisation which gives guidance to the practitioners on when to do a threat model, management guidance, owners of the risks etc&lt;br /&gt;
It is also important to the following before starting with this exercise, &lt;br /&gt;
1.	Make of list of all the stakeholders who need to participate in this exercise. For example application architects, infrastructure architects, solution architects, business owners&lt;br /&gt;
&lt;br /&gt;
2.	Get management buy-in to ensure that there is management support for involvement of all necessary stakeholders.&lt;br /&gt;
&lt;br /&gt;
3.	It is assumed that the threat modeling exercise is led by the security team of the organisation and the risk log is maintained by the security team&lt;br /&gt;
&lt;br /&gt;
1. The trust boundaries to and within the solution that we build&lt;br /&gt;
&lt;br /&gt;
2. The actors that interact within and outside of the trust boundaries&lt;br /&gt;
&lt;br /&gt;
3. Information flows within and to and from the trust boundaries&lt;br /&gt;
&lt;br /&gt;
4. Information persistence within and out of trust boundaries 	&lt;br /&gt;
&lt;br /&gt;
5. Threats to transgression of trust boundaries by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
6. Vulnerabilities at trust boundaries as accessed by actors and for information flow and persistence&lt;br /&gt;
&lt;br /&gt;
7. Threat agents that can exploit the vulnerabilities&lt;br /&gt;
&lt;br /&gt;
8. Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
&lt;br /&gt;
9. Decision tree to treat the risk&lt;br /&gt;
&lt;br /&gt;
=Decompose and Model the system=&lt;br /&gt;
&lt;br /&gt;
To perform a threat model, it is important to understand how the system works and interacts with its ecosystem.&lt;br /&gt;
To start with, create a high level information flow diagram, something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
1.	Identify the trusted boundaries of your system / application / module / ecosystem that you may want to start off with.&lt;br /&gt;
2.	Add actors – internal and external&lt;br /&gt;
3.	Define internal trusted boundaries. These can be the different security zones that have been designed&lt;br /&gt;
4.	Relook at the actors you have identified in #2 for consistency&lt;br /&gt;
5.	Add information flows &lt;br /&gt;
a.	Information in transit&lt;br /&gt;
b.	Information at rest&lt;br /&gt;
c.	Information processing&lt;br /&gt;
d.	In the above diagram, following are the information flows:&lt;br /&gt;
i.	Login Information&lt;br /&gt;
ii.	Transmit login information&lt;br /&gt;
iii.	Data process&lt;br /&gt;
iv.	Data store&lt;br /&gt;
6.	Identify the information elements and their classification as per your information classification policy&lt;br /&gt;
7.	Where possible add assets to the identified information  flows&lt;br /&gt;
8.	Identify threat agents for each of the information flows&lt;br /&gt;
9.	Draw attack vectors and attack trees in an iteratively to make sure that no major attack vector is missed.&lt;br /&gt;
10.	For each of the information flows perform threat assessment using any of the methodologies that meets the organisation’s requirements:&lt;br /&gt;
a.	STRIDE&lt;br /&gt;
b.	DREAD&lt;br /&gt;
c.	Any other model that meets your organisation’s requirements&lt;br /&gt;
11.	Add a probability value to the materialisation of each of the threat&lt;br /&gt;
12.	Add a value for impact of each threat materialisation&lt;br /&gt;
13.	Identify the acceptable level of risk for the organisation or the identified scope&lt;br /&gt;
14.	Identify the risks for mitigation that are above the acceptable level of risk &lt;br /&gt;
15.	Mitigate the risks by doing one or more of the following:&lt;br /&gt;
a.	Accept&lt;br /&gt;
b.	Transfer&lt;br /&gt;
c.	Avoid&lt;br /&gt;
d.	Reduce&lt;br /&gt;
&lt;br /&gt;
=How to work on getting the mitigations in place, track them to closure and keep monitoring risks=&lt;br /&gt;
1.	Upon completion of the initial threat modelling exercise, assign the risks to the relevant business / risk owners of threats for example&lt;br /&gt;
a.	If there is an identified risk with the way the database is implemented, assign the risk to the owner of the database team. &lt;br /&gt;
b.	If there is an identified risk with the application design assign the risk to the owner of the application team&lt;br /&gt;
c.	However these are responsibilities that are assigned. The accountability of getting these risks addressed lies with the business owner for whose business the application is being developed for. End of the day, it is the business owner who needs to understand if the risk is aligned with the risk appetite of his/her business unit. And if the risk is above or below the acceptable level.&lt;br /&gt;
2.	Maintain a Threat Traceability Matrix which at the minimum lists the following:&lt;br /&gt;
a.	Information flow (along with the list of assets)&lt;br /&gt;
b.	Threats for the information flows&lt;br /&gt;
c.	Probability of occurrence of the risk&lt;br /&gt;
d.	Impact of materialisation of the risk &lt;br /&gt;
e.	Risk owner – responsibility wise&lt;br /&gt;
f.	Risk owner – accountability wise&lt;br /&gt;
g.	Mitigation&lt;br /&gt;
h.	Last review date&lt;br /&gt;
i.	Next review date&lt;br /&gt;
j.	Instances of materialisation of the risk&lt;br /&gt;
3.	Test the risk as a part of security testing to ensure that the mitigation works as expected&lt;br /&gt;
Periodically retest the risk in either a vulnerability scan or as a test scenario as part of penetration test or security test to ensure that the mitigation is still in place and works as expected&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
https://www.owasp.org/index.php/Application_Threat_Modeling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authors and Primary Editors  ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Other Cheatsheets ==&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216905</id>
		<title>Threat Modeling Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Modeling_Cheat_Sheet&amp;diff=216905"/>
				<updated>2016-05-15T19:38:33Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
The objective of this cheat sheet is to provide guidance to developers, reviewers, designers and architects on conducting successful threat modeling. The main goal of threat modeling is to understand the controls needed for a software system. This is a complex endeavor that will involve investigations into:&lt;br /&gt;
# The trust boundaries to and within the solution that we build&lt;br /&gt;
# The actors that interact within and outside of the trust boundaries&lt;br /&gt;
# Information flows within and to and from the trust boundaries&lt;br /&gt;
# Information persistence within and out of trust boundaries&lt;br /&gt;
# Vulnerabilities at trust boundaries&lt;br /&gt;
# Threat agents that can exploit the vulnerabilities&lt;br /&gt;
# Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
# Controls  and process needed to treat specific risks&lt;br /&gt;
&lt;br /&gt;
=Why do we need to perform threat modeling=&lt;br /&gt;
&lt;br /&gt;
1.	Performing threat model at the architecture level, helps in&lt;br /&gt;
a.	confirming on suitability of the identified security features to be implemented&lt;br /&gt;
b.	identification of any gaps in the security features to be implemented&lt;br /&gt;
c.	identification of any further security features&lt;br /&gt;
d.	identification of policy and process requirements&lt;br /&gt;
e.	identification of requirements to be fed into security operations&lt;br /&gt;
f.	identification of logging and monitoring requirements&lt;br /&gt;
g.	arriving at abuse cases when used in agile methodology&lt;br /&gt;
h.	understanding business continuity requirements&lt;br /&gt;
i.	understanding capacity and availability requirements&lt;br /&gt;
&lt;br /&gt;
2.	Performing threat model at the design level, helps in,&lt;br /&gt;
a.	identification of vulnerabilities that need to be closed at design level and input this into build phase&lt;br /&gt;
b.	identification of information assets that need security controls&lt;br /&gt;
c.	mapping of identified security controls into technical / administrative / physical controls as the case may be (this activity can be done at the architecture level as well, but doing it at design level helps in being granular)&lt;br /&gt;
d.	identification of security test cases / security test scenarios to test the security requirements&lt;br /&gt;
&lt;br /&gt;
=Starting the threat modeling exercise=&lt;br /&gt;
It is important to have a risk assessment policy at an organisation which gives guidance to the practitioners on when to do a threat model, management guidance, owners of the risks etc&lt;br /&gt;
It is also important to the following before starting with this exercise, &lt;br /&gt;
1.	Make of list of all the stakeholders who need to participate in this exercise. For example application architects, infrastructure architects, solution architects, business owners&lt;br /&gt;
2.	Get management buy-in to ensure that there is management support for involvement of all necessary stakeholders.&lt;br /&gt;
3.	It is assumed that the threat modeling exercise is led by the security team of the organisation and the risk log is maintained by the security team&lt;br /&gt;
&lt;br /&gt;
1. The trust boundaries to and within the solution that we build&lt;br /&gt;
2. The actors that interact within and outside of the trust boundaries&lt;br /&gt;
3. Information flows within and to and from the trust boundaries&lt;br /&gt;
4. Information persistence within and out of trust boundaries 	&lt;br /&gt;
5. Threats to transgression of trust boundaries by actors and for information flow and persistence&lt;br /&gt;
6. Vulnerabilities at trust boundaries as accessed by actors and for information flow and persistence&lt;br /&gt;
7. Threat agents that can exploit the vulnerabilities&lt;br /&gt;
8. Impact of exploitation of vulnerability by a threat agents&lt;br /&gt;
9. Decision tree to treat the risk&lt;br /&gt;
&lt;br /&gt;
=Decompose and Model the system=&lt;br /&gt;
&lt;br /&gt;
To perform a threat model, it is important to understand how the system works and interacts with its ecosystem.&lt;br /&gt;
To start with, create a high level information flow diagram, something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
1.	Identify the trusted boundaries of your system / application / module / ecosystem that you may want to start off with.&lt;br /&gt;
2.	Add actors – internal and external&lt;br /&gt;
3.	Define internal trusted boundaries. These can be the different security zones that have been designed&lt;br /&gt;
4.	Relook at the actors you have identified in #2 for consistency&lt;br /&gt;
5.	Add information flows &lt;br /&gt;
a.	Information in transit&lt;br /&gt;
b.	Information at rest&lt;br /&gt;
c.	Information processing&lt;br /&gt;
d.	In the above diagram, following are the information flows:&lt;br /&gt;
i.	Login Information&lt;br /&gt;
ii.	Transmit login information&lt;br /&gt;
iii.	Data process&lt;br /&gt;
iv.	Data store&lt;br /&gt;
6.	Identify the information elements and their classification as per your information classification policy&lt;br /&gt;
7.	Where possible add assets to the identified information  flows&lt;br /&gt;
8.	Identify threat agents for each of the information flows&lt;br /&gt;
9.	Draw attack vectors and attack trees in an iteratively to make sure that no major attack vector is missed.&lt;br /&gt;
10.	For each of the information flows perform threat assessment using any of the methodologies that meets the organisation’s requirements:&lt;br /&gt;
a.	STRIDE&lt;br /&gt;
b.	DREAD&lt;br /&gt;
c.	Any other model that meets your organisation’s requirements&lt;br /&gt;
11.	Add a probability value to the materialisation of each of the threat&lt;br /&gt;
12.	Add a value for impact of each threat materialisation&lt;br /&gt;
13.	Identify the acceptable level of risk for the organisation or the identified scope&lt;br /&gt;
14.	Identify the risks for mitigation that are above the acceptable level of risk &lt;br /&gt;
15.	Mitigate the risks by doing one or more of the following:&lt;br /&gt;
a.	Accept&lt;br /&gt;
b.	Transfer&lt;br /&gt;
c.	Avoid&lt;br /&gt;
d.	Reduce&lt;br /&gt;
&lt;br /&gt;
=How to work on getting the mitigations in place, track them to closure and keep monitoring risks=&lt;br /&gt;
1.	Upon completion of the initial threat modelling exercise, assign the risks to the relevant business / risk owners of threats for example&lt;br /&gt;
a.	If there is an identified risk with the way the database is implemented, assign the risk to the owner of the database team. &lt;br /&gt;
b.	If there is an identified risk with the application design assign the risk to the owner of the application team&lt;br /&gt;
c.	However these are responsibilities that are assigned. The accountability of getting these risks addressed lies with the business owner for whose business the application is being developed for. End of the day, it is the business owner who needs to understand if the risk is aligned with the risk appetite of his/her business unit. And if the risk is above or below the acceptable level.&lt;br /&gt;
2.	Maintain a Threat Traceability Matrix which at the minimum lists the following:&lt;br /&gt;
a.	Information flow (along with the list of assets)&lt;br /&gt;
b.	Threats for the information flows&lt;br /&gt;
c.	Probability of occurrence of the risk&lt;br /&gt;
d.	Impact of materialisation of the risk &lt;br /&gt;
e.	Risk owner – responsibility wise&lt;br /&gt;
f.	Risk owner – accountability wise&lt;br /&gt;
g.	Mitigation&lt;br /&gt;
h.	Last review date&lt;br /&gt;
i.	Next review date&lt;br /&gt;
j.	Instances of materialisation of the risk&lt;br /&gt;
3.	Test the risk as a part of security testing to ensure that the mitigation works as expected&lt;br /&gt;
Periodically retest the risk in either a vulnerability scan or as a test scenario as part of penetration test or security test to ensure that the mitigation is still in place and works as expected&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
https://www.owasp.org/index.php/Application_Threat_Modeling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authors and Primary Editors  ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Other Cheatsheets ==&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206101</id>
		<title>Secure Coding Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206101"/>
				<updated>2016-01-08T16:26:38Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
The goal of this document is to create high level guideline for secure coding practices. The goal is to keep the overall size of the document condensed and easy to digest.  Individuals seeking addition information on the specific areas should refer to the included links to learn more.&lt;br /&gt;
&lt;br /&gt;
= How To Use This Document =&lt;br /&gt;
The information listed below are generally acceptable secure coding practices; however, it is recommend that organizations consider this a base template and update individual sections with secure coding recommendations specific to the organization's policies and risk tolerance. &lt;br /&gt;
&lt;br /&gt;
= Secure Coding Policy =&lt;br /&gt;
Always maintain a secure coding policy. List down the activities that are related to maintenance of secure coding standards (would these standards be technology specific or technology agnostic), feedback of code review output to training, input data validation, output data validation etc&lt;br /&gt;
&lt;br /&gt;
Why should you be having a secure coding policy? It helps in maintaining consistency across organisation and helps in vertical and horizontal scaling of usage of standards for web development projects. &lt;br /&gt;
&lt;br /&gt;
= Authentication=&lt;br /&gt;
&lt;br /&gt;
== User Authentication ==&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Utilize_Multi-Factor_Authentication&lt;br /&gt;
&lt;br /&gt;
=== Password Complexity ===&lt;br /&gt;
&lt;br /&gt;
Please see [https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls].&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Access Control =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Access_Control_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Input Data Validation =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Output_Encoding&lt;br /&gt;
&lt;br /&gt;
= Secure Transmission / Network Layer security =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Benefits&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#File_Uploads&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Error_Handling&lt;br /&gt;
&lt;br /&gt;
= Logging and Auditing =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Logging_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cryptography =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cookie Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Cookies&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Secure_Deployment&lt;br /&gt;
&lt;br /&gt;
= Unvalidated Redirects and Forwards Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Common Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
== SQL Injection ==&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Scripting ==&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Request Forgery ==&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Preventing Malicious Site Framing (ClickJacking) ==&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Defending_with_X-Frame-Options_Response_Headers&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object references ==&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206100</id>
		<title>Secure Coding Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206100"/>
				<updated>2016-01-08T16:14:30Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Concurrancy and Race Conditions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
The goal of this document is to create high level guideline for secure coding practices. The goal is to keep the overall size of the document condensed and easy to digest.  Individuals seeking addition information on the specific areas should refer to the included links to learn more.&lt;br /&gt;
&lt;br /&gt;
= How To Use This Document =&lt;br /&gt;
The information listed below are generally acceptable secure coding practices; however, it is recommend that organizations consider this a base template and update individual sections with secure coding recommendations specific to the organization's policies and risk tolerance. &lt;br /&gt;
&lt;br /&gt;
= Secure Coding Policy =&lt;br /&gt;
Always maintain a secure coding policy. List down the activities that are related to maintenance of secure coding standards (would these standards be technology specific or technology agnostic), feedback of code review output to training, input data validation, output data validation etc&lt;br /&gt;
&lt;br /&gt;
Why should you be having a secure coding policy? It helps in maintaining consistency across organisation and helps in vertical and horizontal scaling of usage of standards for web development projects. &lt;br /&gt;
&lt;br /&gt;
= Authentication=&lt;br /&gt;
&lt;br /&gt;
== User Authentication ==&lt;br /&gt;
Please see https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Utilize_Multi-Factor_Authentication&lt;br /&gt;
&lt;br /&gt;
=== Password Complexity ===&lt;br /&gt;
&lt;br /&gt;
For more information on password complexity, please see [https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls].&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Access Control =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Access_Control_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Input Data Validation =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Output_Encoding&lt;br /&gt;
&lt;br /&gt;
= Secure Transmission / Network Layer security =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Benefits&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#File_Uploads&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Error_Handling&lt;br /&gt;
&lt;br /&gt;
= Logging and Auditing =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Logging_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cryptography =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cookie Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Cookies&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Secure_Deployment&lt;br /&gt;
&lt;br /&gt;
= Unvalidated Redirects and Forwards Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Common Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SQL Injection ==&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Scripting ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Request Forgery ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Preventing Malicious Site Framing (ClickJacking) ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Defending_with_X-Frame-Options_Response_Headers&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object references ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206099</id>
		<title>Secure Coding Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206099"/>
				<updated>2016-01-08T16:14:16Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Directory Listing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
The goal of this document is to create high level guideline for secure coding practices. The goal is to keep the overall size of the document condensed and easy to digest.  Individuals seeking addition information on the specific areas should refer to the included links to learn more.&lt;br /&gt;
&lt;br /&gt;
= How To Use This Document =&lt;br /&gt;
The information listed below are generally acceptable secure coding practices; however, it is recommend that organizations consider this a base template and update individual sections with secure coding recommendations specific to the organization's policies and risk tolerance. &lt;br /&gt;
&lt;br /&gt;
= Secure Coding Policy =&lt;br /&gt;
Always maintain a secure coding policy. List down the activities that are related to maintenance of secure coding standards (would these standards be technology specific or technology agnostic), feedback of code review output to training, input data validation, output data validation etc&lt;br /&gt;
&lt;br /&gt;
Why should you be having a secure coding policy? It helps in maintaining consistency across organisation and helps in vertical and horizontal scaling of usage of standards for web development projects. &lt;br /&gt;
&lt;br /&gt;
= Authentication=&lt;br /&gt;
&lt;br /&gt;
== User Authentication ==&lt;br /&gt;
Please see https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Utilize_Multi-Factor_Authentication&lt;br /&gt;
&lt;br /&gt;
=== Password Complexity ===&lt;br /&gt;
&lt;br /&gt;
For more information on password complexity, please see [https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls].&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Access Control =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Access_Control_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Input Data Validation =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Output_Encoding&lt;br /&gt;
&lt;br /&gt;
= Secure Transmission / Network Layer security =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Benefits&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#File_Uploads&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Error_Handling&lt;br /&gt;
&lt;br /&gt;
= Logging and Auditing =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Logging_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cryptography =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cookie Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Cookies&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Secure_Deployment&lt;br /&gt;
&lt;br /&gt;
= Unvalidated Redirects and Forwards Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Common Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SQL Injection ==&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Scripting ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Request Forgery ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Preventing Malicious Site Framing (ClickJacking) ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Defending_with_X-Frame-Options_Response_Headers&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object references ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Concurrancy and Race Conditions ==&lt;br /&gt;
&lt;br /&gt;
* Use a locking mechanism to lock shared resources&lt;br /&gt;
* Obtain a lock on shared resources before it is read&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206098</id>
		<title>Secure Coding Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206098"/>
				<updated>2016-01-08T16:14:00Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Security Misconfigurations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
The goal of this document is to create high level guideline for secure coding practices. The goal is to keep the overall size of the document condensed and easy to digest.  Individuals seeking addition information on the specific areas should refer to the included links to learn more.&lt;br /&gt;
&lt;br /&gt;
= How To Use This Document =&lt;br /&gt;
The information listed below are generally acceptable secure coding practices; however, it is recommend that organizations consider this a base template and update individual sections with secure coding recommendations specific to the organization's policies and risk tolerance. &lt;br /&gt;
&lt;br /&gt;
= Secure Coding Policy =&lt;br /&gt;
Always maintain a secure coding policy. List down the activities that are related to maintenance of secure coding standards (would these standards be technology specific or technology agnostic), feedback of code review output to training, input data validation, output data validation etc&lt;br /&gt;
&lt;br /&gt;
Why should you be having a secure coding policy? It helps in maintaining consistency across organisation and helps in vertical and horizontal scaling of usage of standards for web development projects. &lt;br /&gt;
&lt;br /&gt;
= Authentication=&lt;br /&gt;
&lt;br /&gt;
== User Authentication ==&lt;br /&gt;
Please see https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Utilize_Multi-Factor_Authentication&lt;br /&gt;
&lt;br /&gt;
=== Password Complexity ===&lt;br /&gt;
&lt;br /&gt;
For more information on password complexity, please see [https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls].&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Access Control =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Access_Control_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Input Data Validation =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Output_Encoding&lt;br /&gt;
&lt;br /&gt;
= Secure Transmission / Network Layer security =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Benefits&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#File_Uploads&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Error_Handling&lt;br /&gt;
&lt;br /&gt;
= Logging and Auditing =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Logging_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cryptography =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cookie Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Cookies&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Secure_Deployment&lt;br /&gt;
&lt;br /&gt;
= Unvalidated Redirects and Forwards Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Common Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SQL Injection ==&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Scripting ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Request Forgery ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Preventing Malicious Site Framing (ClickJacking) ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Defending_with_X-Frame-Options_Response_Headers&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object references ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Directory Listing ==&lt;br /&gt;
&lt;br /&gt;
* Do not enable Directory Listing on your server&lt;br /&gt;
&lt;br /&gt;
== Concurrancy and Race Conditions ==&lt;br /&gt;
&lt;br /&gt;
* Use a locking mechanism to lock shared resources&lt;br /&gt;
* Obtain a lock on shared resources before it is read&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206097</id>
		<title>Secure Coding Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206097"/>
				<updated>2016-01-08T16:13:39Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Secure Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
The goal of this document is to create high level guideline for secure coding practices. The goal is to keep the overall size of the document condensed and easy to digest.  Individuals seeking addition information on the specific areas should refer to the included links to learn more.&lt;br /&gt;
&lt;br /&gt;
= How To Use This Document =&lt;br /&gt;
The information listed below are generally acceptable secure coding practices; however, it is recommend that organizations consider this a base template and update individual sections with secure coding recommendations specific to the organization's policies and risk tolerance. &lt;br /&gt;
&lt;br /&gt;
= Secure Coding Policy =&lt;br /&gt;
Always maintain a secure coding policy. List down the activities that are related to maintenance of secure coding standards (would these standards be technology specific or technology agnostic), feedback of code review output to training, input data validation, output data validation etc&lt;br /&gt;
&lt;br /&gt;
Why should you be having a secure coding policy? It helps in maintaining consistency across organisation and helps in vertical and horizontal scaling of usage of standards for web development projects. &lt;br /&gt;
&lt;br /&gt;
= Authentication=&lt;br /&gt;
&lt;br /&gt;
== User Authentication ==&lt;br /&gt;
Please see https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Utilize_Multi-Factor_Authentication&lt;br /&gt;
&lt;br /&gt;
=== Password Complexity ===&lt;br /&gt;
&lt;br /&gt;
For more information on password complexity, please see [https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls].&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Access Control =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Access_Control_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Input Data Validation =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Output_Encoding&lt;br /&gt;
&lt;br /&gt;
= Secure Transmission / Network Layer security =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Benefits&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#File_Uploads&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Error_Handling&lt;br /&gt;
&lt;br /&gt;
= Logging and Auditing =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Logging_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cryptography =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cookie Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Cookies&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Secure_Deployment&lt;br /&gt;
&lt;br /&gt;
= Unvalidated Redirects and Forwards Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Common Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SQL Injection ==&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Scripting ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Request Forgery ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Preventing Malicious Site Framing (ClickJacking) ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Defending_with_X-Frame-Options_Response_Headers&lt;br /&gt;
&lt;br /&gt;
== Security Misconfigurations ==&lt;br /&gt;
&lt;br /&gt;
* Diable all the services, ports, protocols and daemons that are not required.&lt;br /&gt;
* Change all the default and vendor supplied passwords&lt;br /&gt;
* Protect servers by grouping all similar functions into a VLAN&lt;br /&gt;
* White wash error messages such that no internal workings are revealed&lt;br /&gt;
* Prevent stack traces from leaving the container.&lt;br /&gt;
* Authorising access to the least amount of data/ least number of pages that is possible&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object references ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Directory Listing ==&lt;br /&gt;
&lt;br /&gt;
* Do not enable Directory Listing on your server&lt;br /&gt;
&lt;br /&gt;
== Concurrancy and Race Conditions ==&lt;br /&gt;
&lt;br /&gt;
* Use a locking mechanism to lock shared resources&lt;br /&gt;
* Obtain a lock on shared resources before it is read&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Input_Validation_Cheat_Sheet&amp;diff=206096</id>
		<title>Input Validation Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Input_Validation_Cheat_Sheet&amp;diff=206096"/>
				<updated>2016-01-08T16:13:24Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Secure Deployment */&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 article is focused on providing clear, simple, actionable guidance for providing Input Validation security functionality in your applications. &lt;br /&gt;
&lt;br /&gt;
== Goal of Input Validation ==&lt;br /&gt;
Input validation is performed to minimize malformed data from entering the system. Input Validation is NOT the primary method of preventing XSS, SQL Injection. These are covered in output encoding and related cheat sheets.&lt;br /&gt;
&lt;br /&gt;
== Goal of Output Encoding ==&lt;br /&gt;
Output encoding is to ensure that data is sanitised before being displayed to the user  &lt;br /&gt;
&lt;br /&gt;
== Goal of securing file uploads ==&lt;br /&gt;
Files uploaded to servers are secured to ensure that malware / auto-executables / OS configuration changing files etc are not uploaded to servers that can impact the confidentiality, integrity and availability of the data stored on the server or other servers.&lt;br /&gt;
&lt;br /&gt;
== Goal of Error Handling ==&lt;br /&gt;
Errors should be handled in a manner that internal details of the systems are not disclosed to the end user via a stack trace&lt;br /&gt;
&lt;br /&gt;
== Goal of Secure Application Deployment ==&lt;br /&gt;
Application deployments should ensure that confidentiality, integrity and availability of the application are not vulnerable to malicious attacks &lt;br /&gt;
&lt;br /&gt;
== White List Input Validation ==&lt;br /&gt;
&lt;br /&gt;
It is always recommended to prevent attacks as early as possible in the processing of the user’s (attacker's) request. Input validation can be used to detect unauthorized input before it is processed by the application. Developers frequently perform black list validation in order to try to detect attack characters and patterns like the ' character, the string 1=1, or the &amp;amp;lt;script&amp;amp;gt; tag, but this is a massively flawed approach as it is typically trivial for an attacker to avoid getting caught by such filters. Plus, such filters frequently prevent authorized input, like O'Brian, when the ' character is being filtered out.&lt;br /&gt;
&lt;br /&gt;
White list validation is appropriate for all input fields provided by the user. White list validation involves defining exactly what IS authorized, and by definition, everything else is not authorized. If it's well structured data, like dates, social security numbers, zip codes, e-mail addresses, etc. then the developer should be able to define a very strong validation pattern, usually based on regular expressions, for validating such input. If the input field comes from a fixed set of options, like a drop down list or radio buttons, then the input needs to match exactly one of the values offered to the user in the first place. The most difficult fields to validate are so called 'free text' fields, like blog entries. However, even those types of fields can be validated to some degree, you can at least exclude all non-printable characters, and define a maximum size for the input field.&lt;br /&gt;
&lt;br /&gt;
Developing regular expressions can be complicated, and is well beyond the scope of this cheat sheet. There are lots of resources on the internet about how to write regular expressions, including: [http://www.regular-expressions.info/ http://www.regular-expressions.info/] and the [[OWASP Validation Regex Repository]]. The following provides a few examples of ‘white list’ style regular expressions:&lt;br /&gt;
&lt;br /&gt;
== White List Regular Expression Examples ==&lt;br /&gt;
&lt;br /&gt;
Validating a Zip Code (5 digits plus optional -4) &lt;br /&gt;
 ^\d{5}(-\d{4})?$&lt;br /&gt;
&lt;br /&gt;
Validating U.S. State Selection From a Drop-Down Menu&lt;br /&gt;
 ^(AA|AE|AP|AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|&lt;br /&gt;
 HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE| &lt;br /&gt;
 NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|&lt;br /&gt;
 TX|UT|VT|VI|VA|WA|WV|WI|WY)$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Java Regex Usage Example'''&lt;br /&gt;
&lt;br /&gt;
  Example validating the parameter “zip” using a regular expression.&lt;br /&gt;
  &lt;br /&gt;
  private static final Pattern zipPattern = Pattern.compile(&amp;quot;^\d{5}(-\d{4})?$&amp;quot;);&lt;br /&gt;
  public void doPost( HttpServletRequest request, HttpServletResponse response) {&lt;br /&gt;
  	try {&lt;br /&gt;
  		String zipCode = request.getParameter( &amp;quot;zip&amp;quot; );&lt;br /&gt;
  		if ( !zipPattern.matcher( zipCode ).matches()  {&lt;br /&gt;
  			throw new YourValidationException( &amp;quot;Improper zipcode format.&amp;quot; );&lt;br /&gt;
  		}&lt;br /&gt;
  		.. do what you want here, after its been validated ..&lt;br /&gt;
  	} catch(YourValidationException e ) {&lt;br /&gt;
  		response.sendError( response.SC_BAD_REQUEST, e.getMessage() );&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Some white list validators have also been predefined in various open source packages that you can leverage. For example:&lt;br /&gt;
* [http://jakarta.apache.org/commons/validator Apache Commons Validator]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Input Validation Must Be:&lt;br /&gt;
* Applied to all user controlled data&lt;br /&gt;
* Define the types of characters that can be accepted (often U+0020 to U+007E, though most special characters could be removed and control characters are almost never needed)&lt;br /&gt;
* Defines a minimum and maximum length for the data (e.g. {1,25} ) &lt;br /&gt;
== Client Side vs Server Side Validation ==&lt;br /&gt;
Be aware that any JavaScript input validation performed on the client can be bypassed by an attacker that disables JavaScript or uses a Web Proxy. Ensure that any input validation performed on the client is also performed on the server.&lt;br /&gt;
== Positive Approach ==&lt;br /&gt;
The variations of attacks are enormous. Use regular expressions to define what is good and then deny the input if anything else is received. In other words, we want to use the approach &amp;quot;Accept Known Good&amp;quot; instead of &amp;quot;Reject Known Bad&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Example A field accepts a username. A good regex would be to verify &lt;br /&gt;
 that the data consists of the following [0-9a-zA-Z]{3,10}. The data &lt;br /&gt;
 is rejected if it doesn't match.  &lt;br /&gt;
&lt;br /&gt;
 A bad approach would be to build a list of malicious strings and then &lt;br /&gt;
 just verify that the username does not contain the bad string. This &lt;br /&gt;
 approach begs the question, did you think of all possible bad strings?&lt;br /&gt;
&lt;br /&gt;
== Robust Use of Input Validation ==&lt;br /&gt;
All data received from the user should be treated as malicious and verified before using within the application. This includes the following&lt;br /&gt;
* Form data&lt;br /&gt;
* URL parameters&lt;br /&gt;
* Hidden fields&lt;br /&gt;
* Cookie data&lt;br /&gt;
* HTTP Headers&lt;br /&gt;
* Essentially anything in the HTTP request &lt;br /&gt;
&lt;br /&gt;
== Input Validation ==&lt;br /&gt;
Data recieved from the user should be validated for the following factors as well:&lt;br /&gt;
&lt;br /&gt;
1. Boundary conditions (Out of range values)&lt;br /&gt;
&lt;br /&gt;
2. Length of the data inputed (for example, if the input control can accept only 8 character, the same should be validated while accepting the data. The input chars should not exceed 8 characters).&lt;br /&gt;
&lt;br /&gt;
== Validating Rich User Content ==&lt;br /&gt;
It is very difficult to validate rich content submitted by a user. Consider more formal approaches such as [http://htmlpurifier.org/ HTML Purifier (PHP)],  [http://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project AntiSamy] or [http://github.com/jsocol/bleach/ bleach (Python)]&lt;br /&gt;
&lt;br /&gt;
== Preventing XSS and Content Security Policy ==&lt;br /&gt;
* All user data controlled must be encoded when returned in the html page to prevent the execution of malicious data (e.g. XSS). For example &amp;amp;lt;script&amp;amp;gt; would be returned as &amp;amp;amp;lt;script&amp;amp;amp;gt;&lt;br /&gt;
* The type of encoding is specific to the context of the page where the user controlled data is inserted. For example, HTML entity encoding is appropriate for data placed into the HTML body. However, user data placed into a script would need JavaScript specific output encoding &lt;br /&gt;
&lt;br /&gt;
Detailed information on XSS prevention here: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet OWASP XSS Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
== Preventing SQL Injection ==&lt;br /&gt;
* It's not realistic to always know if a piece of data is user controlled, therefore parameterized queries should be used whenever a method/function accepts data and uses this data as part of the SQL statement. &lt;br /&gt;
* String concatenation to build any part of a SQL statement with user controlled data creates a SQL injection vulnerability.&lt;br /&gt;
* Parameterized queries are a guaranteed approach to prevent SQL injection.&lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Injection Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
== Preventing OS Injection ==&lt;br /&gt;
* Avoid sending user controlled data to the OS as much as possible&lt;br /&gt;
* Ensure that a robust escaping routine is in place to prevent the user from adding additional characters that can be executed by the OS ( e.g. user appends | to the malicious data and then executes another OS command). Remember to use a positive approach when constructing escaping routinges. Example &lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/Reviewing_Code_for_OS_Injection Reviewing Code for OS Injection]&lt;br /&gt;
&lt;br /&gt;
== Preventing XML Injection ==&lt;br /&gt;
* In addition to the existing input validation, define a positive approach which escapes/encodes characters that can be interpreted as xml. At a minimum this includes the following: &amp;lt; &amp;gt; &amp;quot; ' &amp;amp; &lt;br /&gt;
* If accepting raw XML then more robust validation is necessary. This can be complex. Please contact the infrastructure security team for additional discussion&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use input validation to ensure the uploaded filename uses an expected extension type &lt;br /&gt;
*Ensure the uploaded file is not larger than a defined maximum file size&lt;br /&gt;
&lt;br /&gt;
==Upload Storage==&lt;br /&gt;
*Use a new filename to store the file on the OS. Do not use any user controlled text for this filename or for the temporary filename. &lt;br /&gt;
*Store all user uploaded files on a separate domain (e.g. mozillafiles.net vs mozilla.org). Archives should be analyzed for malicious content (anti-malware, static analysis, etc)&lt;br /&gt;
&lt;br /&gt;
==Public Serving of Uploaded Content==&lt;br /&gt;
*Ensure the image is served with the correct content-type (e.g. image/jpeg, application/x-xpinstall)&lt;br /&gt;
&lt;br /&gt;
==Beware of &amp;quot;special&amp;quot; files==&lt;br /&gt;
* The upload feature should be using a whitelist approach to only allow specific file types and extensions. However, it is important to be aware of the following file types that, if allowed, could result in security vulnerabilities.&lt;br /&gt;
*&amp;quot;crossdomain.xml&amp;quot; allows cross-domain data loading in Flash, Java and Silverlight.  If permitted on sites with authentication this can permit cross-domain data theft and CSRF attacks.  Note this can get pretty complicated depending on the specific plugin version in question, so its best to just prohibit files named &amp;quot;crossdomain.xml&amp;quot; or &amp;quot;clientaccesspolicy.xml&amp;quot;.&lt;br /&gt;
*&amp;quot;.htaccess&amp;quot; and &amp;quot;.htpasswd&amp;quot; provides server configuration options on a per-directory basis, and should not be permitted.  See http://en.wikipedia.org/wiki/Htaccess&lt;br /&gt;
&lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use image rewriting libraries to verify the image is valid and to strip away extraneous content. &lt;br /&gt;
*Set the extension of the stored image to be a valid image extension based on the detected content type of the image from image processing (e.g. do not just trust the header from the upload). &lt;br /&gt;
*Ensure the detected content type of the image is within a list of defined image types (jpg, png, etc)&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
Typical types of errors:&lt;br /&gt;
• The result of business logic conditions not being met.&lt;br /&gt;
• The result of the environment wherein the business logic resides fails.&lt;br /&gt;
• The result of upstream or downstream systems upon which the application depends fail.&lt;br /&gt;
• Technical hardware / physical failure.&lt;br /&gt;
&lt;br /&gt;
To address these errors:&lt;br /&gt;
&lt;br /&gt;
* Ensure that all method/function calls that return a value have proper error handling and return value checking&lt;br /&gt;
* Ensure that exceptions and error conditions are properly handled&lt;br /&gt;
* Ensure that no system errors can be returned to the user&lt;br /&gt;
* Ensure that the application fails in a secure manner&lt;br /&gt;
* Ensure resources are released if an error occurs&lt;br /&gt;
* Ensure that stack trace is not thrown to the user&lt;br /&gt;
* If the language in question has a finally method, use it. The finally method is always called. The finally method can be used to release resources referenced by the method that threw the exception. &lt;br /&gt;
This is very important. An example would be if a method gained a database connection from a pool of connections, &lt;br /&gt;
and an exception occurred without finally, the connection object shall not be returned to the pool for some time (until the timeout). &lt;br /&gt;
This can lead to pool exhaustion. The method finally() is called even if no exception is thrown.&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
* Secure access to with authentication and authorisation to configuration files, directories, and resources on the host so that direct access to such artifacts is disallowed&lt;br /&gt;
* Use a “deny all” rule to deny access to resources on the hosts and then grant access on need basis&lt;br /&gt;
* In Apache HTTP server, ensure directories like WEB-INF and META-INF are protected. If permissions for a directory and subdirectories are specified in .htaccess file, ensure that it is protected using the “deny all” rule&lt;br /&gt;
* While using Struts framework, ensure that JSP files are not accessible directly by denying access to *.jsp files in web.xml&lt;br /&gt;
* Maintain a clean environment. remove files that contain source code but are not used by the application. &lt;br /&gt;
* Ensure production environment does not contain any source code / development tools and that the production &lt;br /&gt;
* Ensure environment contains only compiled code / executables. &lt;br /&gt;
* Remove test code / debug code (that might contain backdoors). &lt;br /&gt;
* Remove commented code and meta tags as they might contain sensitive data.&lt;br /&gt;
* If applicable, obfuscate your code to ensure that reverse engineering is avoided&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Dave Wichers - dave.wichers [at] aspectsecurity.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>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Input_Validation_Cheat_Sheet&amp;diff=206095</id>
		<title>Input Validation Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Input_Validation_Cheat_Sheet&amp;diff=206095"/>
				<updated>2016-01-08T16:13:03Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: &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 article is focused on providing clear, simple, actionable guidance for providing Input Validation security functionality in your applications. &lt;br /&gt;
&lt;br /&gt;
== Goal of Input Validation ==&lt;br /&gt;
Input validation is performed to minimize malformed data from entering the system. Input Validation is NOT the primary method of preventing XSS, SQL Injection. These are covered in output encoding and related cheat sheets.&lt;br /&gt;
&lt;br /&gt;
== Goal of Output Encoding ==&lt;br /&gt;
Output encoding is to ensure that data is sanitised before being displayed to the user  &lt;br /&gt;
&lt;br /&gt;
== Goal of securing file uploads ==&lt;br /&gt;
Files uploaded to servers are secured to ensure that malware / auto-executables / OS configuration changing files etc are not uploaded to servers that can impact the confidentiality, integrity and availability of the data stored on the server or other servers.&lt;br /&gt;
&lt;br /&gt;
== Goal of Error Handling ==&lt;br /&gt;
Errors should be handled in a manner that internal details of the systems are not disclosed to the end user via a stack trace&lt;br /&gt;
&lt;br /&gt;
== Goal of Secure Application Deployment ==&lt;br /&gt;
Application deployments should ensure that confidentiality, integrity and availability of the application are not vulnerable to malicious attacks &lt;br /&gt;
&lt;br /&gt;
== White List Input Validation ==&lt;br /&gt;
&lt;br /&gt;
It is always recommended to prevent attacks as early as possible in the processing of the user’s (attacker's) request. Input validation can be used to detect unauthorized input before it is processed by the application. Developers frequently perform black list validation in order to try to detect attack characters and patterns like the ' character, the string 1=1, or the &amp;amp;lt;script&amp;amp;gt; tag, but this is a massively flawed approach as it is typically trivial for an attacker to avoid getting caught by such filters. Plus, such filters frequently prevent authorized input, like O'Brian, when the ' character is being filtered out.&lt;br /&gt;
&lt;br /&gt;
White list validation is appropriate for all input fields provided by the user. White list validation involves defining exactly what IS authorized, and by definition, everything else is not authorized. If it's well structured data, like dates, social security numbers, zip codes, e-mail addresses, etc. then the developer should be able to define a very strong validation pattern, usually based on regular expressions, for validating such input. If the input field comes from a fixed set of options, like a drop down list or radio buttons, then the input needs to match exactly one of the values offered to the user in the first place. The most difficult fields to validate are so called 'free text' fields, like blog entries. However, even those types of fields can be validated to some degree, you can at least exclude all non-printable characters, and define a maximum size for the input field.&lt;br /&gt;
&lt;br /&gt;
Developing regular expressions can be complicated, and is well beyond the scope of this cheat sheet. There are lots of resources on the internet about how to write regular expressions, including: [http://www.regular-expressions.info/ http://www.regular-expressions.info/] and the [[OWASP Validation Regex Repository]]. The following provides a few examples of ‘white list’ style regular expressions:&lt;br /&gt;
&lt;br /&gt;
== White List Regular Expression Examples ==&lt;br /&gt;
&lt;br /&gt;
Validating a Zip Code (5 digits plus optional -4) &lt;br /&gt;
 ^\d{5}(-\d{4})?$&lt;br /&gt;
&lt;br /&gt;
Validating U.S. State Selection From a Drop-Down Menu&lt;br /&gt;
 ^(AA|AE|AP|AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|&lt;br /&gt;
 HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE| &lt;br /&gt;
 NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|&lt;br /&gt;
 TX|UT|VT|VI|VA|WA|WV|WI|WY)$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Java Regex Usage Example'''&lt;br /&gt;
&lt;br /&gt;
  Example validating the parameter “zip” using a regular expression.&lt;br /&gt;
  &lt;br /&gt;
  private static final Pattern zipPattern = Pattern.compile(&amp;quot;^\d{5}(-\d{4})?$&amp;quot;);&lt;br /&gt;
  public void doPost( HttpServletRequest request, HttpServletResponse response) {&lt;br /&gt;
  	try {&lt;br /&gt;
  		String zipCode = request.getParameter( &amp;quot;zip&amp;quot; );&lt;br /&gt;
  		if ( !zipPattern.matcher( zipCode ).matches()  {&lt;br /&gt;
  			throw new YourValidationException( &amp;quot;Improper zipcode format.&amp;quot; );&lt;br /&gt;
  		}&lt;br /&gt;
  		.. do what you want here, after its been validated ..&lt;br /&gt;
  	} catch(YourValidationException e ) {&lt;br /&gt;
  		response.sendError( response.SC_BAD_REQUEST, e.getMessage() );&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Some white list validators have also been predefined in various open source packages that you can leverage. For example:&lt;br /&gt;
* [http://jakarta.apache.org/commons/validator Apache Commons Validator]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Input Validation Must Be:&lt;br /&gt;
* Applied to all user controlled data&lt;br /&gt;
* Define the types of characters that can be accepted (often U+0020 to U+007E, though most special characters could be removed and control characters are almost never needed)&lt;br /&gt;
* Defines a minimum and maximum length for the data (e.g. {1,25} ) &lt;br /&gt;
== Client Side vs Server Side Validation ==&lt;br /&gt;
Be aware that any JavaScript input validation performed on the client can be bypassed by an attacker that disables JavaScript or uses a Web Proxy. Ensure that any input validation performed on the client is also performed on the server.&lt;br /&gt;
== Positive Approach ==&lt;br /&gt;
The variations of attacks are enormous. Use regular expressions to define what is good and then deny the input if anything else is received. In other words, we want to use the approach &amp;quot;Accept Known Good&amp;quot; instead of &amp;quot;Reject Known Bad&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Example A field accepts a username. A good regex would be to verify &lt;br /&gt;
 that the data consists of the following [0-9a-zA-Z]{3,10}. The data &lt;br /&gt;
 is rejected if it doesn't match.  &lt;br /&gt;
&lt;br /&gt;
 A bad approach would be to build a list of malicious strings and then &lt;br /&gt;
 just verify that the username does not contain the bad string. This &lt;br /&gt;
 approach begs the question, did you think of all possible bad strings?&lt;br /&gt;
&lt;br /&gt;
== Robust Use of Input Validation ==&lt;br /&gt;
All data received from the user should be treated as malicious and verified before using within the application. This includes the following&lt;br /&gt;
* Form data&lt;br /&gt;
* URL parameters&lt;br /&gt;
* Hidden fields&lt;br /&gt;
* Cookie data&lt;br /&gt;
* HTTP Headers&lt;br /&gt;
* Essentially anything in the HTTP request &lt;br /&gt;
&lt;br /&gt;
== Input Validation ==&lt;br /&gt;
Data recieved from the user should be validated for the following factors as well:&lt;br /&gt;
&lt;br /&gt;
1. Boundary conditions (Out of range values)&lt;br /&gt;
&lt;br /&gt;
2. Length of the data inputed (for example, if the input control can accept only 8 character, the same should be validated while accepting the data. The input chars should not exceed 8 characters).&lt;br /&gt;
&lt;br /&gt;
== Validating Rich User Content ==&lt;br /&gt;
It is very difficult to validate rich content submitted by a user. Consider more formal approaches such as [http://htmlpurifier.org/ HTML Purifier (PHP)],  [http://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project AntiSamy] or [http://github.com/jsocol/bleach/ bleach (Python)]&lt;br /&gt;
&lt;br /&gt;
== Preventing XSS and Content Security Policy ==&lt;br /&gt;
* All user data controlled must be encoded when returned in the html page to prevent the execution of malicious data (e.g. XSS). For example &amp;amp;lt;script&amp;amp;gt; would be returned as &amp;amp;amp;lt;script&amp;amp;amp;gt;&lt;br /&gt;
* The type of encoding is specific to the context of the page where the user controlled data is inserted. For example, HTML entity encoding is appropriate for data placed into the HTML body. However, user data placed into a script would need JavaScript specific output encoding &lt;br /&gt;
&lt;br /&gt;
Detailed information on XSS prevention here: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet OWASP XSS Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
== Preventing SQL Injection ==&lt;br /&gt;
* It's not realistic to always know if a piece of data is user controlled, therefore parameterized queries should be used whenever a method/function accepts data and uses this data as part of the SQL statement. &lt;br /&gt;
* String concatenation to build any part of a SQL statement with user controlled data creates a SQL injection vulnerability.&lt;br /&gt;
* Parameterized queries are a guaranteed approach to prevent SQL injection.&lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Injection Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
== Preventing OS Injection ==&lt;br /&gt;
* Avoid sending user controlled data to the OS as much as possible&lt;br /&gt;
* Ensure that a robust escaping routine is in place to prevent the user from adding additional characters that can be executed by the OS ( e.g. user appends | to the malicious data and then executes another OS command). Remember to use a positive approach when constructing escaping routinges. Example &lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/Reviewing_Code_for_OS_Injection Reviewing Code for OS Injection]&lt;br /&gt;
&lt;br /&gt;
== Preventing XML Injection ==&lt;br /&gt;
* In addition to the existing input validation, define a positive approach which escapes/encodes characters that can be interpreted as xml. At a minimum this includes the following: &amp;lt; &amp;gt; &amp;quot; ' &amp;amp; &lt;br /&gt;
* If accepting raw XML then more robust validation is necessary. This can be complex. Please contact the infrastructure security team for additional discussion&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use input validation to ensure the uploaded filename uses an expected extension type &lt;br /&gt;
*Ensure the uploaded file is not larger than a defined maximum file size&lt;br /&gt;
&lt;br /&gt;
==Upload Storage==&lt;br /&gt;
*Use a new filename to store the file on the OS. Do not use any user controlled text for this filename or for the temporary filename. &lt;br /&gt;
*Store all user uploaded files on a separate domain (e.g. mozillafiles.net vs mozilla.org). Archives should be analyzed for malicious content (anti-malware, static analysis, etc)&lt;br /&gt;
&lt;br /&gt;
==Public Serving of Uploaded Content==&lt;br /&gt;
*Ensure the image is served with the correct content-type (e.g. image/jpeg, application/x-xpinstall)&lt;br /&gt;
&lt;br /&gt;
==Beware of &amp;quot;special&amp;quot; files==&lt;br /&gt;
* The upload feature should be using a whitelist approach to only allow specific file types and extensions. However, it is important to be aware of the following file types that, if allowed, could result in security vulnerabilities.&lt;br /&gt;
*&amp;quot;crossdomain.xml&amp;quot; allows cross-domain data loading in Flash, Java and Silverlight.  If permitted on sites with authentication this can permit cross-domain data theft and CSRF attacks.  Note this can get pretty complicated depending on the specific plugin version in question, so its best to just prohibit files named &amp;quot;crossdomain.xml&amp;quot; or &amp;quot;clientaccesspolicy.xml&amp;quot;.&lt;br /&gt;
*&amp;quot;.htaccess&amp;quot; and &amp;quot;.htpasswd&amp;quot; provides server configuration options on a per-directory basis, and should not be permitted.  See http://en.wikipedia.org/wiki/Htaccess&lt;br /&gt;
&lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use image rewriting libraries to verify the image is valid and to strip away extraneous content. &lt;br /&gt;
*Set the extension of the stored image to be a valid image extension based on the detected content type of the image from image processing (e.g. do not just trust the header from the upload). &lt;br /&gt;
*Ensure the detected content type of the image is within a list of defined image types (jpg, png, etc)&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
Typical types of errors:&lt;br /&gt;
• The result of business logic conditions not being met.&lt;br /&gt;
• The result of the environment wherein the business logic resides fails.&lt;br /&gt;
• The result of upstream or downstream systems upon which the application depends fail.&lt;br /&gt;
• Technical hardware / physical failure.&lt;br /&gt;
&lt;br /&gt;
To address these errors:&lt;br /&gt;
&lt;br /&gt;
* Ensure that all method/function calls that return a value have proper error handling and return value checking&lt;br /&gt;
* Ensure that exceptions and error conditions are properly handled&lt;br /&gt;
* Ensure that no system errors can be returned to the user&lt;br /&gt;
* Ensure that the application fails in a secure manner&lt;br /&gt;
* Ensure resources are released if an error occurs&lt;br /&gt;
* Ensure that stack trace is not thrown to the user&lt;br /&gt;
* If the language in question has a finally method, use it. The finally method is always called. The finally method can be used to release resources referenced by the method that threw the exception. &lt;br /&gt;
This is very important. An example would be if a method gained a database connection from a pool of connections, &lt;br /&gt;
and an exception occurred without finally, the connection object shall not be returned to the pool for some time (until the timeout). &lt;br /&gt;
This can lead to pool exhaustion. The method finally() is called even if no exception is thrown.&lt;br /&gt;
&lt;br /&gt;
== Secure Deployment ==&lt;br /&gt;
&lt;br /&gt;
* Secure access to with authentication and authorisation to configuration files, directories, and resources on the host so that direct access to such artifacts is disallowed&lt;br /&gt;
* Use a “deny all” rule to deny access to resources on the hosts and then grant access on need basis&lt;br /&gt;
* In Apache HTTP server, ensure directories like WEB-INF and META-INF are protected. If permissions for a directory and subdirectories are specified in .htaccess file, ensure that it is protected using the “deny all” rule&lt;br /&gt;
* While using Struts framework, ensure that JSP files are not accessible directly by denying access to *.jsp files in web.xml&lt;br /&gt;
* Maintain a clean environment. remove files that contain source code but are not used by the application. &lt;br /&gt;
* Ensure production environment does not contain any source code / development tools and that the production &lt;br /&gt;
* Ensure environment contains only compiled code / executables. &lt;br /&gt;
* Remove test code / debug code (that might contain backdoors). &lt;br /&gt;
* Remove commented code and meta tags as they might contain sensitive data.&lt;br /&gt;
* If applicable, obfuscate your code to ensure that reverse engineering is avoided&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Dave Wichers - dave.wichers [at] aspectsecurity.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>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206094</id>
		<title>Secure Coding Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206094"/>
				<updated>2016-01-08T15:35:54Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* SQL Injection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
The goal of this document is to create high level guideline for secure coding practices. The goal is to keep the overall size of the document condensed and easy to digest.  Individuals seeking addition information on the specific areas should refer to the included links to learn more.&lt;br /&gt;
&lt;br /&gt;
= How To Use This Document =&lt;br /&gt;
The information listed below are generally acceptable secure coding practices; however, it is recommend that organizations consider this a base template and update individual sections with secure coding recommendations specific to the organization's policies and risk tolerance. &lt;br /&gt;
&lt;br /&gt;
= Secure Coding Policy =&lt;br /&gt;
Always maintain a secure coding policy. List down the activities that are related to maintenance of secure coding standards (would these standards be technology specific or technology agnostic), feedback of code review output to training, input data validation, output data validation etc&lt;br /&gt;
&lt;br /&gt;
Why should you be having a secure coding policy? It helps in maintaining consistency across organisation and helps in vertical and horizontal scaling of usage of standards for web development projects. &lt;br /&gt;
&lt;br /&gt;
= Authentication=&lt;br /&gt;
&lt;br /&gt;
== User Authentication ==&lt;br /&gt;
Please see https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Utilize_Multi-Factor_Authentication&lt;br /&gt;
&lt;br /&gt;
=== Password Complexity ===&lt;br /&gt;
&lt;br /&gt;
For more information on password complexity, please see [https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls].&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Access Control =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Access_Control_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Input Data Validation =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Output_Encoding&lt;br /&gt;
&lt;br /&gt;
= Secure Transmission / Network Layer security =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Benefits&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#File_Uploads&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Error_Handling&lt;br /&gt;
&lt;br /&gt;
= Logging and Auditing =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Logging_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cryptography =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cookie Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Cookies&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
* Secure access to with authentication and authorisation to configuration files, directories, and resources on the host so that direct access to such artifacts is disallowed&lt;br /&gt;
* Use a “deny all” rule to deny access to resources on the hosts and then grant access on need basis&lt;br /&gt;
* In Apache HTTP server, ensure directories like WEB-INF and META-INF are protected. If permissions for a directory and subdirectories are specified in .htaccess file, ensure that it is protected using the “deny all” rule&lt;br /&gt;
* While using Struts framework, ensure that JSP files are not accessible directly by denying access to *.jsp files in web.xml&lt;br /&gt;
* Maintain a clean environment. remove files that contain source code but are not used by the application. &lt;br /&gt;
* Ensure production environment does not contain any source code / development tools and that the production &lt;br /&gt;
* Ensure environment contains only compiled code / executables. &lt;br /&gt;
* Remove test code / debug code (that might contain backdoors). &lt;br /&gt;
* Remove commented code and meta tags as they might contain sensitive data.&lt;br /&gt;
* If applicable, obfuscate your code to ensure that reverse engineering is avoided&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Unvalidated Redirects and Forwards Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Common Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SQL Injection ==&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Scripting ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Request Forgery ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Preventing Malicious Site Framing (ClickJacking) ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Defending_with_X-Frame-Options_Response_Headers&lt;br /&gt;
&lt;br /&gt;
== Security Misconfigurations ==&lt;br /&gt;
&lt;br /&gt;
* Diable all the services, ports, protocols and daemons that are not required.&lt;br /&gt;
* Change all the default and vendor supplied passwords&lt;br /&gt;
* Protect servers by grouping all similar functions into a VLAN&lt;br /&gt;
* White wash error messages such that no internal workings are revealed&lt;br /&gt;
* Prevent stack traces from leaving the container.&lt;br /&gt;
* Authorising access to the least amount of data/ least number of pages that is possible&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object references ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Directory Listing ==&lt;br /&gt;
&lt;br /&gt;
* Do not enable Directory Listing on your server&lt;br /&gt;
&lt;br /&gt;
== Concurrancy and Race Conditions ==&lt;br /&gt;
&lt;br /&gt;
* Use a locking mechanism to lock shared resources&lt;br /&gt;
* Obtain a lock on shared resources before it is read&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206093</id>
		<title>Secure Coding Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206093"/>
				<updated>2016-01-08T15:35:38Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Logging and Auditing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
The goal of this document is to create high level guideline for secure coding practices. The goal is to keep the overall size of the document condensed and easy to digest.  Individuals seeking addition information on the specific areas should refer to the included links to learn more.&lt;br /&gt;
&lt;br /&gt;
= How To Use This Document =&lt;br /&gt;
The information listed below are generally acceptable secure coding practices; however, it is recommend that organizations consider this a base template and update individual sections with secure coding recommendations specific to the organization's policies and risk tolerance. &lt;br /&gt;
&lt;br /&gt;
= Secure Coding Policy =&lt;br /&gt;
Always maintain a secure coding policy. List down the activities that are related to maintenance of secure coding standards (would these standards be technology specific or technology agnostic), feedback of code review output to training, input data validation, output data validation etc&lt;br /&gt;
&lt;br /&gt;
Why should you be having a secure coding policy? It helps in maintaining consistency across organisation and helps in vertical and horizontal scaling of usage of standards for web development projects. &lt;br /&gt;
&lt;br /&gt;
= Authentication=&lt;br /&gt;
&lt;br /&gt;
== User Authentication ==&lt;br /&gt;
Please see https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Utilize_Multi-Factor_Authentication&lt;br /&gt;
&lt;br /&gt;
=== Password Complexity ===&lt;br /&gt;
&lt;br /&gt;
For more information on password complexity, please see [https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls].&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Access Control =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Access_Control_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Input Data Validation =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Output_Encoding&lt;br /&gt;
&lt;br /&gt;
= Secure Transmission / Network Layer security =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Benefits&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#File_Uploads&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Error_Handling&lt;br /&gt;
&lt;br /&gt;
= Logging and Auditing =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Logging_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cryptography =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cookie Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Cookies&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
* Secure access to with authentication and authorisation to configuration files, directories, and resources on the host so that direct access to such artifacts is disallowed&lt;br /&gt;
* Use a “deny all” rule to deny access to resources on the hosts and then grant access on need basis&lt;br /&gt;
* In Apache HTTP server, ensure directories like WEB-INF and META-INF are protected. If permissions for a directory and subdirectories are specified in .htaccess file, ensure that it is protected using the “deny all” rule&lt;br /&gt;
* While using Struts framework, ensure that JSP files are not accessible directly by denying access to *.jsp files in web.xml&lt;br /&gt;
* Maintain a clean environment. remove files that contain source code but are not used by the application. &lt;br /&gt;
* Ensure production environment does not contain any source code / development tools and that the production &lt;br /&gt;
* Ensure environment contains only compiled code / executables. &lt;br /&gt;
* Remove test code / debug code (that might contain backdoors). &lt;br /&gt;
* Remove commented code and meta tags as they might contain sensitive data.&lt;br /&gt;
* If applicable, obfuscate your code to ensure that reverse engineering is avoided&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Unvalidated Redirects and Forwards Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Common Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SQL Injection ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Scripting ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Request Forgery ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Preventing Malicious Site Framing (ClickJacking) ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Defending_with_X-Frame-Options_Response_Headers&lt;br /&gt;
&lt;br /&gt;
== Security Misconfigurations ==&lt;br /&gt;
&lt;br /&gt;
* Diable all the services, ports, protocols and daemons that are not required.&lt;br /&gt;
* Change all the default and vendor supplied passwords&lt;br /&gt;
* Protect servers by grouping all similar functions into a VLAN&lt;br /&gt;
* White wash error messages such that no internal workings are revealed&lt;br /&gt;
* Prevent stack traces from leaving the container.&lt;br /&gt;
* Authorising access to the least amount of data/ least number of pages that is possible&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object references ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Directory Listing ==&lt;br /&gt;
&lt;br /&gt;
* Do not enable Directory Listing on your server&lt;br /&gt;
&lt;br /&gt;
== Concurrancy and Race Conditions ==&lt;br /&gt;
&lt;br /&gt;
* Use a locking mechanism to lock shared resources&lt;br /&gt;
* Obtain a lock on shared resources before it is read&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206092</id>
		<title>Secure Coding Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206092"/>
				<updated>2016-01-08T15:35:07Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Error Handling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
The goal of this document is to create high level guideline for secure coding practices. The goal is to keep the overall size of the document condensed and easy to digest.  Individuals seeking addition information on the specific areas should refer to the included links to learn more.&lt;br /&gt;
&lt;br /&gt;
= How To Use This Document =&lt;br /&gt;
The information listed below are generally acceptable secure coding practices; however, it is recommend that organizations consider this a base template and update individual sections with secure coding recommendations specific to the organization's policies and risk tolerance. &lt;br /&gt;
&lt;br /&gt;
= Secure Coding Policy =&lt;br /&gt;
Always maintain a secure coding policy. List down the activities that are related to maintenance of secure coding standards (would these standards be technology specific or technology agnostic), feedback of code review output to training, input data validation, output data validation etc&lt;br /&gt;
&lt;br /&gt;
Why should you be having a secure coding policy? It helps in maintaining consistency across organisation and helps in vertical and horizontal scaling of usage of standards for web development projects. &lt;br /&gt;
&lt;br /&gt;
= Authentication=&lt;br /&gt;
&lt;br /&gt;
== User Authentication ==&lt;br /&gt;
Please see https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Utilize_Multi-Factor_Authentication&lt;br /&gt;
&lt;br /&gt;
=== Password Complexity ===&lt;br /&gt;
&lt;br /&gt;
For more information on password complexity, please see [https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls].&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Access Control =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Access_Control_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Input Data Validation =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Output_Encoding&lt;br /&gt;
&lt;br /&gt;
= Secure Transmission / Network Layer security =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Benefits&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#File_Uploads&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Error_Handling&lt;br /&gt;
&lt;br /&gt;
= Logging and Auditing =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Logging_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Cryptography =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cookie Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Cookies&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
* Secure access to with authentication and authorisation to configuration files, directories, and resources on the host so that direct access to such artifacts is disallowed&lt;br /&gt;
* Use a “deny all” rule to deny access to resources on the hosts and then grant access on need basis&lt;br /&gt;
* In Apache HTTP server, ensure directories like WEB-INF and META-INF are protected. If permissions for a directory and subdirectories are specified in .htaccess file, ensure that it is protected using the “deny all” rule&lt;br /&gt;
* While using Struts framework, ensure that JSP files are not accessible directly by denying access to *.jsp files in web.xml&lt;br /&gt;
* Maintain a clean environment. remove files that contain source code but are not used by the application. &lt;br /&gt;
* Ensure production environment does not contain any source code / development tools and that the production &lt;br /&gt;
* Ensure environment contains only compiled code / executables. &lt;br /&gt;
* Remove test code / debug code (that might contain backdoors). &lt;br /&gt;
* Remove commented code and meta tags as they might contain sensitive data.&lt;br /&gt;
* If applicable, obfuscate your code to ensure that reverse engineering is avoided&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Unvalidated Redirects and Forwards Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Common Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SQL Injection ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Scripting ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Request Forgery ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Preventing Malicious Site Framing (ClickJacking) ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Defending_with_X-Frame-Options_Response_Headers&lt;br /&gt;
&lt;br /&gt;
== Security Misconfigurations ==&lt;br /&gt;
&lt;br /&gt;
* Diable all the services, ports, protocols and daemons that are not required.&lt;br /&gt;
* Change all the default and vendor supplied passwords&lt;br /&gt;
* Protect servers by grouping all similar functions into a VLAN&lt;br /&gt;
* White wash error messages such that no internal workings are revealed&lt;br /&gt;
* Prevent stack traces from leaving the container.&lt;br /&gt;
* Authorising access to the least amount of data/ least number of pages that is possible&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object references ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Directory Listing ==&lt;br /&gt;
&lt;br /&gt;
* Do not enable Directory Listing on your server&lt;br /&gt;
&lt;br /&gt;
== Concurrancy and Race Conditions ==&lt;br /&gt;
&lt;br /&gt;
* Use a locking mechanism to lock shared resources&lt;br /&gt;
* Obtain a lock on shared resources before it is read&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Input_Validation_Cheat_Sheet&amp;diff=206091</id>
		<title>Input Validation Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Input_Validation_Cheat_Sheet&amp;diff=206091"/>
				<updated>2016-01-08T15:34:46Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: &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 article is focused on providing clear, simple, actionable guidance for providing Input Validation security functionality in your applications. &lt;br /&gt;
&lt;br /&gt;
== Goal of Input Validation ==&lt;br /&gt;
Input validation is performed to minimize malformed data from entering the system. Input Validation is NOT the primary method of preventing XSS, SQL Injection. These are covered in output encoding and related cheat sheets.&lt;br /&gt;
&lt;br /&gt;
== Goal of Output Encoding ==&lt;br /&gt;
Output encoding is to ensure that data is sanitised before being displayed to the user  &lt;br /&gt;
&lt;br /&gt;
== Goal of securing file uploads ==&lt;br /&gt;
Files uploaded to servers are secured to ensure that malware / auto-executables / OS configuration changing files etc are not uploaded to servers that can impact the confidentiality, integrity and availability of the data stored on the server or other servers.&lt;br /&gt;
&lt;br /&gt;
== Goal of Error Handling ==&lt;br /&gt;
Errors should be handled in a manner that internal details of the systems are not disclosed to the end user via a stack trace&lt;br /&gt;
&lt;br /&gt;
== White List Input Validation ==&lt;br /&gt;
&lt;br /&gt;
It is always recommended to prevent attacks as early as possible in the processing of the user’s (attacker's) request. Input validation can be used to detect unauthorized input before it is processed by the application. Developers frequently perform black list validation in order to try to detect attack characters and patterns like the ' character, the string 1=1, or the &amp;amp;lt;script&amp;amp;gt; tag, but this is a massively flawed approach as it is typically trivial for an attacker to avoid getting caught by such filters. Plus, such filters frequently prevent authorized input, like O'Brian, when the ' character is being filtered out.&lt;br /&gt;
&lt;br /&gt;
White list validation is appropriate for all input fields provided by the user. White list validation involves defining exactly what IS authorized, and by definition, everything else is not authorized. If it's well structured data, like dates, social security numbers, zip codes, e-mail addresses, etc. then the developer should be able to define a very strong validation pattern, usually based on regular expressions, for validating such input. If the input field comes from a fixed set of options, like a drop down list or radio buttons, then the input needs to match exactly one of the values offered to the user in the first place. The most difficult fields to validate are so called 'free text' fields, like blog entries. However, even those types of fields can be validated to some degree, you can at least exclude all non-printable characters, and define a maximum size for the input field.&lt;br /&gt;
&lt;br /&gt;
Developing regular expressions can be complicated, and is well beyond the scope of this cheat sheet. There are lots of resources on the internet about how to write regular expressions, including: [http://www.regular-expressions.info/ http://www.regular-expressions.info/] and the [[OWASP Validation Regex Repository]]. The following provides a few examples of ‘white list’ style regular expressions:&lt;br /&gt;
&lt;br /&gt;
== White List Regular Expression Examples ==&lt;br /&gt;
&lt;br /&gt;
Validating a Zip Code (5 digits plus optional -4) &lt;br /&gt;
 ^\d{5}(-\d{4})?$&lt;br /&gt;
&lt;br /&gt;
Validating U.S. State Selection From a Drop-Down Menu&lt;br /&gt;
 ^(AA|AE|AP|AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|&lt;br /&gt;
 HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE| &lt;br /&gt;
 NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|&lt;br /&gt;
 TX|UT|VT|VI|VA|WA|WV|WI|WY)$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Java Regex Usage Example'''&lt;br /&gt;
&lt;br /&gt;
  Example validating the parameter “zip” using a regular expression.&lt;br /&gt;
  &lt;br /&gt;
  private static final Pattern zipPattern = Pattern.compile(&amp;quot;^\d{5}(-\d{4})?$&amp;quot;);&lt;br /&gt;
  public void doPost( HttpServletRequest request, HttpServletResponse response) {&lt;br /&gt;
  	try {&lt;br /&gt;
  		String zipCode = request.getParameter( &amp;quot;zip&amp;quot; );&lt;br /&gt;
  		if ( !zipPattern.matcher( zipCode ).matches()  {&lt;br /&gt;
  			throw new YourValidationException( &amp;quot;Improper zipcode format.&amp;quot; );&lt;br /&gt;
  		}&lt;br /&gt;
  		.. do what you want here, after its been validated ..&lt;br /&gt;
  	} catch(YourValidationException e ) {&lt;br /&gt;
  		response.sendError( response.SC_BAD_REQUEST, e.getMessage() );&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Some white list validators have also been predefined in various open source packages that you can leverage. For example:&lt;br /&gt;
* [http://jakarta.apache.org/commons/validator Apache Commons Validator]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Input Validation Must Be:&lt;br /&gt;
* Applied to all user controlled data&lt;br /&gt;
* Define the types of characters that can be accepted (often U+0020 to U+007E, though most special characters could be removed and control characters are almost never needed)&lt;br /&gt;
* Defines a minimum and maximum length for the data (e.g. {1,25} ) &lt;br /&gt;
== Client Side vs Server Side Validation ==&lt;br /&gt;
Be aware that any JavaScript input validation performed on the client can be bypassed by an attacker that disables JavaScript or uses a Web Proxy. Ensure that any input validation performed on the client is also performed on the server.&lt;br /&gt;
== Positive Approach ==&lt;br /&gt;
The variations of attacks are enormous. Use regular expressions to define what is good and then deny the input if anything else is received. In other words, we want to use the approach &amp;quot;Accept Known Good&amp;quot; instead of &amp;quot;Reject Known Bad&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Example A field accepts a username. A good regex would be to verify &lt;br /&gt;
 that the data consists of the following [0-9a-zA-Z]{3,10}. The data &lt;br /&gt;
 is rejected if it doesn't match.  &lt;br /&gt;
&lt;br /&gt;
 A bad approach would be to build a list of malicious strings and then &lt;br /&gt;
 just verify that the username does not contain the bad string. This &lt;br /&gt;
 approach begs the question, did you think of all possible bad strings?&lt;br /&gt;
&lt;br /&gt;
== Robust Use of Input Validation ==&lt;br /&gt;
All data received from the user should be treated as malicious and verified before using within the application. This includes the following&lt;br /&gt;
* Form data&lt;br /&gt;
* URL parameters&lt;br /&gt;
* Hidden fields&lt;br /&gt;
* Cookie data&lt;br /&gt;
* HTTP Headers&lt;br /&gt;
* Essentially anything in the HTTP request &lt;br /&gt;
&lt;br /&gt;
== Input Validation ==&lt;br /&gt;
Data recieved from the user should be validated for the following factors as well:&lt;br /&gt;
&lt;br /&gt;
1. Boundary conditions (Out of range values)&lt;br /&gt;
&lt;br /&gt;
2. Length of the data inputed (for example, if the input control can accept only 8 character, the same should be validated while accepting the data. The input chars should not exceed 8 characters).&lt;br /&gt;
&lt;br /&gt;
== Validating Rich User Content ==&lt;br /&gt;
It is very difficult to validate rich content submitted by a user. Consider more formal approaches such as [http://htmlpurifier.org/ HTML Purifier (PHP)],  [http://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project AntiSamy] or [http://github.com/jsocol/bleach/ bleach (Python)]&lt;br /&gt;
&lt;br /&gt;
== Preventing XSS and Content Security Policy ==&lt;br /&gt;
* All user data controlled must be encoded when returned in the html page to prevent the execution of malicious data (e.g. XSS). For example &amp;amp;lt;script&amp;amp;gt; would be returned as &amp;amp;amp;lt;script&amp;amp;amp;gt;&lt;br /&gt;
* The type of encoding is specific to the context of the page where the user controlled data is inserted. For example, HTML entity encoding is appropriate for data placed into the HTML body. However, user data placed into a script would need JavaScript specific output encoding &lt;br /&gt;
&lt;br /&gt;
Detailed information on XSS prevention here: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet OWASP XSS Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
== Preventing SQL Injection ==&lt;br /&gt;
* It's not realistic to always know if a piece of data is user controlled, therefore parameterized queries should be used whenever a method/function accepts data and uses this data as part of the SQL statement. &lt;br /&gt;
* String concatenation to build any part of a SQL statement with user controlled data creates a SQL injection vulnerability.&lt;br /&gt;
* Parameterized queries are a guaranteed approach to prevent SQL injection.&lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Injection Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
== Preventing OS Injection ==&lt;br /&gt;
* Avoid sending user controlled data to the OS as much as possible&lt;br /&gt;
* Ensure that a robust escaping routine is in place to prevent the user from adding additional characters that can be executed by the OS ( e.g. user appends | to the malicious data and then executes another OS command). Remember to use a positive approach when constructing escaping routinges. Example &lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/Reviewing_Code_for_OS_Injection Reviewing Code for OS Injection]&lt;br /&gt;
&lt;br /&gt;
== Preventing XML Injection ==&lt;br /&gt;
* In addition to the existing input validation, define a positive approach which escapes/encodes characters that can be interpreted as xml. At a minimum this includes the following: &amp;lt; &amp;gt; &amp;quot; ' &amp;amp; &lt;br /&gt;
* If accepting raw XML then more robust validation is necessary. This can be complex. Please contact the infrastructure security team for additional discussion&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use input validation to ensure the uploaded filename uses an expected extension type &lt;br /&gt;
*Ensure the uploaded file is not larger than a defined maximum file size&lt;br /&gt;
&lt;br /&gt;
==Upload Storage==&lt;br /&gt;
*Use a new filename to store the file on the OS. Do not use any user controlled text for this filename or for the temporary filename. &lt;br /&gt;
*Store all user uploaded files on a separate domain (e.g. mozillafiles.net vs mozilla.org). Archives should be analyzed for malicious content (anti-malware, static analysis, etc)&lt;br /&gt;
&lt;br /&gt;
==Public Serving of Uploaded Content==&lt;br /&gt;
*Ensure the image is served with the correct content-type (e.g. image/jpeg, application/x-xpinstall)&lt;br /&gt;
&lt;br /&gt;
==Beware of &amp;quot;special&amp;quot; files==&lt;br /&gt;
* The upload feature should be using a whitelist approach to only allow specific file types and extensions. However, it is important to be aware of the following file types that, if allowed, could result in security vulnerabilities.&lt;br /&gt;
*&amp;quot;crossdomain.xml&amp;quot; allows cross-domain data loading in Flash, Java and Silverlight.  If permitted on sites with authentication this can permit cross-domain data theft and CSRF attacks.  Note this can get pretty complicated depending on the specific plugin version in question, so its best to just prohibit files named &amp;quot;crossdomain.xml&amp;quot; or &amp;quot;clientaccesspolicy.xml&amp;quot;.&lt;br /&gt;
*&amp;quot;.htaccess&amp;quot; and &amp;quot;.htpasswd&amp;quot; provides server configuration options on a per-directory basis, and should not be permitted.  See http://en.wikipedia.org/wiki/Htaccess&lt;br /&gt;
&lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use image rewriting libraries to verify the image is valid and to strip away extraneous content. &lt;br /&gt;
*Set the extension of the stored image to be a valid image extension based on the detected content type of the image from image processing (e.g. do not just trust the header from the upload). &lt;br /&gt;
*Ensure the detected content type of the image is within a list of defined image types (jpg, png, etc)&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
Typical types of errors:&lt;br /&gt;
• The result of business logic conditions not being met.&lt;br /&gt;
• The result of the environment wherein the business logic resides fails.&lt;br /&gt;
• The result of upstream or downstream systems upon which the application depends fail.&lt;br /&gt;
• Technical hardware / physical failure.&lt;br /&gt;
&lt;br /&gt;
To address these errors:&lt;br /&gt;
&lt;br /&gt;
* Ensure that all method/function calls that return a value have proper error handling and return value checking&lt;br /&gt;
* Ensure that exceptions and error conditions are properly handled&lt;br /&gt;
* Ensure that no system errors can be returned to the user&lt;br /&gt;
* Ensure that the application fails in a secure manner&lt;br /&gt;
* Ensure resources are released if an error occurs&lt;br /&gt;
* Ensure that stack trace is not thrown to the user&lt;br /&gt;
* If the language in question has a finally method, use it. The finally method is always called. The finally method can be used to release resources referenced by the method that threw the exception. &lt;br /&gt;
This is very important. An example would be if a method gained a database connection from a pool of connections, &lt;br /&gt;
and an exception occurred without finally, the connection object shall not be returned to the pool for some time (until the timeout). &lt;br /&gt;
This can lead to pool exhaustion. The method finally() is called even if no exception is thrown.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Dave Wichers - dave.wichers [at] aspectsecurity.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>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206090</id>
		<title>Secure Coding Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206090"/>
				<updated>2016-01-08T15:32:42Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* File Uploads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
The goal of this document is to create high level guideline for secure coding practices. The goal is to keep the overall size of the document condensed and easy to digest.  Individuals seeking addition information on the specific areas should refer to the included links to learn more.&lt;br /&gt;
&lt;br /&gt;
= How To Use This Document =&lt;br /&gt;
The information listed below are generally acceptable secure coding practices; however, it is recommend that organizations consider this a base template and update individual sections with secure coding recommendations specific to the organization's policies and risk tolerance. &lt;br /&gt;
&lt;br /&gt;
= Secure Coding Policy =&lt;br /&gt;
Always maintain a secure coding policy. List down the activities that are related to maintenance of secure coding standards (would these standards be technology specific or technology agnostic), feedback of code review output to training, input data validation, output data validation etc&lt;br /&gt;
&lt;br /&gt;
Why should you be having a secure coding policy? It helps in maintaining consistency across organisation and helps in vertical and horizontal scaling of usage of standards for web development projects. &lt;br /&gt;
&lt;br /&gt;
= Authentication=&lt;br /&gt;
&lt;br /&gt;
== User Authentication ==&lt;br /&gt;
Please see https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Utilize_Multi-Factor_Authentication&lt;br /&gt;
&lt;br /&gt;
=== Password Complexity ===&lt;br /&gt;
&lt;br /&gt;
For more information on password complexity, please see [https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls].&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Access Control =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Access_Control_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Input Data Validation =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Output_Encoding&lt;br /&gt;
&lt;br /&gt;
= Secure Transmission / Network Layer security =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Benefits&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#File_Uploads&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
&lt;br /&gt;
Typical types of errors:&lt;br /&gt;
• The result of business logic conditions not being met.&lt;br /&gt;
• The result of the environment wherein the business logic resides fails.&lt;br /&gt;
• The result of upstream or downstream systems upon which the application depends fail.&lt;br /&gt;
• Technical hardware / physical failure.&lt;br /&gt;
&lt;br /&gt;
To address these errors:&lt;br /&gt;
&lt;br /&gt;
* Ensure that all method/function calls that return a value have proper error handling and return value checking&lt;br /&gt;
* Ensure that exceptions and error conditions are properly handled&lt;br /&gt;
* Ensure that no system errors can be returned to the user&lt;br /&gt;
* Ensure that the application fails in a secure manner&lt;br /&gt;
* Ensure resources are released if an error occurs&lt;br /&gt;
* Ensure that stack trace is not thrown to the user&lt;br /&gt;
* If the language in question has a finally method, use it. The finally method is always called. The finally method can be used to release resources referenced by the method that threw the exception. &lt;br /&gt;
This is very important. An example would be if a method gained a database connection from a pool of connections, &lt;br /&gt;
and an exception occurred without finally, the connection object shall not be returned to the pool for some time (until the timeout). &lt;br /&gt;
This can lead to pool exhaustion. The method finally() is called even if no exception is thrown.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Logging and Auditing =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Logging_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Cryptography =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cookie Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Cookies&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
* Secure access to with authentication and authorisation to configuration files, directories, and resources on the host so that direct access to such artifacts is disallowed&lt;br /&gt;
* Use a “deny all” rule to deny access to resources on the hosts and then grant access on need basis&lt;br /&gt;
* In Apache HTTP server, ensure directories like WEB-INF and META-INF are protected. If permissions for a directory and subdirectories are specified in .htaccess file, ensure that it is protected using the “deny all” rule&lt;br /&gt;
* While using Struts framework, ensure that JSP files are not accessible directly by denying access to *.jsp files in web.xml&lt;br /&gt;
* Maintain a clean environment. remove files that contain source code but are not used by the application. &lt;br /&gt;
* Ensure production environment does not contain any source code / development tools and that the production &lt;br /&gt;
* Ensure environment contains only compiled code / executables. &lt;br /&gt;
* Remove test code / debug code (that might contain backdoors). &lt;br /&gt;
* Remove commented code and meta tags as they might contain sensitive data.&lt;br /&gt;
* If applicable, obfuscate your code to ensure that reverse engineering is avoided&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Unvalidated Redirects and Forwards Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Common Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SQL Injection ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Scripting ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Request Forgery ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Preventing Malicious Site Framing (ClickJacking) ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Defending_with_X-Frame-Options_Response_Headers&lt;br /&gt;
&lt;br /&gt;
== Security Misconfigurations ==&lt;br /&gt;
&lt;br /&gt;
* Diable all the services, ports, protocols and daemons that are not required.&lt;br /&gt;
* Change all the default and vendor supplied passwords&lt;br /&gt;
* Protect servers by grouping all similar functions into a VLAN&lt;br /&gt;
* White wash error messages such that no internal workings are revealed&lt;br /&gt;
* Prevent stack traces from leaving the container.&lt;br /&gt;
* Authorising access to the least amount of data/ least number of pages that is possible&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object references ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Directory Listing ==&lt;br /&gt;
&lt;br /&gt;
* Do not enable Directory Listing on your server&lt;br /&gt;
&lt;br /&gt;
== Concurrancy and Race Conditions ==&lt;br /&gt;
&lt;br /&gt;
* Use a locking mechanism to lock shared resources&lt;br /&gt;
* Obtain a lock on shared resources before it is read&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Input_Validation_Cheat_Sheet&amp;diff=206089</id>
		<title>Input Validation Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Input_Validation_Cheat_Sheet&amp;diff=206089"/>
				<updated>2016-01-08T15:32:20Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: &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 article is focused on providing clear, simple, actionable guidance for providing Input Validation security functionality in your applications. &lt;br /&gt;
&lt;br /&gt;
== Goal of Input Validation ==&lt;br /&gt;
Input validation is performed to minimize malformed data from entering the system. Input Validation is NOT the primary method of preventing XSS, SQL Injection. These are covered in output encoding and related cheat sheets.&lt;br /&gt;
&lt;br /&gt;
== Goal of Output Encoding ==&lt;br /&gt;
Output encoding is to ensure that data is sanitised before being displayed to the user  &lt;br /&gt;
&lt;br /&gt;
== Goal of securing file uploads ==&lt;br /&gt;
Files uploaded to servers are secured to ensure that malware / auto-executables / OS configuration changing files etc are not uploaded to servers that can impact the confidentiality, integrity and availability of the data stored on the server or other servers.&lt;br /&gt;
&lt;br /&gt;
== White List Input Validation ==&lt;br /&gt;
&lt;br /&gt;
It is always recommended to prevent attacks as early as possible in the processing of the user’s (attacker's) request. Input validation can be used to detect unauthorized input before it is processed by the application. Developers frequently perform black list validation in order to try to detect attack characters and patterns like the ' character, the string 1=1, or the &amp;amp;lt;script&amp;amp;gt; tag, but this is a massively flawed approach as it is typically trivial for an attacker to avoid getting caught by such filters. Plus, such filters frequently prevent authorized input, like O'Brian, when the ' character is being filtered out.&lt;br /&gt;
&lt;br /&gt;
White list validation is appropriate for all input fields provided by the user. White list validation involves defining exactly what IS authorized, and by definition, everything else is not authorized. If it's well structured data, like dates, social security numbers, zip codes, e-mail addresses, etc. then the developer should be able to define a very strong validation pattern, usually based on regular expressions, for validating such input. If the input field comes from a fixed set of options, like a drop down list or radio buttons, then the input needs to match exactly one of the values offered to the user in the first place. The most difficult fields to validate are so called 'free text' fields, like blog entries. However, even those types of fields can be validated to some degree, you can at least exclude all non-printable characters, and define a maximum size for the input field.&lt;br /&gt;
&lt;br /&gt;
Developing regular expressions can be complicated, and is well beyond the scope of this cheat sheet. There are lots of resources on the internet about how to write regular expressions, including: [http://www.regular-expressions.info/ http://www.regular-expressions.info/] and the [[OWASP Validation Regex Repository]]. The following provides a few examples of ‘white list’ style regular expressions:&lt;br /&gt;
&lt;br /&gt;
== White List Regular Expression Examples ==&lt;br /&gt;
&lt;br /&gt;
Validating a Zip Code (5 digits plus optional -4) &lt;br /&gt;
 ^\d{5}(-\d{4})?$&lt;br /&gt;
&lt;br /&gt;
Validating U.S. State Selection From a Drop-Down Menu&lt;br /&gt;
 ^(AA|AE|AP|AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|&lt;br /&gt;
 HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE| &lt;br /&gt;
 NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|&lt;br /&gt;
 TX|UT|VT|VI|VA|WA|WV|WI|WY)$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Java Regex Usage Example'''&lt;br /&gt;
&lt;br /&gt;
  Example validating the parameter “zip” using a regular expression.&lt;br /&gt;
  &lt;br /&gt;
  private static final Pattern zipPattern = Pattern.compile(&amp;quot;^\d{5}(-\d{4})?$&amp;quot;);&lt;br /&gt;
  public void doPost( HttpServletRequest request, HttpServletResponse response) {&lt;br /&gt;
  	try {&lt;br /&gt;
  		String zipCode = request.getParameter( &amp;quot;zip&amp;quot; );&lt;br /&gt;
  		if ( !zipPattern.matcher( zipCode ).matches()  {&lt;br /&gt;
  			throw new YourValidationException( &amp;quot;Improper zipcode format.&amp;quot; );&lt;br /&gt;
  		}&lt;br /&gt;
  		.. do what you want here, after its been validated ..&lt;br /&gt;
  	} catch(YourValidationException e ) {&lt;br /&gt;
  		response.sendError( response.SC_BAD_REQUEST, e.getMessage() );&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Some white list validators have also been predefined in various open source packages that you can leverage. For example:&lt;br /&gt;
* [http://jakarta.apache.org/commons/validator Apache Commons Validator]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Input Validation Must Be:&lt;br /&gt;
* Applied to all user controlled data&lt;br /&gt;
* Define the types of characters that can be accepted (often U+0020 to U+007E, though most special characters could be removed and control characters are almost never needed)&lt;br /&gt;
* Defines a minimum and maximum length for the data (e.g. {1,25} ) &lt;br /&gt;
== Client Side vs Server Side Validation ==&lt;br /&gt;
Be aware that any JavaScript input validation performed on the client can be bypassed by an attacker that disables JavaScript or uses a Web Proxy. Ensure that any input validation performed on the client is also performed on the server.&lt;br /&gt;
== Positive Approach ==&lt;br /&gt;
The variations of attacks are enormous. Use regular expressions to define what is good and then deny the input if anything else is received. In other words, we want to use the approach &amp;quot;Accept Known Good&amp;quot; instead of &amp;quot;Reject Known Bad&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Example A field accepts a username. A good regex would be to verify &lt;br /&gt;
 that the data consists of the following [0-9a-zA-Z]{3,10}. The data &lt;br /&gt;
 is rejected if it doesn't match.  &lt;br /&gt;
&lt;br /&gt;
 A bad approach would be to build a list of malicious strings and then &lt;br /&gt;
 just verify that the username does not contain the bad string. This &lt;br /&gt;
 approach begs the question, did you think of all possible bad strings?&lt;br /&gt;
&lt;br /&gt;
== Robust Use of Input Validation ==&lt;br /&gt;
All data received from the user should be treated as malicious and verified before using within the application. This includes the following&lt;br /&gt;
* Form data&lt;br /&gt;
* URL parameters&lt;br /&gt;
* Hidden fields&lt;br /&gt;
* Cookie data&lt;br /&gt;
* HTTP Headers&lt;br /&gt;
* Essentially anything in the HTTP request &lt;br /&gt;
&lt;br /&gt;
== Input Validation ==&lt;br /&gt;
Data recieved from the user should be validated for the following factors as well:&lt;br /&gt;
&lt;br /&gt;
1. Boundary conditions (Out of range values)&lt;br /&gt;
&lt;br /&gt;
2. Length of the data inputed (for example, if the input control can accept only 8 character, the same should be validated while accepting the data. The input chars should not exceed 8 characters).&lt;br /&gt;
&lt;br /&gt;
== Validating Rich User Content ==&lt;br /&gt;
It is very difficult to validate rich content submitted by a user. Consider more formal approaches such as [http://htmlpurifier.org/ HTML Purifier (PHP)],  [http://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project AntiSamy] or [http://github.com/jsocol/bleach/ bleach (Python)]&lt;br /&gt;
&lt;br /&gt;
== Preventing XSS and Content Security Policy ==&lt;br /&gt;
* All user data controlled must be encoded when returned in the html page to prevent the execution of malicious data (e.g. XSS). For example &amp;amp;lt;script&amp;amp;gt; would be returned as &amp;amp;amp;lt;script&amp;amp;amp;gt;&lt;br /&gt;
* The type of encoding is specific to the context of the page where the user controlled data is inserted. For example, HTML entity encoding is appropriate for data placed into the HTML body. However, user data placed into a script would need JavaScript specific output encoding &lt;br /&gt;
&lt;br /&gt;
Detailed information on XSS prevention here: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet OWASP XSS Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
== Preventing SQL Injection ==&lt;br /&gt;
* It's not realistic to always know if a piece of data is user controlled, therefore parameterized queries should be used whenever a method/function accepts data and uses this data as part of the SQL statement. &lt;br /&gt;
* String concatenation to build any part of a SQL statement with user controlled data creates a SQL injection vulnerability.&lt;br /&gt;
* Parameterized queries are a guaranteed approach to prevent SQL injection.&lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Injection Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
== Preventing OS Injection ==&lt;br /&gt;
* Avoid sending user controlled data to the OS as much as possible&lt;br /&gt;
* Ensure that a robust escaping routine is in place to prevent the user from adding additional characters that can be executed by the OS ( e.g. user appends | to the malicious data and then executes another OS command). Remember to use a positive approach when constructing escaping routinges. Example &lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/Reviewing_Code_for_OS_Injection Reviewing Code for OS Injection]&lt;br /&gt;
&lt;br /&gt;
== Preventing XML Injection ==&lt;br /&gt;
* In addition to the existing input validation, define a positive approach which escapes/encodes characters that can be interpreted as xml. At a minimum this includes the following: &amp;lt; &amp;gt; &amp;quot; ' &amp;amp; &lt;br /&gt;
* If accepting raw XML then more robust validation is necessary. This can be complex. Please contact the infrastructure security team for additional discussion&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use input validation to ensure the uploaded filename uses an expected extension type &lt;br /&gt;
*Ensure the uploaded file is not larger than a defined maximum file size&lt;br /&gt;
&lt;br /&gt;
==Upload Storage==&lt;br /&gt;
*Use a new filename to store the file on the OS. Do not use any user controlled text for this filename or for the temporary filename. &lt;br /&gt;
*Store all user uploaded files on a separate domain (e.g. mozillafiles.net vs mozilla.org). Archives should be analyzed for malicious content (anti-malware, static analysis, etc)&lt;br /&gt;
&lt;br /&gt;
==Public Serving of Uploaded Content==&lt;br /&gt;
*Ensure the image is served with the correct content-type (e.g. image/jpeg, application/x-xpinstall)&lt;br /&gt;
&lt;br /&gt;
==Beware of &amp;quot;special&amp;quot; files==&lt;br /&gt;
* The upload feature should be using a whitelist approach to only allow specific file types and extensions. However, it is important to be aware of the following file types that, if allowed, could result in security vulnerabilities.&lt;br /&gt;
*&amp;quot;crossdomain.xml&amp;quot; allows cross-domain data loading in Flash, Java and Silverlight.  If permitted on sites with authentication this can permit cross-domain data theft and CSRF attacks.  Note this can get pretty complicated depending on the specific plugin version in question, so its best to just prohibit files named &amp;quot;crossdomain.xml&amp;quot; or &amp;quot;clientaccesspolicy.xml&amp;quot;.&lt;br /&gt;
*&amp;quot;.htaccess&amp;quot; and &amp;quot;.htpasswd&amp;quot; provides server configuration options on a per-directory basis, and should not be permitted.  See http://en.wikipedia.org/wiki/Htaccess&lt;br /&gt;
&lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use image rewriting libraries to verify the image is valid and to strip away extraneous content. &lt;br /&gt;
*Set the extension of the stored image to be a valid image extension based on the detected content type of the image from image processing (e.g. do not just trust the header from the upload). &lt;br /&gt;
*Ensure the detected content type of the image is within a list of defined image types (jpg, png, etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Dave Wichers - dave.wichers [at] aspectsecurity.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>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206088</id>
		<title>Secure Coding Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206088"/>
				<updated>2016-01-08T15:27:05Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Output Encoding */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
The goal of this document is to create high level guideline for secure coding practices. The goal is to keep the overall size of the document condensed and easy to digest.  Individuals seeking addition information on the specific areas should refer to the included links to learn more.&lt;br /&gt;
&lt;br /&gt;
= How To Use This Document =&lt;br /&gt;
The information listed below are generally acceptable secure coding practices; however, it is recommend that organizations consider this a base template and update individual sections with secure coding recommendations specific to the organization's policies and risk tolerance. &lt;br /&gt;
&lt;br /&gt;
= Secure Coding Policy =&lt;br /&gt;
Always maintain a secure coding policy. List down the activities that are related to maintenance of secure coding standards (would these standards be technology specific or technology agnostic), feedback of code review output to training, input data validation, output data validation etc&lt;br /&gt;
&lt;br /&gt;
Why should you be having a secure coding policy? It helps in maintaining consistency across organisation and helps in vertical and horizontal scaling of usage of standards for web development projects. &lt;br /&gt;
&lt;br /&gt;
= Authentication=&lt;br /&gt;
&lt;br /&gt;
== User Authentication ==&lt;br /&gt;
Please see https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Utilize_Multi-Factor_Authentication&lt;br /&gt;
&lt;br /&gt;
=== Password Complexity ===&lt;br /&gt;
&lt;br /&gt;
For more information on password complexity, please see [https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls].&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Access Control =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Access_Control_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Input Data Validation =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#Output_Encoding&lt;br /&gt;
&lt;br /&gt;
= Secure Transmission / Network Layer security =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Benefits&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
&lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use input validation to ensure the uploaded filename uses an expected extension type &lt;br /&gt;
*Ensure the uploaded file is not larger than a defined maximum file size&lt;br /&gt;
&lt;br /&gt;
==Upload Storage==&lt;br /&gt;
*Use a new filename to store the file on the OS. Do not use any user controlled text for this filename or for the temporary filename. &lt;br /&gt;
*Store all user uploaded files on a separate domain (e.g. mozillafiles.net vs mozilla.org). Archives should be analyzed for malicious content (anti-malware, static analysis, etc)&lt;br /&gt;
&lt;br /&gt;
==Public Serving of Uploaded Content==&lt;br /&gt;
*Ensure the image is served with the correct content-type (e.g. image/jpeg, application/x-xpinstall)&lt;br /&gt;
&lt;br /&gt;
==Beware of &amp;quot;special&amp;quot; files==&lt;br /&gt;
* The upload feature should be using a whitelist approach to only allow specific file types and extensions. However, it is important to be aware of the following file types that, if allowed, could result in security vulnerabilities.&lt;br /&gt;
*&amp;quot;crossdomain.xml&amp;quot; allows cross-domain data loading in Flash, Java and Silverlight.  If permitted on sites with authentication this can permit cross-domain data theft and CSRF attacks.  Note this can get pretty complicated depending on the specific plugin version in question, so its best to just prohibit files named &amp;quot;crossdomain.xml&amp;quot; or &amp;quot;clientaccesspolicy.xml&amp;quot;.&lt;br /&gt;
*&amp;quot;.htaccess&amp;quot; and &amp;quot;.htpasswd&amp;quot; provides server configuration options on a per-directory basis, and should not be permitted.  See http://en.wikipedia.org/wiki/Htaccess&lt;br /&gt;
&lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use image rewriting libraries to verify the image is valid and to strip away extraneous content. &lt;br /&gt;
*Set the extension of the stored image to be a valid image extension based on the detected content type of the image from image processing (e.g. do not just trust the header from the upload). &lt;br /&gt;
*Ensure the detected content type of the image is within a list of defined image types (jpg, png, etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
&lt;br /&gt;
Typical types of errors:&lt;br /&gt;
• The result of business logic conditions not being met.&lt;br /&gt;
• The result of the environment wherein the business logic resides fails.&lt;br /&gt;
• The result of upstream or downstream systems upon which the application depends fail.&lt;br /&gt;
• Technical hardware / physical failure.&lt;br /&gt;
&lt;br /&gt;
To address these errors:&lt;br /&gt;
&lt;br /&gt;
* Ensure that all method/function calls that return a value have proper error handling and return value checking&lt;br /&gt;
* Ensure that exceptions and error conditions are properly handled&lt;br /&gt;
* Ensure that no system errors can be returned to the user&lt;br /&gt;
* Ensure that the application fails in a secure manner&lt;br /&gt;
* Ensure resources are released if an error occurs&lt;br /&gt;
* Ensure that stack trace is not thrown to the user&lt;br /&gt;
* If the language in question has a finally method, use it. The finally method is always called. The finally method can be used to release resources referenced by the method that threw the exception. &lt;br /&gt;
This is very important. An example would be if a method gained a database connection from a pool of connections, &lt;br /&gt;
and an exception occurred without finally, the connection object shall not be returned to the pool for some time (until the timeout). &lt;br /&gt;
This can lead to pool exhaustion. The method finally() is called even if no exception is thrown.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Logging and Auditing =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Logging_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Cryptography =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cookie Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Cookies&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
* Secure access to with authentication and authorisation to configuration files, directories, and resources on the host so that direct access to such artifacts is disallowed&lt;br /&gt;
* Use a “deny all” rule to deny access to resources on the hosts and then grant access on need basis&lt;br /&gt;
* In Apache HTTP server, ensure directories like WEB-INF and META-INF are protected. If permissions for a directory and subdirectories are specified in .htaccess file, ensure that it is protected using the “deny all” rule&lt;br /&gt;
* While using Struts framework, ensure that JSP files are not accessible directly by denying access to *.jsp files in web.xml&lt;br /&gt;
* Maintain a clean environment. remove files that contain source code but are not used by the application. &lt;br /&gt;
* Ensure production environment does not contain any source code / development tools and that the production &lt;br /&gt;
* Ensure environment contains only compiled code / executables. &lt;br /&gt;
* Remove test code / debug code (that might contain backdoors). &lt;br /&gt;
* Remove commented code and meta tags as they might contain sensitive data.&lt;br /&gt;
* If applicable, obfuscate your code to ensure that reverse engineering is avoided&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Unvalidated Redirects and Forwards Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Common Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SQL Injection ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Scripting ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Request Forgery ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Preventing Malicious Site Framing (ClickJacking) ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Defending_with_X-Frame-Options_Response_Headers&lt;br /&gt;
&lt;br /&gt;
== Security Misconfigurations ==&lt;br /&gt;
&lt;br /&gt;
* Diable all the services, ports, protocols and daemons that are not required.&lt;br /&gt;
* Change all the default and vendor supplied passwords&lt;br /&gt;
* Protect servers by grouping all similar functions into a VLAN&lt;br /&gt;
* White wash error messages such that no internal workings are revealed&lt;br /&gt;
* Prevent stack traces from leaving the container.&lt;br /&gt;
* Authorising access to the least amount of data/ least number of pages that is possible&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object references ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Directory Listing ==&lt;br /&gt;
&lt;br /&gt;
* Do not enable Directory Listing on your server&lt;br /&gt;
&lt;br /&gt;
== Concurrancy and Race Conditions ==&lt;br /&gt;
&lt;br /&gt;
* Use a locking mechanism to lock shared resources&lt;br /&gt;
* Obtain a lock on shared resources before it is read&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Input_Validation_Cheat_Sheet&amp;diff=206087</id>
		<title>Input Validation Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Input_Validation_Cheat_Sheet&amp;diff=206087"/>
				<updated>2016-01-08T15:26:43Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: &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 article is focused on providing clear, simple, actionable guidance for providing Input Validation security functionality in your applications. &lt;br /&gt;
&lt;br /&gt;
== Goal of Input Validation ==&lt;br /&gt;
Input validation is performed to minimize malformed data from entering the system. Input Validation is NOT the primary method of preventing XSS, SQL Injection. These are covered in output encoding and related cheat sheets.&lt;br /&gt;
&lt;br /&gt;
== Goal of Output Encoding ==&lt;br /&gt;
Output encoding is to ensure that data is sanitised before being displayed to the user  &lt;br /&gt;
&lt;br /&gt;
== White List Input Validation ==&lt;br /&gt;
&lt;br /&gt;
It is always recommended to prevent attacks as early as possible in the processing of the user’s (attacker's) request. Input validation can be used to detect unauthorized input before it is processed by the application. Developers frequently perform black list validation in order to try to detect attack characters and patterns like the ' character, the string 1=1, or the &amp;amp;lt;script&amp;amp;gt; tag, but this is a massively flawed approach as it is typically trivial for an attacker to avoid getting caught by such filters. Plus, such filters frequently prevent authorized input, like O'Brian, when the ' character is being filtered out.&lt;br /&gt;
&lt;br /&gt;
White list validation is appropriate for all input fields provided by the user. White list validation involves defining exactly what IS authorized, and by definition, everything else is not authorized. If it's well structured data, like dates, social security numbers, zip codes, e-mail addresses, etc. then the developer should be able to define a very strong validation pattern, usually based on regular expressions, for validating such input. If the input field comes from a fixed set of options, like a drop down list or radio buttons, then the input needs to match exactly one of the values offered to the user in the first place. The most difficult fields to validate are so called 'free text' fields, like blog entries. However, even those types of fields can be validated to some degree, you can at least exclude all non-printable characters, and define a maximum size for the input field.&lt;br /&gt;
&lt;br /&gt;
Developing regular expressions can be complicated, and is well beyond the scope of this cheat sheet. There are lots of resources on the internet about how to write regular expressions, including: [http://www.regular-expressions.info/ http://www.regular-expressions.info/] and the [[OWASP Validation Regex Repository]]. The following provides a few examples of ‘white list’ style regular expressions:&lt;br /&gt;
&lt;br /&gt;
== White List Regular Expression Examples ==&lt;br /&gt;
&lt;br /&gt;
Validating a Zip Code (5 digits plus optional -4) &lt;br /&gt;
 ^\d{5}(-\d{4})?$&lt;br /&gt;
&lt;br /&gt;
Validating U.S. State Selection From a Drop-Down Menu&lt;br /&gt;
 ^(AA|AE|AP|AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|&lt;br /&gt;
 HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE| &lt;br /&gt;
 NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|&lt;br /&gt;
 TX|UT|VT|VI|VA|WA|WV|WI|WY)$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Java Regex Usage Example'''&lt;br /&gt;
&lt;br /&gt;
  Example validating the parameter “zip” using a regular expression.&lt;br /&gt;
  &lt;br /&gt;
  private static final Pattern zipPattern = Pattern.compile(&amp;quot;^\d{5}(-\d{4})?$&amp;quot;);&lt;br /&gt;
  public void doPost( HttpServletRequest request, HttpServletResponse response) {&lt;br /&gt;
  	try {&lt;br /&gt;
  		String zipCode = request.getParameter( &amp;quot;zip&amp;quot; );&lt;br /&gt;
  		if ( !zipPattern.matcher( zipCode ).matches()  {&lt;br /&gt;
  			throw new YourValidationException( &amp;quot;Improper zipcode format.&amp;quot; );&lt;br /&gt;
  		}&lt;br /&gt;
  		.. do what you want here, after its been validated ..&lt;br /&gt;
  	} catch(YourValidationException e ) {&lt;br /&gt;
  		response.sendError( response.SC_BAD_REQUEST, e.getMessage() );&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Some white list validators have also been predefined in various open source packages that you can leverage. For example:&lt;br /&gt;
* [http://jakarta.apache.org/commons/validator Apache Commons Validator]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Input Validation Must Be:&lt;br /&gt;
* Applied to all user controlled data&lt;br /&gt;
* Define the types of characters that can be accepted (often U+0020 to U+007E, though most special characters could be removed and control characters are almost never needed)&lt;br /&gt;
* Defines a minimum and maximum length for the data (e.g. {1,25} ) &lt;br /&gt;
== Client Side vs Server Side Validation ==&lt;br /&gt;
Be aware that any JavaScript input validation performed on the client can be bypassed by an attacker that disables JavaScript or uses a Web Proxy. Ensure that any input validation performed on the client is also performed on the server.&lt;br /&gt;
== Positive Approach ==&lt;br /&gt;
The variations of attacks are enormous. Use regular expressions to define what is good and then deny the input if anything else is received. In other words, we want to use the approach &amp;quot;Accept Known Good&amp;quot; instead of &amp;quot;Reject Known Bad&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Example A field accepts a username. A good regex would be to verify &lt;br /&gt;
 that the data consists of the following [0-9a-zA-Z]{3,10}. The data &lt;br /&gt;
 is rejected if it doesn't match.  &lt;br /&gt;
&lt;br /&gt;
 A bad approach would be to build a list of malicious strings and then &lt;br /&gt;
 just verify that the username does not contain the bad string. This &lt;br /&gt;
 approach begs the question, did you think of all possible bad strings?&lt;br /&gt;
&lt;br /&gt;
== Robust Use of Input Validation ==&lt;br /&gt;
All data received from the user should be treated as malicious and verified before using within the application. This includes the following&lt;br /&gt;
* Form data&lt;br /&gt;
* URL parameters&lt;br /&gt;
* Hidden fields&lt;br /&gt;
* Cookie data&lt;br /&gt;
* HTTP Headers&lt;br /&gt;
* Essentially anything in the HTTP request &lt;br /&gt;
&lt;br /&gt;
== Input Validation ==&lt;br /&gt;
Data recieved from the user should be validated for the following factors as well:&lt;br /&gt;
&lt;br /&gt;
1. Boundary conditions (Out of range values)&lt;br /&gt;
&lt;br /&gt;
2. Length of the data inputed (for example, if the input control can accept only 8 character, the same should be validated while accepting the data. The input chars should not exceed 8 characters).&lt;br /&gt;
&lt;br /&gt;
== Validating Rich User Content ==&lt;br /&gt;
It is very difficult to validate rich content submitted by a user. Consider more formal approaches such as [http://htmlpurifier.org/ HTML Purifier (PHP)],  [http://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project AntiSamy] or [http://github.com/jsocol/bleach/ bleach (Python)]&lt;br /&gt;
&lt;br /&gt;
== Preventing XSS and Content Security Policy ==&lt;br /&gt;
* All user data controlled must be encoded when returned in the html page to prevent the execution of malicious data (e.g. XSS). For example &amp;amp;lt;script&amp;amp;gt; would be returned as &amp;amp;amp;lt;script&amp;amp;amp;gt;&lt;br /&gt;
* The type of encoding is specific to the context of the page where the user controlled data is inserted. For example, HTML entity encoding is appropriate for data placed into the HTML body. However, user data placed into a script would need JavaScript specific output encoding &lt;br /&gt;
&lt;br /&gt;
Detailed information on XSS prevention here: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet OWASP XSS Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
== Preventing SQL Injection ==&lt;br /&gt;
* It's not realistic to always know if a piece of data is user controlled, therefore parameterized queries should be used whenever a method/function accepts data and uses this data as part of the SQL statement. &lt;br /&gt;
* String concatenation to build any part of a SQL statement with user controlled data creates a SQL injection vulnerability.&lt;br /&gt;
* Parameterized queries are a guaranteed approach to prevent SQL injection.&lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Injection Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
== Preventing OS Injection ==&lt;br /&gt;
* Avoid sending user controlled data to the OS as much as possible&lt;br /&gt;
* Ensure that a robust escaping routine is in place to prevent the user from adding additional characters that can be executed by the OS ( e.g. user appends | to the malicious data and then executes another OS command). Remember to use a positive approach when constructing escaping routinges. Example &lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/Reviewing_Code_for_OS_Injection Reviewing Code for OS Injection]&lt;br /&gt;
&lt;br /&gt;
== Preventing XML Injection ==&lt;br /&gt;
* In addition to the existing input validation, define a positive approach which escapes/encodes characters that can be interpreted as xml. At a minimum this includes the following: &amp;lt; &amp;gt; &amp;quot; ' &amp;amp; &lt;br /&gt;
* If accepting raw XML then more robust validation is necessary. This can be complex. Please contact the infrastructure security team for additional discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Dave Wichers - dave.wichers [at] aspectsecurity.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>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206086</id>
		<title>Secure Coding Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206086"/>
				<updated>2016-01-08T15:11:56Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Cryptography */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
The goal of this document is to create high level guideline for secure coding practices. The goal is to keep the overall size of the document condensed and easy to digest.  Individuals seeking addition information on the specific areas should refer to the included links to learn more.&lt;br /&gt;
&lt;br /&gt;
= How To Use This Document =&lt;br /&gt;
The information listed below are generally acceptable secure coding practices; however, it is recommend that organizations consider this a base template and update individual sections with secure coding recommendations specific to the organization's policies and risk tolerance. &lt;br /&gt;
&lt;br /&gt;
= Secure Coding Policy =&lt;br /&gt;
Always maintain a secure coding policy. List down the activities that are related to maintenance of secure coding standards (would these standards be technology specific or technology agnostic), feedback of code review output to training, input data validation, output data validation etc&lt;br /&gt;
&lt;br /&gt;
Why should you be having a secure coding policy? It helps in maintaining consistency across organisation and helps in vertical and horizontal scaling of usage of standards for web development projects. &lt;br /&gt;
&lt;br /&gt;
= Authentication=&lt;br /&gt;
&lt;br /&gt;
== User Authentication ==&lt;br /&gt;
Please see https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Utilize_Multi-Factor_Authentication&lt;br /&gt;
&lt;br /&gt;
=== Password Complexity ===&lt;br /&gt;
&lt;br /&gt;
For more information on password complexity, please see [https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls].&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Access Control =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Access_Control_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Input Data Validation =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
== Preventing XSS and Content Security Policy ==&lt;br /&gt;
* All user data controlled must be encoded when returned in the html page to prevent the execution of malicious data (e.g. XSS). For example &amp;amp;lt;script&amp;amp;gt; would be returned as &amp;amp;amp;lt;script&amp;amp;amp;gt;&lt;br /&gt;
* The type of encoding is specific to the context of the page where the user controlled data is inserted. For example, HTML entity encoding is appropriate for data placed into the HTML body. However, user data placed into a script would need JavaScript specific output encoding &lt;br /&gt;
&lt;br /&gt;
Detailed information on XSS prevention here: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet OWASP XSS Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
== Preventing SQL Injection ==&lt;br /&gt;
* It's not realistic to always know if a piece of data is user controlled, therefore parameterized queries should be used whenever a method/function accepts data and uses this data as part of the SQL statement. &lt;br /&gt;
* String concatenation to build any part of a SQL statement with user controlled data creates a SQL injection vulnerability.&lt;br /&gt;
* Parameterized queries are a guaranteed approach to prevent SQL injection.&lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Injection Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
== Preventing OS Injection ==&lt;br /&gt;
* Avoid sending user controlled data to the OS as much as possible&lt;br /&gt;
* Ensure that a robust escaping routine is in place to prevent the user from adding additional characters that can be executed by the OS ( e.g. user appends | to the malicious data and then executes another OS command). Remember to use a positive approach when constructing escaping routinges. Example &lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/Reviewing_Code_for_OS_Injection Reviewing Code for OS Injection]&lt;br /&gt;
&lt;br /&gt;
== Preventing XML Injection ==&lt;br /&gt;
* In addition to the existing input validation, define a positive approach which escapes/encodes characters that can be interpreted as xml. At a minimum this includes the following: &amp;lt; &amp;gt; &amp;quot; ' &amp;amp; &lt;br /&gt;
* If accepting raw XML then more robust validation is necessary. This can be complex. Please contact the infrastructure security team for additional discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Secure Transmission / Network Layer security =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Benefits&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
&lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use input validation to ensure the uploaded filename uses an expected extension type &lt;br /&gt;
*Ensure the uploaded file is not larger than a defined maximum file size&lt;br /&gt;
&lt;br /&gt;
==Upload Storage==&lt;br /&gt;
*Use a new filename to store the file on the OS. Do not use any user controlled text for this filename or for the temporary filename. &lt;br /&gt;
*Store all user uploaded files on a separate domain (e.g. mozillafiles.net vs mozilla.org). Archives should be analyzed for malicious content (anti-malware, static analysis, etc)&lt;br /&gt;
&lt;br /&gt;
==Public Serving of Uploaded Content==&lt;br /&gt;
*Ensure the image is served with the correct content-type (e.g. image/jpeg, application/x-xpinstall)&lt;br /&gt;
&lt;br /&gt;
==Beware of &amp;quot;special&amp;quot; files==&lt;br /&gt;
* The upload feature should be using a whitelist approach to only allow specific file types and extensions. However, it is important to be aware of the following file types that, if allowed, could result in security vulnerabilities.&lt;br /&gt;
*&amp;quot;crossdomain.xml&amp;quot; allows cross-domain data loading in Flash, Java and Silverlight.  If permitted on sites with authentication this can permit cross-domain data theft and CSRF attacks.  Note this can get pretty complicated depending on the specific plugin version in question, so its best to just prohibit files named &amp;quot;crossdomain.xml&amp;quot; or &amp;quot;clientaccesspolicy.xml&amp;quot;.&lt;br /&gt;
*&amp;quot;.htaccess&amp;quot; and &amp;quot;.htpasswd&amp;quot; provides server configuration options on a per-directory basis, and should not be permitted.  See http://en.wikipedia.org/wiki/Htaccess&lt;br /&gt;
&lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use image rewriting libraries to verify the image is valid and to strip away extraneous content. &lt;br /&gt;
*Set the extension of the stored image to be a valid image extension based on the detected content type of the image from image processing (e.g. do not just trust the header from the upload). &lt;br /&gt;
*Ensure the detected content type of the image is within a list of defined image types (jpg, png, etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
&lt;br /&gt;
Typical types of errors:&lt;br /&gt;
• The result of business logic conditions not being met.&lt;br /&gt;
• The result of the environment wherein the business logic resides fails.&lt;br /&gt;
• The result of upstream or downstream systems upon which the application depends fail.&lt;br /&gt;
• Technical hardware / physical failure.&lt;br /&gt;
&lt;br /&gt;
To address these errors:&lt;br /&gt;
&lt;br /&gt;
* Ensure that all method/function calls that return a value have proper error handling and return value checking&lt;br /&gt;
* Ensure that exceptions and error conditions are properly handled&lt;br /&gt;
* Ensure that no system errors can be returned to the user&lt;br /&gt;
* Ensure that the application fails in a secure manner&lt;br /&gt;
* Ensure resources are released if an error occurs&lt;br /&gt;
* Ensure that stack trace is not thrown to the user&lt;br /&gt;
* If the language in question has a finally method, use it. The finally method is always called. The finally method can be used to release resources referenced by the method that threw the exception. &lt;br /&gt;
This is very important. An example would be if a method gained a database connection from a pool of connections, &lt;br /&gt;
and an exception occurred without finally, the connection object shall not be returned to the pool for some time (until the timeout). &lt;br /&gt;
This can lead to pool exhaustion. The method finally() is called even if no exception is thrown.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Logging and Auditing =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Logging_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Cryptography =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Cookie Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Cookies&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
* Secure access to with authentication and authorisation to configuration files, directories, and resources on the host so that direct access to such artifacts is disallowed&lt;br /&gt;
* Use a “deny all” rule to deny access to resources on the hosts and then grant access on need basis&lt;br /&gt;
* In Apache HTTP server, ensure directories like WEB-INF and META-INF are protected. If permissions for a directory and subdirectories are specified in .htaccess file, ensure that it is protected using the “deny all” rule&lt;br /&gt;
* While using Struts framework, ensure that JSP files are not accessible directly by denying access to *.jsp files in web.xml&lt;br /&gt;
* Maintain a clean environment. remove files that contain source code but are not used by the application. &lt;br /&gt;
* Ensure production environment does not contain any source code / development tools and that the production &lt;br /&gt;
* Ensure environment contains only compiled code / executables. &lt;br /&gt;
* Remove test code / debug code (that might contain backdoors). &lt;br /&gt;
* Remove commented code and meta tags as they might contain sensitive data.&lt;br /&gt;
* If applicable, obfuscate your code to ensure that reverse engineering is avoided&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Unvalidated Redirects and Forwards Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Common Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SQL Injection ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Scripting ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Request Forgery ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Preventing Malicious Site Framing (ClickJacking) ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Defending_with_X-Frame-Options_Response_Headers&lt;br /&gt;
&lt;br /&gt;
== Security Misconfigurations ==&lt;br /&gt;
&lt;br /&gt;
* Diable all the services, ports, protocols and daemons that are not required.&lt;br /&gt;
* Change all the default and vendor supplied passwords&lt;br /&gt;
* Protect servers by grouping all similar functions into a VLAN&lt;br /&gt;
* White wash error messages such that no internal workings are revealed&lt;br /&gt;
* Prevent stack traces from leaving the container.&lt;br /&gt;
* Authorising access to the least amount of data/ least number of pages that is possible&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object references ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Directory Listing ==&lt;br /&gt;
&lt;br /&gt;
* Do not enable Directory Listing on your server&lt;br /&gt;
&lt;br /&gt;
== Concurrancy and Race Conditions ==&lt;br /&gt;
&lt;br /&gt;
* Use a locking mechanism to lock shared resources&lt;br /&gt;
* Obtain a lock on shared resources before it is read&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cryptographic_Storage_Cheat_Sheet&amp;diff=206085</id>
		<title>Cryptographic Storage Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cryptographic_Storage_Cheat_Sheet&amp;diff=206085"/>
				<updated>2016-01-08T15:09:49Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Secure Cryptographic Storage Design */&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 article provides a simple model to follow when implementing solutions to protect data at rest.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Architectural Decision  ==&lt;br /&gt;
&lt;br /&gt;
An architectural decision must be made to determine the appropriate method to protect data at rest.  There are such wide varieties of products, methods and mechanisms for cryptographic storage. This cheat sheet will only focus on low-level guidelines for developers and architects who are implementing cryptographic solutions. We will not address specific vendor solutions, nor will we address the design of cryptographic algorithms.&lt;br /&gt;
&lt;br /&gt;
= Providing Cryptographic Functionality  =&lt;br /&gt;
&lt;br /&gt;
== Secure Cryptographic Storage Design  ==&lt;br /&gt;
&lt;br /&gt;
* All protocols and algorithms for authentication and secure communication should be well vetted by the cryptographic community.&lt;br /&gt;
&lt;br /&gt;
* Ensure certificates are properly validated against the hostnames/users ie whom they are meant for.&lt;br /&gt;
&lt;br /&gt;
* Avoid using wildcard certificates unless there is a business need for it &lt;br /&gt;
&lt;br /&gt;
* Maintain a cryptographic standard to ensure that the developer community knows about the approved ciphersuits for network security protocols, algorithms, permitted use, cryptoperiods and Key Management&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Rule - Only store sensitive data that you need ===&lt;br /&gt;
&lt;br /&gt;
Many eCommerce businesses utilize third party payment providers to store credit card information for recurring billing. This offloads the burden of keeping credit card numbers safe.&lt;br /&gt;
&lt;br /&gt;
=== Rule - Use strong approved Authenticated Encryption  ===&lt;br /&gt;
E.g. [http://en.wikipedia.org/wiki/CCM_mode CCM] or [http://en.wikipedia.org/wiki/GCM_mode GCM] are approved [http://en.wikipedia.org/wiki/Authenticated_encryption Authenticated Encryption] modes based on [http://en.wikipedia.org/wiki/Advanced_Encryption_Standard AES] algorithm.&lt;br /&gt;
&lt;br /&gt;
==== Rule - Use strong approved cryptographic algorithms ====&lt;br /&gt;
Do not implement an existing cryptographic algorithm on your own, no matter how easy it appears. Instead, use widely accepted algorithms and widely accepted implementations. &lt;br /&gt;
&lt;br /&gt;
Only use approved public algorithms such as AES, RSA public key cryptography, and SHA-256 or better for hashing. Do not use weak algorithms, such as MD5 or SHA1. Avoid hashing for password storage, instead use PBKDF2, bcrypt or scrypt. Note that the classification of a &amp;quot;strong&amp;quot; cryptographic algorithm can change over time. See [http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57_part1_rev3_general.pdf NIST approved algorithms] or ISO TR 14742 “Recommendations on Cryptographic Algorithms and their use” or [http://www.enisa.europa.eu/activities/identity-and-trust/library/deliverables/algorithms-key-size-and-parameters-report-2014/at_download/fullReport Algorithms, key size and parameters report – 2014] from European Union Agency for Network and Information Security. &lt;br /&gt;
E.g. [http://en.wikipedia.org/wiki/Advanced_Encryption_Standard AES] 128, [http://en.wikipedia.org/wiki/RSA_(cryptosystem) RSA] 3072, [http://en.wikipedia.org/wiki/Secure_Hash_Algorithm SHA] 256. &lt;br /&gt;
&lt;br /&gt;
Ensure that the implementation has (at minimum) had some cryptography experts involved in its creation. If possible, use an implementation that is FIPS 140-2 certified. &lt;br /&gt;
&lt;br /&gt;
See [http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57_part1_rev3_general.pdf NIST approved algorithms] Table 2 “Comparable strengths” for the strength (“security bits”) of different algorithms and key lengths, and how they compare to each other. &lt;br /&gt;
&lt;br /&gt;
* In general, where different algorithms are used, they should have comparable strengths e.g. if an AES-128 key is to be encrypted, an AES-128 key or greater, or RSA-3072 or greater could be used to encrypt it. &lt;br /&gt;
* In general, hash lengths are twice as long as the security bits offered by the symmetric/asymmetric algorithm&amp;amp;nbsp; e.g. SHA-224 for 3TDEA (112 security bits) (due to the [http://en.wikipedia.org/wiki/Birthday_attack Birthday Attack])&lt;br /&gt;
&lt;br /&gt;
If a password is being used to protect keys then the [http://en.wikipedia.org/wiki/Password_strength password strength]should be sufficient for the strength of the keys it is protecting.&lt;br /&gt;
&lt;br /&gt;
==== Rule - Use approved cryptographic modes  ====&lt;br /&gt;
In general, you should not use AES, DES or other symmetric cipher primitives directly. [http://csrc.nist.gov/groups/ST/toolkit/BCM/current_modes.html NIST approved modes] should be used instead. &lt;br /&gt;
&lt;br /&gt;
NOTE: Do not use [http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 ECB mode] for encrypting lots of data (the other modes are better because they chain the blocks of data together to improve the data security).&lt;br /&gt;
&lt;br /&gt;
==== Rule - Use strong random numbers  ====&lt;br /&gt;
Ensure that all random numbers, especially those used for cryptographic parameters (keys, IV’s, MAC tags), random file names, random GUIDs, and random strings are generated in a cryptographically strong fashion. &lt;br /&gt;
&lt;br /&gt;
Ensure that random algorithms are seeded with sufficient entropy.&lt;br /&gt;
&lt;br /&gt;
Tools like [http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html NIST RNG Test tool] (as used in PCI PTS Derived Test Requirements) can be used to comprehensively assess the quality of a Random Number Generator by reading e.g. 128MB of data from the RNG source and then assessing its randomness properties with the tool.&lt;br /&gt;
&lt;br /&gt;
==== Rule - Use Authenticated Encryption of data ====&lt;br /&gt;
Use ([http://en.wikipedia.org/wiki/Authenticated_encryption AE]) modes under a uniform API. Recommended modes include [http://en.wikipedia.org/wiki/CCM_mode CCM], and [http://en.wikipedia.org/wiki/Galois/Counter_Mode GCM] as these, and only these as of November 2014, are specified in [http://csrc.nist.gov/groups/ST/toolkit/BCM/current_modes.html NIST approved modes], ISO IEC 19772 (2009) &amp;quot;Information technology — Security techniques — Authenticated encryption&amp;quot;, and [http://en.wikipedia.org/wiki/IEEE_P1619 IEEE P1619 Standard for Cryptographic Protection of Data on Block-Oriented Storage Devices] &lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Authenticated_encryption Authenticated Encryption] gives [http://en.wikipedia.org/wiki/Confidentiality confidentiality],&amp;amp;nbsp;[http://en.wikipedia.org/wiki/Data_integrity integrity], and&amp;amp;nbsp;[http://en.wikipedia.org/wiki/Authentication authenticity] (CIA); encryption alone just gives confidentiality. Encryption must always be combined with message integrity and authenticity protection. Otherwise the ciphertext may be vulnerable to manipulation causing changes to the underlying plaintext data, especially if it's being passed over untrusted channels (e.g. in an URL or cookie). &lt;br /&gt;
* These modes require only one key. In general, the tag sizes and the IV sizes should be set to maximum values.&lt;br /&gt;
&lt;br /&gt;
If these recommended [http://en.wikipedia.org/wiki/Authenticated_encryption AE] modes are not available&lt;br /&gt;
&lt;br /&gt;
* combine encryption in [http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 cipher-block chaining (CBC) mode] with post-encryption message authentication code, such as [http://en.wikipedia.org/wiki/HMAC HMAC] or [http://en.wikipedia.org/wiki/CMAC CMAC] i.e. Encrypt-then-MAC. &lt;br /&gt;
** Note that Integrity and Authenticity are preferable to Integrity alone i.e. a MAC such as HMAC-SHA256 or HMAC-SHA512 is a better choice than SHA-256 or SHA-512.&lt;br /&gt;
* Use 2 independent keys for these 2 independent operations. &lt;br /&gt;
* Do not use [http://en.wikipedia.org/wiki/CBC-MAC#Security_with_fixed_and_variable-length_messages CBC MAC for variable length data] &lt;br /&gt;
* The [http://csrc.nist.gov/groups/STM/cavp/index.html CAVP program] is a good default place to go for validation of cryptographic algorithms when one does not have AES or one of the authenticated encryption modes that provide confidentiality and authenticity (i.e., data origin authentication) such as CCM, EAX, CMAC, etc. For Java, if you are using SunJCE that will be the case. The cipher modes supported in JDK 1.5 and later are CBC, CFB, CFBx, CTR, CTS, ECB, OFB, OFBx, PCBC. None of these cipher modes are authenticated encryption modes. (That's why it is added explicitly.) If you are using an alternate JCE provider such as Bouncy Castle, RSA JSafe, IAIK, etc., then these authenticated encryption modes should be used.&lt;br /&gt;
&lt;br /&gt;
Note: [http://en.wikipedia.org/wiki/Disk_encryption_theory Disk encryption]&amp;amp;nbsp;is a special case of&amp;amp;nbsp;[http://en.wikipedia.org/wiki/Data_at_Rest data at rest]&amp;amp;nbsp;e.g. Encrypted File System on a Hard Disk Drive. [http://csrc.nist.gov/publications/nistpubs/800-38E/nist-sp-800-38E.pdf XTS-AES mode] is optimized for Disk encryption and is one of the [http://csrc.nist.gov/groups/ST/toolkit/BCM/current_modes.html NIST approved modes]&amp;lt;nowiki&amp;gt;; it provides confidentiality and some protection against data manipulation (but not as strong as the &amp;lt;/nowiki&amp;gt;[http://en.wikipedia.org/wiki/Authenticated_encryption AE] [http://csrc.nist.gov/groups/ST/toolkit/BCM/current_modes.html NIST approved modes]). It is also specified in [http://en.wikipedia.org/wiki/IEEE_P1619 IEEE P1619 Standard for Cryptographic Protection of Data on Block-Oriented Storage Devices]&lt;br /&gt;
&lt;br /&gt;
=== Rule - Store a one-way and salted value of passwords ===&lt;br /&gt;
&lt;br /&gt;
Use PBKDF2, bcrypt or scrypt for password storage. For more information on password storage, please see the [[Password Storage Cheat Sheet]].&lt;br /&gt;
&lt;br /&gt;
=== Rule - Ensure that the cryptographic protection remains secure even if access controls fail ===&lt;br /&gt;
&lt;br /&gt;
This rule supports the principle of defense in depth. Access controls (usernames, passwords, privileges, etc.) are one layer of protection. Storage encryption should add an additional layer of protection that will continue protecting the data even if an attacker subverts the database access control layer.&lt;br /&gt;
&lt;br /&gt;
=== Rule - Ensure that any secret key is protected from unauthorized access ===&lt;br /&gt;
&lt;br /&gt;
==== Rule - Define a key lifecycle ====&lt;br /&gt;
&lt;br /&gt;
The key lifecycle details the various states that a key will move through during its life. The lifecycle will specify when a key should no longer be used for encryption, when a key should no longer be used for decryption (these are not necessarily coincident), whether data must be rekeyed when a new key is introduced, and when a key should be removed from use all together.&lt;br /&gt;
&lt;br /&gt;
==== Rule - Store unencrypted keys away from the encrypted data ====&lt;br /&gt;
&lt;br /&gt;
If the keys are stored with the data then any compromise of the data will easily compromise the keys as well. Unencrypted keys should never reside on the same machine or cluster as the data.&lt;br /&gt;
&lt;br /&gt;
==== Rule - Use independent keys when multiple keys are required ====&lt;br /&gt;
&lt;br /&gt;
Ensure that key material is independent. That is, do not choose a second key which is easily related to the first (or any preceeding) keys.&lt;br /&gt;
&lt;br /&gt;
==== Rule - Protect keys in a key vault ====&lt;br /&gt;
&lt;br /&gt;
Keys should remain in a protected key vault at all times. In particular, ensure that there is a gap between the threat vectors that have direct access to the data and the threat vectors that have direct access to the keys. This implies that keys should not be stored on the application or web server (assuming that application attackers are part of the relevant threat model).&lt;br /&gt;
&lt;br /&gt;
==== Rule - Document concrete procedures for managing keys through the lifecycle ====&lt;br /&gt;
&lt;br /&gt;
These procedures must be written down and the key custodians must be adequately trained.&lt;br /&gt;
&lt;br /&gt;
==== Rule - Build support for changing algorithms and keys when needed ====&lt;br /&gt;
&lt;br /&gt;
If keys are compromised or an external authority expires them, key changes will be needed.  Application polices or emergency needs will force application administrators to rotate keys and potentially rekey data at some point. It's best to be prepared to rapidly handle this need when necessary.  Including a key version and encryption algorithm version with the encrypted data is a useful, proactive feature.  For instance, including a simple prefix string, such as &amp;quot;&amp;lt;code&amp;gt;{1,1}...&amp;lt;/code&amp;gt;&amp;quot;, prior to the encrypted data could indicate algorithm version 1, key version 1.  This allows for an &amp;quot;online&amp;quot; change to the encryption algorithm and key without re-encrypting all existing data all at once.&lt;br /&gt;
&lt;br /&gt;
==== Rule - Document concrete procedures to handle a key compromise ====&lt;br /&gt;
&lt;br /&gt;
Ensure operations staff have the information they need, readily available, when rotation of encryption keys must be performed.  Rotating keys should not require changes to source code or other risky deployment measures, since doing this in the middle of an incident will already place a great deal of stress on these staff.&lt;br /&gt;
&lt;br /&gt;
==== Rule - Limit quantity of data encrypted with one key ====&lt;br /&gt;
&lt;br /&gt;
If the amount of data encrypted grows beyond a '''certain threshold''', a new key should be used.  This '''certain threshold''' varies depending on the encryption algorithm used, but is typically 2&amp;lt;sup&amp;gt;35&amp;lt;/sup&amp;gt; bytes (~34 gigabytes) for 64 bit block ciphers (DES, 3DES, Blowfish, RC5, ...) and 2&amp;lt;sup&amp;gt;68&amp;lt;/sup&amp;gt; bytes (~ 295,147,905 terabytes) for 128 bit block ciphers (AES, TwoFish, Serpent).  If encrypting with a modern cipher, this threshold is unlikely to be reached, but it should be considered when evaluating algorithms and rotation procedures.&lt;br /&gt;
&lt;br /&gt;
=== Rule - Follow applicable regulations on use of cryptography ===&lt;br /&gt;
&lt;br /&gt;
==== Rule - Under PCI DSS requirement 3, you must protect cardholder data  ====&lt;br /&gt;
&lt;br /&gt;
The Payment Card Industry (PCI) Data Security Standard (DSS) was developed to encourage and enhance cardholder data security and facilitate the broad adoption of consistent data security measures globally. The standard was introduced in 2005 and replaced individual compliance standards from Visa, Mastercard, Amex, JCB and Diners. The current version of the standard is 3.1 and was published in April, 2015. &lt;br /&gt;
&lt;br /&gt;
PCI DSS requirement 3 covers secure storage of credit card data. This requirement covers several aspects of secure storage including the data you must never store but we are covering Cryptographic Storage which is covered in requirements 3.4, 3.5 and 3.6 as you can see below: &lt;br /&gt;
&lt;br /&gt;
'''3.4 Render PAN (Primary Account Number), at minimum, unreadable anywhere it is stored''' &lt;br /&gt;
&lt;br /&gt;
Compliance with requirement 3.4 can be met by implementing any of the four types of secure storage described in the standard which includes encrypting and hashing data. These two approaches will often be the most popular choices from the list of options. The standard doesn't refer to any specific algorithms but it mandates the use of '''Strong Cryptography'''. The glossary document from the PCI council defines '''Strong Cryptography''' as: &lt;br /&gt;
&lt;br /&gt;
''Cryptography based on industry-tested and accepted algorithms, along with strong key lengths and proper key-management practices. Cryptography is a method to protect data and includes both encryption (which is reversible) and hashing (which is not reversible, or “one way”). SHA-1 is an example of an industry-tested and accepted hashing algorithm. Examples of industry-tested and accepted standards and algorithms for encryption include AES (128 bits and higher), TDES (minimum double-length keys), RSA (1024 bits and higher), ECC (160 bits and higher), and ElGamal (1024 bits and higher).'' &lt;br /&gt;
&lt;br /&gt;
If you have implemented the second rule in this cheat sheet you will have implemented a strong cryptographic algorithm which is compliant with or stronger than the requirements of PCI DSS requirement 3.4. You need to ensure that you identify all locations that card data could be stored including logs and apply the appropriate level of protection. This could range from encrypting the data to replacing the card number in logs. &lt;br /&gt;
&lt;br /&gt;
This requirement can also be met by implementing disk encryption rather than file or column level encryption. The requirements for '''Strong Cryptography''' are the same for disk encryption and backup media. The card data should never be stored in the clear and by following the guidance in this cheat sheet you will be able to securely store your data in a manner which is compliant with PCI DSS requirement 3.4 &lt;br /&gt;
&lt;br /&gt;
'''3.5  Protect any keys used to secure cardholder data against disclosure and misuse''' &lt;br /&gt;
&lt;br /&gt;
As the requirement name above indicates, we are required to securely store the encryption keys themselves. This will mean implementing strong access control, auditing and logging for your keys. The keys must be stored in a location which is both secure and &amp;quot;away&amp;quot; from the encrypted data. This means key data shouldn't be stored on web servers, database servers etc &lt;br /&gt;
&lt;br /&gt;
Access to the keys must be restricted to the smallest amount of users possible. This group of users will ideally be users who are highly trusted and trained to perform Key Custodian duties. There will obviously be a requirement for system/service accounts to access the key data to perform encryption/decryption of data. &lt;br /&gt;
&lt;br /&gt;
The keys themselves shouldn't be stored in the clear but encrypted with a KEK (Key Encrypting Key). The KEK must not be stored in the same location as the encryption keys it is encrypting. &lt;br /&gt;
&lt;br /&gt;
'''3.6 Fully document and implement all key-management processes and procedures for cryptographic keys used for encryption of cardholder data''' &lt;br /&gt;
&lt;br /&gt;
Requirement 3.6 mandates that key management processes within a PCI compliant company cover 8 specific key lifecycle steps: &lt;br /&gt;
&lt;br /&gt;
'''3.6.1 Generation of strong cryptographic keys''' &lt;br /&gt;
&lt;br /&gt;
As we have previously described in this cheat sheet we need to use algorithms which offer high levels of data security. We must also generate strong keys so that the security of the data isn't undermined by weak cryptographic keys. A strong key is generated by using a key length which is sufficient for your data security requirements and compliant with the PCI DSS. The key size alone isn't a measure of the strength of a key. The data used to generate the key must be sufficiently random (&amp;quot;sufficient&amp;quot; often being determined by your data security requirements) and the entropy of the key data itself must be high.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''3.6.2 Secure cryptographic key distribution''' &lt;br /&gt;
&lt;br /&gt;
The method used to distribute keys must be secure to prevent the theft of keys in transit. The use of a protocol such as Diffie Hellman can help secure the distribution of keys, the use of secure transport such as TLS and SSHv2 can also secure the keys in transit. Older protocols like SSLv3 should not be used.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''3.6.3 Secure cryptographic key storage'''&lt;br /&gt;
&lt;br /&gt;
The secure storage of encryption keys including KEK's has been touched on in our description of requirement 3.5 (see above).&lt;br /&gt;
&lt;br /&gt;
'''3.6.4 Periodic cryptographic key changes'''&lt;br /&gt;
&lt;br /&gt;
The PCI DSS standard mandates that keys used for encryption must be rotated at least annually. The key rotation process must remove an old key from the encryption/decryption process and replace it with a new key. All new data entering the system must encrypted with the new key. While it is recommended that existing data be rekeyed with the new key, as per the Rekey data at least every one to three years rule above, it is not clear that the PCI DSS requires this.&lt;br /&gt;
&lt;br /&gt;
'''3.6.5 Retirement or replacement of keys as deemed necessary when the integrity of the key has been weakened or keys are suspected of being compromised'''&lt;br /&gt;
&lt;br /&gt;
The key management processes must cater for archived, retired or compromised keys. The process of securely storing and replacing these keys will more than likely be covered by your processes for requirements 3.6.2, 3.6.3 and 3.6.4&lt;br /&gt;
&lt;br /&gt;
'''3.6.6 Split knowledge and establishment of dual control of cryptographic keys'''&lt;br /&gt;
&lt;br /&gt;
The requirement for split knowledge and/or dual control for key management prevents an individual user performing key management tasks such as key rotation or deletion. The system should require two individual users to perform an action (i.e. entering a value from their own OTP) which creates to separate values which are concatenated to create the final key data.&lt;br /&gt;
&lt;br /&gt;
'''3.6.7 Prevention of unauthorized substitution of cryptographic keys'''&lt;br /&gt;
&lt;br /&gt;
The system put in place to comply with requirement 3.6.6 can go a long way to preventing unauthorised substitution of key data. In addition to the dual control process you should implement strong access control, auditing and logging for key data so that unauthorised access attempts are prevented and logged.&lt;br /&gt;
&lt;br /&gt;
'''3.6.8 Requirement for cryptographic key custodians to sign a form stating that they understand and accept their key-custodian responsibilities '''&lt;br /&gt;
&lt;br /&gt;
To perform the strong key management functions we have seen in requirement 3.6 we must have highly trusted and trained key custodians who understand how to perform key management duties. The key custodians must also sign a form stating they understand the responsibilities that come with this role.&lt;br /&gt;
&lt;br /&gt;
= Related Articles  =&lt;br /&gt;
&lt;br /&gt;
OWASP - [[Testing for SSL-TLS (OWASP-CM-001)|Testing for SSL-TLS]], and OWASP [[Guide to Cryptography]] &lt;br /&gt;
&lt;br /&gt;
OWASP – [http://www.owasp.org/index.php/ASVS Application Security Verification Standard (ASVS) – Communication Security Verification Requirements (V10)]&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Kevin Kenan - kevin[at]k2dd.com&amp;lt;br/&amp;gt;&lt;br /&gt;
David Rook - david.a.rook[at]gmail.com&amp;lt;br/&amp;gt;&lt;br /&gt;
Kevin Wall - kevin.w.wall[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;
Fred Donovan - fred.donovan(at)owasp.org&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>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206083</id>
		<title>Secure Coding Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206083"/>
				<updated>2016-01-08T14:54:19Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Preventing Malicious Site Framing (ClickJacking) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
The goal of this document is to create high level guideline for secure coding practices. The goal is to keep the overall size of the document condensed and easy to digest.  Individuals seeking addition information on the specific areas should refer to the included links to learn more.&lt;br /&gt;
&lt;br /&gt;
= How To Use This Document =&lt;br /&gt;
The information listed below are generally acceptable secure coding practices; however, it is recommend that organizations consider this a base template and update individual sections with secure coding recommendations specific to the organization's policies and risk tolerance. &lt;br /&gt;
&lt;br /&gt;
= Secure Coding Policy =&lt;br /&gt;
Always maintain a secure coding policy. List down the activities that are related to maintenance of secure coding standards (would these standards be technology specific or technology agnostic), feedback of code review output to training, input data validation, output data validation etc&lt;br /&gt;
&lt;br /&gt;
Why should you be having a secure coding policy? It helps in maintaining consistency across organisation and helps in vertical and horizontal scaling of usage of standards for web development projects. &lt;br /&gt;
&lt;br /&gt;
= Authentication=&lt;br /&gt;
&lt;br /&gt;
== User Authentication ==&lt;br /&gt;
Please see https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Utilize_Multi-Factor_Authentication&lt;br /&gt;
&lt;br /&gt;
=== Password Complexity ===&lt;br /&gt;
&lt;br /&gt;
For more information on password complexity, please see [https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls].&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Access Control =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Access_Control_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Input Data Validation =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
== Preventing XSS and Content Security Policy ==&lt;br /&gt;
* All user data controlled must be encoded when returned in the html page to prevent the execution of malicious data (e.g. XSS). For example &amp;amp;lt;script&amp;amp;gt; would be returned as &amp;amp;amp;lt;script&amp;amp;amp;gt;&lt;br /&gt;
* The type of encoding is specific to the context of the page where the user controlled data is inserted. For example, HTML entity encoding is appropriate for data placed into the HTML body. However, user data placed into a script would need JavaScript specific output encoding &lt;br /&gt;
&lt;br /&gt;
Detailed information on XSS prevention here: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet OWASP XSS Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
== Preventing SQL Injection ==&lt;br /&gt;
* It's not realistic to always know if a piece of data is user controlled, therefore parameterized queries should be used whenever a method/function accepts data and uses this data as part of the SQL statement. &lt;br /&gt;
* String concatenation to build any part of a SQL statement with user controlled data creates a SQL injection vulnerability.&lt;br /&gt;
* Parameterized queries are a guaranteed approach to prevent SQL injection.&lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Injection Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
== Preventing OS Injection ==&lt;br /&gt;
* Avoid sending user controlled data to the OS as much as possible&lt;br /&gt;
* Ensure that a robust escaping routine is in place to prevent the user from adding additional characters that can be executed by the OS ( e.g. user appends | to the malicious data and then executes another OS command). Remember to use a positive approach when constructing escaping routinges. Example &lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/Reviewing_Code_for_OS_Injection Reviewing Code for OS Injection]&lt;br /&gt;
&lt;br /&gt;
== Preventing XML Injection ==&lt;br /&gt;
* In addition to the existing input validation, define a positive approach which escapes/encodes characters that can be interpreted as xml. At a minimum this includes the following: &amp;lt; &amp;gt; &amp;quot; ' &amp;amp; &lt;br /&gt;
* If accepting raw XML then more robust validation is necessary. This can be complex. Please contact the infrastructure security team for additional discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Secure Transmission / Network Layer security =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Benefits&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
&lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use input validation to ensure the uploaded filename uses an expected extension type &lt;br /&gt;
*Ensure the uploaded file is not larger than a defined maximum file size&lt;br /&gt;
&lt;br /&gt;
==Upload Storage==&lt;br /&gt;
*Use a new filename to store the file on the OS. Do not use any user controlled text for this filename or for the temporary filename. &lt;br /&gt;
*Store all user uploaded files on a separate domain (e.g. mozillafiles.net vs mozilla.org). Archives should be analyzed for malicious content (anti-malware, static analysis, etc)&lt;br /&gt;
&lt;br /&gt;
==Public Serving of Uploaded Content==&lt;br /&gt;
*Ensure the image is served with the correct content-type (e.g. image/jpeg, application/x-xpinstall)&lt;br /&gt;
&lt;br /&gt;
==Beware of &amp;quot;special&amp;quot; files==&lt;br /&gt;
* The upload feature should be using a whitelist approach to only allow specific file types and extensions. However, it is important to be aware of the following file types that, if allowed, could result in security vulnerabilities.&lt;br /&gt;
*&amp;quot;crossdomain.xml&amp;quot; allows cross-domain data loading in Flash, Java and Silverlight.  If permitted on sites with authentication this can permit cross-domain data theft and CSRF attacks.  Note this can get pretty complicated depending on the specific plugin version in question, so its best to just prohibit files named &amp;quot;crossdomain.xml&amp;quot; or &amp;quot;clientaccesspolicy.xml&amp;quot;.&lt;br /&gt;
*&amp;quot;.htaccess&amp;quot; and &amp;quot;.htpasswd&amp;quot; provides server configuration options on a per-directory basis, and should not be permitted.  See http://en.wikipedia.org/wiki/Htaccess&lt;br /&gt;
&lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use image rewriting libraries to verify the image is valid and to strip away extraneous content. &lt;br /&gt;
*Set the extension of the stored image to be a valid image extension based on the detected content type of the image from image processing (e.g. do not just trust the header from the upload). &lt;br /&gt;
*Ensure the detected content type of the image is within a list of defined image types (jpg, png, etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
&lt;br /&gt;
Typical types of errors:&lt;br /&gt;
• The result of business logic conditions not being met.&lt;br /&gt;
• The result of the environment wherein the business logic resides fails.&lt;br /&gt;
• The result of upstream or downstream systems upon which the application depends fail.&lt;br /&gt;
• Technical hardware / physical failure.&lt;br /&gt;
&lt;br /&gt;
To address these errors:&lt;br /&gt;
&lt;br /&gt;
* Ensure that all method/function calls that return a value have proper error handling and return value checking&lt;br /&gt;
* Ensure that exceptions and error conditions are properly handled&lt;br /&gt;
* Ensure that no system errors can be returned to the user&lt;br /&gt;
* Ensure that the application fails in a secure manner&lt;br /&gt;
* Ensure resources are released if an error occurs&lt;br /&gt;
* Ensure that stack trace is not thrown to the user&lt;br /&gt;
* If the language in question has a finally method, use it. The finally method is always called. The finally method can be used to release resources referenced by the method that threw the exception. &lt;br /&gt;
This is very important. An example would be if a method gained a database connection from a pool of connections, &lt;br /&gt;
and an exception occurred without finally, the connection object shall not be returned to the pool for some time (until the timeout). &lt;br /&gt;
This can lead to pool exhaustion. The method finally() is called even if no exception is thrown.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Logging and Auditing =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Logging_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Cryptography =&lt;br /&gt;
&lt;br /&gt;
* All protocols and algorithms for authentication and secure communication should be well vetted by the cryptographic community.&lt;br /&gt;
* Ensure certificates are properly validated against the hostnames/users ie whom they are meant for.&lt;br /&gt;
* Avoid using wildcard certificates unless there is a business need for it &lt;br /&gt;
* Maintain a cryptographic standard to ensure that the developer community knows about the approved ciphersuits for network security protocols, algorithms, permitted use, cryptoperiods and Key Management&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Cookie Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Cookies&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
* Secure access to with authentication and authorisation to configuration files, directories, and resources on the host so that direct access to such artifacts is disallowed&lt;br /&gt;
* Use a “deny all” rule to deny access to resources on the hosts and then grant access on need basis&lt;br /&gt;
* In Apache HTTP server, ensure directories like WEB-INF and META-INF are protected. If permissions for a directory and subdirectories are specified in .htaccess file, ensure that it is protected using the “deny all” rule&lt;br /&gt;
* While using Struts framework, ensure that JSP files are not accessible directly by denying access to *.jsp files in web.xml&lt;br /&gt;
* Maintain a clean environment. remove files that contain source code but are not used by the application. &lt;br /&gt;
* Ensure production environment does not contain any source code / development tools and that the production &lt;br /&gt;
* Ensure environment contains only compiled code / executables. &lt;br /&gt;
* Remove test code / debug code (that might contain backdoors). &lt;br /&gt;
* Remove commented code and meta tags as they might contain sensitive data.&lt;br /&gt;
* If applicable, obfuscate your code to ensure that reverse engineering is avoided&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Unvalidated Redirects and Forwards Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Common Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SQL Injection ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Scripting ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Request Forgery ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Preventing Malicious Site Framing (ClickJacking) ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Defending_with_X-Frame-Options_Response_Headers&lt;br /&gt;
&lt;br /&gt;
== Security Misconfigurations ==&lt;br /&gt;
&lt;br /&gt;
* Diable all the services, ports, protocols and daemons that are not required.&lt;br /&gt;
* Change all the default and vendor supplied passwords&lt;br /&gt;
* Protect servers by grouping all similar functions into a VLAN&lt;br /&gt;
* White wash error messages such that no internal workings are revealed&lt;br /&gt;
* Prevent stack traces from leaving the container.&lt;br /&gt;
* Authorising access to the least amount of data/ least number of pages that is possible&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object references ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Directory Listing ==&lt;br /&gt;
&lt;br /&gt;
* Do not enable Directory Listing on your server&lt;br /&gt;
&lt;br /&gt;
== Concurrancy and Race Conditions ==&lt;br /&gt;
&lt;br /&gt;
* Use a locking mechanism to lock shared resources&lt;br /&gt;
* Obtain a lock on shared resources before it is read&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Clickjacking_Defense_Cheat_Sheet&amp;diff=206082</id>
		<title>Clickjacking Defense Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Clickjacking_Defense_Cheat_Sheet&amp;diff=206082"/>
				<updated>2016-01-08T14:53:58Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Defending with X-Frame-Options Response Headers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
&amp;lt;br/&amp;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 cheat sheet is focused on providing developer guidance on [[Clickjacking|Clickjack/UI Redress]] attack prevention.&lt;br /&gt;
&lt;br /&gt;
The most popular way to defend against Clickjacking is to include some sort of &amp;quot;frame-breaking&amp;quot; functionality which prevents other web pages from framing the site you wish to defend. This cheat sheet will discuss two methods of implementing frame-breaking: first is X-Frame-Options headers (used if the browser supports the functionality); and second is javascript frame-breaking code.&lt;br /&gt;
&lt;br /&gt;
= Defending with Content Security Policy frame-ancestors directive =&lt;br /&gt;
The frame-ancestors directive can be used in a Content-Security-Policy HTTP response header to indicate whether or not a browser should be allowed to render a page in a &amp;amp;lt;frame&amp;amp;gt; or &amp;amp;lt;iframe&amp;amp;gt;. Sites can use this to avoid Clickjacking attacks, by ensuring that their content is not embedded into other sites.&lt;br /&gt;
&lt;br /&gt;
frame-ancestors allows a site to authorize multiple domains using the normal Content Security Policy symantics.&lt;br /&gt;
&lt;br /&gt;
See https://w3c.github.io/webappsec/specs/content-security-policy/#directive-frame-ancestors for further details&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
* '''Browser support:''' frame-ancestors is not supported by all the major browsers yet.&lt;br /&gt;
* '''X-Frame-Options takes priority:''' [https://w3c.github.io/webappsec/specs/content-security-policy/#frame-ancestors-and-frame-options Section 7.7.1 of the CSP Spec] says X-Frame-Options should be ignored if frame-ancestors is specified, but Chrome 40 &amp;amp; Firefox 35 ignore the frame-ancestors directive and follow the X-Frame-Options header instead.&lt;br /&gt;
&lt;br /&gt;
= Defending with X-Frame-Options Response Headers =&lt;br /&gt;
&lt;br /&gt;
The X-Frame-Options HTTP response header can be used to indicate whether or not a browser should be allowed to render a page in a &amp;amp;lt;frame&amp;amp;gt; or &amp;amp;lt;iframe&amp;amp;gt;. Sites can use this to avoid Clickjacking attacks, by ensuring that their content is not embedded into other sites.&lt;br /&gt;
&lt;br /&gt;
Set the x-frame-options header for all responses containing HTML content. The possible values are &amp;quot;DENY&amp;quot; or &amp;quot;SAMEORIGIN&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
    DENY will block any site (regardless of domain) from framing the content.&lt;br /&gt;
    SAMEORIGIN will block all sites from framing the content, except sites within the same domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== X-Frame-Options Header Types  ===&lt;br /&gt;
&lt;br /&gt;
There are three possible values for the X-Frame-Options header:&lt;br /&gt;
* &amp;lt;b&amp;gt;DENY&amp;lt;/b&amp;gt;, which prevents any domain from framing the content. The &amp;quot;DENY&amp;quot; setting is recommended unless a specific need has been identified for framing.&lt;br /&gt;
* &amp;lt;b&amp;gt;SAMEORIGIN&amp;lt;/b&amp;gt;, which only allows the current site to frame the content.&lt;br /&gt;
* &amp;lt;b&amp;gt;ALLOW-FROM uri&amp;lt;/b&amp;gt;, which permits the specified 'uri' to frame this page. (e.g., ALLOW-FROM http&amp;amp;#58;//www.example.com) '''Check Limitations Below''' this will fail open if the browser does not support it.&lt;br /&gt;
&lt;br /&gt;
=== Browser Support ===&lt;br /&gt;
&lt;br /&gt;
The following browsers support X-Frame-Options headers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Browser&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;DENY/SAMEORIGIN Support Introduced&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;ALLOW-FROM Support Introduced&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;Chrome&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[http://blog.chromium.org/2010/01/security-in-depth-new-security-features.html 4.1.249.1042]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[https://code.google.com/p/chromium/issues/detail?id=129139 Not supported/Bug reported]&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;Firefox (Gecko)&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options?redirectlocale=en-US&amp;amp;redirectslug=The_X-FRAME-OPTIONS_response_header 3.6.9 (1.9.2.9)]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[https://bugzilla.mozilla.org/show_bug.cgi?id=690168 18.0]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;Internet Explorer&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[http://blogs.msdn.com/b/ie/archive/2009/01/27/ie8-security-part-vii-clickjacking-defenses.aspx 8.0]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[http://erlend.oftedal.no/blog/tools/xframeoptions/ 9.0]&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;Opera&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[http://www.opera.com/docs/specs/presto26/#network 10.50]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;Safari&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[http://www.zdnet.com/blog/security/apple-safari-jumbo-patch-50-vulnerabilities-fixed/3541 4.0]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[https://bugs.webkit.org/show_bug.cgi?id=94836 Not supported/Bug reported]&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
References: &lt;br /&gt;
* [https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options Mozilla Developer Network]&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://datatracker.ietf.org/doc/draft-ietf-websec-x-frame-options/ IETF Draft]&lt;br /&gt;
* [http://erlend.oftedal.no/blog/tools/xframeoptions/ X-Frame-Options Compatibility Test] - Check this for the LATEST browser support info for the X-Frame-Options header&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
To implement this protection, you need to add the X-Frame-Options HTTP Response header to any page that you want to protect from being clickjacked via framebusting. One way to do this is to add the HTTP Response Header manually to every page.  A possibly simpler way is to implement a filter that automatically adds the header to every page.&lt;br /&gt;
&lt;br /&gt;
OWASP has an [[ClickjackFilter for Java EE|article and some code]] that provides all the details for implementing this in the Java EE environment.&lt;br /&gt;
&lt;br /&gt;
The SDL blog has posted an [http://blogs.msdn.com/sdl/archive/2009/02/05/clickjacking-defense-in-ie8.aspx article] covering how to implement this in a .NET environment.&lt;br /&gt;
&lt;br /&gt;
=== Common Defense Mistakes ===&lt;br /&gt;
Meta-tags that attempt to apply the X-Frame-Options directive DO NOT WORK. For example, &amp;lt;meta http-equiv=&amp;quot;X-Frame-Options&amp;quot; content=&amp;quot;deny&amp;quot;&amp;gt;) will not work. You must apply the X-FRAME-OPTIONS directive as HTTP Response Header as described above.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
&lt;br /&gt;
* '''Per-page policy specification''' The policy needs to be specified for every page, which can complicate deployment. Providing the ability to enforce it for the entire site, at login time for instance, could simplify adoption.&lt;br /&gt;
* '''Problems with multi-domain sites''' The current implementation does not allow the webmaster to provide a whitelist of domains that are allowed to frame the page. While whitelisting can be dangerous, in some cases a webmaster might have no choice but to use more than one hostname.&lt;br /&gt;
* '''ALLOW-FROM browser support''' The ALLOW-FROM option is a relatively recent addition (circa 2012) and may not be supported by all browsers yet.  BE CAREFUL ABOUT DEPENDING ON ALLOW-FROM. If you apply it and the browser does not support it, then you will have NO clickjacking defense in place.&lt;br /&gt;
* '''Multiple options not supported''' There is no way to allow the current site and a 3rd party site to frame the same response -- browsers only honour one X-Frame-Options header and only one value on that header.&lt;br /&gt;
* '''Nested Frames don't work with SAMEORIGIN and ALLOW-FROM''' In the following situation, the http://framed.invalid/child frame does not load because ALLOW-FROM applies to the top-level browsing context, not that of the immediate parent. The solution is to use ALLOW-FROM in both the parent and child frames (but this prevents the child frame loading if the //framed.invalid/parent page is loaded as the top level document).&lt;br /&gt;
 +-//friendlysite.invalid-----------------------+&lt;br /&gt;
 |                                              |&lt;br /&gt;
 | +-//framed.invalid/parent------------------+ |&lt;br /&gt;
 | |                                          | |&lt;br /&gt;
 | | ALLOW-FROM http://friendlysite.invalid | |&lt;br /&gt;
 | |                                          | |&lt;br /&gt;
 | | +-//framed.invalid/child--------+        | |&lt;br /&gt;
 | | |                               |        | |&lt;br /&gt;
 | | | SAMEORIGIN                    |        | |&lt;br /&gt;
 | | |                               |        | |&lt;br /&gt;
 | | +-------------------------------+        | |&lt;br /&gt;
 | +------------------------------------------+ |&lt;br /&gt;
 +----------------------------------------------+&lt;br /&gt;
* '''X-Frame-Options Deprecated''' While the X-Frame-Options header is supported by the major browsers, it was never standardized and has been deprecated in favour of the frame-ancestors directive from the CSP Level 2 specification.&lt;br /&gt;
* '''Proxies''' Web proxies are notorious for adding and stripping headers. If a web proxy strips the X-Frame-Options header then the site loses its framing protection.&lt;br /&gt;
&lt;br /&gt;
= Best-for-now Legacy Browser Frame Breaking Script =&lt;br /&gt;
&lt;br /&gt;
One way to defend against clickjacking is to include a &amp;quot;frame-breaker&amp;quot; script&lt;br /&gt;
in each page that should not be framed. The following methodology will prevent&lt;br /&gt;
a webpage from being framed even in legacy browsers, that do not support the&lt;br /&gt;
X-Frame-Options-Header.&lt;br /&gt;
&lt;br /&gt;
In the document HEAD element, add the following:&lt;br /&gt;
&lt;br /&gt;
First apply an ID to the style element itself:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;style id=&amp;amp;quot;antiClickjack&amp;amp;quot;&amp;amp;gt;body{display:none !important;}&amp;amp;lt;/style&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
And then delete that style by its ID immediately after in the script:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;script type=&amp;amp;quot;text/javascript&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
    if (self === top) {&lt;br /&gt;
        var antiClickjack = document.getElementById(&amp;amp;quot;antiClickjack&amp;amp;quot;);&lt;br /&gt;
        antiClickjack.parentNode.removeChild(antiClickjack);&lt;br /&gt;
    } else {&lt;br /&gt;
        top.location = self.location;&lt;br /&gt;
    }&lt;br /&gt;
 &amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
This way, everything can be in the document HEAD and you only need one method/taglib in your API.&lt;br /&gt;
&lt;br /&gt;
Reference: [https://www.codemagi.com/blog/post/194 https://www.codemagi.com/blog/post/194]&lt;br /&gt;
&lt;br /&gt;
= window.confirm() Protection =&lt;br /&gt;
The use of x-frame-options or a frame-breaking script is a more fail-safe method of clickjacking protection.  However, in scenarios where content must be frameable, then a window.confirm() can be used to help mitigate Clickjacking by informing the user of the action they are about to perform.&lt;br /&gt;
&lt;br /&gt;
Invoking window.confirm() will display a popup that cannot be framed.  If the window.confirm() originates from within an iframe with a different domain than the parent, then the dialog box will display what domain the window.confirm() originated from.  In this scenario the browser is displaying the origin of the dialog box to help mitigate Clickjacking attacks.  It should be noted that Internet Explorer is the only known browser that does not display the domain that the window.confirm() dialog box originated from,  to address this issue with Internet Explorer insure that the message within the dialog box contains contextual information about the type of action being performed.  For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;script type=&amp;amp;quot;text/javascript&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
    var action_confirm = window.confirm(&amp;quot;Are you sure you want to delete your youtube account?&amp;quot;)&lt;br /&gt;
    if (action_confirm) {&lt;br /&gt;
        //... perform action&lt;br /&gt;
    } else {&lt;br /&gt;
        //...  The user does not want to perform the requested action.&lt;br /&gt;
    }&lt;br /&gt;
 &amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Non-Working Scripts =&lt;br /&gt;
Consider the following snippet which is '''NOT recommended''' for defending&lt;br /&gt;
against clickjacking:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;script&amp;gt;if (top!=self) top.location.href=self.location.href&amp;lt;/script&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This simple frame breaking script attempts to prevent the page from being incorporated into a frame or iframe by forcing the parent window to load the current frame's URL. Unfortunately, multiple ways of defeating this type of script have been made public. We outline some here.&lt;br /&gt;
&lt;br /&gt;
== Double Framing ==&lt;br /&gt;
Some frame busting techniques navigate to the correct page by assigning a value to parent.location. This works well if the victim page is framed by a single page. However, if the attacker encloses the victim in one frame inside another (a double frame), then accessing parent.location becomes a security violation in all popular browsers, due to the '''descendant frame navigation policy'''. This security violation disables the counter-action navigation.&lt;br /&gt;
&lt;br /&gt;
'''Victim frame busting code:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(top.location!=self.locaton) {&lt;br /&gt;
  parent.location = self.location;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Attacker top frame:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;iframe src=&amp;quot;attacker2.html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Attacker sub-frame:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;iframe src=&amp;quot;http://www.victim.com&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The onBeforeUnload Event ==&lt;br /&gt;
A user can manually cancel any navigation request submitted by a framed page. To exploit this, the framing page registers an onBeforeUnload handler which is called whenever the framing page is about to be unloaded due to navigation. The handler function returns a string that becomes part of a prompt displayed to the user. Say the attacker wants to frame PayPal. He registers an unload handler function that returns the string &amp;quot;Do you want to exit PayPal?&amp;quot;. When this string is displayed to the user is likely to cancel the navigation, defeating PayPal's frame busting attempt.&lt;br /&gt;
&lt;br /&gt;
The attacker mounts this attack by registering an unload event on the top page using the&lt;br /&gt;
following code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
window.onbeforeunload = function()&lt;br /&gt;
{&lt;br /&gt;
  return &amp;quot;Asking the user nicely&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;iframe src=&amp;quot;http://www.paypal.com&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
PayPal's frame busting code will generate a BeforeUnload event activating our function and prompting the user to cancel the navigation event.&lt;br /&gt;
&lt;br /&gt;
== No-Content Flushing ==&lt;br /&gt;
While the previous attack requires user interaction, the same attack can be done without prompting the user. Most browsers (IE7, IE8, Google Chrome, and Firefox) enable an attacker to automatically cancel the incoming navigation request in an onBeforeUnload event handler by repeatedly submitting a navigation request to a site responding with \204 - No Content.&amp;quot; Navigating to a No Content site is effectively a NOP, but flushes the request pipeline, thus canceling the original navigation request. Here is sample code to do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var preventbust = 0&lt;br /&gt;
window.onbeforeunload = function() { killbust++ }&lt;br /&gt;
setInterval( function() {&lt;br /&gt;
  if(killbust &amp;gt; 0){&lt;br /&gt;
  killbust = 2;&lt;br /&gt;
  window.top.location = 'http://nocontent204.com'&lt;br /&gt;
  }&lt;br /&gt;
}, 1);&lt;br /&gt;
&amp;lt;iframe src=&amp;quot;http://www.victim.com&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exploiting XSS filters ==&lt;br /&gt;
IE8 and Google Chrome introduced reflective XSS filters that help protect web pages from certain types of XSS attacks. Nava and Lindsay (at Blackhat) observed that these filters can be used to circumvent frame busting code. The IE8 XSS filter compares given request parameters to a set of regular expressions in order to look for obvious attempts at cross-site scripting. Using &amp;quot;induced false positives&amp;quot;, the filter can be used to disable selected scripts. By matching the beginning of any script tag in the request parameters, the XSS filter will disable all inline scripts within the page, including frame busting scripts. External scripts can also be targeted by matching an external include, effectively disabling all external scripts. Since subsets of the JavaScript loaded is still functional (inline or external) and cookies are still available, this attack is effective for clickjacking.&lt;br /&gt;
&lt;br /&gt;
'''Victim frame busting code:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
if(top != self) {&lt;br /&gt;
  top.location = self.location;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Attacker:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;iframe src=&amp;quot;http://www.victim.com/?v=&amp;lt;script&amp;gt;if''&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The XSS filter will match that parameter &amp;quot;&amp;lt;script&amp;gt;if&amp;quot; to the beginning of the frame busting script on the victim and will consequently disable all inline scripts in the victim's page, including the frame busting script. The XSSAuditor filter available for Google Chrome enables the same exploit.&lt;br /&gt;
&lt;br /&gt;
== Clobbering top.location ==&lt;br /&gt;
Several modern browsers treat the location variable as a special immutable attribute across all contexts. However, this is not the case in IE7 and Safari 4.0.4 where the location variable can be redefined.&lt;br /&gt;
&lt;br /&gt;
'''IE7'''&lt;br /&gt;
Once the framing page redefines location, any frame busting code in a subframe that tries to read top.location will commit a security violation by trying to read a local variable in another domain. Similarly, any attempt to navigate by assigning top.location will fail.&lt;br /&gt;
&lt;br /&gt;
'''Victim frame busting code:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(top.location != self.location) {&lt;br /&gt;
  top.location = self.location;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Attacker:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt; var location = &amp;quot;clobbered&amp;quot;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;iframe src=&amp;quot;http://www.victim.com&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Safari 4.0.4'''&lt;br /&gt;
&lt;br /&gt;
We observed that although location is kept immutable in most circumstances, when a custom location setter is defined via defineSetter (through window) the object location becomes undefined. The framing page simply does:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  window.defineSetter(&amp;quot;location&amp;quot; , function(){});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now any attempt to read or navigate the top frame's location will fail.&lt;br /&gt;
&lt;br /&gt;
== Restricted zones ==&lt;br /&gt;
&lt;br /&gt;
Most frame busting relies on JavaScript in the framed page to detect framing and bust itself out. If JavaScript is disabled in the context of the subframe, the frame busting code will not run. There are unfortunately several ways of restricting JavaScript in a subframe:&lt;br /&gt;
&lt;br /&gt;
* '''In IE 8:''' &amp;lt;pre&amp;gt;&amp;lt;iframe src=&amp;quot;http://www.victim.com&amp;quot; security=&amp;quot;restricted&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* '''In Chrome:''' &amp;lt;pre&amp;gt;&amp;lt;iframe src=&amp;quot;http://www.victim.com&amp;quot; sandbox&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*''' In Firefox and IE:''' Activate designMode in parent page.&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>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Clickjacking_Defense_Cheat_Sheet&amp;diff=206080</id>
		<title>Clickjacking Defense Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Clickjacking_Defense_Cheat_Sheet&amp;diff=206080"/>
				<updated>2016-01-08T14:50:14Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Defending with Content Security Policy frame-ancestors directive */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
&amp;lt;br/&amp;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 cheat sheet is focused on providing developer guidance on [[Clickjacking|Clickjack/UI Redress]] attack prevention.&lt;br /&gt;
&lt;br /&gt;
The most popular way to defend against Clickjacking is to include some sort of &amp;quot;frame-breaking&amp;quot; functionality which prevents other web pages from framing the site you wish to defend. This cheat sheet will discuss two methods of implementing frame-breaking: first is X-Frame-Options headers (used if the browser supports the functionality); and second is javascript frame-breaking code.&lt;br /&gt;
&lt;br /&gt;
= Defending with Content Security Policy frame-ancestors directive =&lt;br /&gt;
The frame-ancestors directive can be used in a Content-Security-Policy HTTP response header to indicate whether or not a browser should be allowed to render a page in a &amp;amp;lt;frame&amp;amp;gt; or &amp;amp;lt;iframe&amp;amp;gt;. Sites can use this to avoid Clickjacking attacks, by ensuring that their content is not embedded into other sites.&lt;br /&gt;
&lt;br /&gt;
frame-ancestors allows a site to authorize multiple domains using the normal Content Security Policy symantics.&lt;br /&gt;
&lt;br /&gt;
See https://w3c.github.io/webappsec/specs/content-security-policy/#directive-frame-ancestors for further details&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
* '''Browser support:''' frame-ancestors is not supported by all the major browsers yet.&lt;br /&gt;
* '''X-Frame-Options takes priority:''' [https://w3c.github.io/webappsec/specs/content-security-policy/#frame-ancestors-and-frame-options Section 7.7.1 of the CSP Spec] says X-Frame-Options should be ignored if frame-ancestors is specified, but Chrome 40 &amp;amp; Firefox 35 ignore the frame-ancestors directive and follow the X-Frame-Options header instead.&lt;br /&gt;
&lt;br /&gt;
= Defending with X-Frame-Options Response Headers =&lt;br /&gt;
&lt;br /&gt;
The X-Frame-Options HTTP response header can be used to indicate whether or not a browser should be allowed to render a page in a &amp;amp;lt;frame&amp;amp;gt; or &amp;amp;lt;iframe&amp;amp;gt;. Sites can use this to avoid Clickjacking attacks, by ensuring that their content is not embedded into other sites.&lt;br /&gt;
&lt;br /&gt;
=== X-Frame-Options Header Types  ===&lt;br /&gt;
&lt;br /&gt;
There are three possible values for the X-Frame-Options header:&lt;br /&gt;
* &amp;lt;b&amp;gt;DENY&amp;lt;/b&amp;gt;, which prevents any domain from framing the content.&lt;br /&gt;
* &amp;lt;b&amp;gt;SAMEORIGIN&amp;lt;/b&amp;gt;, which only allows the current site to frame the content.&lt;br /&gt;
* &amp;lt;b&amp;gt;ALLOW-FROM uri&amp;lt;/b&amp;gt;, which permits the specified 'uri' to frame this page. (e.g., ALLOW-FROM http&amp;amp;#58;//www.example.com) '''Check Limitations Below''' this will fail open if the browser does not support it.&lt;br /&gt;
&lt;br /&gt;
=== Browser Support ===&lt;br /&gt;
&lt;br /&gt;
The following browsers support X-Frame-Options headers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Browser&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;DENY/SAMEORIGIN Support Introduced&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;ALLOW-FROM Support Introduced&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;Chrome&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[http://blog.chromium.org/2010/01/security-in-depth-new-security-features.html 4.1.249.1042]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[https://code.google.com/p/chromium/issues/detail?id=129139 Not supported/Bug reported]&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;Firefox (Gecko)&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options?redirectlocale=en-US&amp;amp;redirectslug=The_X-FRAME-OPTIONS_response_header 3.6.9 (1.9.2.9)]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[https://bugzilla.mozilla.org/show_bug.cgi?id=690168 18.0]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;Internet Explorer&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[http://blogs.msdn.com/b/ie/archive/2009/01/27/ie8-security-part-vii-clickjacking-defenses.aspx 8.0]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[http://erlend.oftedal.no/blog/tools/xframeoptions/ 9.0]&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;Opera&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[http://www.opera.com/docs/specs/presto26/#network 10.50]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;Safari&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[http://www.zdnet.com/blog/security/apple-safari-jumbo-patch-50-vulnerabilities-fixed/3541 4.0]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[https://bugs.webkit.org/show_bug.cgi?id=94836 Not supported/Bug reported]&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
References: &lt;br /&gt;
* [https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options Mozilla Developer Network]&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://datatracker.ietf.org/doc/draft-ietf-websec-x-frame-options/ IETF Draft]&lt;br /&gt;
* [http://erlend.oftedal.no/blog/tools/xframeoptions/ X-Frame-Options Compatibility Test] - Check this for the LATEST browser support info for the X-Frame-Options header&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
To implement this protection, you need to add the X-Frame-Options HTTP Response header to any page that you want to protect from being clickjacked via framebusting. One way to do this is to add the HTTP Response Header manually to every page.  A possibly simpler way is to implement a filter that automatically adds the header to every page.&lt;br /&gt;
&lt;br /&gt;
OWASP has an [[ClickjackFilter for Java EE|article and some code]] that provides all the details for implementing this in the Java EE environment.&lt;br /&gt;
&lt;br /&gt;
The SDL blog has posted an [http://blogs.msdn.com/sdl/archive/2009/02/05/clickjacking-defense-in-ie8.aspx article] covering how to implement this in a .NET environment.&lt;br /&gt;
&lt;br /&gt;
=== Common Defense Mistakes ===&lt;br /&gt;
Meta-tags that attempt to apply the X-Frame-Options directive DO NOT WORK. For example, &amp;lt;meta http-equiv=&amp;quot;X-Frame-Options&amp;quot; content=&amp;quot;deny&amp;quot;&amp;gt;) will not work. You must apply the X-FRAME-OPTIONS directive as HTTP Response Header as described above.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
&lt;br /&gt;
* '''Per-page policy specification''' The policy needs to be specified for every page, which can complicate deployment. Providing the ability to enforce it for the entire site, at login time for instance, could simplify adoption.&lt;br /&gt;
* '''Problems with multi-domain sites''' The current implementation does not allow the webmaster to provide a whitelist of domains that are allowed to frame the page. While whitelisting can be dangerous, in some cases a webmaster might have no choice but to use more than one hostname.&lt;br /&gt;
* '''ALLOW-FROM browser support''' The ALLOW-FROM option is a relatively recent addition (circa 2012) and may not be supported by all browsers yet.  BE CAREFUL ABOUT DEPENDING ON ALLOW-FROM. If you apply it and the browser does not support it, then you will have NO clickjacking defense in place.&lt;br /&gt;
* '''Multiple options not supported''' There is no way to allow the current site and a 3rd party site to frame the same response -- browsers only honour one X-Frame-Options header and only one value on that header.&lt;br /&gt;
* '''Nested Frames don't work with SAMEORIGIN and ALLOW-FROM''' In the following situation, the http://framed.invalid/child frame does not load because ALLOW-FROM applies to the top-level browsing context, not that of the immediate parent. The solution is to use ALLOW-FROM in both the parent and child frames (but this prevents the child frame loading if the //framed.invalid/parent page is loaded as the top level document).&lt;br /&gt;
 +-//friendlysite.invalid-----------------------+&lt;br /&gt;
 |                                              |&lt;br /&gt;
 | +-//framed.invalid/parent------------------+ |&lt;br /&gt;
 | |                                          | |&lt;br /&gt;
 | | ALLOW-FROM http://friendlysite.invalid | |&lt;br /&gt;
 | |                                          | |&lt;br /&gt;
 | | +-//framed.invalid/child--------+        | |&lt;br /&gt;
 | | |                               |        | |&lt;br /&gt;
 | | | SAMEORIGIN                    |        | |&lt;br /&gt;
 | | |                               |        | |&lt;br /&gt;
 | | +-------------------------------+        | |&lt;br /&gt;
 | +------------------------------------------+ |&lt;br /&gt;
 +----------------------------------------------+&lt;br /&gt;
* '''X-Frame-Options Deprecated''' While the X-Frame-Options header is supported by the major browsers, it was never standardized and has been deprecated in favour of the frame-ancestors directive from the CSP Level 2 specification.&lt;br /&gt;
* '''Proxies''' Web proxies are notorious for adding and stripping headers. If a web proxy strips the X-Frame-Options header then the site loses its framing protection.&lt;br /&gt;
&lt;br /&gt;
= Best-for-now Legacy Browser Frame Breaking Script =&lt;br /&gt;
&lt;br /&gt;
One way to defend against clickjacking is to include a &amp;quot;frame-breaker&amp;quot; script&lt;br /&gt;
in each page that should not be framed. The following methodology will prevent&lt;br /&gt;
a webpage from being framed even in legacy browsers, that do not support the&lt;br /&gt;
X-Frame-Options-Header.&lt;br /&gt;
&lt;br /&gt;
In the document HEAD element, add the following:&lt;br /&gt;
&lt;br /&gt;
First apply an ID to the style element itself:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;style id=&amp;amp;quot;antiClickjack&amp;amp;quot;&amp;amp;gt;body{display:none !important;}&amp;amp;lt;/style&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
And then delete that style by its ID immediately after in the script:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;script type=&amp;amp;quot;text/javascript&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
    if (self === top) {&lt;br /&gt;
        var antiClickjack = document.getElementById(&amp;amp;quot;antiClickjack&amp;amp;quot;);&lt;br /&gt;
        antiClickjack.parentNode.removeChild(antiClickjack);&lt;br /&gt;
    } else {&lt;br /&gt;
        top.location = self.location;&lt;br /&gt;
    }&lt;br /&gt;
 &amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
This way, everything can be in the document HEAD and you only need one method/taglib in your API.&lt;br /&gt;
&lt;br /&gt;
Reference: [https://www.codemagi.com/blog/post/194 https://www.codemagi.com/blog/post/194]&lt;br /&gt;
&lt;br /&gt;
= window.confirm() Protection =&lt;br /&gt;
The use of x-frame-options or a frame-breaking script is a more fail-safe method of clickjacking protection.  However, in scenarios where content must be frameable, then a window.confirm() can be used to help mitigate Clickjacking by informing the user of the action they are about to perform.&lt;br /&gt;
&lt;br /&gt;
Invoking window.confirm() will display a popup that cannot be framed.  If the window.confirm() originates from within an iframe with a different domain than the parent, then the dialog box will display what domain the window.confirm() originated from.  In this scenario the browser is displaying the origin of the dialog box to help mitigate Clickjacking attacks.  It should be noted that Internet Explorer is the only known browser that does not display the domain that the window.confirm() dialog box originated from,  to address this issue with Internet Explorer insure that the message within the dialog box contains contextual information about the type of action being performed.  For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;script type=&amp;amp;quot;text/javascript&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
    var action_confirm = window.confirm(&amp;quot;Are you sure you want to delete your youtube account?&amp;quot;)&lt;br /&gt;
    if (action_confirm) {&lt;br /&gt;
        //... perform action&lt;br /&gt;
    } else {&lt;br /&gt;
        //...  The user does not want to perform the requested action.&lt;br /&gt;
    }&lt;br /&gt;
 &amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Non-Working Scripts =&lt;br /&gt;
Consider the following snippet which is '''NOT recommended''' for defending&lt;br /&gt;
against clickjacking:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;script&amp;gt;if (top!=self) top.location.href=self.location.href&amp;lt;/script&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This simple frame breaking script attempts to prevent the page from being incorporated into a frame or iframe by forcing the parent window to load the current frame's URL. Unfortunately, multiple ways of defeating this type of script have been made public. We outline some here.&lt;br /&gt;
&lt;br /&gt;
== Double Framing ==&lt;br /&gt;
Some frame busting techniques navigate to the correct page by assigning a value to parent.location. This works well if the victim page is framed by a single page. However, if the attacker encloses the victim in one frame inside another (a double frame), then accessing parent.location becomes a security violation in all popular browsers, due to the '''descendant frame navigation policy'''. This security violation disables the counter-action navigation.&lt;br /&gt;
&lt;br /&gt;
'''Victim frame busting code:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(top.location!=self.locaton) {&lt;br /&gt;
  parent.location = self.location;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Attacker top frame:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;iframe src=&amp;quot;attacker2.html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Attacker sub-frame:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;iframe src=&amp;quot;http://www.victim.com&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The onBeforeUnload Event ==&lt;br /&gt;
A user can manually cancel any navigation request submitted by a framed page. To exploit this, the framing page registers an onBeforeUnload handler which is called whenever the framing page is about to be unloaded due to navigation. The handler function returns a string that becomes part of a prompt displayed to the user. Say the attacker wants to frame PayPal. He registers an unload handler function that returns the string &amp;quot;Do you want to exit PayPal?&amp;quot;. When this string is displayed to the user is likely to cancel the navigation, defeating PayPal's frame busting attempt.&lt;br /&gt;
&lt;br /&gt;
The attacker mounts this attack by registering an unload event on the top page using the&lt;br /&gt;
following code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
window.onbeforeunload = function()&lt;br /&gt;
{&lt;br /&gt;
  return &amp;quot;Asking the user nicely&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;iframe src=&amp;quot;http://www.paypal.com&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
PayPal's frame busting code will generate a BeforeUnload event activating our function and prompting the user to cancel the navigation event.&lt;br /&gt;
&lt;br /&gt;
== No-Content Flushing ==&lt;br /&gt;
While the previous attack requires user interaction, the same attack can be done without prompting the user. Most browsers (IE7, IE8, Google Chrome, and Firefox) enable an attacker to automatically cancel the incoming navigation request in an onBeforeUnload event handler by repeatedly submitting a navigation request to a site responding with \204 - No Content.&amp;quot; Navigating to a No Content site is effectively a NOP, but flushes the request pipeline, thus canceling the original navigation request. Here is sample code to do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var preventbust = 0&lt;br /&gt;
window.onbeforeunload = function() { killbust++ }&lt;br /&gt;
setInterval( function() {&lt;br /&gt;
  if(killbust &amp;gt; 0){&lt;br /&gt;
  killbust = 2;&lt;br /&gt;
  window.top.location = 'http://nocontent204.com'&lt;br /&gt;
  }&lt;br /&gt;
}, 1);&lt;br /&gt;
&amp;lt;iframe src=&amp;quot;http://www.victim.com&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exploiting XSS filters ==&lt;br /&gt;
IE8 and Google Chrome introduced reflective XSS filters that help protect web pages from certain types of XSS attacks. Nava and Lindsay (at Blackhat) observed that these filters can be used to circumvent frame busting code. The IE8 XSS filter compares given request parameters to a set of regular expressions in order to look for obvious attempts at cross-site scripting. Using &amp;quot;induced false positives&amp;quot;, the filter can be used to disable selected scripts. By matching the beginning of any script tag in the request parameters, the XSS filter will disable all inline scripts within the page, including frame busting scripts. External scripts can also be targeted by matching an external include, effectively disabling all external scripts. Since subsets of the JavaScript loaded is still functional (inline or external) and cookies are still available, this attack is effective for clickjacking.&lt;br /&gt;
&lt;br /&gt;
'''Victim frame busting code:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
if(top != self) {&lt;br /&gt;
  top.location = self.location;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Attacker:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;iframe src=&amp;quot;http://www.victim.com/?v=&amp;lt;script&amp;gt;if''&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The XSS filter will match that parameter &amp;quot;&amp;lt;script&amp;gt;if&amp;quot; to the beginning of the frame busting script on the victim and will consequently disable all inline scripts in the victim's page, including the frame busting script. The XSSAuditor filter available for Google Chrome enables the same exploit.&lt;br /&gt;
&lt;br /&gt;
== Clobbering top.location ==&lt;br /&gt;
Several modern browsers treat the location variable as a special immutable attribute across all contexts. However, this is not the case in IE7 and Safari 4.0.4 where the location variable can be redefined.&lt;br /&gt;
&lt;br /&gt;
'''IE7'''&lt;br /&gt;
Once the framing page redefines location, any frame busting code in a subframe that tries to read top.location will commit a security violation by trying to read a local variable in another domain. Similarly, any attempt to navigate by assigning top.location will fail.&lt;br /&gt;
&lt;br /&gt;
'''Victim frame busting code:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(top.location != self.location) {&lt;br /&gt;
  top.location = self.location;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Attacker:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt; var location = &amp;quot;clobbered&amp;quot;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;iframe src=&amp;quot;http://www.victim.com&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Safari 4.0.4'''&lt;br /&gt;
&lt;br /&gt;
We observed that although location is kept immutable in most circumstances, when a custom location setter is defined via defineSetter (through window) the object location becomes undefined. The framing page simply does:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  window.defineSetter(&amp;quot;location&amp;quot; , function(){});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now any attempt to read or navigate the top frame's location will fail.&lt;br /&gt;
&lt;br /&gt;
== Restricted zones ==&lt;br /&gt;
&lt;br /&gt;
Most frame busting relies on JavaScript in the framed page to detect framing and bust itself out. If JavaScript is disabled in the context of the subframe, the frame busting code will not run. There are unfortunately several ways of restricting JavaScript in a subframe:&lt;br /&gt;
&lt;br /&gt;
* '''In IE 8:''' &amp;lt;pre&amp;gt;&amp;lt;iframe src=&amp;quot;http://www.victim.com&amp;quot; security=&amp;quot;restricted&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* '''In Chrome:''' &amp;lt;pre&amp;gt;&amp;lt;iframe src=&amp;quot;http://www.victim.com&amp;quot; sandbox&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*''' In Firefox and IE:''' Activate designMode in parent page.&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>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206078</id>
		<title>Secure Coding Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206078"/>
				<updated>2016-01-08T14:48:37Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Cross Site Request Forgery */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
The goal of this document is to create high level guideline for secure coding practices. The goal is to keep the overall size of the document condensed and easy to digest.  Individuals seeking addition information on the specific areas should refer to the included links to learn more.&lt;br /&gt;
&lt;br /&gt;
= How To Use This Document =&lt;br /&gt;
The information listed below are generally acceptable secure coding practices; however, it is recommend that organizations consider this a base template and update individual sections with secure coding recommendations specific to the organization's policies and risk tolerance. &lt;br /&gt;
&lt;br /&gt;
= Secure Coding Policy =&lt;br /&gt;
Always maintain a secure coding policy. List down the activities that are related to maintenance of secure coding standards (would these standards be technology specific or technology agnostic), feedback of code review output to training, input data validation, output data validation etc&lt;br /&gt;
&lt;br /&gt;
Why should you be having a secure coding policy? It helps in maintaining consistency across organisation and helps in vertical and horizontal scaling of usage of standards for web development projects. &lt;br /&gt;
&lt;br /&gt;
= Authentication=&lt;br /&gt;
&lt;br /&gt;
== User Authentication ==&lt;br /&gt;
Please see https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Utilize_Multi-Factor_Authentication&lt;br /&gt;
&lt;br /&gt;
=== Password Complexity ===&lt;br /&gt;
&lt;br /&gt;
For more information on password complexity, please see [https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls].&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Access Control =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Access_Control_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Input Data Validation =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
== Preventing XSS and Content Security Policy ==&lt;br /&gt;
* All user data controlled must be encoded when returned in the html page to prevent the execution of malicious data (e.g. XSS). For example &amp;amp;lt;script&amp;amp;gt; would be returned as &amp;amp;amp;lt;script&amp;amp;amp;gt;&lt;br /&gt;
* The type of encoding is specific to the context of the page where the user controlled data is inserted. For example, HTML entity encoding is appropriate for data placed into the HTML body. However, user data placed into a script would need JavaScript specific output encoding &lt;br /&gt;
&lt;br /&gt;
Detailed information on XSS prevention here: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet OWASP XSS Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
== Preventing SQL Injection ==&lt;br /&gt;
* It's not realistic to always know if a piece of data is user controlled, therefore parameterized queries should be used whenever a method/function accepts data and uses this data as part of the SQL statement. &lt;br /&gt;
* String concatenation to build any part of a SQL statement with user controlled data creates a SQL injection vulnerability.&lt;br /&gt;
* Parameterized queries are a guaranteed approach to prevent SQL injection.&lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Injection Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
== Preventing OS Injection ==&lt;br /&gt;
* Avoid sending user controlled data to the OS as much as possible&lt;br /&gt;
* Ensure that a robust escaping routine is in place to prevent the user from adding additional characters that can be executed by the OS ( e.g. user appends | to the malicious data and then executes another OS command). Remember to use a positive approach when constructing escaping routinges. Example &lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/Reviewing_Code_for_OS_Injection Reviewing Code for OS Injection]&lt;br /&gt;
&lt;br /&gt;
== Preventing XML Injection ==&lt;br /&gt;
* In addition to the existing input validation, define a positive approach which escapes/encodes characters that can be interpreted as xml. At a minimum this includes the following: &amp;lt; &amp;gt; &amp;quot; ' &amp;amp; &lt;br /&gt;
* If accepting raw XML then more robust validation is necessary. This can be complex. Please contact the infrastructure security team for additional discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Secure Transmission / Network Layer security =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Benefits&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
&lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use input validation to ensure the uploaded filename uses an expected extension type &lt;br /&gt;
*Ensure the uploaded file is not larger than a defined maximum file size&lt;br /&gt;
&lt;br /&gt;
==Upload Storage==&lt;br /&gt;
*Use a new filename to store the file on the OS. Do not use any user controlled text for this filename or for the temporary filename. &lt;br /&gt;
*Store all user uploaded files on a separate domain (e.g. mozillafiles.net vs mozilla.org). Archives should be analyzed for malicious content (anti-malware, static analysis, etc)&lt;br /&gt;
&lt;br /&gt;
==Public Serving of Uploaded Content==&lt;br /&gt;
*Ensure the image is served with the correct content-type (e.g. image/jpeg, application/x-xpinstall)&lt;br /&gt;
&lt;br /&gt;
==Beware of &amp;quot;special&amp;quot; files==&lt;br /&gt;
* The upload feature should be using a whitelist approach to only allow specific file types and extensions. However, it is important to be aware of the following file types that, if allowed, could result in security vulnerabilities.&lt;br /&gt;
*&amp;quot;crossdomain.xml&amp;quot; allows cross-domain data loading in Flash, Java and Silverlight.  If permitted on sites with authentication this can permit cross-domain data theft and CSRF attacks.  Note this can get pretty complicated depending on the specific plugin version in question, so its best to just prohibit files named &amp;quot;crossdomain.xml&amp;quot; or &amp;quot;clientaccesspolicy.xml&amp;quot;.&lt;br /&gt;
*&amp;quot;.htaccess&amp;quot; and &amp;quot;.htpasswd&amp;quot; provides server configuration options on a per-directory basis, and should not be permitted.  See http://en.wikipedia.org/wiki/Htaccess&lt;br /&gt;
&lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use image rewriting libraries to verify the image is valid and to strip away extraneous content. &lt;br /&gt;
*Set the extension of the stored image to be a valid image extension based on the detected content type of the image from image processing (e.g. do not just trust the header from the upload). &lt;br /&gt;
*Ensure the detected content type of the image is within a list of defined image types (jpg, png, etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
&lt;br /&gt;
Typical types of errors:&lt;br /&gt;
• The result of business logic conditions not being met.&lt;br /&gt;
• The result of the environment wherein the business logic resides fails.&lt;br /&gt;
• The result of upstream or downstream systems upon which the application depends fail.&lt;br /&gt;
• Technical hardware / physical failure.&lt;br /&gt;
&lt;br /&gt;
To address these errors:&lt;br /&gt;
&lt;br /&gt;
* Ensure that all method/function calls that return a value have proper error handling and return value checking&lt;br /&gt;
* Ensure that exceptions and error conditions are properly handled&lt;br /&gt;
* Ensure that no system errors can be returned to the user&lt;br /&gt;
* Ensure that the application fails in a secure manner&lt;br /&gt;
* Ensure resources are released if an error occurs&lt;br /&gt;
* Ensure that stack trace is not thrown to the user&lt;br /&gt;
* If the language in question has a finally method, use it. The finally method is always called. The finally method can be used to release resources referenced by the method that threw the exception. &lt;br /&gt;
This is very important. An example would be if a method gained a database connection from a pool of connections, &lt;br /&gt;
and an exception occurred without finally, the connection object shall not be returned to the pool for some time (until the timeout). &lt;br /&gt;
This can lead to pool exhaustion. The method finally() is called even if no exception is thrown.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Logging and Auditing =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Logging_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Cryptography =&lt;br /&gt;
&lt;br /&gt;
* All protocols and algorithms for authentication and secure communication should be well vetted by the cryptographic community.&lt;br /&gt;
* Ensure certificates are properly validated against the hostnames/users ie whom they are meant for.&lt;br /&gt;
* Avoid using wildcard certificates unless there is a business need for it &lt;br /&gt;
* Maintain a cryptographic standard to ensure that the developer community knows about the approved ciphersuits for network security protocols, algorithms, permitted use, cryptoperiods and Key Management&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Cookie Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Cookies&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
* Secure access to with authentication and authorisation to configuration files, directories, and resources on the host so that direct access to such artifacts is disallowed&lt;br /&gt;
* Use a “deny all” rule to deny access to resources on the hosts and then grant access on need basis&lt;br /&gt;
* In Apache HTTP server, ensure directories like WEB-INF and META-INF are protected. If permissions for a directory and subdirectories are specified in .htaccess file, ensure that it is protected using the “deny all” rule&lt;br /&gt;
* While using Struts framework, ensure that JSP files are not accessible directly by denying access to *.jsp files in web.xml&lt;br /&gt;
* Maintain a clean environment. remove files that contain source code but are not used by the application. &lt;br /&gt;
* Ensure production environment does not contain any source code / development tools and that the production &lt;br /&gt;
* Ensure environment contains only compiled code / executables. &lt;br /&gt;
* Remove test code / debug code (that might contain backdoors). &lt;br /&gt;
* Remove commented code and meta tags as they might contain sensitive data.&lt;br /&gt;
* If applicable, obfuscate your code to ensure that reverse engineering is avoided&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Unvalidated Redirects and Forwards Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Common Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SQL Injection ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Scripting ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Request Forgery ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Preventing Malicious Site Framing (ClickJacking) ==&lt;br /&gt;
&lt;br /&gt;
Set the x-frame-options header for all responses containing HTML content. The possible values are &amp;quot;DENY&amp;quot; or &amp;quot;SAMEORIGIN&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
    DENY will block any site (regardless of domain) from framing the content.&lt;br /&gt;
    SAMEORIGIN will block all sites from framing the content, except sites within the same domain.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;DENY&amp;quot; setting is recommended unless a specific need has been identified for framing.&lt;br /&gt;
&lt;br /&gt;
== Security Misconfigurations ==&lt;br /&gt;
&lt;br /&gt;
* Diable all the services, ports, protocols and daemons that are not required.&lt;br /&gt;
* Change all the default and vendor supplied passwords&lt;br /&gt;
* Protect servers by grouping all similar functions into a VLAN&lt;br /&gt;
* White wash error messages such that no internal workings are revealed&lt;br /&gt;
* Prevent stack traces from leaving the container.&lt;br /&gt;
* Authorising access to the least amount of data/ least number of pages that is possible&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object references ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Directory Listing ==&lt;br /&gt;
&lt;br /&gt;
* Do not enable Directory Listing on your server&lt;br /&gt;
&lt;br /&gt;
== Concurrancy and Race Conditions ==&lt;br /&gt;
&lt;br /&gt;
* Use a locking mechanism to lock shared resources&lt;br /&gt;
* Obtain a lock on shared resources before it is read&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&amp;diff=206077</id>
		<title>Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&amp;diff=206077"/>
				<updated>2016-01-08T14:41:48Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* General Recommendation: Synchronizer Token Pattern */&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;
Cross-Site Request Forgery (CSRF) is a type of attack that occurs when a malicious Web site, email, blog, instant message, or program causes a user’s Web browser to perform an unwanted action on a trusted site for which the user is currently authenticated. The impact of a successful cross-site request forgery attack is limited to the capabilities exposed by the vulnerable application. For example, this attack could result in a transfer of funds, changing a password, or purchasing an item in the user's context. In effect, CSRF attacks are used by an attacker to make a target system perform a function (funds Transfer, form submission etc.) via the target's browser without knowledge of the target user, at least until the unauthorized function has been committed.&lt;br /&gt;
&lt;br /&gt;
Impacts of successful CSRF exploits vary greatly based on the role of the victim. When targeting a normal user, a successful CSRF attack can compromise end-user data and their associated functions. If the targeted end user is an administrator account, a CSRF attack can compromise the entire Web application. The sites that are more likely to be attacked are community Websites (social networking, email) or sites that have high dollar value accounts associated with them (banks, stock brokerages, bill pay services). This attack can happen even if the user is logged into a Web site using strong encryption (HTTPS). Utilizing social engineering, an attacker will embed malicious HTML or JavaScript code into an email or Website to request a specific 'task url'. The task then executes with or without the user's knowledge, either directly or by utilizing a Cross-site Scripting flaw (ex: Samy MySpace Worm).&lt;br /&gt;
&lt;br /&gt;
For more information on CSRF, please see the OWASP [[Cross-Site Request Forgery (CSRF)]] page.&lt;br /&gt;
&lt;br /&gt;
= No Cross-Site Scripting (XSS) Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
Cross-Site Scripting is not necessary for CSRF to work. However, any cross-site scripting vulnerability can be used to defeat token, Double-Submit cookie, referer and origin based CSRF defenses.  This is because an XSS payload can simply read any page on the site using a XMLHttpRequest and obtain the generated token from the response, and include that token with a forged request. This technique is exactly how the [http://en.wikipedia.org/wiki/Samy_(XSS) MySpace (Samy) worm] defeated MySpace's anti CSRF defenses in 2005, which enabled the worm to propagate. XSS cannot defeat challenge-response defenses such as Captcha, re-authentication or one-time passwords. It is imperative that no XSS vulnerabilities are present to ensure that CSRF defenses can't be circumvented. Please see the OWASP [[XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet | XSS Prevention Cheat Sheet]] for detailed guidance on how to prevent XSS flaws.&lt;br /&gt;
&lt;br /&gt;
= Prevention Measures That Do NOT Work =&lt;br /&gt;
&lt;br /&gt;
== Using a Secret Cookie ==&lt;br /&gt;
&lt;br /&gt;
Remember that all cookies, even the secret ones, will be submitted with every request. All authentication tokens will be submitted regardless of whether or not the end-user was tricked into submitting the request. Furthermore, session identifiers are simply used by the application container to associate the request with a specific session object. The session identifier does not verify that the end-user intended to submit the request. &lt;br /&gt;
&lt;br /&gt;
== Only Accepting POST Requests ==&lt;br /&gt;
&lt;br /&gt;
Applications can be developed to only accept POST requests for the execution of business logic. The misconception is that since the attacker cannot construct a malicious link, a CSRF attack cannot be executed. Unfortunately, this logic is incorrect. There are numerous methods in which an attacker can trick a victim into submitting a forged POST request, such as a simple form hosted in an attacker's Website with hidden values. This form can be triggered automatically by JavaScript or can be triggered by the victim who thinks the form will do something else.&lt;br /&gt;
&lt;br /&gt;
== Multi-Step Transactions ==&lt;br /&gt;
&lt;br /&gt;
Multi-Step transactions are not an adequate prevention of CSRF. As long as an attacker can predict or deduce each step of the completed transaction, then CSRF is possible.&lt;br /&gt;
&lt;br /&gt;
== URL Rewriting ==&lt;br /&gt;
&lt;br /&gt;
This might be seen as a useful CSRF prevention technique as the attacker can not guess the victim's session ID. However, the user’s credential is exposed over the URL.&lt;br /&gt;
&lt;br /&gt;
= General Recommendation: Synchronizer Token Pattern =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Any state changing operation requires a secure random token (e.g CSRF token) to prevent against CSRF attacks&lt;br /&gt;
* Characteristics of a CSRF Token&lt;br /&gt;
** Unique per user &amp;amp; per user session&lt;br /&gt;
** Tied to a single user session&lt;br /&gt;
** Large random value&lt;br /&gt;
** Generated by a cryptographically secure random number generator &lt;br /&gt;
* The CSRF token is added as a hidden field for forms or within the URL if the state changing operation occurs via a GET&lt;br /&gt;
* The server rejects the requested action if the CSRF token fails validation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to facilitate a &amp;quot;transparent but visible&amp;quot; CSRF solution, developers are encouraged to adopt the Synchronizer Token Pattern (http://www.corej2eepatterns.com/Design/PresoDesign.htm). The synchronizer token pattern requires the generating of random &amp;quot;challenge&amp;quot; tokens that are associated with the user's current session. These challenge tokens are then inserted within the HTML forms and links associated with sensitive server-side operations. When the user wishes to invoke these sensitive operations, the HTTP request should include this challenge token. It is then the responsibility of the server application to verify the existence and correctness of this token. By including a challenge token with each request, the developer has a strong control to verify that the user actually intended to submit the desired requests. Inclusion of a required security token in HTTP requests associated with sensitive business functions helps mitigate CSRF attacks as successful exploitation assumes the attacker knows the randomly generated token for the target victim's session. This is analogous to the attacker being able to guess the target victim's session identifier. The following synopsis describes a general approach to incorporate challenge tokens within the request.&lt;br /&gt;
&lt;br /&gt;
When a Web application formulates a request (by generating a link or form that causes a request when submitted or clicked by the user), the application should include a hidden input parameter with a common name such as &amp;quot;CSRFToken&amp;quot;. The value of this token must be randomly generated such that it cannot be guessed by an attacker. Consider leveraging the java.security.SecureRandom class for Java applications to generate a sufficiently long random token. Alternative generation algorithms include the use of 256-bit BASE64 encoded hashes. Developers that choose this generation algorithm must make sure that there is randomness and uniqueness utilized in the data that is hashed to generate the random token.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;form action=&amp;quot;/transfer.do&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;CSRFToken&amp;quot; &lt;br /&gt;
   value=&amp;quot;OWY4NmQwODE4ODRjN2Q2NTlhMmZlYWE...&lt;br /&gt;
   wYzU1YWQwMTVhM2JmNGYxYjJiMGI4MjJjZDE1ZDZ...&lt;br /&gt;
   MGYwMGEwOA==&amp;quot;&amp;gt;&lt;br /&gt;
   …&lt;br /&gt;
   &amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In general, developers need only generate this token once for the current session. After initial generation of this token, the value is stored in the session and is utilized for each subsequent request until the session expires. When a request is issued by the end-user, the server-side component must verify the existence and validity of the token in the request as compared to the token found in the session. If the token was not found within the request or the value provided does not match the value within the session, then the request should be aborted, token should be reset and the event logged as a potential CSRF attack in progress.&lt;br /&gt;
&lt;br /&gt;
To further enhance the security of this proposed design, consider randomizing the CSRF token parameter name and or value for each request. Implementing this approach results in the generation of per-request tokens as opposed to per-session tokens. Note, however, that this may result in usability concerns. For example, the &amp;quot;Back&amp;quot; button browser capability is often hindered as the previous page may contain a token that is no longer valid. Interaction with this previous page will result in a CSRF false positive security event at the server. Regardless of the approach taken, developers are encouraged to protect the CSRF token the same way they protect authenticated session identifiers, such as the use of TLS.&lt;br /&gt;
&lt;br /&gt;
=== Disclosure of Token in URL ===&lt;br /&gt;
&lt;br /&gt;
Many implementations of this control include the challenge token in GET (URL) requests as well as POST requests. This is often implemented as a result of sensitive server-side operations being invoked as a result of embedded links in the page or other general design patterns. These patterns are often implemented without knowledge of CSRF and an understanding of CSRF prevention design strategies. While this control does help mitigate the risk of CSRF attacks, the unique per-session token is being exposed for GET requests. CSRF tokens in GET requests are potentially leaked at several locations: browser history, HTTP log files, network appliances that make a point to log the first line of an HTTP request, and Referer headers if the protected site links to an external site.&lt;br /&gt;
&lt;br /&gt;
In the latter case (leaked CSRF token due to the Referer header being parsed by a linked site), it is trivially easy for the linked site to launch a CSRF attack on the protected site, and they will be able to target this attack very effectively, since the Referer header tells them the site as well as the CSRF token. The attack could be run entirely from javascript, so that a simple addition of a script tag to the HTML of a site can launch an attack (whether on an originally malicious site or on a hacked site). Additionally, since HTTPS requests from HTTPS contexts will not strip the Referer header (as opposed to HTTPS to HTTP requests) CSRF token leaks via Referer can still happen on HTTPS Applications.&lt;br /&gt;
&lt;br /&gt;
The ideal solution is to only include the CSRF token in POST requests and modify server-side actions that have state changing affect to only respond to POST requests. This is in fact what the [http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.1 RFC 2616] requires for GET requests. If sensitive server-side actions are guaranteed to only ever respond to POST requests, then there is no need to include the token in GET requests.&lt;br /&gt;
&lt;br /&gt;
In most JavaEE web applications, however, HTTP method scoping is rarely ever utilized when retrieving HTTP parameters from a request. Calls to &amp;quot;HttpServletRequest.getParameter&amp;quot; will return a parameter value regardless if it was a GET or POST. This is not to say HTTP method scoping cannot be enforced. It can be achieved if a developer explicitly overrides doPost() in the HttpServlet class or leverages framework specific capabilities such as the AbstractFormController class in Spring.&lt;br /&gt;
&lt;br /&gt;
For these cases, attempting to retrofit this pattern in existing applications requires significant development time and cost, and as a temporary measure it may be better to pass CSRF tokens in the URL. Once the application has been fixed to respond to HTTP GET and POST verbs correctly, CSRF tokens for GET requests should be turned off.&lt;br /&gt;
&lt;br /&gt;
=== Viewstate (ASP.NET) ===&lt;br /&gt;
&lt;br /&gt;
ASP.NET has an option to maintain your ViewState. The ViewState indicates the status of a page when submitted to the server. The status is defined through a hidden field placed on each page with a &amp;lt;form runat=&amp;quot;server&amp;quot;&amp;gt; control. Viewstate can be used as a CSRF defense, as it is difficult for an attacker to forge a valid Viewstate. It is not impossible to forge a valid Viewstate since it is feasible that parameter values could be obtained or guessed by the attacker. However, if the current session ID is added to the ViewState, it then makes each Viewstate unique, and thus immune to CSRF. &lt;br /&gt;
&lt;br /&gt;
To use the ViewStateUserKey property within the Viewstate to protect against spoofed post backs. Add the following in the OnInit virtual method of the Page-derived class (This property must be set in the Page.Init event)&lt;br /&gt;
&lt;br /&gt;
   protected override OnInit(EventArgs e) {&lt;br /&gt;
      base.OnInit(e); &lt;br /&gt;
      if (User.Identity.IsAuthenticated)&lt;br /&gt;
         ViewStateUserKey = Session.SessionID; }&lt;br /&gt;
&lt;br /&gt;
The following keys the Viewstate to an individual using a unique value of your choice.&lt;br /&gt;
&lt;br /&gt;
    (Page.ViewStateUserKey)&lt;br /&gt;
&lt;br /&gt;
This must be applied in Page_Init because the key has to be provided to ASP.NET before Viewstate is loaded. This option has been available since ASP.NET 1.1.&lt;br /&gt;
&lt;br /&gt;
However, there are limitations on this mechanism.  Such as, ViewState MACs are only checked on POSTback, so any other application requests not using postbacks will happily allow CSRF.&lt;br /&gt;
&lt;br /&gt;
=== Double Submit Cookies ===&lt;br /&gt;
&lt;br /&gt;
Double submitting cookies is defined as sending a random value in both a cookie and as a request parameter, with the server verifying if the cookie value and request value are equal. &lt;br /&gt;
&lt;br /&gt;
When a user authenticates to a site, the site should generate a (cryptographically strong) pseudorandom value and set it as a cookie on the user's machine separate from the session id. The site does not have to save this value in any way. The site should then require every sensitive submission to include this random value as a hidden form value (or other request parameter) and also as a cookie value. An attacker cannot read any data sent from the server or modify cookie values, per the same-origin policy. This means that while an attacker can send any value he wants with a malicious CSRF request, the attacker will be unable to modify or read the value stored in the cookie. Since the cookie value and the request parameter or form value must be the same, the attacker will be unable to successfully submit a form unless he is able to guess the random CSRF value.&lt;br /&gt;
&lt;br /&gt;
[http://directwebremoting.org Direct Web Remoting (DWR)] Java library version 2.0 has CSRF protection built in as it implements the double cookie submission transparently.&lt;br /&gt;
&lt;br /&gt;
=== Encrypted Token Pattern ===&lt;br /&gt;
&lt;br /&gt;
==== Overview ====&lt;br /&gt;
&lt;br /&gt;
The Encrypted Token Pattern leverages an encryption, rather than comparison, method of Token-validation. After successful authentication, the server generates a unique Token comprised of the user's ID, a timestamp value and a [http://en.wikipedia.org/wiki/Cryptographic_nonce nonce], using a unique key available only on the server. This Token is returned to the client and embedded in a hidden field. Subsequent AJAX requests include this Token in the request-header, in a similar manner to the Double-Submit pattern. Non-AJAX form-based requests will implicitly persist the Token in its hidden field. On receipt of this request, the server reads and decrypts the Token value with the same key used to create the Token. Inability to correctly decrypt suggest an intrusion attempt. Once decrypted, the UserId and timestamp contained within the token are validated to ensure validity; the UserId is compared against the currently logged in user, and the timestamp is compared against the current time.&lt;br /&gt;
&lt;br /&gt;
==== Validation ====&lt;br /&gt;
&lt;br /&gt;
On successful Token-decryption, the server has access to parsed values, ideally in the form of [http://en.wikipedia.org/wiki/Claims-based_identity claims]. These claims are processed by comparing the UserId claim to any potentially stored UserId (in a Cookie or Session variable, if the site already contains a means of authentication). The Timestamp is validated against the current time, preventing replay attacks.&lt;br /&gt;
Alternatively, in the case of a CSRF attack, the server will be unable to decrypt the poisoned Token, and can block and log the attack.&lt;br /&gt;
&lt;br /&gt;
This pattern exists primarily to allow developers and architects protect against CSRF without session-dependency. It also addresses some of the shortfalls in other stateless approaches, such as the need to store data in a Cookie, circumnavigating the Cookie-subdomain and HTTPONLY issues.&lt;br /&gt;
&lt;br /&gt;
= CSRF Prevention without a Synchronizer Token =&lt;br /&gt;
CSRF can be prevented in a number of ways. Using a Synchronizer Token is one way that an application can rely upon the Same-Origin Policy to prevent CSRF by maintaining a secret token to authenticate requests.  This section details other ways that an application can prevent CSRF by relying upon similar rules that CSRF exploits can never break.&lt;br /&gt;
&lt;br /&gt;
=== Checking The Referer Header ===&lt;br /&gt;
Although it is trivial to spoof the referer header on your own browser,  it is impossible to do so in a CSRF attack.  Checking the referer is a commonly used method of preventing CSRF on embedded network devices because it does not require a per-user state.  This makes a referer a useful method of CSRF prevention when memory is scarce.  This method of CSRF mitigation is also commonly used with unauthenticated requests,  such as requests made prior to establishing a session state which is required to keep track of a synchronization token. &lt;br /&gt;
&lt;br /&gt;
However, checking the referer is considered to be a weaker from of CSRF protection.  For example,  open redirect vulnerabilities can be used to exploit GET-based requests that are protected with a referer check and some organizations or browser tools remove referrer headers as a form of data protection.  There are also common implementation mistakes with referer checks.  For example if the CSRF attack originates from an HTTPS domain then the referer will be omitted.  In this case the lack of a referer should be considered to be an attack when the request is performing a state change.   Also note that the attacker has limited influence over the referer.   For example,  if the victim's domain is &amp;quot;site.com&amp;quot; then an attacker have the CSRF exploit originate from &amp;quot;site.com.attacker.com&amp;quot; which may fool a broken referer check implementation.  XSS can be used to bypass a referer check.&lt;br /&gt;
&lt;br /&gt;
In short, referer checking is a reasonable form of CSRF intrusion detection and prevention even though it is not a complete protection. Referer checking can detect some attacks but not stop all attacks. For example, if you HTTP referrer is from a different domain and you are expecting requests from your domain only, you can safely block that request.&lt;br /&gt;
&lt;br /&gt;
=== Checking The Origin Header ===&lt;br /&gt;
The [https://wiki.mozilla.org/Security/Origin Origin HTTP Header] standard was introduced as a method of defending against CSRF and other Cross-Domain attacks.  Unlike the referer, the origin will be present in HTTP request that originates from an HTTPS url.&lt;br /&gt;
&lt;br /&gt;
If the origin header is present,  then it should be checked for consistency.&lt;br /&gt;
&lt;br /&gt;
=== Challenge-Response ===&lt;br /&gt;
&lt;br /&gt;
Challenge-Response is another defense option for CSRF. The following are some examples of challenge-response options.&lt;br /&gt;
 &lt;br /&gt;
*CAPTCHA&lt;br /&gt;
*Re-Authentication (password)&lt;br /&gt;
*One-time Token&lt;br /&gt;
&lt;br /&gt;
While challenge-response is a very strong defense to CSRF (assuming proper implementation), it does impact user experience. For applications in need of high security, tokens (transparent) and challenge-response should be used on high risk functions.&lt;br /&gt;
&lt;br /&gt;
= Client/User Prevention =&lt;br /&gt;
&lt;br /&gt;
Since CSRF vulnerabilities are reportedly widespread, it is recommended to follow best practices to mitigate risk. Some mitigating include: &lt;br /&gt;
&lt;br /&gt;
* Logoff immediately after using a Web application &lt;br /&gt;
* Do not allow your browser to save username/passwords, and do not allow sites to “remember” your login &lt;br /&gt;
* Do not use the same browser to access sensitive applications and to surf the Internet freely (tabbed browsing). &lt;br /&gt;
* The use of plugins such as No-Script makes POST based CSRF vulnerabilities difficult to exploit.  This is because JavaScript is used to automatically submit the form when the exploit is loaded. Without JavaScript the attacker would have to trick the user into submitting the form manually. &lt;br /&gt;
&lt;br /&gt;
Integrated HTML-enabled mail/browser and newsreader/browser environments pose additional risks since simply viewing a mail message or a news message might lead to the execution of an attack. &lt;br /&gt;
&lt;br /&gt;
moving this&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Paul Petefish - paulpetefish[at]solutionary.com&amp;lt;br/&amp;gt;&lt;br /&gt;
Eric Sheridan - eric.sheridan[at]owasp.org&amp;lt;br/&amp;gt;&lt;br /&gt;
Dave Wichers - dave.wichers[at]owasp.org &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]][[Category:Popular]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206076</id>
		<title>Secure Coding Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Secure_Coding_Cheat_Sheet&amp;diff=206076"/>
				<updated>2016-01-08T14:37:46Z</updated>
		
		<summary type="html">&lt;p&gt;Shruti kulkarni: /* Cookie Management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
= Introduction =&lt;br /&gt;
The goal of this document is to create high level guideline for secure coding practices. The goal is to keep the overall size of the document condensed and easy to digest.  Individuals seeking addition information on the specific areas should refer to the included links to learn more.&lt;br /&gt;
&lt;br /&gt;
= How To Use This Document =&lt;br /&gt;
The information listed below are generally acceptable secure coding practices; however, it is recommend that organizations consider this a base template and update individual sections with secure coding recommendations specific to the organization's policies and risk tolerance. &lt;br /&gt;
&lt;br /&gt;
= Secure Coding Policy =&lt;br /&gt;
Always maintain a secure coding policy. List down the activities that are related to maintenance of secure coding standards (would these standards be technology specific or technology agnostic), feedback of code review output to training, input data validation, output data validation etc&lt;br /&gt;
&lt;br /&gt;
Why should you be having a secure coding policy? It helps in maintaining consistency across organisation and helps in vertical and horizontal scaling of usage of standards for web development projects. &lt;br /&gt;
&lt;br /&gt;
= Authentication=&lt;br /&gt;
&lt;br /&gt;
== User Authentication ==&lt;br /&gt;
Please see https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Utilize_Multi-Factor_Authentication&lt;br /&gt;
&lt;br /&gt;
=== Password Complexity ===&lt;br /&gt;
&lt;br /&gt;
For more information on password complexity, please see [https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls].&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Access Control =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Access_Control_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Input Data Validation =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Output Encoding =&lt;br /&gt;
&lt;br /&gt;
== Preventing XSS and Content Security Policy ==&lt;br /&gt;
* All user data controlled must be encoded when returned in the html page to prevent the execution of malicious data (e.g. XSS). For example &amp;amp;lt;script&amp;amp;gt; would be returned as &amp;amp;amp;lt;script&amp;amp;amp;gt;&lt;br /&gt;
* The type of encoding is specific to the context of the page where the user controlled data is inserted. For example, HTML entity encoding is appropriate for data placed into the HTML body. However, user data placed into a script would need JavaScript specific output encoding &lt;br /&gt;
&lt;br /&gt;
Detailed information on XSS prevention here: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet OWASP XSS Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
== Preventing SQL Injection ==&lt;br /&gt;
* It's not realistic to always know if a piece of data is user controlled, therefore parameterized queries should be used whenever a method/function accepts data and uses this data as part of the SQL statement. &lt;br /&gt;
* String concatenation to build any part of a SQL statement with user controlled data creates a SQL injection vulnerability.&lt;br /&gt;
* Parameterized queries are a guaranteed approach to prevent SQL injection.&lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Injection Prevention Cheat Sheet]&lt;br /&gt;
&lt;br /&gt;
== Preventing OS Injection ==&lt;br /&gt;
* Avoid sending user controlled data to the OS as much as possible&lt;br /&gt;
* Ensure that a robust escaping routine is in place to prevent the user from adding additional characters that can be executed by the OS ( e.g. user appends | to the malicious data and then executes another OS command). Remember to use a positive approach when constructing escaping routinges. Example &lt;br /&gt;
&lt;br /&gt;
Further Reading: [http://www.owasp.org/index.php/Reviewing_Code_for_OS_Injection Reviewing Code for OS Injection]&lt;br /&gt;
&lt;br /&gt;
== Preventing XML Injection ==&lt;br /&gt;
* In addition to the existing input validation, define a positive approach which escapes/encodes characters that can be interpreted as xml. At a minimum this includes the following: &amp;lt; &amp;gt; &amp;quot; ' &amp;amp; &lt;br /&gt;
* If accepting raw XML then more robust validation is necessary. This can be complex. Please contact the infrastructure security team for additional discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Secure Transmission / Network Layer security =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Benefits&lt;br /&gt;
&lt;br /&gt;
= File Uploads = &lt;br /&gt;
&lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use input validation to ensure the uploaded filename uses an expected extension type &lt;br /&gt;
*Ensure the uploaded file is not larger than a defined maximum file size&lt;br /&gt;
&lt;br /&gt;
==Upload Storage==&lt;br /&gt;
*Use a new filename to store the file on the OS. Do not use any user controlled text for this filename or for the temporary filename. &lt;br /&gt;
*Store all user uploaded files on a separate domain (e.g. mozillafiles.net vs mozilla.org). Archives should be analyzed for malicious content (anti-malware, static analysis, etc)&lt;br /&gt;
&lt;br /&gt;
==Public Serving of Uploaded Content==&lt;br /&gt;
*Ensure the image is served with the correct content-type (e.g. image/jpeg, application/x-xpinstall)&lt;br /&gt;
&lt;br /&gt;
==Beware of &amp;quot;special&amp;quot; files==&lt;br /&gt;
* The upload feature should be using a whitelist approach to only allow specific file types and extensions. However, it is important to be aware of the following file types that, if allowed, could result in security vulnerabilities.&lt;br /&gt;
*&amp;quot;crossdomain.xml&amp;quot; allows cross-domain data loading in Flash, Java and Silverlight.  If permitted on sites with authentication this can permit cross-domain data theft and CSRF attacks.  Note this can get pretty complicated depending on the specific plugin version in question, so its best to just prohibit files named &amp;quot;crossdomain.xml&amp;quot; or &amp;quot;clientaccesspolicy.xml&amp;quot;.&lt;br /&gt;
*&amp;quot;.htaccess&amp;quot; and &amp;quot;.htpasswd&amp;quot; provides server configuration options on a per-directory basis, and should not be permitted.  See http://en.wikipedia.org/wiki/Htaccess&lt;br /&gt;
&lt;br /&gt;
==Upload Verification==&lt;br /&gt;
*Use image rewriting libraries to verify the image is valid and to strip away extraneous content. &lt;br /&gt;
*Set the extension of the stored image to be a valid image extension based on the detected content type of the image from image processing (e.g. do not just trust the header from the upload). &lt;br /&gt;
*Ensure the detected content type of the image is within a list of defined image types (jpg, png, etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Error Handling =&lt;br /&gt;
&lt;br /&gt;
Typical types of errors:&lt;br /&gt;
• The result of business logic conditions not being met.&lt;br /&gt;
• The result of the environment wherein the business logic resides fails.&lt;br /&gt;
• The result of upstream or downstream systems upon which the application depends fail.&lt;br /&gt;
• Technical hardware / physical failure.&lt;br /&gt;
&lt;br /&gt;
To address these errors:&lt;br /&gt;
&lt;br /&gt;
* Ensure that all method/function calls that return a value have proper error handling and return value checking&lt;br /&gt;
* Ensure that exceptions and error conditions are properly handled&lt;br /&gt;
* Ensure that no system errors can be returned to the user&lt;br /&gt;
* Ensure that the application fails in a secure manner&lt;br /&gt;
* Ensure resources are released if an error occurs&lt;br /&gt;
* Ensure that stack trace is not thrown to the user&lt;br /&gt;
* If the language in question has a finally method, use it. The finally method is always called. The finally method can be used to release resources referenced by the method that threw the exception. &lt;br /&gt;
This is very important. An example would be if a method gained a database connection from a pool of connections, &lt;br /&gt;
and an exception occurred without finally, the connection object shall not be returned to the pool for some time (until the timeout). &lt;br /&gt;
This can lead to pool exhaustion. The method finally() is called even if no exception is thrown.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Logging and Auditing =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Logging_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Cryptography =&lt;br /&gt;
&lt;br /&gt;
* All protocols and algorithms for authentication and secure communication should be well vetted by the cryptographic community.&lt;br /&gt;
* Ensure certificates are properly validated against the hostnames/users ie whom they are meant for.&lt;br /&gt;
* Avoid using wildcard certificates unless there is a business need for it &lt;br /&gt;
* Maintain a cryptographic standard to ensure that the developer community knows about the approved ciphersuits for network security protocols, algorithms, permitted use, cryptoperiods and Key Management&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Cookie Management =&lt;br /&gt;
&lt;br /&gt;
Please see https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Cookies&lt;br /&gt;
&lt;br /&gt;
= Secure Deployment =&lt;br /&gt;
&lt;br /&gt;
* Secure access to with authentication and authorisation to configuration files, directories, and resources on the host so that direct access to such artifacts is disallowed&lt;br /&gt;
* Use a “deny all” rule to deny access to resources on the hosts and then grant access on need basis&lt;br /&gt;
* In Apache HTTP server, ensure directories like WEB-INF and META-INF are protected. If permissions for a directory and subdirectories are specified in .htaccess file, ensure that it is protected using the “deny all” rule&lt;br /&gt;
* While using Struts framework, ensure that JSP files are not accessible directly by denying access to *.jsp files in web.xml&lt;br /&gt;
* Maintain a clean environment. remove files that contain source code but are not used by the application. &lt;br /&gt;
* Ensure production environment does not contain any source code / development tools and that the production &lt;br /&gt;
* Ensure environment contains only compiled code / executables. &lt;br /&gt;
* Remove test code / debug code (that might contain backdoors). &lt;br /&gt;
* Remove commented code and meta tags as they might contain sensitive data.&lt;br /&gt;
* If applicable, obfuscate your code to ensure that reverse engineering is avoided&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Unvalidated Redirects and Forwards Cheat Sheet =&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
= Common Vulnerabilities =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SQL Injection ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Scripting ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Cross Site Request Forgery ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
* Any state changing operation requires a secure random token (e.g CSRF token) to prevent against CSRF attacks&lt;br /&gt;
* Characteristics of a CSRF Token&lt;br /&gt;
** Unique per user &amp;amp; per user session&lt;br /&gt;
** Tied to a single user session&lt;br /&gt;
** Large random value&lt;br /&gt;
** Generated by a cryptographically secure random number generator &lt;br /&gt;
* The CSRF token is added as a hidden field for forms or within the URL if the state changing operation occurs via a GET&lt;br /&gt;
* The server rejects the requested action if the CSRF token fails validation &lt;br /&gt;
&lt;br /&gt;
== Preventing Malicious Site Framing (ClickJacking) ==&lt;br /&gt;
&lt;br /&gt;
Set the x-frame-options header for all responses containing HTML content. The possible values are &amp;quot;DENY&amp;quot; or &amp;quot;SAMEORIGIN&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
    DENY will block any site (regardless of domain) from framing the content.&lt;br /&gt;
    SAMEORIGIN will block all sites from framing the content, except sites within the same domain.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;DENY&amp;quot; setting is recommended unless a specific need has been identified for framing.&lt;br /&gt;
&lt;br /&gt;
== Security Misconfigurations ==&lt;br /&gt;
&lt;br /&gt;
* Diable all the services, ports, protocols and daemons that are not required.&lt;br /&gt;
* Change all the default and vendor supplied passwords&lt;br /&gt;
* Protect servers by grouping all similar functions into a VLAN&lt;br /&gt;
* White wash error messages such that no internal workings are revealed&lt;br /&gt;
* Prevent stack traces from leaving the container.&lt;br /&gt;
* Authorising access to the least amount of data/ least number of pages that is possible&lt;br /&gt;
&lt;br /&gt;
== Insecure Direct Object references ==&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet&lt;br /&gt;
&lt;br /&gt;
== Directory Listing ==&lt;br /&gt;
&lt;br /&gt;
* Do not enable Directory Listing on your server&lt;br /&gt;
&lt;br /&gt;
== Concurrancy and Race Conditions ==&lt;br /&gt;
&lt;br /&gt;
* Use a locking mechanism to lock shared resources&lt;br /&gt;
* Obtain a lock on shared resources before it is read&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Shruti kulkarni</name></author>	</entry>

	</feed>