<?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=ParanoidMike</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=ParanoidMike"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/ParanoidMike"/>
		<updated>2026-05-07T05:41:12Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Risk_Modeling&amp;diff=90378</id>
		<title>Threat Risk Modeling</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Risk_Modeling&amp;diff=90378"/>
				<updated>2010-09-29T19:56:21Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: added threat modeling category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
When you start a web application design, it is essential to apply threat risk modeling; otherwise you will squander resources, time, and money on useless controls that fail to focus on the real risks.&lt;br /&gt;
&lt;br /&gt;
The method used to assess risk is not nearly as important as actually performing a structured threat risk modeling. Microsoft notes that the single most important factor in their security improvement program was the corporate adoption of threat risk modeling.&lt;br /&gt;
&lt;br /&gt;
OWASP recommends Microsoft’s threat modeling process because it works well for addressing the unique challenges facing web application security and is simple to learn and adopt by designers, developers, code reviewers, and the quality assurance team.&lt;br /&gt;
&lt;br /&gt;
The following sections provide some overview information (or see Section 6.9, Further Reading, for additional resources).&lt;br /&gt;
&lt;br /&gt;
== Threat Risk Modeling ==&lt;br /&gt;
Threat risk modeling is an essential process for secure web application development. It allows organizations to determine the correct controls and to produce effective countermeasures within budget. For example, there is little point in spending $100,000 for fraud control for a system that has negligible fraud risk.&lt;br /&gt;
&lt;br /&gt;
== Performing threat risk modeling using the Microsoft Threat Modeling Process ==&lt;br /&gt;
The threat risk modeling process has five steps, enumerated below and shown graphically in Figure 1. They are:&lt;br /&gt;
# Identify Security Objectives&lt;br /&gt;
# Survey the Application&lt;br /&gt;
# Decompose it&lt;br /&gt;
# Identify Threats&lt;br /&gt;
# Identify Vulnerabilities&lt;br /&gt;
&lt;br /&gt;
[[Image:Threat_Model_Flow.gif|Figure 1: Threat Model Flow]]&lt;br /&gt;
&lt;br /&gt;
Let’s consider the steps in more detail.&lt;br /&gt;
&lt;br /&gt;
=== Identify Security Objectives ===&lt;br /&gt;
The business (or project management) leadership, in concert with the software development and quality assurance teams, all need to understand the security objectives. To facilitate this, start by breaking down the application’s security objectives into the following categories:&lt;br /&gt;
&lt;br /&gt;
* '''Identity:''' Does the application protect user identity from abuse? Are there adequate controls in place to ensure evidence of identity (as required for many banking applications?)&lt;br /&gt;
* '''Financial:''' Assess the level of risk the organization is prepared to absorb in remediation, as a potential financial loss. For example, forum software may have a lower estimated financial risk than an Internet banking application.&lt;br /&gt;
* '''Reputation:''' Quantify or estimate of the loss of reputation derived from the application being misused or successfully attacked.&lt;br /&gt;
* '''Privacy and Regulatory:''' To what extent will the application have to protect user data? Forum software by its nature is public, but a tax preparation application is subject to tax regulations and privacy legislation requirements in most countries.&lt;br /&gt;
* '''Availability Guarantees:''' Is the application required to be available per a '''''Service Level Agreement (SLA)''''' or similar guarantee? Is it a nationally protected infrastructure? To what level will the application have to be available? High availability techniques are significantly more expensive, so applying the correct controls up front will save a great deal of time, resources, and money.&lt;br /&gt;
&lt;br /&gt;
This is by no means an exhaustive list, but it gives an idea of some of the business risk decisions leading into selecting and building security controls.&lt;br /&gt;
&lt;br /&gt;
Other sources of risk guidance come from:&lt;br /&gt;
* Laws (such as privacy or finance laws)&lt;br /&gt;
* Regulations (such as banking or e-commerce regulations)&lt;br /&gt;
* Standards (such as ISO 17799)&lt;br /&gt;
* Legal Agreements (such as payment card industry standards or merchant agreements)&lt;br /&gt;
* Corporate Information Security Policy&lt;br /&gt;
&lt;br /&gt;
=== Application Overview ===&lt;br /&gt;
Once the security objectives have been defined, analyze the application design to identify the '''''components''''', '''''data flows''''', and '''''trust boundaries'''''.&lt;br /&gt;
&lt;br /&gt;
Do this by surveying the application’s architecture and design documentation. In particular, look for UML component diagrams. Such high level component diagrams are generally sufficient to understand how and why data flows to various places. For example, data movement across a trust boundary (such as from the Internet to the web tier, or from the business logic to the database server), needs to be carefully analyzed, whereas data that flows within the same trust level does not need as much scrutiny.&lt;br /&gt;
&lt;br /&gt;
=== Decompose Application ===&lt;br /&gt;
Once the application architecture is understood then decompose it further, to identify the features and modules with a security impact that need to be evaluated. For example, when investigating the authentication module, it is necessary to understand how data enters the module, how the module validates and processes the data, where the data flows, how the data is stored, and what fundamental decisions and assumptions are made by the module.&lt;br /&gt;
&lt;br /&gt;
=== Identify Threats ===&lt;br /&gt;
It is impossible to write down unknown threats, but it is likewise unlikely that new malware will be created to exploit new vulnerabilities within custom systems. Therefore, concentrate on known risks, which can be easily demonstrated using tools or techniques from Bugtraq.&lt;br /&gt;
&lt;br /&gt;
Microsoft suggests two different approaches for writing up threats. One is a threat graph, as shown in Figure 2, and the other is a structured list. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Category:FIXME|Change 3rd orange box in graphic to &amp;quot;Authorization MAY fail&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Threat_Graph.gif|Figure 2: Threat Graph]]&lt;br /&gt;
&lt;br /&gt;
Typically, a threat graph imparts more information quickly but it takes longer to construct, while a structured list is easier to create but it will take longer for the threat impacts to become obvious.&lt;br /&gt;
&lt;br /&gt;
# Attacker may be able to read other user’s messages&lt;br /&gt;
# User may not have logged off on a shared PC&lt;br /&gt;
# Data validation may allow SQL injection&lt;br /&gt;
# Implement data validation&lt;br /&gt;
# Authorization may fail, allowing unauthorized access&lt;br /&gt;
# Implement authorization checks&lt;br /&gt;
# Browser cache may contain contents of message&lt;br /&gt;
# Implement anti-caching directive in HTTP headers&lt;br /&gt;
# If eavesdropping risk is high, use SSL&lt;br /&gt;
&lt;br /&gt;
Note that it takes a motivated attacker to exploit a threat; they generally want something from your application or to obviate controls. To understand the relevant threats, use the following categories to understand who might attack the application:&lt;br /&gt;
&lt;br /&gt;
* '''Accidental Discovery:''' An ordinary user stumbles across a functional mistake in your application, just using a web browser, and gains access to privileged information or functionality.&lt;br /&gt;
* '''Automated Malware:''' Programs or scripts, which are searching for known vulnerabilities, and then report them back to a central collection site.&lt;br /&gt;
* '''The Curious Attacker:''' a security researcher or ordinary user, who notices something wrong with the application, and decides to pursue further.&lt;br /&gt;
* '''Script Kiddies:''' Common renegades, seeking to compromise or deface applications for collateral gain, notoriety, or a political agenda, perhaps using the attack categories described in the ''OWASP Web Application Penetration Checklist.''&lt;br /&gt;
* '''The Motivated Attacker:''' Potentially, a disgruntled staff member with inside knowledge or a paid professional attacker.&lt;br /&gt;
* '''Organized Crime:''' Criminals seeking high stake payouts, such as cracking e-commerce or corporate banking applications, for financial gain.&lt;br /&gt;
&lt;br /&gt;
It is vital to understand the level of attacker you are defending against. For example, a motivated attacker, who understands your internal processes is often more dangerous than script kiddies.&lt;br /&gt;
&lt;br /&gt;
=== STRIDE ===&lt;br /&gt;
STRIDE is a classification scheme for characterizing known threats according to the kinds of exploit that are used (or motivation of the attacker). The STRIDE acronym is formed from the first letter of each of the following categories.&lt;br /&gt;
&lt;br /&gt;
'''''Spoofing Identity'''''&lt;br /&gt;
“Identity spoofing” is a key risk for applications that have many users but provide a single execution context at the application and database level. In particular, users should not be able to become any other user or assume the attributes of another user.&lt;br /&gt;
&lt;br /&gt;
'''''Tampering with Data'''''&lt;br /&gt;
Users can potentially change data delivered to them, return it, and thereby potentially manipulate client-side validation, GET and POST results, cookies, HTTP headers, and so forth. The application should not send data to the user, such as interest rates or periods, which are obtainable only from within the application itself. The application should also carefully check data received from the user and validate that it is sane and applicable before storing or using it.&lt;br /&gt;
&lt;br /&gt;
'''''Repudiation'''''&lt;br /&gt;
Users may dispute transactions if there is insufficient auditing or recordkeeping of their activity. For example, if a user says, “But I didn’t transfer any money to this external account!”, and you cannot track his/her activities through the application, then it is extremely likely that the transaction will have to be written off as a loss.&lt;br /&gt;
&lt;br /&gt;
Therefore, consider if the application requires non-repudiation controls, such as web access logs, audit trails at each tier, or the same user context from top to bottom. Preferably, the application should run with the user’s privileges, not more, but this may not be possible with many off-the-shelf application frameworks.&lt;br /&gt;
&lt;br /&gt;
'''''Information Disclosure'''''&lt;br /&gt;
Users are rightfully wary of submitting private details to a system. If it is possible for an attacker to publicly reveal user data at large, whether anonymously or as an authorized user, there will be an immediate loss of confidence and a substantial period of reputation loss. Therefore, applications must include strong controls to prevent user ID tampering and abuse, particularly if they use a single context to run the entire application. &lt;br /&gt;
&lt;br /&gt;
Also, consider if the user’s web browser may leak information. Some web browsers may ignore the no caching directives in HTTP headers or handle them incorrectly. In a corresponding fashion, every secure application has a responsibility to minimize the amount of information stored by the web browser, just in case it leaks or leaves information behind, which can be used by an attacker to learn details about the application, the user, or to potentially become that user.&lt;br /&gt;
&lt;br /&gt;
Finally, in implementing persistent values, keep in mind that the use of hidden fields is insecure by nature. Such storage should not be relied on to secure sensitive information or to provide adequate personal privacy safeguards.&lt;br /&gt;
&lt;br /&gt;
'''''Denial of Service'''''&lt;br /&gt;
Application designers should be aware that their applications may be subject to a denial of service attack. Therefore, the use of expensive resources such as large files, complex calculations, heavy-duty searches, or long queries should be reserved for authenticated and authorized users, and not available to anonymous users.&lt;br /&gt;
&lt;br /&gt;
For applications that do not have this luxury, every facet of the application should be engineered to perform as little work as possible, to use fast and few database queries, to avoid exposing large files or unique links per user, in order to prevent simple denial of service attacks.&lt;br /&gt;
&lt;br /&gt;
'''''Elevation of Privilege'''''&lt;br /&gt;
If an application provides distinct user and administrative roles, then it is vital to ensure that the user cannot elevate his/her role to a higher privilege one. In particular, simply not displaying privileged role links is insufficient. Instead, all actions should be gated through an authorization matrix, to ensure that only the permitted roles can access privileged functionality.&lt;br /&gt;
&lt;br /&gt;
=== DREAD ===&lt;br /&gt;
DREAD is a classification scheme for quantifying, comparing and prioritizing the amount of risk presented by each evaluated threat.  The DREAD acronym is formed from the first letter of each category below.&lt;br /&gt;
&lt;br /&gt;
DREAD modeling influences the thinking behind setting the risk rating, and is also used directly to sort the risks. The DREAD algorithm, shown below, is used to compute a risk value, which is an average of all five categories.&lt;br /&gt;
&lt;br /&gt;
'''Risk_DREAD''' = (&amp;lt;u&amp;gt;D&amp;lt;/u&amp;gt;AMAGE + &amp;lt;u&amp;gt;R&amp;lt;/u&amp;gt;EPRODUCIBILITY + &amp;lt;u&amp;gt;E&amp;lt;/u&amp;gt;XPLOITABILITY + &amp;lt;u&amp;gt;A&amp;lt;/u&amp;gt;FFECTED USERS + &amp;lt;u&amp;gt;D&amp;lt;/u&amp;gt;ISCOVERABILITY) / 5&lt;br /&gt;
&lt;br /&gt;
The calculation always produces a number between 0 and 10; the higher the number, the more serious the risk.&lt;br /&gt;
&lt;br /&gt;
Here are some examples of how to quantify the DREAD categories.&lt;br /&gt;
&lt;br /&gt;
'''''Damage Potential'''''&lt;br /&gt;
* If a threat exploit occurs, how much damage will be caused?&lt;br /&gt;
**0 = Nothing	&lt;br /&gt;
**5 = Individual user data is compromised or affected.	&lt;br /&gt;
**10 = Complete system or data destruction&lt;br /&gt;
&lt;br /&gt;
'''''Reproducibility'''''&lt;br /&gt;
* How easy is it to reproduce the threat exploit?&lt;br /&gt;
**0 = Very hard or impossible, even for administrators of the application.&lt;br /&gt;
**5 = One or two steps required, may need to be an authorized user.	&lt;br /&gt;
**10 = Just a web browser and the address bar is sufficient, without authentication.&lt;br /&gt;
&lt;br /&gt;
'''''Exploitability'''''&lt;br /&gt;
* What is needed to exploit this threat?&lt;br /&gt;
**0 = Advanced programming and networking knowledge, with custom or advanced attack tools.	&lt;br /&gt;
**5 = Malware exists on the Internet, or an exploit is easily performed, using available attack tools.	&lt;br /&gt;
**10 = Just a web browser&lt;br /&gt;
&lt;br /&gt;
'''''Affected Users'''''&lt;br /&gt;
* How many users will be affected?&lt;br /&gt;
**0 = None	&lt;br /&gt;
**5 = Some users, but not all	&lt;br /&gt;
**10 = All users&lt;br /&gt;
&lt;br /&gt;
'''''Discoverability'''''&lt;br /&gt;
* How easy is it to discover this threat?&lt;br /&gt;
**0 = Very hard to impossible; requires source code or administrative access.&lt;br /&gt;
**5 = Can figure it out by guessing or by monitoring network traces.	&lt;br /&gt;
**9 = Details of faults like this are already in the public domain and can be easily discovered using a search engine.&lt;br /&gt;
**10 = The information is visible in the web browser address bar or in a form.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When performing a security review of an existing application, “Discoverability” will often be set to 10 by convention, as it is assumed the threat issues will be discovered.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Using DREAD can be difficult at first. It may be helpful to think of Damage Potential and Affected Users in terms of Impact, while thinking of Reproducibility, Exploitability, and Discoverability in terms of Probability. Using the Impact vs Probability approach (which follows best practices such as defined in NIST-800-30), I would alter the formula to make the Impact score equal to the Probability score. Otherwise the probability scores have more weight in the total.&lt;br /&gt;
&lt;br /&gt;
== Alternative Threat Modeling Systems ==&lt;br /&gt;
OWASP recognizes that the adoption of the Microsoft modeling process may not fit all organizations. If STRIDE and DREAD are unacceptable for some reason, we recommend that your organization “dry run” the other threat risk models discussed against an existing application or design. This will allow you to determine which approach works best for you, and to adopt the most appropriate threat modeling tools for your organization.&lt;br /&gt;
&lt;br /&gt;
'''In summary, performing threat modeling provides a far greater return than most any other control in this Guide. Therefore, make threat risk modeling an early priority in your application design process.'''&lt;br /&gt;
&lt;br /&gt;
=== Trike ===&lt;br /&gt;
Trike is a threat modeling framework with similarities to the Microsoft threat modeling processes. However, Trike differs because it uses a risk based approach with distinct implementation, threat, and risk models, instead of using the STRIDE/DREAD aggregated threat model (attacks, threats, and weaknesses).&lt;br /&gt;
From the Trike paper, Trike’s goals are:&lt;br /&gt;
* With assistance from the system stakeholders, to ensure that the risk this system entails to each asset is acceptable to all stakeholders.&lt;br /&gt;
* Be able to tell whether we have done this.&lt;br /&gt;
* Communicate what we’ve done and its effects to the stakeholders.&lt;br /&gt;
* Empower stakeholders to understand and reduce the risks to them and other stakeholders implied by their actions within their domains. &lt;br /&gt;
&lt;br /&gt;
For more information on Trike, please see Section 6.9, reference 8.&lt;br /&gt;
&lt;br /&gt;
=== AS/NZS 4360:2004 Risk Management ===&lt;br /&gt;
The Australian/New Zealand Standard AS/NZS 4360, first issued in 1999, and revised in 2004, is the world’s first formal standard for documenting and managing risk and is still one of the few formal standards for managing it.&lt;br /&gt;
The standard’s approach is simple (it’s only 28 pages long), flexible, and iterative. Furthermore, it does not lock organizations into a particular risk management methodology, provided the methodology fulfils the AS/NZS 4360 five steps. It also provides several sets of risk tables as examples, and allows organizations to freely develop and adopt their own.&lt;br /&gt;
&lt;br /&gt;
'''The five steps of the AS/NZS 4360 process are:'''&lt;br /&gt;
* '''Establish Context:''' Establish the risk domain, i.e., which assets/systems are important?&lt;br /&gt;
* '''Identify the Risks:''' Within the risk domain, what specific risks are apparent?&lt;br /&gt;
* '''Analyze the Risks:''' Look at the risks and determine if there are any supporting controls in place.&lt;br /&gt;
* '''Evaluate the Risks:''' Determine the residual risk.&lt;br /&gt;
* '''Treat the Risks:''' Describe the method to treat the risks so that risks selected by the business will be mitigated.&lt;br /&gt;
AS/NZS 4360 assumes that risk will be managed by an '''''operational risk group''''', and that the organization has adequate skills and risk management resources in house to identify, analyze, and treat the risks.&lt;br /&gt;
&lt;br /&gt;
'''The advantages of AS/NZS 4360:'''&lt;br /&gt;
* AS/NZS 4360 works well as a risk management methodology for organizations requiring Sarbanes-Oxley compliance.&lt;br /&gt;
* AS/NZS 4360 works well for organizations that prefer to manage risks in a traditional way, such as just using likelihood and consequence to determine an overall risk. &lt;br /&gt;
* AS/NZS 4360 is familiar to most risk managers worldwide, and your organization may already have implemented an AS/NZS 4360 compatible approach.&lt;br /&gt;
* You are an Australian organization, and may be required to use it if you are audited on a regular basis, or to justify why you aren’t using it. Luckily, the STRIDE/DREAD model discussed earlier is AS/NZS 4360 compatible.&lt;br /&gt;
&lt;br /&gt;
'''The limitations of AS/NZS 4360:'''&lt;br /&gt;
* The AS/NZS 4360 approach works best for business or systemic risks than for technical risks.&lt;br /&gt;
* AS/NZS 4360 does not define the methodology to perform a structured threat risk modeling exercise.&lt;br /&gt;
* As AS/NZS 4360 is a generic framework for managing risk, it does not provide any structured method to enumerate web application security risks. &lt;br /&gt;
Although AS/NZS 4360 may be used to rank risks for security reviews, the lack of structured methods of enumerating threats for web applications makes it less desirable than other methodologies described earlier.&lt;br /&gt;
&lt;br /&gt;
=== CVSS ===&lt;br /&gt;
The US Department of Homeland Security (DHS) established the NIAC Vulnerability Disclosure Working Group, which incorporates input from Cisco Systems, Symantec, ISS, Qualys, Microsoft, CERT/CC, and eBay. One of the group’s outputs is the '''''Common Vulnerability Scoring System (CVSS).'''''&lt;br /&gt;
&lt;br /&gt;
'''The advantages of CVSS:'''&lt;br /&gt;
* You have just received notification from a security researcher or other source that your product has vulnerability, and you wish to ensure that it has an accurate and normalized severity rating, so as to alert your customers to the appropriate level of action required when you release the patch.&lt;br /&gt;
* You are a security researcher, and have found several threat exploits within an application. You would like to use the CVSS ranking system to produce reliable risk rankings, to ensure that the ISV will take the exploits seriously as indicated by their rating.&lt;br /&gt;
* CVSS has been recommended by the working group for use by US Government departments. However, it is unclear if it will become policy or be widely adopted at the time of this writing.&lt;br /&gt;
[[Category:FIXME|The first two are more scenarios than advantages]]&lt;br /&gt;
&lt;br /&gt;
'''The limitations of CVSS:'''&lt;br /&gt;
* CVSS does not find or reduce the attack surface area (i.e. design flaws), or help enumerate risks within any arbitrary piece of code, as it is just a scoring system, not a modeling methodology.&lt;br /&gt;
* CVSS is more complex than STRIDE/DREAD, as it aims to calculate the risk of announced vulnerabilities as applied to deployed software and environmental factors.&lt;br /&gt;
* The CVSS risk ranking is complex – a spreadsheet is required to calculate the risk components as the assumption behind CVSS is that a specific vulnerability has been identified and announced, or a worm or Trojan has been released targeting a small number of attack vectors. &lt;br /&gt;
* The overhead of calculating the CVSS risk ranking is quite high if applied to a thorough code review, which may have 250 or more threats to rank.&lt;br /&gt;
&lt;br /&gt;
=== OCTAVE ===&lt;br /&gt;
OCTAVE is a heavyweight risk methodology approach originating from Carnegie Mellon University’s Software Engineering Institute (SEI) in collaboration with CERT. OCTAVE focuses on organizational risk, not technical risk.&lt;br /&gt;
OCTAVE comes in two versions: Full OCTAVE, for large organizations, and OCTAVE-S for small organizations, both of which have specific catalogs of practices, profiles, and worksheets to document the modeling outcomes.&lt;br /&gt;
&lt;br /&gt;
'''OCTAVE is popular with many sites and is useful when:'''&lt;br /&gt;
* Implementing an organizational culture of risk management and controls becomes necessary.&lt;br /&gt;
* Documenting and measuring business risk becomes timely.&lt;br /&gt;
* Documenting and measuring the overall IT security risk, particularly as it relates to the corporate IT risk management, becomes necessary.&lt;br /&gt;
* When documenting risks surrounding complete systems becomes necessary.&lt;br /&gt;
* To accommodate a fundamental reorganization, such as when an organization does not have a working risk methodology in place, and requires a robust risk management framework to be put in place.&lt;br /&gt;
&lt;br /&gt;
'''The limitations of OCTAVE are:''' &lt;br /&gt;
* OCTAVE is incompatible with AS/NZS 4360, as it mandates Likelihood = 1 (i.e., It assumes a threat will always occur) and this is inappropriate for many organizations. OCTAVE-S makes the inclusion of this probability optional, but this is not part of the more comprehensive OCTAVE standard.&lt;br /&gt;
* Consisting of 18 volumes, OCTAVE is large and complex, with many worksheets and practices to implement.&lt;br /&gt;
* It does not provide a list of “out of the box” practices for assessing and mitigating web application security risks.&lt;br /&gt;
&lt;br /&gt;
Because of these issues, OWASP does not anticipate that OCTAVE will be used at large by application designers or developers, because it fails to take threat risk modeling into consideration, which is useful during all stages of development, by all participants, to reduce the overall risk of an application becoming vulnerable to attack.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
In this chapter, we have touched on the basic principles of threat risk modeling, risk management, and web application security. Applications that leverage the underlying intent of these principles will be more secure than their counterparts, which will only be minimally compliant just by including specific controls.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* [http://www.microsoft.com/downloads/details.aspx?FamilyId=59888078-9DAF-4E96-B7D1-944703479451 Threat Analysis &amp;amp;amp; Modeling v2.1.2], © Microsoft Corporation, 2007.  [[category:FIXME |link not working, please replace]]&lt;br /&gt;
* [http://msdn.microsoft.com/library/ms978516.aspx Threat Modeling Web Applications], J.D. Meier, Alex Mackman, Blaine Wastell, © Microsoft Corporation, May 2005.&lt;br /&gt;
* [http://msdn.microsoft.com/library/ms994921.aspx Improving Web Application Security: Threats and Countermeasures], J.D. Meier, Alex Mackman, Michael Dunner, Srinath Vasireddy, Ray Escamilla and Anandha Murukan, © Microsoft Corporation, June 2003.&lt;br /&gt;
* [http://www.microsoft.com/downloads/details.aspx?FamilyID=62830f95-0e61-4f87-88a6-e7c663444ac1&amp;amp;displaylang=en Threat Modeling], Frank Swiderski and Window Snyder, Microsoft Press, June 2004, ISBN 0-7356-1991-3.&lt;br /&gt;
* Writing Secure Code, 2nd Edition, Howard and LeBlanc, (pp. 69 – 124), Microsoft Press, 2003, ISBN 0-7356-1722-8.&lt;br /&gt;
* [http://msdn.microsoft.com/library/ms954176.aspx The STRIDE Threat Model], © Microsoft Corporation, 2005.&lt;br /&gt;
* [http://blogs.msdn.com/david_leblanc/archive/2007/08/13/dreadful.aspx DREADful] - the DREAD system, © Microsoft Corporation, 2005.&lt;br /&gt;
* [http://dymaxion.org/trike/Trike_v1_Methodology_Document-draft.pdf A Conceptual Model for Threat Modeling Applications], Saitta, Larcom, and Michael Eddington, July 2005, http://dymaxion.org/trike/.&lt;br /&gt;
* [http://www.standards.co.nz/web-shop/?action=viewSearchProduct&amp;amp;mod=catalog&amp;amp;pid=4360:2004(AS|NZS) AS/NZS 4360:2004 Risk Management], Standards Australia and Standards New Zealand.&lt;br /&gt;
* [http://www.dhs.gov/interweb/assetlibrary/NIAC_CyberVulnerabilitiesPaper_Feb05.pdf CVSS], U.S. Department of Homeland Security library, February 2005.    [[category:FIXME |link not working, please replace]]&lt;br /&gt;
* [http://www.cert.org/octave/ OCTAVE], CERT library.&lt;br /&gt;
&lt;br /&gt;
== Appendix: Alternative open-source Risk Management tools ==&lt;br /&gt;
* [http://sourceforge.net/projects/osmr/ OSMR]&lt;br /&gt;
* [http://sourceforge.net/projects/marco/ MARCO]&lt;br /&gt;
* [http://sourceforge.net/projects/coras/ CORAS Risk Assessment Platform]&lt;br /&gt;
* [http://sourceforge.net/projects/ratiso17799/ ISO 17799 Risk Assessment Toolkit]&lt;br /&gt;
* [http://sourceforge.net/projects/easy-tra/ Easy Threat Risk Assessment]&lt;br /&gt;
* [http://sourceforge.net/projects/arms-17799/ ARMS]&lt;br /&gt;
* [http://sourceforge.net/projects/minaccia/ Minaccia]&lt;br /&gt;
* [http://sourceforge.net/projects/threatmind/ ThreatMind]&lt;br /&gt;
* [http://sourceforge.net/projects/osrmt/ Open Source Requirements Management Tool]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
[[Guide Table of Contents|Development Guide Table of Contents]]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP_Guide_Project]]&lt;br /&gt;
[[Category:Activity]]&lt;br /&gt;
[[Category:Externally Linked Page]]&lt;br /&gt;
[[Category:Threat_Modeling]]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Application_Threat_Modeling&amp;diff=90377</id>
		<title>Application Threat Modeling</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Application_Threat_Modeling&amp;diff=90377"/>
				<updated>2010-09-29T19:55:43Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: added threat modeling category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Threat modeling is an approach for analyzing the security of an application. It is a structured approach that enables you to identify, quantify, and address the security risks associated with an application. Threat modeling is not an approach to reviewing code, but it does complement the security code review process. The inclusion of threat modeling in the SDLC can help to ensure that applications are being developed with security built-in from the very beginning. This, combined with the documentation produced as part of the threat modeling process, can give the reviewer a greater understanding of the system. This allows the reviewer to see where the entry points to the application are and the associated threats with each entry point. The concept of threat modeling is not new but there has been a clear mindset change in recent years. Modern threat modeling looks at a system from a potential attacker's perspective, as opposed to a defender's viewpoint. Microsoft have been strong advocates of the process over the past number of years. They have made threat modeling a core component of their SDLC, which they claim to be one of the reasons for the increased security of their products in recent years. &lt;br /&gt;
&lt;br /&gt;
When source code analysis is performed outside the SDLC, such as on existing applications, the results of the threat modeling help in reducing the complexity of the source code analysis by promoting an in-depth first approach vs. breadth first approach. Instead of reviewing all source code with equal focus, you can prioritize the security code review of components whose threat modeling has ranked with high risk threats. &lt;br /&gt;
&lt;br /&gt;
The threat modeling process can be decomposed into 3 high level steps:&lt;br /&gt;
&lt;br /&gt;
'''Step 1:''' Decompose the Application. &lt;br /&gt;
The first step in the threat modeling process is concerned with gaining an understanding of the application and how it interacts with external entities. This involves creating use-cases to understand how the application is used, identifying entry points to see where a potential attacker could interact with the application, identifying assets i.e. items/areas that the attacker would be interested in, and identifying trust levels which represent the access rights that the application will grant to external entities. This information is documented in the Threat Model document and it is also used to produce data flow diagrams (DFDs) for the application. The DFDs show the different paths through the system, highlighting the privilege boundaries. &lt;br /&gt;
&lt;br /&gt;
'''Step 2:''' Determine and rank threats.&lt;br /&gt;
Critical to the identification of threats is using a threat categorization methodology. A threat categorization such as STRIDE can be used, or the Application Security Frame (ASF) that defines threat categories such as Auditing &amp;amp; Logging, Authentication, Authorization, Configuration Management, Data Protection in Storage and Transit, Data Validation, Exception Management. The goal of the threat categorization is to help identify threats both from the attacker (STRIDE) and the defensive perspective (ASF). DFDs produced in step 1 help to identify the potential threat targets from the attacker's perspective, such as data sources, processes, data flows, and interactions with users. These threats can be identified further as the roots for threat trees; there is one tree for each threat goal. From the defensive perspective, ASF categorization helps to identify the threats as weaknesses of security controls for such threats. Common threat-lists with examples can help in the identification of such threats. Use and abuse cases can illustrate how existing protective measures could be bypassed, or where a lack of such protection exists. The determination of the security risk for each threat can be determined using a value-based risk model such as DREAD or a less subjective qualitative risk model based upon general risk factors (e.g. likelihood and impact).&lt;br /&gt;
&lt;br /&gt;
'''Step 3:''' Determine countermeasures and mitigation.&lt;br /&gt;
A lack of protection against a threat might indicate a vulnerability whose risk exposure could be mitigated with the implementation of a countermeasure. Such countermeasures can be identified using threat-countermeasure mapping lists. Once a risk ranking is assigned to the threats, it is possible to sort threats from the highest to the lowest risk, and prioritize the mitigation effort, such as by responding to such threats by applying the identified countermeasures. The risk mitigation strategy might involve evaluating these threats from the business impact that they pose and reducing  the risk. Other options might include taking the risk, assuming the business impact is acceptable because of compensating controls, informing the user of the threat, removing the risk posed by the threat completely, or the least preferable option, that is, to do nothing. &lt;br /&gt;
&lt;br /&gt;
Each of the above steps are documented as they are carried out. The resulting document is the threat model for the application. This guide will use an example to help explain the concepts behind threat modeling. The same example will be used throughout each of the 3 steps as a learning aid. The example that will be used is a college library website. At the end of the guide we will have produced the threat model for the college library website. Each of the steps in the threat modeling process are described in detail below.&lt;br /&gt;
&lt;br /&gt;
== Decompose the Application ==&lt;br /&gt;
The goal of this step is to gain an understanding of the application and how it interacts with external entities. This goal is achieved by information gathering and documentation. The information gathering process is carried out using a clearly defined structure, which ensures the correct information is collected. This structure also defines how the information should be documented to produce the Threat Model. &lt;br /&gt;
&lt;br /&gt;
==Threat Model Information==&lt;br /&gt;
The first item in the threat model is the information relating to the threat model. &lt;br /&gt;
This must include the the following:&lt;br /&gt;
&lt;br /&gt;
# '''Application Name''' - The name of the application.&lt;br /&gt;
# '''Application Version''' - The version of the application.&lt;br /&gt;
# '''Description''' - A high level description of the application.&lt;br /&gt;
# '''Document Owner''' - The owner of the threat modeling document. &lt;br /&gt;
# '''Participants''' - The participants involved in the threat modeling process for this application.&lt;br /&gt;
# '''Reviewer''' - The reviewer(s) of the threat model.&amp;lt;br/&amp;gt;&lt;br /&gt;
Example:&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Category:FIXME|the list above includes an Application name, but the example does not have one]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;Threat Model Information&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th align=&amp;quot;left&amp;quot;&amp;gt;Application Version:&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th align=&amp;quot;left&amp;quot;&amp;gt; Description:&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The college library website is the first implementation of a website to provide librarians and library patrons (students and college staff) with online services. &lt;br /&gt;
As this is the first implementation of the website, the functionality will be limited. There will be three users of the application: &amp;lt;br/&amp;gt;&lt;br /&gt;
1. Students&amp;lt;br/&amp;gt;&lt;br /&gt;
2. Staff&amp;lt;br/&amp;gt;&lt;br /&gt;
3. Librarians&amp;lt;br/&amp;gt;&lt;br /&gt;
Staff and students will be able to log in and search for books, and staff members can request books. Librarians will be able to log in, add books, add users, and search for books.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th align=&amp;quot;left&amp;quot;&amp;gt;Document Owner:&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;David Lowry&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th align=&amp;quot;left&amp;quot;&amp;gt;Participants:&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;David Rook&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th align=&amp;quot;left&amp;quot;&amp;gt;Reviewer:&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Eoin Keary&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External Dependencies==&lt;br /&gt;
External dependencies are items external to the code of the application that may pose a threat to the application. These items are typically still within the control of the organization, but possibly not within the control of the development team. The first area to look at when investigating external dependencies is how the application will be deployed in a production environment, and what are the requirements surrounding this. This involves looking at how the application is or is not intended to be run. For example if the application is expected to be run on a server that has been hardened to the organization's hardening standard and it is expected to sit behind a firewall, then this information should be documented in the external dependencies section. External dependencies should be documented as follows:&lt;br /&gt;
&lt;br /&gt;
# '''ID''' - A unique ID assigned to the external dependency.&lt;br /&gt;
# '''Description''' - A textual description of the external dependency.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;External Dependencies&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The college library website will run on a Linux server running Apache.  This server will be hardened as per the college's server hardening standard. This includes the application of the latest operating system and application security patches.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The database server will be MySQL and it will run on a Linux server. This server will be hardened as per the college's server hardening standard. This will include the application of the lastest operating system and application security patches.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The connection between the Web Server and the database server will be over a private network.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The Web Server is behind a firewall and the only communication available is TLS.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Entry Points==&lt;br /&gt;
Entry points define the interfaces through which potential attackers can interact with the application or supply it with data. In order for a potential attacker to attack an application, entry points must exist. Entry points in an application can be layered, for example each web page in a web application may contain multiple entry points. Entry points should be documented as follows: &lt;br /&gt;
&lt;br /&gt;
#  '''ID''' - A unique ID assigned to the entry point. This will be used to cross reference the entry point with any threats or vulnerabilities that are identified. In the case of layer entry points, a major.minor notation should be used.&lt;br /&gt;
# '''Name''' - A descriptive name identifying the entry point and its purpose.&lt;br /&gt;
# '''Description''' - A textual description detailing the interaction or processing that occurs at the entry point.&lt;br /&gt;
# '''Trust Levels''' - The level of access required at the entry point is documented here. These will be cross referenced with the trusts levels defined later in the document.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;Entry Points&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;5%&amp;quot;&amp;gt;ID&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;45%&amp;quot;&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;25%&amp;quot;&amp;gt;Trust Levels&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;HTTPS Port&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The college library website will be only be accessable via TLS. All pages within the college library website are layered on this entry point.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;(1) Anonymous Web User&amp;lt;br/&amp;gt;&lt;br /&gt;
(2) User with Valid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(3) User with Invalid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(4) Librarian&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Library Main Page&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The splash page for the college library website is the entry point for all users.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;(1) Anonymous Web User&amp;lt;br/&amp;gt;&lt;br /&gt;
(2) User with Valid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(3) User with Invalid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(4) Librarian&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Login Page&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Students, faculty members and librarians must log in to the college library website before they can carry out any of the use cases.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;(1) Anonymous Web User&amp;lt;br/&amp;gt;&lt;br /&gt;
(2) User with Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(3) User with Invalid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(4) Librarian&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.2.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Login Function&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The login function accepts user supplied credentials and compares them with those in the database.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(2) User with Valid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(3) User with Invalid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(4) Librarian&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Search Entry Page&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The page used to enter  a search query.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(2) User with Valid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(4) Librarian&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
The system must have something that the attacker is interested in; these items/areas of interest are defined as assets. Assets are essentially threat targets, i.e. they are the reason threats will exist. Assets can be both physical assets and abstract assets. For example, an asset of an application might be a list of clients and their personal information; this is a physical asset. An abstract asset might be the reputation of an organsation. Assets are documented in the threat model as follows: &lt;br /&gt;
&lt;br /&gt;
# '''ID''' - A unique ID is assigned to identify each asset. This will be used to cross reference the asset with any threats or vulnerabilities that are identified.&lt;br /&gt;
# '''Name''' - A descriptive name that clearly identifies the asset.&lt;br /&gt;
# '''Description''' - A textual description of what the asset is and why it needs to be protected.&lt;br /&gt;
# '''Trust Levels''' - The level of access required to access the entry point is documented here. These will be cross referenced with the trust levels defined in the next step.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;Assets&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;5%&amp;quot;&amp;gt;ID&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;55%&amp;quot;&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;25%&amp;quot;&amp;gt;Trust Levels&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Library Users and Librarian&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Assets relating to students, faculty members, and librarians.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Login Details&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The login credentials that a student or a faculty member will use to log into the College Library website.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(2) User with Valid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(4) Librarian &amp;lt;br/&amp;gt;&lt;br /&gt;
(5) Database Server Administrator &amp;lt;br/&amp;gt;&lt;br /&gt;
(7) Web Server User Process&amp;lt;br/&amp;gt;&lt;br /&gt;
(8) Database Read User&amp;lt;br/&amp;gt;&lt;br /&gt;
(9) Database Read/Write User&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Librarian Login Details&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The login credentials that a Librarian will use to log into the College Library website.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(4) Librarian &amp;lt;br/&amp;gt;&lt;br /&gt;
(5) Database Server Administrator &amp;lt;br/&amp;gt;&lt;br /&gt;
(7) Web Server User Process&amp;lt;br/&amp;gt;&lt;br /&gt;
(8) Database Read User&amp;lt;br/&amp;gt;&lt;br /&gt;
(9) Database Read/Write User&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Personal Data&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The College Library website will store personal information relating to the students, faculty members, and librarians.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(4) Librarian &amp;lt;br/&amp;gt;&lt;br /&gt;
(5) Database Server Administrator &amp;lt;br/&amp;gt;&lt;br /&gt;
(6) Website Administrator &amp;lt;br/&amp;gt;&lt;br /&gt;
(7) Web Server User Process&amp;lt;br/&amp;gt;&lt;br /&gt;
(8) Database Read User&amp;lt;br/&amp;gt;&lt;br /&gt;
(9) Database Read/Write User&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;System&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Assets relating to the underlying system.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Availability of College Library Website&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The College Library website should be available 24 hours a day and can be accessed by all students, college faculty members, and librarians.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(5) Database Server Administrator &amp;lt;br/&amp;gt;&lt;br /&gt;
(6) Website Administrator &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ability to Execute Code as a Web Server User&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This is the ability to execute source code on the web server as a web server user.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(6) Website Administrator &amp;lt;br/&amp;gt;&lt;br /&gt;
(7) Web Server User Process &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ability to Execute SQL as a Database Read User&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This is the ability to execute SQL select queries on the database, and thus retrieve any information stored within the College Library database.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(5) Database Server Administrator&amp;lt;br/&amp;gt;&lt;br /&gt;
(8) Database Read User&amp;lt;br/&amp;gt;&lt;br /&gt;
(9) Database Read/Write User&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ability to Execute SQL as a Database Read/Write User&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This is the ability to execute SQL. Select, insert, and update queries on the database and thus have read and write access to any information stored within the College Library database.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(5) Database Server Administrator&amp;lt;br/&amp;gt;&lt;br /&gt;
(9) Database Read/Write User&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Website&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Assets relating to the College Library website.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Login Session&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This is the login session of a user to the College Library website. This user could be a student, a member of the college faculty, or a Librarian.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(2) User with Valid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(4) Librarian&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Access to the Database Server&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Access to the database server allows you to administer the database, giving you full access to the database users and all data contained within the database.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(5) Database Server Administrator&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ability to Create Users&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The ability to create users would allow an individual to create new users on the system. These could be student users, faculty member users, and librarian users.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(4) Librarian&amp;lt;br/&amp;gt;&lt;br /&gt;
(6) Website Administrator&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Access to Audit Data&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The audit data shows all audit-able events that occurred within the College Library application by students, staff, and librarians.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(6) Website Administrator&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Trust Levels==&lt;br /&gt;
Trust levels represent the access rights that the application will grant to external entities. The trust levels are cross referenced with the entry points and assets. This allows us to define the access rights or privileges required at each entry point, and those required to interact with each asset. Trust levels are documented in the threat model as follows: &lt;br /&gt;
&lt;br /&gt;
# '''ID''' - A unique number is assigned to each trust level. This is used to cross reference the trust level with the entry points and assets.&lt;br /&gt;
# '''Name''' - A descriptive name that allows you to identify the external entities that have been granted this trust level.&lt;br /&gt;
# '''Description''' - A textual description of the trust level detailing the external entity who has been granted the trust level.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;Trust Levels&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;5%&amp;quot;&amp;gt;ID&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;25%&amp;quot;&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;70%&amp;quot;&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Anonymous Web User&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A user who has connected to the college library website but has not provided valid credentials.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User with Valid Login Credentials&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A user who has connected to the college library website and has logged in using valid login credentials.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User with Invalid Login Credentials&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A user who has connected to the college library website and is attempting to log in using invalid login credentials.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Librarian&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The librarian can create users on the library website and view their personal information.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Database Server Administrator&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The database server administrator has read and write access to the database that is used by the college library website.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Website Administrator&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The Website administrator can configure the college library website.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Web Server User Process&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This is the process/user that the web server executes code as and authenticates itself against the database server as.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Database Read User&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The database user account used to access the database for read access.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Database Read/Write User&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The database user account used to access the database for read and write access.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Data Flow Diagrams==&lt;br /&gt;
All of the information collected allows us to accurately model the application through the use of Data Flow Diagrams (DFDs). The DFDs will allow us to gain a better understanding of the application by providing a visual representation of how the application processes data. The focus of the DFDs is on how data moves through the application and what happens to the data as it moves. DFDs are hierarchical in structure, so they can be used to decompose the application into subsystems and lower-level subsystems. The high level DFD will allow us to clarify the scope of the application being modeled. The lower level iterations will allow us to focus on the specific processes involved when processing specific data. There are a number of symbols that are used in DFDs for threat modeling. These are described below:&lt;br /&gt;
&lt;br /&gt;
'''External Entity'''&amp;lt;br/&amp;gt;&lt;br /&gt;
The external entity shape is used to represent any entity outside the application that interacts with the application via an entry point.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:DFD_external_entity.gif]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Process'''&amp;lt;br/&amp;gt;&lt;br /&gt;
The process shape represents a task that handles data within the application. The task may process the data or perform an action based on the data.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:DFD_process.gif]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Multiple Process'''&amp;lt;br/&amp;gt;&lt;br /&gt;
The multiple process shape is used to present a collection of subprocesses. The multiple process can be broken down into its subprocesses in another DFD.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:DFD_multiple_process.gif]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Data Store'''&amp;lt;br/&amp;gt;&lt;br /&gt;
The data store shape is used to represent locations where data is stored. Data stores do not modify the data, they only store data.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:DFD_data_store.gif]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Data Flow'''&amp;lt;br/&amp;gt;&lt;br /&gt;
The data flow shape represents data movement within the application. The direction of the data movement is represented by the arrow.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:DFD_data_flow.gif]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Privilege Boundary'''&amp;lt;br/&amp;gt;&lt;br /&gt;
The privilege boundary shape is used to represent the change of privilege levels as the data flows through the application.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:DFD_privilge_boundary.gif]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
&amp;lt;br/&amp;gt; '''Data Flow Diagram for the College Library Website'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:Data flow1.jpg]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''User Login Data Flow Diagram for the College Library Website'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:Data flow2.jpg]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Determine and Rank Threats ==&lt;br /&gt;
===Threat Categorization===&lt;br /&gt;
The first step in the determination of threats is adopting a threat categorization. A threat categorization provides a set of threat categories with corresponding examples so that threats can be systematically identified in the application in a structured and repeatable manner. &lt;br /&gt;
&lt;br /&gt;
====STRIDE====&lt;br /&gt;
A threat categorization such as STRIDE is useful in the identification of threats by classifying attacker goals such as:&lt;br /&gt;
*Spoofing&lt;br /&gt;
*Tampering&lt;br /&gt;
*Repudiation&lt;br /&gt;
*Information Disclosure&lt;br /&gt;
*Denial of Service&lt;br /&gt;
*Elevation of Privilege.&lt;br /&gt;
&lt;br /&gt;
A threat list of generic threats organized in these categories with examples and the affected security controls is provided in the following table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;STRIDE Threat List&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Type&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Examples&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Security Control&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Spoofing&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Threat action aimed to illegally access and use another user's credentials, such as username and password.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Authentication&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tampering&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Threat action aimed to maliciously change/modify persistent data, such as persistent data in a database, and the alteration of data in transit between two computers over an open network, such as the Internet.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Integrity&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Repudiation&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Threat action aimed to perform illegal operations in a system that lacks the ability to trace the prohibited operations.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Non-Repudiation&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Information disclosure&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Threat action to read a file that one was not granted access to, or to read data in transit. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Confidentiality&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Denial of service&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Threat aimed to deny access to valid users, such as by making a web server temporarily unavailable or unusable. &lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Availability&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Elevation of privilege&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Threat aimed to gain privileged access to resources for gaining unauthorized access to information or to compromise a system.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Authorization&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Security Controls==&lt;br /&gt;
Once the basic threat agents and business impacts are understood, the review team should try to identify the set of controls that could prevent these threat agents from causing those impacts.  The primary focus of the code review should be to ensure that these security controls are in place, that they work properly, and that they are correctly invoked in all the necessary places. The checklist below can help to ensure that all the likely risks have been considered.&lt;br /&gt;
&lt;br /&gt;
'''Authentication:'''&lt;br /&gt;
*Ensure all internal and external connections (user and entity) go through an appropriate and adequate form of authentication. Be assured that this control cannot be bypassed. &lt;br /&gt;
*Ensure all pages enforce the requirement for authentication. &lt;br /&gt;
*Ensure that whenever authentication credentials or any other sensitive information is passed, only accept the information via the HTTP “POST” method and will not accept it via the HTTP “GET” method. &lt;br /&gt;
*Any page deemed by the business or the development team as being outside the scope of authentication should be reviewed in order to assess any possibility of security breach. &lt;br /&gt;
*Ensure that authentication credentials do not traverse the wire in clear text form. &lt;br /&gt;
*Ensure development/debug backdoors are not present in production code. &lt;br /&gt;
&lt;br /&gt;
'''Authorization: '''&lt;br /&gt;
*Ensure that there are authorization mechanisms in place. &lt;br /&gt;
*Ensure that the application has clearly defined the user types and the rights of said users. &lt;br /&gt;
*Ensure there is a least privilege stance in operation. &lt;br /&gt;
*Ensure that the Authorization mechanisms work properly, fail securely, and cannot be circumvented. &lt;br /&gt;
*Ensure that authorization is checked on every request. &lt;br /&gt;
*Ensure development/debug backdoors are not present in production code. &lt;br /&gt;
&lt;br /&gt;
'''Cookie Management: '''&lt;br /&gt;
*Ensure that sensitive information is not comprised. &lt;br /&gt;
*Ensure that unauthorized activities cannot take place via cookie manipulation. &lt;br /&gt;
*Ensure that proper encryption is in use. &lt;br /&gt;
*Ensure secure flag is set to prevent accidental transmission over “the wire” in a non-secure manner. &lt;br /&gt;
*Determine if all state transitions in the application code properly check for the cookies and enforce their use. &lt;br /&gt;
*Ensure the session data is being validated. &lt;br /&gt;
*Ensure cookies contain as little private information as possible. &lt;br /&gt;
*Ensure entire cookie is encrypted if sensitive data is persisted in the cookie. &lt;br /&gt;
*Define all cookies being used by the application, their name, and why they are needed. &lt;br /&gt;
&lt;br /&gt;
'''Data/Input Validation: '''&lt;br /&gt;
*Ensure that a DV mechanism is present. &lt;br /&gt;
*Ensure all input that can (and will) be modified by a malicious user such as HTTP headers, input fields, hidden fields, drop down lists, and other web components are properly validated. &lt;br /&gt;
*Ensure that the proper length checks on all input exist. &lt;br /&gt;
*Ensure that all fields, cookies, http headers/bodies, and form fields are validated. &lt;br /&gt;
*Ensure that the data is well formed and contains only known good chars if possible. &lt;br /&gt;
*Ensure that the data validation occurs on the server side. &lt;br /&gt;
*Examine where data validation occurs and if a centralized model or decentralized model is used. &lt;br /&gt;
*Ensure there are no backdoors in the data validation model. &lt;br /&gt;
*'''Golden Rule: All external input, no matter what it is, is examined and validated. '''&lt;br /&gt;
&lt;br /&gt;
'''Error Handling/Information leakage: '''&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;
&lt;br /&gt;
'''Logging/Auditing: '''&lt;br /&gt;
*Ensure that no sensitive information is logged in the event of an error. &lt;br /&gt;
*Ensure the payload being logged is of a defined maximum length and that the logging mechanism enforces that length. &lt;br /&gt;
*Ensure no sensitive data can be logged; e.g. cookies, HTTP “GET” method, authentication credentials. &lt;br /&gt;
*Examine if the application will audit the actions being taken by the application on behalf of the client (particularly data manipulation/Create, Update, Delete (CUD) operations). &lt;br /&gt;
*Ensure successful and unsuccessful authentication is logged. &lt;br /&gt;
*Ensure application errors are logged. &lt;br /&gt;
*Examine the application for debug logging with the view to logging of sensitive data. &lt;br /&gt;
&lt;br /&gt;
'''Cryptography: '''&lt;br /&gt;
*Ensure no sensitive data is transmitted in the clear, internally or externally. &lt;br /&gt;
*Ensure the application is implementing known good cryptographic methods. &lt;br /&gt;
&lt;br /&gt;
'''Secure Code Environment: '''&lt;br /&gt;
*Examine the file structure. Are any components that should not be directly accessible available to the user?&lt;br /&gt;
*Examine all memory allocations/de-allocations. &lt;br /&gt;
*Examine the application for dynamic SQL and determine if it is vulnerable to injection. &lt;br /&gt;
*Examine the application for “main()” executable functions and debug harnesses/backdoors.&lt;br /&gt;
*Search for commented out code, commented out test code, which may contain sensitive information. &lt;br /&gt;
*Ensure all logical decisions have a default clause. &lt;br /&gt;
*Ensure no development environment kit is contained on the build directories. &lt;br /&gt;
*Search for any calls to the underlying operating system or file open calls and examine the error possibilities. &lt;br /&gt;
&lt;br /&gt;
'''Session Management: '''&lt;br /&gt;
*Examine how and when a session is created for a user, unauthenticated and authenticated. &lt;br /&gt;
*Examine the session ID and verify if it is complex enough to fulfill requirements regarding strength. &lt;br /&gt;
*Examine how sessions are stored: e.g. in a database, in memory etc. &lt;br /&gt;
*Examine how the application tracks sessions. &lt;br /&gt;
*Determine the actions the application takes if an invalid session ID occurs. &lt;br /&gt;
*Examine session invalidation. &lt;br /&gt;
*Determine how multithreaded/multi-user session management is performed. &lt;br /&gt;
*Determine the session HTTP inactivity timeout. &lt;br /&gt;
*Determine how the log-out functionality functions.&lt;br /&gt;
&lt;br /&gt;
==Threat Analysis==&lt;br /&gt;
The prerequisite in the analysis of threats is the understanding of the generic definition of risk that is the probability that a threat agent will exploit a vulnerability to cause an impact to the application. From the perspective of risk management, threat modeling is the systematic and strategic approach for identifying and enumerating threats to an application environment with the objective of minimizing risk and the associated impacts. &lt;br /&gt;
&lt;br /&gt;
Threat analysis as such is the identification of the threats to the application, and involves the analysis of each aspect of the application functionality and architecture and design to identify and classify potential weaknesses that could lead to an exploit. &lt;br /&gt;
&lt;br /&gt;
In the first threat modeling step, we have modeled the system showing data flows, trust boundaries, process components, and entry and exit points. An example of such modeling is shown in the Example: Data Flow Diagram for the College Library Website. &lt;br /&gt;
&lt;br /&gt;
Data flows show how data flows logically through the end to end, and allows the identification of affected components through critical points (i.e. data entering or leaving the system, storage of data) and the flow of control through these components. Trust boundaries show any location where the level of trust changes. Process components show where data is processed, such as web servers, application servers, and database servers. Entry points show where data enters the system (i.e. input fields, methods) and exit points are where it leaves the system (i.e. dynamic output, methods), respectively. Entry and exit points define a trust boundary. &lt;br /&gt;
&lt;br /&gt;
Threat lists based on the STRIDE model are useful in the identification of threats with regards to the attacker goals. For example, if the threat scenario is attacking the login, would the attacker brute force the password to break the authentication? If the threat scenario is to try to elevate privileges to gain another user’s privileges, would the attacker try to perform forceful browsing? &lt;br /&gt;
&lt;br /&gt;
It is vital that all possible attack vectors should be evaluated from the attacker’s point of view. For this reason, it is also important to consider entry and exit points, since they could also allow the realization of certain kinds of threats. For example, the login page allows sending authentication credentials, and the input data accepted by an entry point has to validate for potential malicious input to exploit vulnerabilities such as SQL injection, cross site scripting, and buffer overflows. Additionally, the data flow passing through that point has to be used to determine the threats to the entry points to the next components along the flow. If the following components can be regarded critical (e.g. the hold sensitive data), that entry point can be regarded more critical as well. In an end to end data flow, for example, the input data (i.e. username and password) from a login page, passed on without validation,  could be exploited for a SQL injection attack to manipulate a query for breaking the authentication or to modify a table in the database. &lt;br /&gt;
&lt;br /&gt;
Exit points might serve as attack points to the client (e.g. XSS vulnerabilities) as well for the realization of information disclosure vulnerabilities. For example, in the case of exit points from components handling confidential data (e.g. data access components), exit points lacking security controls to protect the confidentiality and integrity can lead to disclosure of such confidential information to an unauthorized user. &lt;br /&gt;
&lt;br /&gt;
In many cases threats enabled by exit points are related to the threats of the corresponding entry point. In the login example, error messages returned to the user via the exit point might allow for entry point attacks, such as account harvesting (e.g. username not found), or SQL injection (e.g. SQL exception errors). &lt;br /&gt;
&lt;br /&gt;
From the defensive perspective, the identification of threats driven by security control categorization such as ASF, allows a threat analyst to focus on specific issues related to weaknesses (e.g. vulnerabilities) in security controls. Typically the process of threat identification involves going through iterative cycles where initially all the possible threats in the threat list that apply to each component are evaluated. &lt;br /&gt;
&lt;br /&gt;
At the next iteration, threats are further analyzed by exploring the attack paths, the root causes (e.g. vulnerabilities, depicted as orange blocks) for the threat to be exploited, and the necessary mitigation controls (e.g. countermeasures, depicted as green blocks). A threat tree as shown in figure 2 is useful to perform such threat analysis &lt;br /&gt;
&lt;br /&gt;
[[Image:Threat_Graph.gif|Figure 2: Threat Graph]]&lt;br /&gt;
&lt;br /&gt;
Once common threats, vulnerabilities, and attacks are assessed, a more focused threat analysis should take in consideration use and abuse cases. By thoroughly analyzing the use scenarios, weaknesses can be identified that could lead to the realization of a threat. Abuse cases should be identified as part of the security requirement engineering activity. These abuse cases can illustrate how existing protective measures could be bypassed, or where a lack of such protection exists. A use and misuse case graph for authentication is shown in figure below:&lt;br /&gt;
&lt;br /&gt;
[[Image:UseAndMisuseCase.jpg|640px|Figure 3: Use and Misuse Case]]&lt;br /&gt;
&lt;br /&gt;
Finally, it is possible to bring all of this together by determining the types of threat to each component of the decomposed system. This can be done by using a threat categorization such as STRIDE or ASF, the use of threat trees to determine how the threat can be exposed by a vulnerability, and use and misuse cases to further validate the lack of a countermeasure to mitigate the threat.&lt;br /&gt;
&lt;br /&gt;
To apply STRIDE to the data flow diagram items the following table can be used: &lt;br /&gt;
&lt;br /&gt;
TABLE&lt;br /&gt;
&lt;br /&gt;
==Ranking of Threats==&lt;br /&gt;
Threats can be ranked from the perspective of risk factors. By determining the risk factor posed by the various identified threats, it is possible to create a prioritized list of threats to support a risk mitigation strategy, such as deciding on which threats have to be mitigated first. Different risk factors can be used to determine which threats can be ranked as High, Medium, or Low risk. In general, threat risk models use different factors to model risks such as those shown in figure below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Riskfactors.JPG|Figure 3: Risk Model Factors]]&lt;br /&gt;
&lt;br /&gt;
==DREAD==&lt;br /&gt;
In the Microsoft DREAD threat-risk ranking model, the technical risk factors for impact are Damage and Affected Users, while the ease of exploitation factors are Reproducibility, Exploitability and Discoverability. This risk factorization allows the assignment of values to the different influencing factors of a threat. To determine the ranking of a threat, the threat analyst has to answer basic questions for each factor of risk, for example: &lt;br /&gt;
&lt;br /&gt;
*For Damage: How big would the damage be if the attack succeeded?&lt;br /&gt;
*For Reproducibility: How easy is it to reproduce an attack to work?&lt;br /&gt;
*For Exploitability: How much time, effort, and expertise is needed to exploit the threat?&lt;br /&gt;
*For Affected Users: If a threat were exploited, what percentage of users would be affected?&lt;br /&gt;
*For Discoverability: How easy is it for an attacker to discover this threat?&lt;br /&gt;
&lt;br /&gt;
By referring to the college library website it is possible to document sample threats releated to the use cases such as: &lt;br /&gt;
&lt;br /&gt;
'''Threat: Malicious user views confidential information of students, faculty members and librarians.'''&lt;br /&gt;
# '''Damage potential:''' Threat to reputation as well as financial and legal liability:8&lt;br /&gt;
# '''Reproducibility:'''  Fully reproducible:10&lt;br /&gt;
# '''Exploitability:'''   Require to be on the same subnet or have compromised a router:7&lt;br /&gt;
# '''Affected users:'''   Affects all users:10&lt;br /&gt;
# '''Discoverability:'''  Can be found out easily:10&lt;br /&gt;
&lt;br /&gt;
Overall DREAD score: (8+10+7+10+10) / 5 = 9&lt;br /&gt;
&lt;br /&gt;
In this case having 9 on a 10 point scale is certainly an high risk threat&lt;br /&gt;
&lt;br /&gt;
==Generic Risk Model==&lt;br /&gt;
A more generic risk model takes into consideration the Likelihood (e.g. probability of an attack) and the Impact (e.g. damage potential): &lt;br /&gt;
&lt;br /&gt;
'''Risk = Likelihood x Impact'''&lt;br /&gt;
&lt;br /&gt;
The likelihood or probability is defined by the ease of exploitation, which mainly depends on the type of threat and the system characteristics, and by the possibility to realize a threat, which is determined by the existence of an appropriate countermeasure.  &lt;br /&gt;
&lt;br /&gt;
The following is a set of considerations for determining ease of exploitation: &lt;br /&gt;
# Can an attacker exploit this remotely? &lt;br /&gt;
# Does the attacker need to be authenticated?&lt;br /&gt;
# Can the exploit be automated?&lt;br /&gt;
&lt;br /&gt;
The impact mainly depends on the damage potential and the extent of the impact, such as the number of components that are affected by a threat. &lt;br /&gt;
&lt;br /&gt;
Examples to determine the damage potential are:&lt;br /&gt;
# Can an attacker completely take over and manipulate the system?  &lt;br /&gt;
# Can an attacker gain administration access to the system?&lt;br /&gt;
# Can an attacker crash the system? &lt;br /&gt;
# Can the attacker obtain access to sensitive information such as secrets, PII&lt;br /&gt;
&lt;br /&gt;
Examples to determine the number of components that are affected by a threat:&lt;br /&gt;
# How many data sources and systems can be impacted?&lt;br /&gt;
# How “deep” into the infrastructure can the threat agent go?&lt;br /&gt;
&lt;br /&gt;
These examples help in the calculation of the overall risk values by assigning qualitative values such as High, Medium and Low to Likelihood and Impact factors. In this case, using qualitative values, rather than numeric ones like in the case of the DREAD model, help avoid the ranking becoming overly subjective.&lt;br /&gt;
&lt;br /&gt;
==Countermeasure Identification==&lt;br /&gt;
The purpose of the countermeasure identification is to determine if there is some kind of protective measure (e.g. security control, policy measures) in place that can prevent each threat previosly identified via threat analysis from being realized. Vulnerabilities are then those threats that have no countermeasures. Since each of these threats has been categorized either with STRIDE or ASF, it is possible to find appropriate countermeasures in the application within the given category. &lt;br /&gt;
&lt;br /&gt;
Provided below is a brief and limited checklist which is by no means an exhaustive list for identifying countermeasures for specific threats. &lt;br /&gt;
 &lt;br /&gt;
Example of countermeasures for ASF threat types are included in the following table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;ASF Threat &amp;amp; Countermeasures List&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Threat Type&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Countermeasure&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Authentication&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Credentials and authentication tokens are protected with encryption in storage and transit&lt;br /&gt;
#Protocols are resistant to brute force, dictionary, and replay attacks&lt;br /&gt;
#Strong password policies are enforced&lt;br /&gt;
#Trusted server authentication is used instead of SQL authentication&lt;br /&gt;
#Passwords are stored with salted hashes&lt;br /&gt;
#Password resets do not reveal password hints and valid usernames&lt;br /&gt;
#Account lockouts do not result in a denial of service attack&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Authorization&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Strong ACLs are used for enforcing authorized access to resources&lt;br /&gt;
#Role-based access controls are used to restrict access to specific operations&lt;br /&gt;
#The system follows the principle of least privilege for user and service accounts&lt;br /&gt;
#Privilege separation is correctly configured within the presentation, business and data access layers&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Configuration Management&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Least privileged processes are used and service accounts with no administration capability&lt;br /&gt;
#Auditing and logging of all administration activities is enabled&lt;br /&gt;
#Access to configuration files and administrator interfaces is restricted to administrators&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Data Protection in Storage and Transit&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Standard encryption algorithms and correct key sizes are being used&lt;br /&gt;
#Hashed message authentication codes (HMACs) are used to protect data integrity&lt;br /&gt;
#Secrets (e.g. keys, confidential data ) are cryptographically protected both in transport and in storage&lt;br /&gt;
#Built-in secure storage is used for protecting keys&lt;br /&gt;
#No credentials and sensitive data are sent in clear text over the wire&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Data Validation / Parameter Validation&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Data type, format, length, and range checks are enforced&lt;br /&gt;
#All data sent from the client is validated&lt;br /&gt;
#No security decision is based upon parameters (e.g. URL parameters) that can be manipulated&lt;br /&gt;
#Input filtering via white list validation is used&lt;br /&gt;
#Output encoding is used&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Error Handling and Exception Management&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#All exceptions are handled in a structured manner&lt;br /&gt;
#Privileges are restored to the appropriate level in case of errors and exceptions&lt;br /&gt;
#Error messages are scrubbed so that no sensitive information is revealed to the attacker&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User and Session Management&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#No sensitive information is stored in clear text in the cookie&lt;br /&gt;
#The contents of the authentication cookies is encrypted&lt;br /&gt;
#Cookies are configured to expire&lt;br /&gt;
#Sessions are resistant to replay attacks&lt;br /&gt;
#Secure communication channels are used to protect authentication cookies&lt;br /&gt;
#User is forced to re-authenticate when performing critical functions&lt;br /&gt;
#Sessions are expired at logout&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Auditing and Logging&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Sensitive information (e.g. passwords, PII) is not logged&lt;br /&gt;
#Access controls (e.g. ACLs) are enforced on log files to prevent un-authorized access&lt;br /&gt;
#Integrity controls (e.g. signatures) are enforced on log files to provide non-repudiation&lt;br /&gt;
#Log files provide for audit trail for sensitive operations and logging of key events&lt;br /&gt;
#Auditing and logging is enabled across the tiers on multiple servers&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using STRIDE, the following threat-mitigation table can be used to identify techniques that can be employed to mitigate the threats.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;STRIDE Threat &amp;amp; Mitigation Techniques List&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Threat Type&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Mitigation Techniques&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Spoofing Identity&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Appropriate authentication&lt;br /&gt;
#Protect secret data&lt;br /&gt;
#Don't store secrets&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tampering with data&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Appropriate authorization&lt;br /&gt;
#Hashes&lt;br /&gt;
#MACs&lt;br /&gt;
#Digital signatures&lt;br /&gt;
#Tamper resistant protocols&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Repudiation&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Digital signatures&lt;br /&gt;
#Timestamps&lt;br /&gt;
#Audit trails&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Information Disclosure&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Authorization&lt;br /&gt;
#Privacy-enhanced protocols&lt;br /&gt;
#Encryption&lt;br /&gt;
#Protect secrets&lt;br /&gt;
#Don't store secrets&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Denial of Service&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Appropriate authentication&lt;br /&gt;
#Appropriate authorization&lt;br /&gt;
#Filtering&lt;br /&gt;
#Throttling&lt;br /&gt;
#Quality of service&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Elevation of privilege&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Run with least privilege&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once threats and corresponding countermeasures are identified it is possible to derive a threat profile with the following criteria:&lt;br /&gt;
&lt;br /&gt;
# '''Non mitigated threats:''' Threats which have no countermeasures and represent vulnerabilities that can be fully exploited and cause an impact &lt;br /&gt;
# '''Partially mitigated threats:''' Threats partially mitigated by one or more countermeasures which represent vulnerabilities that can only partially be exploited and cause a limited impact &lt;br /&gt;
# '''Fully mitigated threats:''' These threats have appropriate countermeasures in place and do not expose vulnerability and cause impact&lt;br /&gt;
&lt;br /&gt;
===Mitigation Strategies===&lt;br /&gt;
The objective of risk management is to reduce the impact that the exploitation of a threat can have to the application. This can be done by responding to a theat with a risk mitigation strategy. In general there are five options to mitigate threats &lt;br /&gt;
# '''Do nothing:''' for example, hoping for the best&lt;br /&gt;
# '''Inform about the risk:''' for example, warning user population about the risk&lt;br /&gt;
# '''Mitigate the risk:''' for example, by putting countermeasures in place&lt;br /&gt;
# '''Accept the risk:''' for example, after evaluating the impact of the exploitation (business impact)&lt;br /&gt;
# '''Transfer the risk:''' for example, through contractual agreements and insurance&lt;br /&gt;
&lt;br /&gt;
The decision of which strategy is most appropriate depends on the impact an exploitation of a threat can have, the likelihood of its occurrence, and the costs for transferring (i.e. costs for insurance) or avoiding (i.e. costs or losses due redesign) it. That is, such decision is based on the risk a threat poses to the system. Therefore, the chosen strategy does not mitigate the threat itself but the risk it poses to the system. Ultimately the overall risk has to take into account the business impact, since this is a critical factor for the business risk management strategy. One strategy could be to fix only the vulnerabilities for which the cost to fix is less than the potential business impact derived by the exploitation of the vulnerability. Another strategy could be to accept the risk when the loss of some security controls (e.g. Confidentiality, Integrity, and Availability) implies a small degradation of the service, and not a loss of a critical business function. In some cases, transfer of the risk to another service provider might also be an option. &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Code Review Project]]&lt;br /&gt;
[[Category:Threat_Modeling]]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ASP.NET_POET_Vulnerability&amp;diff=89632</id>
		<title>ASP.NET POET Vulnerability</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ASP.NET_POET_Vulnerability&amp;diff=89632"/>
				<updated>2010-09-20T21:45:35Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Added introductory sentences as a first step towards Dinis' recommended &amp;quot;good/objective description of the problem, good technical desciption of the problem and tons of references&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__ &lt;br /&gt;
This page contains details about the ASP.NET POET vulnerability disclosed on 2010-09-17. This vulnerability exists in all versions of ASP.NET (all  versions released through 2010-09-18).  As of 2010-09-20, there is no fix available to resolve the vulnerability; in the meantime, Microsoft strongly urges all ASP.NET deployments [http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx| perform the recommended workaround] to mitigate the vulnerability in the short-term.&lt;br /&gt;
&lt;br /&gt;
===Advisory===&lt;br /&gt;
* Microsoft Security Advisory (2416728) : http://www.microsoft.com/technet/security/advisory/2416728.mspx&lt;br /&gt;
&lt;br /&gt;
=== Fixes (via web.config change)===&lt;br /&gt;
* Important: ASP.NET Security Vulnerability  (ScottGu's blog) http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx&lt;br /&gt;
* DotNetNuke ASP.NET Security Vulnerability Fix: http://www.subodh.com/Blog/PostID/116/DotNetNuke-ASP-NET-Security-Vulnerability-Fix&lt;br /&gt;
&lt;br /&gt;
===Blogs, News, Articles===&lt;br /&gt;
* Understanding the ASP.NET Vulnerability: http://blogs.technet.com/b/srd/archive/2010/09/17/understanding-the-asp-net-vulnerability.aspx&lt;br /&gt;
* ASP.NET POET Vulnerability - What Else Can I Do?  http://pentonizer.com/general-programming/aspnet-poet-vulnerability-what-else-can-i-do/&lt;br /&gt;
* Automated Padding Oracle Attacks with PadBuster http://www.gdssecurity.com/l/b/2010/09/14/automated-padding-oracle-attacks-with-padbuster/&lt;br /&gt;
* Microsoft investigating ASP.NET vulnerabilities - http://www.thetechherald.com/article.php/201038/6170/Microsoft-investigating-ASP-NET-vulnerabilities&lt;br /&gt;
* Security researchers 'destroy' Microsoft ASP.NET security http://www.theinquirer.net/inquirer/news/1732956/security-researchers-destroy-microsoft-aspnet-security&lt;br /&gt;
* Argentina joins Axis of Evil with zero day ASP.NET exploit http://www.techeye.net/security/argentina-joins-axis-of-evil-with-zero-day-asp-net-exploit&lt;br /&gt;
* Padding Oracle Exploit Tool http://netifera.com/research/&lt;br /&gt;
* Video demonstration of using POET tool to attack vulnerable ASP.NET deployment http://www.youtube.com/watch?v=yghiC_U2RaM&lt;br /&gt;
* Google Search: http://www.google.co.uk/search?q=ASP.NET+vulnerability&lt;br /&gt;
&lt;br /&gt;
=== discussion Threads===&lt;br /&gt;
* Security researchers 'destroy' Microsoft ASP.NET security  http://news.ycombinator.com/item?id=1701502&lt;br /&gt;
* Quite serious security hole in ASP.NET discovered: http://www.reddit.com/r/programming/comments/df72k/quite_serious_security_hole_in_aspnet_discovered&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP .NET Project]]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:Reflist&amp;diff=89631</id>
		<title>Template:Reflist</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:Reflist&amp;diff=89631"/>
				<updated>2010-09-20T21:35:17Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Attempting to implement Cite_web template to support ASP.NET POET Vulnerability page - depends on other templates.  Let's see how far down the stack of turtles this goes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;references-small {{#if: {{{colwidth|}}} | references-column-width | {{#iferror: {{#ifexpr: {{{1|1}}}&amp;gt;1 | references-column-count references-column-count-{{{1}}} }} }} }}&amp;quot; {{#if: {{{colwidth|}}}| style=&amp;quot;-moz-column-width:{{{colwidth}}}; column-width:{{{colwidth}}};&amp;quot; | {{#if: {{{1|}}}| style=&amp;quot;-moz-column-count:{{{1}}}; column-count:{{{1}}};&amp;quot; }} }}&amp;gt;&lt;br /&gt;
{{#tag:references|{{{refs|}}}|group={{{group|}}}}}&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:Citation/make_link&amp;diff=89630</id>
		<title>Template:Citation/make link</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:Citation/make_link&amp;diff=89630"/>
				<updated>2010-09-20T21:33:12Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Attempting to implement Cite_web template to support ASP.NET POET Vulnerability page - depends on other templates.  Let's see how far down the stack of turtles this goes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#if:{{{1|}}}&lt;br /&gt;
 |[{{{1}}} {{{2}}}]&lt;br /&gt;
 |{{{2}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&amp;lt;!--&lt;br /&gt;
  Code notes (here so that people /read/ it)&lt;br /&gt;
  1. Parameter #2 is always nonempty when called from {{Citation/core}}.&lt;br /&gt;
  2. It's up to {{Citation/core}} to stop italicized &amp;quot;'foo' &amp;amp; 'bar'&amp;quot; from becoming&lt;br /&gt;
     &amp;quot;'''foo' &amp;amp; 'bar'''&amp;quot;. Citation/core does this by having a &amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
     at both beginning and end of the call to this template. Since this is only&lt;br /&gt;
     needed once, it's more efficient to do it in {{Citation/core}} than here.&lt;br /&gt;
--&amp;gt;{{documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:Citation/core&amp;diff=89629</id>
		<title>Template:Citation/core</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:Citation/core&amp;diff=89629"/>
				<updated>2010-09-20T21:32:13Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Attempting to implement Cite_web template to support ASP.NET POET Vulnerability page - depends on other templates.  Let's see how far down the stack of turtles this goes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;citation {{{Citation class|{{{Citation type|}}}}}}&amp;quot;&lt;br /&gt;
{{&lt;br /&gt;
  #switch:{{{Ref|}}}&lt;br /&gt;
  ||none =&lt;br /&gt;
  |#default = id=&amp;quot;{{anchorencode:{{{Ref}}}}}&amp;quot;&lt;br /&gt;
  |harv = {{#if:{{{Surname1|}}}{{{EditorSurname1|}}}&lt;br /&gt;
    |id=&amp;quot;CITEREF{{anchorencode:{{#if:{{{Surname1|}}}&lt;br /&gt;
      |{{{Surname1}}}{{{Surname2|}}}{{{Surname3|}}}{{{Surname4|}}}&lt;br /&gt;
      |{{{EditorSurname1|}}}{{{EditorSurname2|}}}{{{EditorSurname3|}}}{{{EditorSurname4|}}}&lt;br /&gt;
    }}{{{Year|{{{Date|}}}}}}}}&amp;quot;&lt;br /&gt;
  }}&lt;br /&gt;
}}&amp;gt;{{&lt;br /&gt;
&amp;lt;!--============  Author or editor and date  ============--&amp;gt;&lt;br /&gt;
  #if:{{{Surname1|}}}&lt;br /&gt;
  |{{&lt;br /&gt;
     #if: {{{AuthorMask|}}}&lt;br /&gt;
     |{{&lt;br /&gt;
        #iferror: {{ #expr: 1*{{{AuthorMask}}} }}&lt;br /&gt;
        |{{{AuthorMask}}}&lt;br /&gt;
        |&amp;lt;del&amp;gt;{{loop|{{{AuthorMask}}}|2=&amp;amp;emsp;}}&amp;lt;/del&amp;gt;&lt;br /&gt;
      }}&lt;br /&gt;
     |{{&lt;br /&gt;
        #if: {{{Authorlink1|}}}&lt;br /&gt;
        |[[{{{Authorlink1}}} |{{{Surname1}}}{{&lt;br /&gt;
          #if: {{{Given1|}}}&lt;br /&gt;
          |{{{NameSep|,&amp;amp;#32;}}}{{{Given1}}}&lt;br /&gt;
         }}]]&lt;br /&gt;
        |{{{Surname1}}}{{&lt;br /&gt;
           #if: {{{Given1|}}}&lt;br /&gt;
           |{{{NameSep|,&amp;amp;#32;}}}{{{Given1}}}&lt;br /&gt;
         }}&lt;br /&gt;
      }}&lt;br /&gt;
   }}{{&lt;br /&gt;
     #if: {{{Surname2|}}}&lt;br /&gt;
     |{{#ifexpr:{{{Trunc|8}}}&amp;lt;2&lt;br /&gt;
       |&amp;amp;#32;''et al''.&lt;br /&gt;
       |{{&lt;br /&gt;
          #iferror: {{ #expr: 1*0.0{{{AuthorMask|}}} }}&lt;br /&gt;
          |&amp;amp;#32;&amp;lt;!-- then punctuation should be included in AuthorMask --&amp;gt;&lt;br /&gt;
          |{{&lt;br /&gt;
            #if: {{{Surname3|}}}&lt;br /&gt;
            |{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}&lt;br /&gt;
            |{{#if:{{{amp|}}}|&amp;amp;#32;&amp;amp;amp;&amp;amp;#32;|{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}}}&lt;br /&gt;
          }}&lt;br /&gt;
        }}{{&lt;br /&gt;
          #if: {{{Authorlink2|}}}&lt;br /&gt;
          |[[{{{Authorlink2}}} |{{{Surname2}}}{{&lt;br /&gt;
             #if: {{{Given2|}}}&lt;br /&gt;
             |{{{NameSep|,&amp;amp;#32;}}}{{{Given2}}}&lt;br /&gt;
           }}]]&lt;br /&gt;
          |{{{Surname2}}}{{&lt;br /&gt;
             #if: {{{Given2|}}}&lt;br /&gt;
             |{{{NameSep|,&amp;amp;#32;}}}{{{Given2}}}&lt;br /&gt;
           }}&lt;br /&gt;
        }}{{&lt;br /&gt;
          #if: {{{Surname3|}}}&lt;br /&gt;
          |{{#ifexpr:{{{Trunc|8}}}&amp;lt;3&lt;br /&gt;
            |&amp;amp;#32;''et al''.&lt;br /&gt;
            |{{&lt;br /&gt;
               #if: {{{Surname4|}}}&lt;br /&gt;
               |{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}&lt;br /&gt;
               |{{#if:{{{amp|}}}|&amp;amp;#32;&amp;amp;amp;&amp;amp;#32;|{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}}}&lt;br /&gt;
             }}{{&lt;br /&gt;
               #if: {{{Authorlink3|}}}&lt;br /&gt;
               |[[{{{Authorlink3}}} |{{{Surname3}}}{{&lt;br /&gt;
                  #if: {{{Given3|}}}&lt;br /&gt;
                  |{{{NameSep|,&amp;amp;#32;}}}{{{Given3}}}&lt;br /&gt;
                }}]]&lt;br /&gt;
               |{{{Surname3}}}{{&lt;br /&gt;
                  #if: {{{Given3|}}}&lt;br /&gt;
                  |{{{NameSep|,&amp;amp;#32;}}}{{{Given3}}}&lt;br /&gt;
                }}&lt;br /&gt;
             }}{{&lt;br /&gt;
               #if:{{{Surname4|}}}&lt;br /&gt;
               |{{#ifexpr:{{{Trunc|8}}}&amp;lt;4&lt;br /&gt;
                 |&amp;amp;#32;''et al''.&lt;br /&gt;
                 |{{&lt;br /&gt;
                    #if: {{{Surname5|}}}&lt;br /&gt;
                    |{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}&lt;br /&gt;
                    |{{#if:{{{amp|}}}|&amp;amp;#32;&amp;amp;amp;&amp;amp;#32;|{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}}}&lt;br /&gt;
                  }}{{&lt;br /&gt;
                    #if: {{{Authorlink4|}}}&lt;br /&gt;
                    |[[{{{Authorlink4}}} |{{{Surname4}}}{{&lt;br /&gt;
                       #if: {{{Given4|}}}&lt;br /&gt;
                       |{{{NameSep|,&amp;amp;#32;}}}{{{Given4}}}&lt;br /&gt;
                     }}]]&lt;br /&gt;
                    |{{{Surname4}}}{{&lt;br /&gt;
                       #if: {{{Given4|}}}&lt;br /&gt;
                       |{{{NameSep|,&amp;amp;#32;}}}{{{Given4}}}&lt;br /&gt;
                    }}&lt;br /&gt;
                  }}{{&lt;br /&gt;
                  #if:{{{Surname5|}}}&lt;br /&gt;
                  |{{#ifexpr:{{{Trunc|8}}}&amp;lt;5&lt;br /&gt;
                    |&amp;amp;#32;''et al''.&lt;br /&gt;
                    |{{&lt;br /&gt;
                     #if: {{{Surname6|}}}&lt;br /&gt;
                     |{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}&lt;br /&gt;
                     |{{#if:{{{amp|}}}|&amp;amp;#32;&amp;amp;amp;&amp;amp;#32;|{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}}}&lt;br /&gt;
                    }}{{&lt;br /&gt;
                     #if: {{{Authorlink5|}}}&lt;br /&gt;
                     |[[{{{Authorlink5}}} |{{{Surname5}}}{{&lt;br /&gt;
                        #if: {{{Given5|}}}&lt;br /&gt;
                        |{{{NameSep|,&amp;amp;#32;}}}{{{Given5}}}&lt;br /&gt;
                      }}]]&lt;br /&gt;
                     |{{{Surname5}}}{{&lt;br /&gt;
                        #if: {{{Given5|}}}&lt;br /&gt;
                        |{{{NameSep|,&amp;amp;#32;}}}{{{Given5}}}&lt;br /&gt;
                      }}&lt;br /&gt;
                   }}{{&lt;br /&gt;
                     #if:{{{Surname6|}}}&lt;br /&gt;
                     |{{#ifexpr:{{{Trunc|8}}}&amp;lt;6&lt;br /&gt;
                     |&amp;amp;#32;''et al''.&lt;br /&gt;
                      |{{&lt;br /&gt;
                        #if: {{{Surname7|}}}&lt;br /&gt;
                        |{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}&lt;br /&gt;
                        |{{#if:{{{amp|}}}|&amp;amp;#32;&amp;amp;amp;&amp;amp;#32;|{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}}}&lt;br /&gt;
                      }}{{&lt;br /&gt;
                        #if: {{{Authorlink6|}}}&lt;br /&gt;
                        |[[{{{Authorlink6}}} |{{{Surname6}}}{{&lt;br /&gt;
                           #if: {{{Given6|}}}&lt;br /&gt;
                           |{{{NameSep|,&amp;amp;#32;}}}{{{Given6}}}&lt;br /&gt;
                         }}]]&lt;br /&gt;
                        |{{{Surname6}}}{{&lt;br /&gt;
                           #if: {{{Given6|}}}&lt;br /&gt;
                           |{{{NameSep|,&amp;amp;#32;}}}{{{Given6}}}&lt;br /&gt;
                         }}&lt;br /&gt;
                      }}{{&lt;br /&gt;
                        #if:{{{Surname7|}}}&lt;br /&gt;
                         |{{#ifexpr:{{{Trunc|8}}}&amp;lt;7&lt;br /&gt;
                           |&amp;amp;#32;''et al''.&lt;br /&gt;
                        |{{&lt;br /&gt;
                           #if: {{{Surname8|}}}&lt;br /&gt;
                           |{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}&lt;br /&gt;
                           |{{#if:{{{amp|}}}|&amp;amp;#32;&amp;amp;amp;&amp;amp;#32;|{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}}}&lt;br /&gt;
                         }}{{&lt;br /&gt;
                           #if: {{{Authorlink7|}}}&lt;br /&gt;
                           |[[{{{Authorlink7}}} |{{{Surname7}}}{{&lt;br /&gt;
                              #if: {{{Given7|}}}&lt;br /&gt;
                              |{{{NameSep|,&amp;amp;#32;}}}{{{Given7}}}&lt;br /&gt;
                            }}]]&lt;br /&gt;
                           |{{{Surname7}}}{{&lt;br /&gt;
                              #if: {{{Given7|}}}&lt;br /&gt;
                              |{{{NameSep|,&amp;amp;#32;}}}{{{Given7}}}&lt;br /&gt;
                            }}&lt;br /&gt;
                                    }}{{&lt;br /&gt;
                                       #if:{{{Surname8|}}}&lt;br /&gt;
                                       |{{#ifexpr:{{{Trunc|8}}}&amp;lt;8&lt;br /&gt;
                                           |&amp;amp;#32;''et al''.&lt;br /&gt;
                                           |{{&lt;br /&gt;
                                              #if: {{{Surname9|}}}&lt;br /&gt;
                                              |{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}&lt;br /&gt;
                                              |{{#if:{{{amp|}}}|&amp;amp;#32;&amp;amp;amp;&amp;amp;#32;|{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}}}&lt;br /&gt;
                                            }}{{&lt;br /&gt;
                                              #if: {{{Authorlink8|}}}&lt;br /&gt;
                                              |[[{{{Authorlink8}}} |{{{Surname8}}}{{&lt;br /&gt;
                                                 #if: {{{Given8|}}}&lt;br /&gt;
                                                 |{{{NameSep|,&amp;amp;#32;}}}{{{Given8}}}&lt;br /&gt;
                                               }}]]&lt;br /&gt;
                                              |{{{Surname8}}}{{&lt;br /&gt;
                                                 #if: {{{Given8|}}}&lt;br /&gt;
                                                 |{{{NameSep|,&amp;amp;#32;}}}{{{Given8}}}&lt;br /&gt;
                                               }}&lt;br /&gt;
                                            }}{{&lt;br /&gt;
                                              #if:{{{Surname9|}}}&lt;br /&gt;
                                              |&amp;amp;#32;''et al''.&lt;br /&gt;
                                            }}&lt;br /&gt;
                                         }}&lt;br /&gt;
                                      }}&lt;br /&gt;
                                   }}&lt;br /&gt;
                                }}&lt;br /&gt;
                             }}&lt;br /&gt;
                          }}&lt;br /&gt;
                       }}&lt;br /&gt;
                     }}&lt;br /&gt;
                  }}&lt;br /&gt;
               }}&lt;br /&gt;
            }}&lt;br /&gt;
         }}&lt;br /&gt;
      }}&lt;br /&gt;
&lt;br /&gt;
   }}{{&lt;br /&gt;
     #if: {{{Coauthors|}}}&lt;br /&gt;
     |{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}{{{Coauthors|}}}|&lt;br /&gt;
   }}{{&lt;br /&gt;
     #if: {{{Date|}}}&lt;br /&gt;
     |&amp;amp;#32;({{{Date}}}){{&lt;br /&gt;
       #if:{{{YearNote|}}}&lt;br /&gt;
     |&amp;amp;#32;[{{{YearNote}}}]&lt;br /&gt;
     }}&lt;br /&gt;
   }}&lt;br /&gt;
  |{{&amp;lt;!-- ============== No author: display editors first == --&amp;gt;&lt;br /&gt;
     #if: {{{EditorSurname1|}}}&lt;br /&gt;
     |{{&lt;br /&gt;
        #if: {{{Editorlink1|}}}&lt;br /&gt;
        |[[{{{Editorlink1}}} |{{{EditorSurname1}}}{{&lt;br /&gt;
           #if: {{{EditorGiven1|}}}&lt;br /&gt;
           |, {{{EditorGiven1}}}&lt;br /&gt;
         }}]]&lt;br /&gt;
        |{{{EditorSurname1}}}{{&lt;br /&gt;
           #if: {{{EditorGiven1|}}}&lt;br /&gt;
           |, {{{EditorGiven1}}}&lt;br /&gt;
         }}&lt;br /&gt;
      }}{{&lt;br /&gt;
        #if: {{{EditorSurname2|}}}&lt;br /&gt;
        |{{&lt;br /&gt;
          #if: {{{EditorSurname3|}}}&lt;br /&gt;
          |{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}&lt;br /&gt;
          |{{#if:{{{amp|}}}|&amp;amp;#32;&amp;amp;amp;&amp;amp;#32;|{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}}}&lt;br /&gt;
        }}{{&lt;br /&gt;
           #if: {{{Editorlink2|}}}&lt;br /&gt;
           |[[{{{Editorlink2}}} |{{{EditorSurname2}}}{{&lt;br /&gt;
              #if: {{{EditorGiven2|}}}&lt;br /&gt;
              |, {{{EditorGiven2}}}&lt;br /&gt;
            }}]]&lt;br /&gt;
           |{{{EditorSurname2}}}{{&lt;br /&gt;
              #if: {{{EditorGiven2|}}}&lt;br /&gt;
              |, {{{EditorGiven2}}}&lt;br /&gt;
            }}&lt;br /&gt;
         }}{{&lt;br /&gt;
           #if: {{{EditorSurname3|}}}&lt;br /&gt;
           |{{&lt;br /&gt;
              #if: {{{EditorSurname4|}}}&lt;br /&gt;
              |{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}&lt;br /&gt;
              |{{#if:{{{amp|}}}|&amp;amp;#32;&amp;amp;amp;&amp;amp;#32;|{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}}}&lt;br /&gt;
            }}{{&lt;br /&gt;
              #if: {{{Editorlink3|}}}&lt;br /&gt;
              |[[{{{Editorlink3}}} |{{{EditorSurname3}}}{{&lt;br /&gt;
                 #if: {{{EditorGiven3|}}}&lt;br /&gt;
                 |, {{{EditorGiven3}}}&lt;br /&gt;
               }}]]&lt;br /&gt;
              |{{{EditorSurname3}}}{{&lt;br /&gt;
                 #if: {{{EditorGiven3|}}}&lt;br /&gt;
                 |, {{{EditorGiven3}}}&lt;br /&gt;
               }}&lt;br /&gt;
            }}{{&lt;br /&gt;
              #if:{{{EditorSurname4|}}}&lt;br /&gt;
              |&amp;amp;#32;et al.&lt;br /&gt;
            }}&lt;br /&gt;
         }}&lt;br /&gt;
       }}, ed{{#if:{{{EditorSurname2|}}}|s}}{{#ifeq:{{{Sep|,}}}|.||.}}{{&lt;br /&gt;
        #if: {{{Date|}}}&lt;br /&gt;
        |&amp;amp;#32;({{{Date}}}){{&lt;br /&gt;
         #if:{{{YearNote|}}}&lt;br /&gt;
       |&amp;amp;#32;[{{{YearNote}}}]&lt;br /&gt;
       }}&lt;br /&gt;
      }}&lt;br /&gt;
   }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============  Title of included work  ============--&amp;gt;&lt;br /&gt;
  #if: {{{IncludedWorkTitle|}}}{{#if:{{{Periodical|}}}||{{#if:{{{TransItalic|}}}||{{{TransTitle|}}}}}}}&lt;br /&gt;
  |{{&lt;br /&gt;
     #if:{{{Surname1|}}}{{{EditorSurname1|}}}&lt;br /&gt;
     |{{{Sep|,}}}&amp;amp;#32;&lt;br /&gt;
   }}{{Citation/make link&lt;br /&gt;
     | 1={{&lt;br /&gt;
           #if: {{{IncludedWorkURL|}}}&lt;br /&gt;
           |{{{IncludedWorkURL}}}&lt;br /&gt;
           |{{&lt;br /&gt;
              #if: {{{URL|}}}&lt;br /&gt;
              |{{{URL}}}&lt;br /&gt;
&amp;lt;!-- Only link URL if to a free full text - as at PubMedCentral (PMC)--&amp;gt;&lt;br /&gt;
              |{{#ifexpr:{{#time: U}} &amp;gt; {{#time: U | {{{Embargo|2001-10-10}}} }}&lt;br /&gt;
                |{{&lt;br /&gt;
                   #if: {{{PMC|}}}&lt;br /&gt;
                   |http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pmcentrez&amp;amp;artid={{{PMC}}}&lt;br /&gt;
                 }}&lt;br /&gt;
               }}&lt;br /&gt;
            }}&lt;br /&gt;
         }}&lt;br /&gt;
     | 2={{&lt;br /&gt;
           #if: {{{Periodical|}}}&lt;br /&gt;
           |''&amp;lt;nowiki /&amp;gt;{{{IncludedWorkTitle}}}&amp;lt;nowiki /&amp;gt;''&lt;br /&gt;
           |&amp;quot;{{{IncludedWorkTitle|}}}{{&lt;br /&gt;
             #if: {{{TransTitle|}}}&lt;br /&gt;
             |{{&lt;br /&gt;
                #if: {{{IncludedWorkTitle|}}}&lt;br /&gt;
                |&amp;amp;#32;&lt;br /&gt;
              }}&amp;amp;#91;{{{TransTitle}}}&amp;amp;#93;&lt;br /&gt;
           }}&amp;quot;&lt;br /&gt;
         }}&lt;br /&gt;
   }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============  Place (if different than PublicationPlace) ============--&amp;gt;&lt;br /&gt;
  #if: {{{Place|}}}&lt;br /&gt;
  |{{&lt;br /&gt;
     #ifeq: {{{Place|}}} | {{{PublicationPlace|}}}&lt;br /&gt;
     |&lt;br /&gt;
     |{{&lt;br /&gt;
        #if: {{{Surname1|}}}{{{EditorSurname1|}}}{{{IncludedWorkTitle|}}}&lt;br /&gt;
        |{{{Sep|,}}}&amp;amp;#32;written at {{{Place}}}&lt;br /&gt;
      }}&lt;br /&gt;
   }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============  Editor of compilation  ============--&amp;gt;&lt;br /&gt;
  #if: {{{EditorSurname1|}}}&lt;br /&gt;
  |{{&lt;br /&gt;
     #if: {{{Surname1|}}}&lt;br /&gt;
     |{{{Sep|,}}}&amp;amp;#32;{{&lt;br /&gt;
        #if: {{{IncludedWorkTitle|}}}&lt;br /&gt;
        |in&amp;amp;#32;&lt;br /&gt;
      }}{{&lt;br /&gt;
        #if: {{{Editorlink1|}}}&lt;br /&gt;
        |[[{{{Editorlink1}}} |{{{EditorSurname1}}}{{&lt;br /&gt;
           #if: {{{EditorGiven1|}}}&lt;br /&gt;
           |, {{{EditorGiven1}}}&lt;br /&gt;
         }}]]&lt;br /&gt;
        |{{{EditorSurname1}}}{{&lt;br /&gt;
           #if: {{{EditorGiven1|}}}&lt;br /&gt;
           |, {{{EditorGiven1}}}&lt;br /&gt;
         }}}}{{&lt;br /&gt;
        #if: {{{EditorSurname2|}}}&lt;br /&gt;
        |{{&lt;br /&gt;
          #if: {{{EditorSurname3|}}}&lt;br /&gt;
            |{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}&lt;br /&gt;
            |{{#if:{{{amp|}}}|&amp;amp;#32;&amp;amp;amp;&amp;amp;#32;|{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}}}&lt;br /&gt;
          }}{{&lt;br /&gt;
           #if: {{{Editorlink2|}}}&lt;br /&gt;
           |[[{{{Editorlink2}}}|{{{EditorSurname2}}}{{&lt;br /&gt;
              #if: {{{EditorGiven2|}}}&lt;br /&gt;
              |, {{{EditorGiven2}}}&lt;br /&gt;
            }}]]&lt;br /&gt;
           |{{{EditorSurname2}}}{{&lt;br /&gt;
              #if: {{{EditorGiven2|}}}&lt;br /&gt;
              |, {{{EditorGiven2}}}&lt;br /&gt;
            }}&lt;br /&gt;
         }}{{&lt;br /&gt;
           #if: {{{EditorSurname3|}}}&lt;br /&gt;
           |{{&lt;br /&gt;
              #if: {{{EditorSurname4|}}}&lt;br /&gt;
              |&amp;amp;#059;&amp;amp;#32;&lt;br /&gt;
              |{{#if:{{{amp|}}}|&amp;amp;#32;&amp;amp;amp;&amp;amp;#32;|{{{AuthorSep|&amp;amp;#059;&amp;amp;#32;}}}}}&lt;br /&gt;
            }}{{&lt;br /&gt;
              #if: {{{Editorlink3|}}}&lt;br /&gt;
              |[[{{{Editorlink3}}}|{{{EditorSurname3}}}{{&lt;br /&gt;
                 #if: {{{EditorGiven3|}}}&lt;br /&gt;
                 |, {{{EditorGiven3}}}&lt;br /&gt;
               }}]]&lt;br /&gt;
              |{{{EditorSurname3}}}{{&lt;br /&gt;
                 #if: {{{EditorGiven3|}}}&lt;br /&gt;
                 |, {{{EditorGiven3}}}&lt;br /&gt;
               }}&lt;br /&gt;
            }}{{&lt;br /&gt;
              #if:{{{EditorSurname4|}}}&lt;br /&gt;
              |&amp;amp;#32;et al.&lt;br /&gt;
            }}&lt;br /&gt;
         }}&lt;br /&gt;
      }}{{&lt;br /&gt;
        #if: {{{IncludedWorkTitle|}}}&lt;br /&gt;
        |&lt;br /&gt;
        |{{{Sep|,}}}&amp;amp;#32;ed{{#if:{{{EditorSurname2|}}}|s}}{{#ifeq:{{{Sep|,}}}|.||.}}&lt;br /&gt;
      }}&lt;br /&gt;
   }}&lt;br /&gt;
}}{{&lt;br /&gt;
  &amp;lt;!--============  Periodicals  ============--&amp;gt;&lt;br /&gt;
  #if: {{{Periodical|}}}&lt;br /&gt;
  |{{&lt;br /&gt;
     #if: {{{Other|}}}&lt;br /&gt;
     |{{{Sep|,}}}&amp;amp;#32;{{{Other|}}}&lt;br /&gt;
   }}{{&lt;br /&gt;
     #if: {{{Surname1|}}}{{{EditorSurname1|}}}{{{IncludedWorkTitle|}}}&lt;br /&gt;
     |{{{Sep|,}}}&amp;amp;#32;}}{{&lt;br /&gt;
     #if: {{{Title|}}}{{{TransTitle|}}}&lt;br /&gt;
     |{{Citation/make link&lt;br /&gt;
        | 1={{&lt;br /&gt;
              #if: {{{IncludedWorkTitle|}}}&lt;br /&gt;
              |{{&lt;br /&gt;
                 #if: {{{IncludedWorkURL|}}}&lt;br /&gt;
                 |{{&lt;br /&gt;
                    #if: {{{URL|}}}&lt;br /&gt;
                    |{{{URL}}}&lt;br /&gt;
                    |{{&lt;br /&gt;
                       #ifexpr: {{#time: U}} &amp;gt; {{#time: U | {{{Embargo|2001-10-10}}} }} | {{&lt;br /&gt;
                         #if: {{{PMC|}}}&lt;br /&gt;
                         |  http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pmcentrez&amp;amp;artid={{{PMC}}}&lt;br /&gt;
                       }}&lt;br /&gt;
                     }}&lt;br /&gt;
                  }}&lt;br /&gt;
               }}&lt;br /&gt;
              |{{&lt;br /&gt;
                 #if: {{{URL|}}}&lt;br /&gt;
                 |{{{URL}}}&lt;br /&gt;
                 |{{#ifexpr:{{#time: U}} &amp;gt; {{#time: U | {{{Embargo|2001-10-10}}} }} |{{&lt;br /&gt;
                       #if: {{{PMC|}}}&lt;br /&gt;
                       |  http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pmcentrez&amp;amp;artid={{{PMC}}}&lt;br /&gt;
                    }}&lt;br /&gt;
                 }}&lt;br /&gt;
               }}&lt;br /&gt;
            }}&lt;br /&gt;
        | 2=&amp;quot;{{{Title}}}{{&lt;br /&gt;
          #if: {{{TransTitle|}}}&lt;br /&gt;
          |{{&lt;br /&gt;
             #if: {{{Title|}}}&lt;br /&gt;
             |&amp;amp;#32;&lt;br /&gt;
           }}&amp;amp;#91;{{{TransTitle}}}&amp;amp;#93;&lt;br /&gt;
        }}&amp;quot;&lt;br /&gt;
      }}{{&lt;br /&gt;
        #if: {{{TitleNote|}}}&lt;br /&gt;
        |{{{Sep|,}}}&amp;amp;#32;{{{TitleNote}}}&lt;br /&gt;
      }}&lt;br /&gt;
   }}&lt;br /&gt;
}}{{&lt;br /&gt;
  #if: {{{language|}}}&lt;br /&gt;
  |&amp;amp;#32;(in {{{language}}})&lt;br /&gt;
}}{{&lt;br /&gt;
  #if: {{{format|}}}&lt;br /&gt;
  |&amp;amp;#32;({{{format}}})&lt;br /&gt;
}}{{&lt;br /&gt;
   #if: {{{Periodical|}}}&lt;br /&gt;
   |{{&lt;br /&gt;
      #if:{{{IncludedWorkTitle|}}}{{{Title|}}}{{{TransTitle|}}}&lt;br /&gt;
      |{{{Sep|,}}}&amp;amp;#32;&lt;br /&gt;
    }}''&amp;lt;nowiki /&amp;gt;{{{Periodical}}}&amp;lt;nowiki /&amp;gt;''{{&lt;br /&gt;
      #if: {{{Series|}}}&lt;br /&gt;
      |{{{Sep|,}}}&amp;amp;#32;{{{Series}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{PublicationPlace|}}}&lt;br /&gt;
      |{{&lt;br /&gt;
         #if: {{{Publisher|}}}&lt;br /&gt;
         |&amp;amp;#32;({{{PublicationPlace}}}&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;{{{Publisher}}})&lt;br /&gt;
         |&amp;amp;#32;({{{PublicationPlace}}})&lt;br /&gt;
       }}&lt;br /&gt;
      |{{&lt;br /&gt;
         #if: {{{Publisher|}}}&lt;br /&gt;
         |&amp;amp;#32;({{{Publisher}}})&lt;br /&gt;
       }}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{Volume|}}}&lt;br /&gt;
      |&amp;amp;#32;'''&amp;lt;nowiki /&amp;gt;{{{Volume}}}&amp;lt;nowiki /&amp;gt;'''{{&lt;br /&gt;
         #if: {{{Issue|}}}&lt;br /&gt;
         |&amp;amp;#32;({{{Issue}}})&lt;br /&gt;
       }}&lt;br /&gt;
      |{{&lt;br /&gt;
         #if: {{{Issue|}}}&lt;br /&gt;
         |&amp;amp;#32;({{{Issue}}})&lt;br /&gt;
       }}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{At|}}}&lt;br /&gt;
      |&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt; {{{At}}}&lt;br /&gt;
    }}&lt;br /&gt;
   |{{&lt;br /&gt;
      &amp;lt;!--============ Anything else with a title, including books ============--&amp;gt;&lt;br /&gt;
      #if: {{{Title|}}}{{{TransItalic|}}}&lt;br /&gt;
      |{{&lt;br /&gt;
         #if: {{{Surname1|}}}{{{EditorSurname1|}}}{{{IncludedWorkTitle|}}}{{{Periodical|}}}&lt;br /&gt;
         |{{{Sep|,}}}&lt;br /&gt;
       }}&amp;amp;#32;{{Citation/make link&lt;br /&gt;
         | 1={{&lt;br /&gt;
               #if: {{{IncludedWorkTitle|}}}&lt;br /&gt;
               |{{&lt;br /&gt;
                  #if: {{{IncludedWorkURL|}}}&lt;br /&gt;
                  |{{&lt;br /&gt;
                     #if: {{{URL|}}}&lt;br /&gt;
                     |{{{URL}}}&lt;br /&gt;
                     |{{#ifexpr:{{#time: U}} &amp;gt; {{#time: U | {{{Embargo|2001-10-10}}} }}|{{&lt;br /&gt;
                        #if: {{{PMC|}}}&lt;br /&gt;
                        |  http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pmcentrez&amp;amp;artid={{{PMC}}}&lt;br /&gt;
                      }}}}&lt;br /&gt;
                   }}&lt;br /&gt;
                }}&lt;br /&gt;
               |{{&lt;br /&gt;
                  #if: {{{URL|}}}&lt;br /&gt;
                  |{{{URL}}}&lt;br /&gt;
                                |{{#ifexpr:{{#time: U}} &amp;gt; {{#time: U | {{{Embargo|2001-10-10}}} }}|{{&lt;br /&gt;
                     #if: {{{PMC|}}}&lt;br /&gt;
                     |  http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pmcentrez&amp;amp;artid={{{PMC}}}&lt;br /&gt;
                   }}}}&lt;br /&gt;
                }}&lt;br /&gt;
             }}&lt;br /&gt;
         | 2=''&amp;lt;nowiki /&amp;gt;{{{Title|}}}{{&lt;br /&gt;
            #if:{{{TransItalic|}}}|&amp;amp;#32;&amp;amp;#91;{{{TransItalic}}}&amp;amp;#93;&lt;br /&gt;
          }}&amp;lt;nowiki /&amp;gt;''&lt;br /&gt;
       }}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{TitleType|}}}&lt;br /&gt;
      |&amp;amp;#32;({{{TitleType}}})&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{Series|}}}&lt;br /&gt;
      |{{{Sep|,}}}&amp;amp;#32;{{{Series}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{Volume|}}}&lt;br /&gt;
      |{{{Sep|,}}}&amp;amp;#32;'''&amp;lt;nowiki /&amp;gt;{{{Volume}}}&amp;lt;nowiki /&amp;gt;'''&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{Other|}}}&lt;br /&gt;
      |{{{Sep|,}}}&amp;amp;#32;{{{Other|}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{Edition|}}}&lt;br /&gt;
      |&amp;amp;#32;({{{Edition}}} ed.)&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{PublicationPlace|}}}&lt;br /&gt;
      |{{{Sep|,}}}&amp;amp;#32;{{{PublicationPlace}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{Publisher|}}}&lt;br /&gt;
      |{{&lt;br /&gt;
         #if: {{{PublicationPlace|}}}&lt;br /&gt;
         |&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
         |{{{Sep|,}}}&lt;br /&gt;
       }}&amp;amp;#32;{{{Publisher}}}&lt;br /&gt;
    }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============ Date (if no author/editor) ============--&amp;gt;&lt;br /&gt;
  #if: {{{Surname1|}}}{{{EditorSurname1|}}}&lt;br /&gt;
  |&lt;br /&gt;
  |{{&lt;br /&gt;
     #if: {{{Date|}}}&lt;br /&gt;
     |{{{Sep|,}}}&amp;amp;#32;{{{Date}}}{{&lt;br /&gt;
       #if:{{{YearNote|}}}&lt;br /&gt;
     |&amp;amp;#32;[{{{YearNote}}}]&lt;br /&gt;
     }}&lt;br /&gt;
   }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============ Publication date ============--&amp;gt;&lt;br /&gt;
  #if: {{{PublicationDate|}}}&lt;br /&gt;
  |{{&lt;br /&gt;
     #ifeq: {{{PublicationDate|}}} | {{{Date|}}}&lt;br /&gt;
     |&lt;br /&gt;
     |{{&lt;br /&gt;
        #if: {{{EditorSurname1|}}}&lt;br /&gt;
        |{{&lt;br /&gt;
           #if: {{{Surname1|}}}&lt;br /&gt;
           |{{{Sep|,}}}&amp;amp;#32;{{{PublicationDate}}}&lt;br /&gt;
           |&amp;amp;#32;(published {{{PublicationDate}}})&lt;br /&gt;
         }}&lt;br /&gt;
        |{{&lt;br /&gt;
           #if: {{{Periodical|}}}&lt;br /&gt;
           |{{{Sep|,}}}&amp;amp;#32;{{{PublicationDate}}}&lt;br /&gt;
           |&amp;amp;#32;(published {{{PublicationDate}}})&lt;br /&gt;
         }}&lt;br /&gt;
      }}&lt;br /&gt;
   }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============ Page within included work ============--&amp;gt;&lt;br /&gt;
  #if: {{{Periodical|}}}&lt;br /&gt;
  |&lt;br /&gt;
  |{{&lt;br /&gt;
     #if: {{{At|}}}&lt;br /&gt;
     |{{{Sep|,}}}&amp;amp;#32;{{{At}}}&lt;br /&gt;
   }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--===============DOI================--&amp;gt;&lt;br /&gt;
#if:{{{DOI|}}}&lt;br /&gt;
  |{{{Sep|,}}}&amp;amp;#32;{{citation/identifier  |identifier=doi |input1={{{DOI|}}}  |input2={{{DoiBroken|}}} }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============  Misc. Identifier ============--&amp;gt;&lt;br /&gt;
  #if: {{{ID|}}}&lt;br /&gt;
  |{{&lt;br /&gt;
     #if: {{{Surname1|}}}{{{EditorSurname1|}}}{{{IncludedWorkTitle|}}}{{{Periodical|}}}{{{Title|}}}{{{TransItalic|}}}&lt;br /&gt;
     |{{{Sep|,}}}&amp;amp;#32;{{{ID}}}&lt;br /&gt;
     |{{{ID}}}&lt;br /&gt;
   }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============  ISBN ============--&amp;gt;&lt;br /&gt;
  #if: {{{ISBN|}}}&lt;br /&gt;
  |{{{Sep|,}}}&amp;amp;#32;{{citation/identifier  |identifier=isbn |input1={{{ISBN|}}} }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============  ISSN ============--&amp;gt;&lt;br /&gt;
  #if: {{{ISSN|}}}&lt;br /&gt;
  |{{{Sep|,}}}&amp;amp;#32;{{citation/identifier  |identifier=issn |input1={{{ISSN|}}} }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============  OCLC ============--&amp;gt;&lt;br /&gt;
  #if: {{{OCLC|}}}&lt;br /&gt;
  |{{{Sep|,}}}&amp;amp;#32;{{citation/identifier  |identifier=oclc |input1={{{OCLC|}}} }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============  PMID ============--&amp;gt;&lt;br /&gt;
  #if: {{{PMID|}}}&lt;br /&gt;
  |{{{Sep|,}}}&amp;amp;#32;{{citation/identifier  |identifier=pmid |input1={{{PMID|}}} }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============  PMC ============--&amp;gt;&lt;br /&gt;
  #if: {{{PMC|}}}&lt;br /&gt;
  |{{&lt;br /&gt;
     #if: {{{URL|}}}&lt;br /&gt;
     |{{{Sep|,}}}&amp;amp;#32;{{citation/identifier  |identifier=pmc |input1={{{PMC|}}} }}&lt;br /&gt;
     |{{only in  print|{{{Sep|,}}}&amp;amp;#32;{{citation/identifier  |identifier=pmc |input1={{{PMC|}}} }} }}&amp;lt;!--Should  only display by default in print--&amp;gt;&lt;br /&gt;
   }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============ BIBCODE ============--&amp;gt;&lt;br /&gt;
  #if: {{{Bibcode|}}}&lt;br /&gt;
  |{{{Sep|,}}}&amp;amp;#32;{{citation/identifier  |identifier=bibcode |input1={{{Bibcode|}}} }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============  Archive data, etc ===========--&amp;gt;&lt;br /&gt;
#if: {{{Archive|}}}&lt;br /&gt;
|{{{Sep|,}}}&amp;amp;#32;{{{Archive}}}[[Category:Pages using deprecated citation archive parameters]]&lt;br /&gt;
|{{&lt;br /&gt;
  #if:{{{ArchiveURL|}}}{{{ArchiveDate|}}}&lt;br /&gt;
  |{{{Sep|,}}}&amp;amp;#32;{{#ifeq:{{{Sep}}}|.|A|a}}rchived{{&lt;br /&gt;
    #if:{{{OriginalURL|}}}{{{IncludedWorkURL|}}}&lt;br /&gt;
    |{{#if:{{{ArchiveURL|}}}|&amp;amp;#32;from {{Citation/make link|{{{OriginalURL|{{{IncludedWorkURL|}}}}}}|the original}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
    #if:{{{ArchiveDate|}}}&lt;br /&gt;
    |&amp;amp;#32;on {{{ArchiveDate}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
    #if:{{#if:{{{ArchiveURL|}}}||A}}{{#if:{{{OriginalURL|}}}{{{IncludedWorkURL|}}}||B}}{{#if:{{{ArchiveDate|}}}||C}}&lt;br /&gt;
    |. {{citation error&lt;br /&gt;
       |If you specify &amp;lt;code&amp;gt;&amp;amp;#124;{{#if:{{{ArchiveURL|}}}|archiveurl|archivedate}}&amp;amp;#61;&amp;lt;/code&amp;gt;, you must {{#if:{{{OriginalURL|}}}{{{IncludedWorkURL|}}}| also specify &amp;lt;code&amp;gt;&amp;amp;#124;{{#if:{{{ArchiveURL|}}}|archivedate|archiveurl}}&amp;amp;#61;&amp;lt;/code&amp;gt;|first specify &amp;lt;code&amp;gt;&amp;amp;#124;url&amp;amp;#61;&amp;lt;/code&amp;gt;}}}}&lt;br /&gt;
    }}&lt;br /&gt;
  }}&lt;br /&gt;
}}{{&lt;br /&gt;
&amp;lt;!--============ URL and AccessDate ============--&amp;gt;&lt;br /&gt;
  #if: {{{URL|}}}{{{IncludedWorkURL|}}}&lt;br /&gt;
  |{{&lt;br /&gt;
     #if: {{{Title|}}}{{{IncludedWorkTitle|}}}{{{TransTitle|}}}&lt;br /&gt;
     |&amp;lt;span class=&amp;quot;printonly&amp;quot;&amp;gt;{{{Sep|,}}}&amp;amp;#32;{{&lt;br /&gt;
                                      #if: {{{IncludedWorkURL|}}}&lt;br /&gt;
                                      |{{{IncludedWorkURL}}}&lt;br /&gt;
                                      |{{{URL}}}&lt;br /&gt;
                                    }}&amp;lt;/span&amp;gt;&lt;br /&gt;
     |{{{Sep|,}}}&amp;amp;#32;{{&lt;br /&gt;
              #if: {{{IncludedWorkURL|}}}&lt;br /&gt;
              |{{{IncludedWorkURL}}}&lt;br /&gt;
              |{{{URL}}}&lt;br /&gt;
            }}&lt;br /&gt;
   }}{{&lt;br /&gt;
     #if: {{{AccessDate|}}}&lt;br /&gt;
     | &amp;lt;span class=&amp;quot;reference-accessdate&amp;quot;&amp;gt;{{#ifeq:{{{Sep|,}}}|,|,&amp;amp;#32;r|.&amp;amp;#32;R}}etrieved {{{AccessDate}}}&amp;lt;/span&amp;gt;&lt;br /&gt;
     }}&lt;br /&gt;
}}{{#if:{{{laysummary|}}}&lt;br /&gt;
  |{{{Sep|,}}}&amp;amp;#32;[{{{laysummary}}} Lay summary]{{#if: {{{laysource|}}}|&amp;amp;nbsp;&amp;amp;ndash;&amp;amp;nbsp;''&amp;lt;nowiki /&amp;gt;{{{laysource}}}&amp;lt;nowiki /&amp;gt;''}}&lt;br /&gt;
}}{{#if:{{{laydate|}}}&lt;br /&gt;
  | &amp;amp;#32;({{{laydate}}})&lt;br /&gt;
}}{{#if:{{{quote|}}}&lt;br /&gt;
  |{{{Sep|,}}}&amp;amp;#32;&amp;quot;{{{quote}}}&amp;quot;&lt;br /&gt;
}}{{{PS|}}}&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== This is a COinS tag (http://ocoins.info), which allows automated tools to parse the citation information: ===&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;span&lt;br /&gt;
    class=&amp;quot;Z3988&amp;quot;&lt;br /&gt;
    title=&amp;quot;ctx_ver=Z39.88-2004&amp;amp;rft_val_fmt={{urlencode:info:ofi/fmt:kev:mtx:}}{{&lt;br /&gt;
      #if: {{{Periodical|}}}&lt;br /&gt;
      |journal&amp;amp;rft.genre=article&amp;amp;rft.atitle={{urlencode:{{{Title|}}}}}&amp;amp;rft.jtitle={{urlencode:{{{Periodical|}}}}}&lt;br /&gt;
      |book{{&lt;br /&gt;
         #if: {{{IncludedWorkTitle|}}}&lt;br /&gt;
         |&amp;amp;rft.genre=bookitem&amp;amp;rft.btitle={{urlencode:{{{IncludedWorkTitle|}}}}}&amp;amp;rft.atitle={{urlencode:{{{Title|}}}}}&lt;br /&gt;
         |&amp;amp;rft.genre=book&amp;amp;rft.btitle={{urlencode:{{{Title|}}}}}&lt;br /&gt;
       }}&lt;br /&gt;
    }}{{&lt;br /&gt;
     #if: {{{Surname1|}}} |&amp;amp;rft.aulast={{urlencode:{{{Surname1}}}}}{{&lt;br /&gt;
       #if: {{{Given1|}}} |&amp;amp;rft.aufirst={{urlencode:{{{Given1}}}}}&lt;br /&gt;
     }}&lt;br /&gt;
   }}{{&lt;br /&gt;
     #if: {{{Surname1|}}} |&amp;amp;rft.au={{urlencode:{{{Surname1}}}}}{{&lt;br /&gt;
       #if: {{{Given1|}}} |{{urlencode:{{{NameSep|,&amp;amp;#32;}}}{{{Given1}}}}}&lt;br /&gt;
     }}&lt;br /&gt;
   }}{{&lt;br /&gt;
     #if: {{{Surname2|}}} |&amp;amp;rft.au={{urlencode:{{{Surname2}}}}}{{&lt;br /&gt;
       #if: {{{Given2|}}} |{{urlencode:{{{NameSep|,&amp;amp;#32;}}}{{{Given2}}}}}&lt;br /&gt;
     }}&lt;br /&gt;
   }}{{&lt;br /&gt;
     #if: {{{Surname3|}}} |&amp;amp;rft.au={{urlencode:{{{Surname3}}}}}{{&lt;br /&gt;
       #if: {{{Given3|}}} |{{urlencode:{{{NameSep|,&amp;amp;#32;}}}{{{Given3}}}}}&lt;br /&gt;
     }}&lt;br /&gt;
   }}{{&lt;br /&gt;
     #if: {{{Surname4|}}} |&amp;amp;rft.au={{urlencode:{{{Surname4}}}}}{{&lt;br /&gt;
       #if: {{{Given4|}}} |{{urlencode:{{{NameSep|,&amp;amp;#32;}}}{{{Given4}}}}}&lt;br /&gt;
     }}&lt;br /&gt;
   }}{{&lt;br /&gt;
     #if: {{{Surname5|}}} |&amp;amp;rft.au={{urlencode:{{{Surname5}}}}}{{&lt;br /&gt;
       #if: {{{Given5|}}} |{{urlencode:{{{NameSep|,&amp;amp;#32;}}}{{{Given5}}}}}&lt;br /&gt;
     }}&lt;br /&gt;
   }}{{&lt;br /&gt;
     #if: {{{Surname6|}}} |&amp;amp;rft.au={{urlencode:{{{Surname6}}}}}{{&lt;br /&gt;
       #if: {{{Given6|}}} |{{urlencode:{{{NameSep|,&amp;amp;#32;}}}{{{Given6}}}}}&lt;br /&gt;
     }}&lt;br /&gt;
   }}{{&lt;br /&gt;
     #if: {{{Surname7|}}} |&amp;amp;rft.au={{urlencode:{{{Surname7}}}}}{{&lt;br /&gt;
       #if: {{{Given7|}}} |{{urlencode:{{{NameSep|,&amp;amp;#32;}}}{{{Given7}}}}}&lt;br /&gt;
     }}&lt;br /&gt;
   }}{{&lt;br /&gt;
     #if: {{{Surname8|}}} |&amp;amp;rft.au={{urlencode:{{{Surname8}}}}}{{&lt;br /&gt;
       #if: {{{Given8|}}} |{{urlencode:{{{NameSep|,&amp;amp;#32;}}}{{{Given8}}}}}&lt;br /&gt;
     }}&lt;br /&gt;
   }}{{&lt;br /&gt;
     #if: {{{Surname9|}}} |&amp;amp;rft.au={{urlencode:{{{Surname9}}}}}{{&lt;br /&gt;
       #if: {{{Given9|}}} |{{urlencode:{{{NameSep|,&amp;amp;#32;}}}{{{Given9}}}}}&lt;br /&gt;
     }}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{Date|}}} |&amp;amp;rft.date={{urlencode:{{{Date}}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{Series|}}} |&amp;amp;rft.series={{urlencode:{{{Series}}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{Volume|}}} |&amp;amp;rft.volume={{urlencode:{{{Volume}}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{Issue|}}} |&amp;amp;rft.issue={{urlencode:{{{Issue}}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{At|}}} |&amp;amp;rft.pages={{urlencode:{{{At}}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{Edition|}}} |&amp;amp;rft.edition={{urlencode:{{{Edition}}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{PublicationPlace|}}}{{{Place|}}} |&amp;amp;rft.place={{urlencode:{{{PublicationPlace|{{{Place}}}}}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{Publisher|}}} |&amp;amp;rft.pub={{urlencode:{{{Publisher}}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{DOI|}}} |&amp;amp;rft_id=info:doi/{{urlencode:{{{DOI}}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{PMID|}}} |&amp;amp;rft_id=info:pmid/{{urlencode:{{{PMID}}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{Bibcode|}}} |&amp;amp;rft_id=info:bibcode/{{urlencode:{{{Bibcode}}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{OCLC|}}} |&amp;amp;rft_id=info:oclcnum/{{urlencode:{{{OCLC}}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{ISBN|}}} |&amp;amp;rft.isbn={{urlencode:{{{ISBN}}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{ISSN|}}} |&amp;amp;rft.issn={{urlencode:{{{ISSN}}}}}&lt;br /&gt;
    }}{{&lt;br /&gt;
      #if: {{{URL|}}}{{{IncludedWorkURL|}}} |&amp;amp;rft_id={{urlencode:{{{URL|{{{IncludedWorkURL|}}}}}}}}&lt;br /&gt;
    }}&amp;amp;rfr_id=info:sid/en.wikipedia.org:{{FULLPAGENAMEE}}&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;display: none;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Pp-template|small=yes}}&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:Other_uses&amp;diff=89628</id>
		<title>Template:Other uses</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:Other_uses&amp;diff=89628"/>
				<updated>2010-09-20T21:30:24Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Attempting to implement Cite_web template to support ASP.NET POET Vulnerability page - depends on other templates.  Let's see how far down the stack of turtles this goes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{about|||{{{1|{{PAGENAME}} (disambiguation)}}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:Template_other&amp;diff=89627</id>
		<title>Template:Template other</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:Template_other&amp;diff=89627"/>
				<updated>2010-09-20T21:29:31Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Attempting to implement Cite_web template to support ASP.NET POET Vulnerability page - depends on other templates.  Let's see how far down the stack of turtles this goes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Other uses]]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:Pp-meta&amp;diff=89626</id>
		<title>Template:Pp-meta</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:Pp-meta&amp;diff=89626"/>
				<updated>2010-09-20T21:28:44Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Attempting to implement Cite_web template to support ASP.NET POET Vulnerability page - depends on other templates.  Let's see how far down the stack of turtles this goes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq:{{#switch:{{lc:{{{type}}}}}&lt;br /&gt;
  |move=&amp;lt;!--&lt;br /&gt;
 --&amp;gt;{{#ifeq:&lt;br /&gt;
      {{#switch:{{lc:{{{demolevel|undefined}}}}}&lt;br /&gt;
        |semi&lt;br /&gt;
        |autoconfirmed=autoconfirmed&lt;br /&gt;
        |administrator&lt;br /&gt;
        |full&lt;br /&gt;
        |sysop=sysop&lt;br /&gt;
        |undefined={{PROTECTIONLEVEL:move}}&lt;br /&gt;
        |#default=&amp;lt;!--fallback value: null&lt;br /&gt;
   --&amp;gt;}}&lt;br /&gt;
      |sysop|yes|no&lt;br /&gt;
    }}&lt;br /&gt;
  |create=&amp;lt;!--&lt;br /&gt;
 --&amp;gt;{{#if:&lt;br /&gt;
      {{#switch:{{lc:{{{demolevel|undefined}}}}}&lt;br /&gt;
        |semi&lt;br /&gt;
        |autoconfirmed=autoconfirmed&lt;br /&gt;
        |administrator&lt;br /&gt;
        |full&lt;br /&gt;
        |sysop=sysop&lt;br /&gt;
        |undefined={{PROTECTIONLEVEL:create}}&lt;br /&gt;
        |#default=&amp;lt;!--fallback value: null&lt;br /&gt;
   --&amp;gt;}}&lt;br /&gt;
      |yes|no&lt;br /&gt;
    }}&lt;br /&gt;
|#default&amp;lt;!--includes all other types--&amp;gt;=&amp;lt;!--&lt;br /&gt;
 --&amp;gt;{{#if:&lt;br /&gt;
      {{#switch:{{lc:{{{demolevel|undefined}}}}}&lt;br /&gt;
        |semi&lt;br /&gt;
        |autoconfirmed=autoconfirmed&lt;br /&gt;
        |administrator&lt;br /&gt;
        |full&lt;br /&gt;
        |sysop=sysop&lt;br /&gt;
        |undefined={{PROTECTIONLEVEL:edit}}&lt;br /&gt;
        |#default=&amp;lt;!--fallback value: null&lt;br /&gt;
   --&amp;gt;}}&lt;br /&gt;
      |{{#ifeq:{{#switch:{{lc:{{{disallowlevel|}}}}}&lt;br /&gt;
                 |semi&lt;br /&gt;
                 |autoconfirmed=autoconfirmed&lt;br /&gt;
                 |administrator&lt;br /&gt;
                 |full&lt;br /&gt;
                 |sysop=sysop&lt;br /&gt;
                 |#default=&amp;lt;!--fallback value: null--&amp;gt;}}&lt;br /&gt;
         |{{#switch:{{lc:{{{demolevel|undefined}}}}}&lt;br /&gt;
            |semi&lt;br /&gt;
            |autoconfirmed=autoconfirmed&lt;br /&gt;
            |administrator&lt;br /&gt;
            |full&lt;br /&gt;
            |sysop=sysop&lt;br /&gt;
            |undefined={{PROTECTIONLEVEL:edit}}&lt;br /&gt;
            |#default=&amp;lt;!--fallback value: null&lt;br /&gt;
       --&amp;gt;}}&lt;br /&gt;
         |no|yes&lt;br /&gt;
       }}&lt;br /&gt;
   |no}}&lt;br /&gt;
}}|yes|{{#ifeq:{{lc:{{{small|}}}}}|yes|&lt;br /&gt;
&amp;lt;div class=&amp;quot;metadata topicon&amp;quot; id=&amp;quot;protected-icon&amp;quot; style=&amp;quot;display:none; right:55px;&amp;quot;&amp;gt;[[Image:{{{image|{{#switch:{{lc:{{{type}}}}}&lt;br /&gt;
 |full=Padlock.svg&lt;br /&gt;
 |semi=Padlock-silver-medium.svg&lt;br /&gt;
 |move=Padlock-olive.svg&lt;br /&gt;
 |indef=Padlock-red.svg&lt;br /&gt;
 |office=Padlock-black.svg&lt;br /&gt;
 |create=Padlock-skyblue.svg&lt;br /&gt;
 |#default=Transparent.gif&lt;br /&gt;
}}}}}|20px|link={{{icon-link|Wikipedia:Protection policy#{{lc:{{{type}}}}}}}}|{{{icon-text|This {{pagetype|subjectspace=yes}} is {{#switch:{{lc:{{{type}}}}}&lt;br /&gt;
 |semi=semi-&lt;br /&gt;
 |move=move-&lt;br /&gt;
 |indef=permanently&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 |create=creation-&lt;br /&gt;
 |office=&amp;lt;!--null, but should this have a special tag?--&amp;gt;&lt;br /&gt;
 |full&lt;br /&gt;
 |#default=&amp;lt;!--null--&amp;gt;&lt;br /&gt;
}}protected{{#ifeq:{{lc:{{{type}}}}}|indef||{{#if:{{{expiry|}}}|&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;until {{#time:F j, Y|{{{expiry}}}}}}}}}{{#if:{{{icon-reason|}}}|&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;{{{icon-reason}}}}}.}}}|alt=Page {{#switch:{{lc:{{{type}}}}}&lt;br /&gt;
 |semi=semi-&lt;br /&gt;
 |move=move-&lt;br /&gt;
 |indef=permanently&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 |create=creation-&lt;br /&gt;
 |office=&amp;lt;!--null, but should this have a special tag?--&amp;gt;&lt;br /&gt;
 |full&lt;br /&gt;
 |#default=&amp;lt;!--null--&amp;gt;&lt;br /&gt;
}}protected]]&amp;lt;/div&amp;gt;&lt;br /&gt;
|&amp;lt;!-- else, not small --&amp;gt;&lt;br /&gt;
{{mbox &lt;br /&gt;
| demospace = {{{demospace|}}}&lt;br /&gt;
| type = protection&lt;br /&gt;
| image = [[Image:{{{image|{{#switch:{{lc:{{{type}}}}}&lt;br /&gt;
 |full=Padlock.svg&lt;br /&gt;
 |semi=Padlock-silver-medium.svg&lt;br /&gt;
 |move=Padlock-olive.svg&lt;br /&gt;
 |indef=Padlock-red.svg&lt;br /&gt;
 |office=Padlock-black.svg&lt;br /&gt;
 |create=Padlock-skyblue.svg&lt;br /&gt;
 |#default=Transparent.gif&lt;br /&gt;
}}}}}|40px|{{{icon-text|This page is {{#switch:{{lc:{{{type}}}}}&lt;br /&gt;
 |semi=semi-&lt;br /&gt;
 |move=move-&lt;br /&gt;
 |indef=permanently&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 |create=creation-&lt;br /&gt;
 |office=&amp;lt;!--null, but should this have a special tag?--&amp;gt;&lt;br /&gt;
 |full&lt;br /&gt;
 |#default=&amp;lt;!--null--&amp;gt;&lt;br /&gt;
}}protected.}}}]]&lt;br /&gt;
| text = '''{{{reason-text|{{#switch:{{lc:{{{type}}}}}&lt;br /&gt;
 |full=This page is currently [[Wikipedia:This page is protected|protected]] from editing&lt;br /&gt;
 |semi=Editing of this {{pagetype|subjectspace=yes}} by [[Wikipedia:User access levels#Autoconfirmed_users|new]] or [[Wikipedia:User access levels#Anonymous_users|unregistered]] users is currently [[Wikipedia:Protection policy|disabled]]&lt;br /&gt;
 |move=This {{pagetype|subjectspace=yes}} is currently [[Wikipedia:This page is protected|protected]] from [[Help:Moving a page|page moves]]&lt;br /&gt;
 |indef=This page is [[Wikipedia:This page is protected|protected]] from editing ''indefinitely''&lt;br /&gt;
 |office=This {{pagetype|subjectspace=yes}} is currently [[Wikipedia:This page is protected|protected]] from editing&lt;br /&gt;
 |create=[[Help:Starting a new page|Recreation]] of this {{pagetype|subjectspace=yes}} [[Wikipedia:This page is protected|has been disabled]]&lt;br /&gt;
}}{{#ifeq:{{lc:{{{type}}}}}|indef||{{#if:{{{expiry|}}}|&amp;amp;#32;until {{#time:F j, Y|{{{expiry}}}}}}}}}{{{reason&amp;lt;includeonly&amp;gt;|&amp;lt;/includeonly&amp;gt;}}}.}}}'''&amp;lt;br /&amp;gt; {{{explanation-text|{{#ifeq:{{lc:{{{dispute}}}}}|yes|This protection is '''not''' an endorsement of the {{#ifeq:{{{type}}}|move|[{{fullurl:Special:Log|type=move&amp;amp;page={{FULLPAGENAMEE}}}} current title]|[{{fullurl:{{FULLPAGENAMEE}}|action=history}} current version]}}.}} See the [[Wikipedia:Protection policy|protection policy]] and [{{fullurl:Special:Log|type=protect&amp;amp;page={{FULLPAGENAMEE}}}} protection log] for more details. {{#switch:{{lc:{{{type}}}}}&lt;br /&gt;
 |full|indef=Please discuss any changes on the [[{{TALKPAGENAME}}|talk page]]; you may use the {{tlx|editprotected}} template to ask an [[Wikipedia:Administrator|administrator]] to make the edit if it is supported by [[Wikipedia:Consensus|consensus]]. {{#ifeq:{{NAMESPACE}}|{{ns:8}}&amp;lt;!--MediaWiki--&amp;gt;||You may also [[Wikipedia:Requests for page protection|request]] that this page be unprotected.}}&lt;br /&gt;
 |semi=If you cannot edit this {{pagetype|subjectspace=yes}} and you wish to make a change, you can {{#ifeq:{{NAMESPACE}}|{{TALKSPACE}}||[[Template:Editsemiprotected|request an edit]], [[{{TALKPAGENAME}}|discuss changes on the talk page]],}} [[Wikipedia:Requests for page protection#Current requests for unprotection|request unprotection]], [[Special:Userlogin|log in]], or &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://en.wikipedia.org/w/index.php?title=Special:Userlogin&amp;amp;type=signup &amp;lt;span style=&amp;quot;color:#002bb8;&amp;quot; title=&amp;quot;Sign in / create account&amp;quot;&amp;gt;create an account&amp;lt;/span&amp;gt;].&lt;br /&gt;
 |move=The page may still be edited but cannot be moved until unprotected. Please discuss any suggested moves on the [[{{TALKPAGENAME}}|talk page]] or at [[Wikipedia:Requested moves]].  You can also [[Wikipedia:Requests for page protection|request]] that the page be unprotected.  &lt;br /&gt;
 |office=If you are able to edit this page, please discuss all changes and additions on the [[{{TALKPAGENAME}}|talk page]] first. '''Do not remove protection from this article unless you are authorized by the Wikimedia Foundation to do so.'''&lt;br /&gt;
 |create=Please see the {{#if:{{{xfd|}}}|'''[[{{{xfd}}}|deletion discussion]]''' or the}} [{{fullurl:Special:Log|type=delete&amp;amp;page={{FULLPAGENAMEE}}}} deletion log] for details of why this page was deleted. If you would like to create a page at this title, you must first [[Wikipedia:Requests for page protection|request]] for it to be unprotected, or contact the administrator who deleted the page for the deleted material to be restored. If unsuccessful, you can use [[Wikipedia:Deletion review|deletion review]].&lt;br /&gt;
}}}}}&lt;br /&gt;
}}&lt;br /&gt;
}}|[[Category:Wikipedia pages with incorrect protection templates]]}}&amp;lt;!--End if small--&amp;gt;&amp;lt;includeonly&amp;gt;{{#ifeq:{{lc:{{{categories|no}}}}}|no||{{{categories|}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:Fmbox&amp;diff=89625</id>
		<title>Template:Fmbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:Fmbox&amp;diff=89625"/>
				<updated>2010-09-20T21:27:58Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Attempting to implement Cite_web template to support ASP.NET POET Vulnerability page - depends on other templates.  Let's see how far down the stack of turtles this goes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table {{#if:{{{id|}}}|id=&amp;quot;{{{id|}}}&amp;quot;}} class=&amp;quot;plainlinks fmbox&lt;br /&gt;
{{#switch:{{{type|}}}&lt;br /&gt;
| warning    = fmbox-warning&lt;br /&gt;
| editnotice = fmbox-editnotice&lt;br /&gt;
| system          &amp;lt;!-- system = default --&amp;gt;&lt;br /&gt;
| #default   = fmbox-system&lt;br /&gt;
}} {{{class|}}}&amp;quot; style=&amp;quot;{{{style|}}}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
{{#ifeq:{{{image|}}}|none&lt;br /&gt;
| &amp;lt;!-- No image. --&amp;gt;&lt;br /&gt;
| &amp;lt;td class=&amp;quot;mbox-image&amp;quot;&amp;gt;&lt;br /&gt;
  {{#if:{{{image|}}}&lt;br /&gt;
  | {{{image}}}&lt;br /&gt;
  | [[File:{{#switch:{{{type|}}}&lt;br /&gt;
    | warning    = Cmbox deletion.png&lt;br /&gt;
    | editnotice = Imbox notice.png&lt;br /&gt;
    | system          &amp;lt;!-- system = default --&amp;gt;&lt;br /&gt;
    | #default   = Imbox notice.png&lt;br /&gt;
    }}|40x40px|link=|alt=]]&lt;br /&gt;
  }}&amp;lt;/td&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;td class=&amp;quot;mbox-text&amp;quot; style=&amp;quot;{{{textstyle|}}}&amp;quot;&amp;gt; {{{text}}} &amp;lt;/td&amp;gt;&lt;br /&gt;
{{#if:{{{imageright|}}}&lt;br /&gt;
| &amp;lt;td class=&amp;quot;mbox-imageright&amp;quot;&amp;gt; {{{imageright}}} &amp;lt;/td&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;!--&lt;br /&gt;
  Detect and report usage with faulty &amp;quot;type&amp;quot; parameter:&lt;br /&gt;
--&amp;gt;{{#switch:{{{type|}}}&lt;br /&gt;
|   &amp;lt;!-- No type fed, is also valid input --&amp;gt;&lt;br /&gt;
| warning&lt;br /&gt;
| editnotice&lt;br /&gt;
| system     =    &amp;lt;!-- Do nothing, valid &amp;quot;type&amp;quot; --&amp;gt;&lt;br /&gt;
| #default   = &amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;This message box is using an invalid &amp;quot;type={{{type|}}}&amp;quot; parameter and needs fixing.&amp;lt;/div&amp;gt;[[Category:Wikipedia message box parameter needs fixing|{{main other|Main:}}{{FULLPAGENAME}}]]&amp;lt;!-- Sort on namespace --&amp;gt;&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{pp-template}}&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:Documentation/core/doc&amp;diff=89624</id>
		<title>Template:Documentation/core/doc</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:Documentation/core/doc&amp;diff=89624"/>
				<updated>2010-09-20T21:26:56Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Attempting to implement Cite_web template to support ASP.NET POET Vulnerability page - depends on other templates.  Let's see how far down the stack of turtles this goes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
&amp;lt;!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the {{tl|documentation/core}} sub-template.&lt;br /&gt;
&lt;br /&gt;
Do not use this template directly, use {{tl|documentation}} instead.&lt;br /&gt;
&lt;br /&gt;
{{tlf|documentation}} calls {{tl|documentation/core2}} which in turn calls this template. This template holds most of the code for {{tlf|documentation}}, while {{tlf|documentation}} and {{tlf|documentation/core2}} do parameter preprocessing. Thus simplifying the code.&lt;br /&gt;
&lt;br /&gt;
=== Technical details ===&lt;br /&gt;
&lt;br /&gt;
This sub-template currently expects these parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{documentation/core&lt;br /&gt;
| heading = {{{heading|¬}}}   &amp;lt;!--Note that the &amp;quot;¬&amp;quot; is necessary &lt;br /&gt;
     so we can detect the difference between empty and undefined--&amp;gt;&lt;br /&gt;
| heading-style = {{{heading-style|}}}&lt;br /&gt;
| content = {{{content|}}}    &amp;lt;!--Text instead of a /doc page--&amp;gt;&lt;br /&gt;
| link box = {{{link box|}}}  &amp;lt;!--So &amp;quot;link box=off&amp;quot; works--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| docpage =     &amp;lt;!--Full pagename of the doc page--&amp;gt;&lt;br /&gt;
| doc exist =   &amp;lt;!--&amp;quot;yes&amp;quot; if the doc page exists, empty string if not--&amp;gt;&lt;br /&gt;
| docname fed = &amp;lt;!--&amp;quot;yes&amp;quot; if a docname was manually fed--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| sandbox =     &amp;lt;!--Full pagename of the /sandbox--&amp;gt;&lt;br /&gt;
| testcases =   &amp;lt;!--Full pagename of the /testcases--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| template page =   &amp;lt;!--Full pagename where the {{documentation}}&lt;br /&gt;
    template is placed, but without ending /sandbox or /testcases.&lt;br /&gt;
    Note: Unfortunately might not be the &amp;quot;correct&amp;quot; namespace if &lt;br /&gt;
    the template is in subject space and the {{documentation}} &lt;br /&gt;
    template is in talk space or the other way around.--&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more documentation see {{tl|documentation}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- CATEGORIES AND INTERWIKIS HERE, THANKS --&amp;gt;&lt;br /&gt;
[[Category:Template documentation]]&lt;br /&gt;
[[pt:Predefinição:Documentation/core]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:Documentation/core&amp;diff=89623</id>
		<title>Template:Documentation/core</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:Documentation/core&amp;diff=89623"/>
				<updated>2010-09-20T21:25:46Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Attempting to implement Cite_web template to support ASP.NET POET Vulnerability page - depends on other templates.  Let's see how far down the stack of turtles this goes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
  Start of green doc box&lt;br /&gt;
--&amp;gt;&amp;lt;div id=&amp;quot;template-documentation&amp;quot; class=&amp;quot;template-documentation iezoomfix&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
  Add the heading at the top of the doc box:&lt;br /&gt;
--&amp;gt;{{#ifeq: {{{heading|¬}}} | &amp;lt;!--Defined but empty--&amp;gt;&lt;br /&gt;
| &amp;lt;!--&amp;quot;heading=&amp;quot;, do nothing--&amp;gt;&lt;br /&gt;
| &amp;lt;div style=&amp;quot;padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex;&amp;quot;&amp;gt;{{&lt;br /&gt;
  #if: {{{content|}}}&lt;br /&gt;
  | &lt;br /&gt;
  | &amp;lt;!--Add the [edit][purge] or [create] links--&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;editsection plainlinks&amp;quot; id=&amp;quot;doc_editlinks&amp;quot;&amp;gt;{{&lt;br /&gt;
    #if: {{{doc exist|yes}}}&lt;br /&gt;
    | [[{{fullurl:{{{docpage|{{FULLPAGENAME}}/doc}}}|action=edit}} edit]] [{{purge|purge}}] &lt;br /&gt;
    | &amp;lt;!--/doc doesn't exist--&amp;gt;&lt;br /&gt;
      [[{{fullurl:{{{docpage|{{FULLPAGENAME}}/doc}}}| action=edit&amp;amp;preload={{&lt;br /&gt;
        #ifeq: {{SUBJECTSPACE}} | {{ns:File}}&lt;br /&gt;
        | Template:Documentation/preload-filespace&lt;br /&gt;
        | Template:Documentation/preload&lt;br /&gt;
        }} }} create]]&lt;br /&gt;
    }}&amp;lt;/span&amp;gt;&lt;br /&gt;
  }} &amp;lt;span style=&amp;quot;{{#if: {{{heading-style|}}}&lt;br /&gt;
  | {{{heading-style|}}}&lt;br /&gt;
  | {{#ifeq: {{SUBJECTSPACE}} | {{ns:Template}}&lt;br /&gt;
    | font-weight: bold; font-size: 125%&lt;br /&gt;
    | font-size: 150%&lt;br /&gt;
    }}&lt;br /&gt;
  }}&amp;quot;&amp;gt;{{#switch: {{{heading|¬}}}&lt;br /&gt;
  | ¬ =   &lt;br /&gt;
    &amp;lt;!--&amp;quot;heading&amp;quot; not defined in this or previous level--&amp;gt;&lt;br /&gt;
    {{#switch: {{SUBJECTSPACE}} &lt;br /&gt;
    | {{ns:Template}} = [[Image:Template-info.svg|50px|alt=]] Template documentation&lt;br /&gt;
    | {{ns:File}} = Summary&lt;br /&gt;
    | #default = Documentation&lt;br /&gt;
    }}&lt;br /&gt;
  | #default = &lt;br /&gt;
    &amp;lt;!--&amp;quot;heading&amp;quot; has data or is empty but defined--&amp;gt;&lt;br /&gt;
    {{{heading|}}}&lt;br /&gt;
  }}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
  Load the /doc content:&lt;br /&gt;
  Note: The line breaks between this comment and the if-case&lt;br /&gt;
  and between the if-case and the following div are necessary so &lt;br /&gt;
  &amp;quot;=== Headings ===&amp;quot; at the start and end of docs are interpreted.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{#if: {{{content|}}}&lt;br /&gt;
| {{{content|}}}&lt;br /&gt;
| {{#if: {{{doc exist|yes}}}&lt;br /&gt;
  | {{ {{{docpage|{{FULLPAGENAME}}/doc}}} }}&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!--So right or left floating items don't stick out of the doc box.--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!--End of green doc box--&amp;gt;&amp;lt;!--&lt;br /&gt;
  Link box below for the doc meta-data:&lt;br /&gt;
--&amp;gt;{{#if: &lt;br /&gt;
  &amp;lt;!--Check if we should show the link box--&amp;gt;&lt;br /&gt;
  {{#ifeq: {{{link box|}}} | off&lt;br /&gt;
  |&lt;br /&gt;
  | {{{doc exist|yes}}}{{&lt;br /&gt;
    #switch: {{SUBJECTSPACE}}&lt;br /&gt;
    | {{ns:User}}&lt;br /&gt;
    | {{ns:Template}} = yes&lt;br /&gt;
    }}&lt;br /&gt;
  }}&lt;br /&gt;
&lt;br /&gt;
| {{fmbox&lt;br /&gt;
  | id = documentation-meta-data&lt;br /&gt;
  | image = none&lt;br /&gt;
  | style = background-color: #ecfcf4;&lt;br /&gt;
  | textstyle = font-style: italic;&lt;br /&gt;
  | text = &lt;br /&gt;
    {{#if: {{{link box|}}}&lt;br /&gt;
    | {{{link box}}}   &amp;lt;!--Use custom link box content--&amp;gt;&lt;br /&gt;
    | {{#if: {{{doc exist|yes}}}&lt;br /&gt;
      | &amp;lt;!--/doc exists, link to it--&amp;gt;&lt;br /&gt;
        The above [[Wikipedia:Template documentation|documentation]] is [[Wikipedia:Transclusion|transcluded]] from [[{{{docpage|{{FULLPAGENAME}}/doc}}}]]. &amp;lt;small style=&amp;quot;font-style: normal&amp;quot;&amp;gt;([{{fullurl:{{{docpage|{{FULLPAGENAME}}/doc}}}|action=edit}} edit] &amp;amp;#124; [{{fullurl:{{{docpage|{{FULLPAGENAME}}/doc}}}|action=history}} history])&amp;lt;/small&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
      }}&amp;lt;!-- &lt;br /&gt;
        Add links to /sandbox and /testcases when appropriate:&lt;br /&gt;
   --&amp;gt;{{#switch: {{SUBJECTSPACE}}&lt;br /&gt;
      | {{ns:User}}&lt;br /&gt;
      | {{ns:Template}} = &lt;br /&gt;
        Editors can experiment in this template's {{&lt;br /&gt;
        #ifexist: {{{sandbox| {{FULLPAGENAME}}/sandbox }}}&lt;br /&gt;
        | [[{{{sandbox| {{FULLPAGENAME}}/sandbox }}}|sandbox]] &amp;lt;small style=&amp;quot;font-style: normal&amp;quot;&amp;gt;([{{fullurl: {{{sandbox| {{FULLPAGENAME}}/sandbox }}} | action=edit }} edit] {{!}} [{{fullurl:Wikipedia:pagediff | withJS={{urlencode:MediaWiki:Common.js/pagediff.js}}&amp;amp;oldpage={{urlencode:{{{template page|{{FULLPAGENAME}}}}}}}&amp;amp;newpage={{urlencode:{{{sandbox|{{FULLPAGENAME}}/sandbox}}}}}}} diff])&amp;lt;/small&amp;gt; &lt;br /&gt;
        | sandbox &amp;lt;small style=&amp;quot;font-style: normal&amp;quot;&amp;gt;([{{fullurl: {{{sandbox| {{FULLPAGENAME}}/sandbox }}} | action=edit&amp;amp;preload=Template:Documentation/preload-sandbox }} create])&amp;lt;/small&amp;gt; &lt;br /&gt;
        }} and {{&lt;br /&gt;
        #ifexist: {{{testcases| {{FULLPAGENAME}}/testcases }}}&lt;br /&gt;
        | [[{{{testcases| {{FULLPAGENAME}}/testcases }}}|testcases]] &amp;lt;small style=&amp;quot;font-style: normal&amp;quot;&amp;gt;([{{fullurl: {{{testcases| {{FULLPAGENAME}}/testcases }}} | action=edit }} edit])&amp;lt;/small&amp;gt;&lt;br /&gt;
        | testcases &amp;lt;small style=&amp;quot;font-style: normal&amp;quot;&amp;gt;([{{fullurl: {{{testcases| {{FULLPAGENAME}}/testcases }}} | action=edit&amp;amp;preload=Template:Documentation/preload-testcases }} create])&amp;lt;/small&amp;gt;&lt;br /&gt;
        }} pages. &amp;lt;br&amp;gt;&lt;br /&gt;
      }}&amp;lt;!--&lt;br /&gt;
        Show the cats and interwiki text, but not &lt;br /&gt;
        if &amp;quot;content&amp;quot; fed or &amp;quot;docname fed&amp;quot; since then it is &lt;br /&gt;
        unclear where to add the cats and interwikis.&lt;br /&gt;
   --&amp;gt;{{#if: {{{content|}}} {{{docname fed|}}}&lt;br /&gt;
      | &lt;br /&gt;
      | Please add categories and interwikis to the [[{{{docpage|{{FULLPAGENAME}}/doc}}}|/doc]] subpage.&lt;br /&gt;
      }}&amp;lt;!--&lt;br /&gt;
        Show the &amp;quot;Subpages&amp;quot; link:&lt;br /&gt;
   --&amp;gt;{{#switch: {{SUBJECTSPACE}}&lt;br /&gt;
      | {{ns:File}} =   &amp;lt;!--Don't show it--&amp;gt;&lt;br /&gt;
      | {{ns:Template}} = &amp;amp;#32;[[Special:PrefixIndex/{{{template page|{{FULLPAGENAME}}}}}/|Subpages of this template]].&lt;br /&gt;
      | #default = &amp;amp;#32;[[Special:PrefixIndex/{{{template page|{{FULLPAGENAME}}}}}/|Subpages of this page]].&lt;br /&gt;
      }}&lt;br /&gt;
    }}{{#ifexist:{{FULLPAGENAME}}/Print&lt;br /&gt;
     |&amp;lt;/br&amp;gt;A [[Help:Books/for experts#Improving the book layout|print version]] of this template exists at [[/Print]]. If you make a change to this template, please update the print version as well.[[Category:Templates with print versions]]&lt;br /&gt;
    }}&lt;br /&gt;
  }}&lt;br /&gt;
}}&amp;lt;!--End link box--&amp;gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
  Detect and report strange usage:&lt;br /&gt;
--&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!--Check if {{documentation}} is transcluded &lt;br /&gt;
      on a /doc or /testcases page--&amp;gt;&lt;br /&gt;
  {{#switch: {{SUBPAGENAME}}&lt;br /&gt;
  | doc&lt;br /&gt;
  | testcases = strange&lt;br /&gt;
  }}&lt;br /&gt;
  &amp;lt;!--More checks can be added here, just return anything&lt;br /&gt;
      to make the surrounding if-case trigger--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| &amp;lt;includeonly&amp;gt;[[Category:Wikipedia pages with strange ((documentation)) usage|{{main other|Main:}}{{FULLPAGENAME}}]]&amp;lt;!-- Sort on namespace --&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{pp-template}}&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:Documentation/core2&amp;diff=89622</id>
		<title>Template:Documentation/core2</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:Documentation/core2&amp;diff=89622"/>
				<updated>2010-09-20T21:25:05Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Attempting to implement Cite_web template to support ASP.NET POET Vulnerability page - depends on other templates.  Let's see how far down the stack of turtles this goes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{documentation/core&lt;br /&gt;
| heading = {{{heading|¬}}}   &amp;lt;!--Empty but defined means no header--&amp;gt;&lt;br /&gt;
| heading-style = {{{heading-style|}}}&lt;br /&gt;
| content = {{{content|}}}&lt;br /&gt;
| link box = {{{link box|}}}   &amp;lt;!--So &amp;quot;link box=off&amp;quot; works--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| docpage = &lt;br /&gt;
  {{#if: {{{1|}}}&lt;br /&gt;
  | {{{1|}}}&lt;br /&gt;
  | {{{docspace|{{NAMESPACE}}}}}:{{{template page|{{PAGENAME}}}}}/doc&lt;br /&gt;
  }}&lt;br /&gt;
| doc exist = &lt;br /&gt;
  {{#ifexist: &lt;br /&gt;
    {{#if: {{{1|}}}&lt;br /&gt;
    | {{{1|}}}   &amp;lt;!--Other docname fed--&amp;gt;&lt;br /&gt;
    | {{{docspace|{{NAMESPACE}}}}}:{{{template page|{{PAGENAME}}}}}/doc&lt;br /&gt;
    }}&lt;br /&gt;
  | yes&lt;br /&gt;
  }}&lt;br /&gt;
| docname fed =&lt;br /&gt;
  {{#if: {{{1|}}}&lt;br /&gt;
  | yes&lt;br /&gt;
  }}&lt;br /&gt;
&lt;br /&gt;
| sandbox = &lt;br /&gt;
  {{{docspace|{{NAMESPACE}}}}}:{{{template page|{{PAGENAME}}}}}/sandbox&lt;br /&gt;
| testcases = &lt;br /&gt;
  {{{docspace|{{NAMESPACE}}}}}:{{{template page|{{PAGENAME}}}}}/testcases&lt;br /&gt;
&lt;br /&gt;
| template page = &lt;br /&gt;
  {{NAMESPACE}}:{{{template page|{{PAGENAME}}}}}&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{pp-template}}&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:Pp-template&amp;diff=89621</id>
		<title>Template:Pp-template</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:Pp-template&amp;diff=89621"/>
				<updated>2010-09-20T21:24:11Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Attempting to implement Cite_web template to support ASP.NET POET Vulnerability page - depends on other templates.  Let's see how far down the stack of turtles this goes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{pp-meta&lt;br /&gt;
|type={{#switch:{{{demolevel|{{#ifeq:{{PROTECTIONLEVEL:edit}}-{{PROTECTIONLEVEL:move}}|-sysop|move|{{PROTECTIONLEVEL:edit}}}}}}}&lt;br /&gt;
   |semi&lt;br /&gt;
   |autoconfirmed=semi&lt;br /&gt;
   |administrator&lt;br /&gt;
   |full&lt;br /&gt;
   |sysop=indef&lt;br /&gt;
   |move=move&lt;br /&gt;
   |#default=indef&amp;lt;!--fallback value--&amp;gt;}}&lt;br /&gt;
|small={{{small|yes}}}&lt;br /&gt;
|demospace={{{demospace|}}}&lt;br /&gt;
|demolevel={{#ifeq:{{PAGENAME}}/{{NAMESPACE}}|{{SUBPAGENAME}}/{{ns:Template}}|{{{demolevel|undefined}}}|{{#ifeq:{{lc:{{SUBPAGENAME}}}}|sandbox|sysop|{{{demolevel|undefined}}}}}}}&lt;br /&gt;
|expiry=&amp;lt;!--not applicable--&amp;gt;&lt;br /&gt;
|dispute=no&lt;br /&gt;
|icon-text=This {{#ifeq:{{NAMESPACE}}|{{ns:6}}|image, included in a high-risk template or message,|high-risk template}} is indefinitely {{#switch:{{{demolevel|{{#ifeq:{{PROTECTIONLEVEL:edit}}-{{PROTECTIONLEVEL:move}}|-sysop|move|{{PROTECTIONLEVEL:edit}}}}}}}&lt;br /&gt;
   |semi&lt;br /&gt;
   |autoconfirmed=semi-protected from editing&lt;br /&gt;
   |move=move-protected&lt;br /&gt;
   |administrator&lt;br /&gt;
   |full&lt;br /&gt;
   |sysop&lt;br /&gt;
   |#default=&amp;lt;!--fallback value--&amp;gt;protected from editing}} to prevent vandalism.&lt;br /&gt;
|reason-text=This {{#switch:{{NAMESPACE}}&lt;br /&gt;
  |{{ns:image}}=image, used in one or more [[Wikipedia:High-risk templates|high-risk templates]]{{#switch:{{{demolevel|{{PROTECTIONLEVEL:edit}}}}}&lt;br /&gt;
   |semi&lt;br /&gt;
   |autoconfirmed=&lt;br /&gt;
   |administrator&lt;br /&gt;
   |full&lt;br /&gt;
   |sysop=&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;and/or [[Special:Allmessages|system messages]],&lt;br /&gt;
   |#default=&amp;lt;!--fallback value--&amp;gt;}}&lt;br /&gt;
  |#default=[[Wikipedia:High-risk templates|high-risk template]]&lt;br /&gt;
}} has been [[Wikipedia:This page is protected|{{#switch:{{{demolevel|{{#ifeq:{{PROTECTIONLEVEL:edit}}-{{PROTECTIONLEVEL:move}}|-sysop|move|{{PROTECTIONLEVEL:edit}}}}}}}&lt;br /&gt;
   |semi&lt;br /&gt;
   |autoconfirmed=semi-&lt;br /&gt;
   |move=move-&lt;br /&gt;
   |administrator&lt;br /&gt;
   |full&lt;br /&gt;
   |sysop&amp;lt;!--uses default--&amp;gt;&lt;br /&gt;
   |#default=&amp;lt;!--fallback value--&amp;gt;}}protected]]{{#ifeq:{{PROTECTIONLEVEL:edit}}-{{PROTECTIONLEVEL:move}}|-sysop||&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;from editing}} to prevent [[Wikipedia:Vandalism|vandalism]]. {{#switch:{{{demolevel|{{PROTECTIONLEVEL:edit}}}}}&lt;br /&gt;
   |semi&lt;br /&gt;
   |autoconfirmed=&lt;br /&gt;
   |administrator&lt;br /&gt;
   |full&lt;br /&gt;
   |sysop&amp;lt;!--uses default--&amp;gt;&lt;br /&gt;
   |#default={{#switch:{{NAMESPACE}}|{{ns:image}}=&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;'''Do not move this image''' to [[commons:|Wikimedia Commons]].&amp;lt;/small&amp;gt;}}}}&lt;br /&gt;
|categories={{{categories|{{#ifeq:{{NAMESPACE}}|{{ns:10}}|{{#switch:{{{demolevel|{{#ifeq:{{PROTECTIONLEVEL:edit}}-{{PROTECTIONLEVEL:move}}|-sysop|move|{{PROTECTIONLEVEL:edit}}}}}}}&lt;br /&gt;
   |semi&lt;br /&gt;
   |autoconfirmed=[[Category:Wikipedia semi-protected templates|{{PAGENAME}}]]{{#ifeq:{{PROTECTIONLEVEL:move}}|sysop|[[Category:Wikipedia move-protected templates|{{PAGENAME}}]]}}&lt;br /&gt;
   |move=[[Category:Wikipedia move-protected templates|{{PAGENAME}}]]&lt;br /&gt;
   |administrator&lt;br /&gt;
   |full&lt;br /&gt;
   |sysop&amp;lt;!--uses default--&amp;gt;&lt;br /&gt;
   |#default=[[Category:Wikipedia protected templates|{{PAGENAME}}]]&amp;lt;!--fallback value--&amp;gt;}}}}{{#ifeq:{{NAMESPACE}}|{{ns:6}}|[[Category:{{#switch:{{{demolevel|{{PROTECTIONLEVEL:edit}}}}}&lt;br /&gt;
   |semi&lt;br /&gt;
   |autoconfirmed=Semi-protected&lt;br /&gt;
   |administrator&lt;br /&gt;
   |full&lt;br /&gt;
   |sysop&amp;lt;!--uses default--&amp;gt;&lt;br /&gt;
   |#default=Protected&amp;lt;!--fallback value--&amp;gt;}} images|{{PAGENAME}}]]}}}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{pp-template|categories=no}}  &amp;lt;!-- Show the small version --&amp;gt;&lt;br /&gt;
{{pp-template|small=no}}      &amp;lt;!-- Show the large version --&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:Documentation&amp;diff=89620</id>
		<title>Template:Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:Documentation&amp;diff=89620"/>
				<updated>2010-09-20T21:23:15Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Attempting to implement Cite_web template to support ASP.NET POET Vulnerability page - depends on other templates.  Let's see how far down the stack of turtles this goes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
  Automatically add {{template sandbox notice}} when on a /sandbox page.&lt;br /&gt;
--&amp;gt;{{#ifeq: {{SUBPAGENAME}} | sandbox&lt;br /&gt;
| &amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;{{template sandbox notice}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
  Automatically add {{pp-template}} to protected templates.&lt;br /&gt;
--&amp;gt;{{template other&lt;br /&gt;
| {{#ifeq: {{PROTECTIONLEVEL:move}} | sysop&lt;br /&gt;
  | {{pp-template}}&lt;br /&gt;
  | {{#if: {{PROTECTIONLEVEL:edit}}&lt;br /&gt;
    | {{pp-template}}&lt;br /&gt;
    | &amp;lt;!--Not protected, or only semi-move-protected--&amp;gt;&lt;br /&gt;
    }}&lt;br /&gt;
  }}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
  Start of green doc box.&lt;br /&gt;
--&amp;gt;{{documentation/core2&lt;br /&gt;
| heading = {{{heading|¬}}}   &amp;lt;!--Empty but defined means no header--&amp;gt;&lt;br /&gt;
| heading-style = {{{heading-style|}}}&lt;br /&gt;
| content = {{{content|}}}&lt;br /&gt;
| link box = {{{link box|}}}   &amp;lt;!--So &amp;quot;link box=off&amp;quot; works--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Some namespaces must have the /doc, /sandbox and /testcases &lt;br /&gt;
    in talk space--&amp;gt;&lt;br /&gt;
| docspace =&lt;br /&gt;
  {{#switch: {{SUBJECTSPACE}}&lt;br /&gt;
  | {{ns:0}}&lt;br /&gt;
  | {{ns:File}}&lt;br /&gt;
  | {{ns:MediaWiki}}&lt;br /&gt;
  | {{ns:Category}} = {{TALKSPACE}}&lt;br /&gt;
  | #default = {{SUBJECTSPACE}}&lt;br /&gt;
  }}&lt;br /&gt;
&lt;br /&gt;
| 1 = {{{1|}}}   &amp;lt;!--Other docname, if fed--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--The namespace is added in /core2--&amp;gt;&lt;br /&gt;
| template page = &lt;br /&gt;
  {{#switch: {{SUBPAGENAME}}&lt;br /&gt;
  | sandbox&lt;br /&gt;
  | testcases = {{BASEPAGENAME}}&lt;br /&gt;
  | #default = {{PAGENAME}}&lt;br /&gt;
  }}&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;!--End of green doc box--&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:Cite_web&amp;diff=89619</id>
		<title>Template:Cite web</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:Cite_web&amp;diff=89619"/>
				<updated>2010-09-20T21:22:10Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Attempting to implement Cite_web template to support ASP.NET POET Vulnerability page - depends on other templates.  Let's see how far down the stack of turtles this goes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Citation/core&lt;br /&gt;
  |Citation class=web&lt;br /&gt;
  |Surname1 = {{#if:{{{last|}}}&lt;br /&gt;
                |{{{last}}}&lt;br /&gt;
                |{{#if:{{{last1|}}}&lt;br /&gt;
                   |{{{last1}}}&lt;br /&gt;
                   |{{{author|}}} &lt;br /&gt;
                 }}&lt;br /&gt;
              }}&lt;br /&gt;
  |Surname2 = {{{last2|{{{surname2|{{{author2|}}}}}}}}} &lt;br /&gt;
  |Surname3 = {{{last3|}}}&lt;br /&gt;
  |Surname4 = {{{last4|}}}&lt;br /&gt;
  |Surname5 = {{{last5|}}}&lt;br /&gt;
  |Surname6 = {{{last6|}}}&lt;br /&gt;
  |Surname7 = {{{last7|}}}&lt;br /&gt;
  |Surname8 = {{{last8|}}}&lt;br /&gt;
  |Surname9 = {{{last9|}}}&lt;br /&gt;
  |Given1 = {{#if:{{{first|}}}|{{{first}}}|{{{first1|}}}}}&lt;br /&gt;
  |Given2 = {{{first2|}}}&lt;br /&gt;
  |Given3 = {{{first3|}}}&lt;br /&gt;
  |Given4 = {{{first4|}}}&lt;br /&gt;
  |Given5 = {{{first5|}}}&lt;br /&gt;
  |Given6 = {{{first6|}}}&lt;br /&gt;
  |Given7 = {{{first7|}}}&lt;br /&gt;
  |Given8 = {{{first8|}}}&lt;br /&gt;
  |Given9 = {{{first9|}}}&lt;br /&gt;
  |Authorlink1 = {{#if:{{{authorlink|}}}|{{{authorlink}}}|{{{authorlink1|}}}}}&lt;br /&gt;
  |Authorlink2 = {{{authorlink2|}}}&lt;br /&gt;
  |Authorlink3 = {{{authorlink3|}}}&lt;br /&gt;
  |Authorlink4 = {{{authorlink4|}}}&lt;br /&gt;
  |Authorlink5 = {{{authorlink5|}}}&lt;br /&gt;
  |Authorlink6 = {{{authorlink6|}}}&lt;br /&gt;
  |Authorlink7 = {{{authorlink7|}}}&lt;br /&gt;
  |Authorlink8 = {{{authorlink8|}}}&lt;br /&gt;
  |Authorlink9 = {{{authorlink9|}}}&lt;br /&gt;
  |Coauthors = {{{coauthor|{{{coauthors|}}}}}}&lt;br /&gt;
  |EditorSurname1 = {{{editor-last|{{{editor-surname|{{{editor1-last|{{{editor1-surname|{{{editor1|{{{editor|{{{editors|}}}}}}}}}}}}}}}}}}}}}&lt;br /&gt;
  |EditorSurname2 = {{{editor2-last|{{{editor2-surname|{{{editor2|}}}}}}}}}&lt;br /&gt;
  |EditorSurname3 = {{{editor3-last|{{{editor3-surname|{{{editor3|}}}}}}}}}&lt;br /&gt;
  |EditorSurname4 = {{{editor4-last|{{{editor4-surname|{{{editor4|}}}}}}}}}&lt;br /&gt;
  |EditorGiven1 = {{{editor-first|{{{editor-given|{{{editor1-first|{{{editor1-given|}}}}}}}}}}}}&lt;br /&gt;
  |EditorGiven2={{{editor2-first|{{{editor2-given|}}}}}}&lt;br /&gt;
  |EditorGiven3={{{editor3-first|{{{editor3-given|}}}}}}&lt;br /&gt;
  |EditorGiven4={{{editor4-first|{{{editor4-given|}}}}}}&lt;br /&gt;
  |Editorlink1={{{editor-link|{{{editor1-link|}}}}}}&lt;br /&gt;
  |Editorlink2={{{editor2-link|}}}&lt;br /&gt;
  |Editorlink3={{{editor3-link|}}}&lt;br /&gt;
  |Editorlink4={{{editor4-link|}}}&lt;br /&gt;
  |Year={{#if:{{{year|}}}|{{{year}}}    &amp;lt;!-- attempt to derive year from date, if possible --&amp;gt;&lt;br /&gt;
          |{{#if: {{{date|}}}&lt;br /&gt;
             |{{#iferror: {{#time:Y|{{{date|}}} }}&lt;br /&gt;
                |{{#iferror:{{#time:Y|{{{publication-date|einval}}} }}||{{#time:Y|{{{publication-date|}}} }}}}&lt;br /&gt;
                |{{#time:Y|{{{date|}}} }}&lt;br /&gt;
              }}&lt;br /&gt;
             |{{{publication-date|}}} &amp;lt;!-- last resort --&amp;gt;&lt;br /&gt;
           }}&lt;br /&gt;
        }}&lt;br /&gt;
  |Date = {{#if:{{{date|}}}|{{{date}}}|{{{day|}}} {{{month|}}} {{#if:{{{year|}}}|{{{year}}}|{{{publication-date|}}}}}}}&lt;br /&gt;
  |Title={{{work|}}}&lt;br /&gt;
  |TransTitle={{{trans_title|}}}&lt;br /&gt;
  |At = {{#if:{{{page|}}}|p. {{{page}}}|{{#if:{{{pages|}}}|pp. {{{pages|}}}|{{{at|}}} }} }}&lt;br /&gt;
  |IncludedWorkTitle = {{&lt;br /&gt;
    #if:{{{title|}}}&lt;br /&gt;
    |{{{title}}}&lt;br /&gt;
    |{{&lt;br /&gt;
      #if:{{{trans_title|}}}&lt;br /&gt;
      |&lt;br /&gt;
      |{{Citation error|no &amp;lt;code&amp;gt;&amp;amp;#124;title&amp;amp;#61;&amp;lt;/code&amp;gt; specified|Cite web}}&lt;br /&gt;
      }}&lt;br /&gt;
    }}&lt;br /&gt;
  |IncludedWorkURL = {{#if:{{{archiveurl|}}}|{{{archiveurl|}}}|{{{url|}}}}}&lt;br /&gt;
  |PublicationPlace = {{{location|}}}&lt;br /&gt;
  |Publisher = {{{publisher|}}}&lt;br /&gt;
  |language = {{{language|}}}&lt;br /&gt;
  |format = {{{format|}}}&lt;br /&gt;
  |DOI={{{doi|{{{DOI|}}}}}}&lt;br /&gt;
  |AccessDate={{#if:{{{accessdate|}}}&lt;br /&gt;
                |{{#if: {{{accessyear|}}}&lt;br /&gt;
                   |{{{accessdate}}} {{{accessyear}}}&lt;br /&gt;
                   |{{{accessdate}}}&lt;br /&gt;
                 }}&lt;br /&gt;
                |{{{accessday|}}} {{{accessmonth|}}} {{{accessyear|}}}&lt;br /&gt;
   }}&lt;br /&gt;
  |DateFormat={{#if:{{{dateformat|}}}|{{{dateformat}}}|none}}&lt;br /&gt;
  |quote = {{{quote|}}}&lt;br /&gt;
  |Ref={{{ref|}}}&lt;br /&gt;
  |Sep = {{#ifeq:{{{separator|{{{seperator}}} }}}|;|&amp;amp;#059;|{{{separator|{{{seperator|.}}} }}} }}&lt;br /&gt;
  |PS={{#if:{{{quote|}}}||{{{postscript|.}}}}}&lt;br /&gt;
  |ArchiveURL = {{{archiveurl|}}}&lt;br /&gt;
  |OriginalURL = {{{url|}}}&lt;br /&gt;
  |ArchiveDate= {{{archivedate|}}}&lt;br /&gt;
}}{{#if:{{{accessdaymonth|}}}{{{accessmonthday|}}}{{{accessday|}}}{{{accessmonth|}}}{{{accessyear|}}}{{{day|}}}{{{access-date|}}}{{{dateformat|}}}|[[Category:Pages containing cite templates with deprecated parameters|{{NAMESPACE}} {{PAGENAME}}]]}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Pp-template|small=yes}}&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:ParanoidMike&amp;diff=89618</id>
		<title>User:ParanoidMike</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:ParanoidMike&amp;diff=89618"/>
				<updated>2010-09-20T21:03:35Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Who: Mike Lonergan&lt;br /&gt;
&lt;br /&gt;
What: Security Consultant in the Security Center of Excellence group at Intel.&lt;br /&gt;
&lt;br /&gt;
Where: Portland, OR&lt;br /&gt;
&lt;br /&gt;
Why: I'm here to make what contributions I can to this site (which to me appears to be one of the strongest online resources dedicated to Threat Modeling and to providing actionable mitigations for software vulnerabilities).&lt;br /&gt;
&lt;br /&gt;
[http://paranoidmike.blogspot.com Sporadic blog]&lt;br /&gt;
&lt;br /&gt;
[http://www.codeplex.com/site/users/view/MikeSL My Codeplex open-source software projects]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=ASP.NET_POET_Vulnerability&amp;diff=89617</id>
		<title>ASP.NET POET Vulnerability</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=ASP.NET_POET_Vulnerability&amp;diff=89617"/>
				<updated>2010-09-20T21:01:31Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Added link to YouTube video&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__ &lt;br /&gt;
This page contains details about the recently disclosed ASP.NET POET Vulnerability:&lt;br /&gt;
&lt;br /&gt;
===Advisory===&lt;br /&gt;
* Microsoft Security Advisory (2416728) : http://www.microsoft.com/technet/security/advisory/2416728.mspx&lt;br /&gt;
&lt;br /&gt;
=== Fixes (via web.config change)===&lt;br /&gt;
* Important: ASP.NET Security Vulnerability  (ScottGu's blog) http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx&lt;br /&gt;
* DotNetNuke ASP.NET Security Vulnerability Fix: http://www.subodh.com/Blog/PostID/116/DotNetNuke-ASP-NET-Security-Vulnerability-Fix&lt;br /&gt;
&lt;br /&gt;
===Blogs, News, Articles===&lt;br /&gt;
* Understanding the ASP.NET Vulnerability: http://blogs.technet.com/b/srd/archive/2010/09/17/understanding-the-asp-net-vulnerability.aspx&lt;br /&gt;
* ASP.NET POET Vulnerability - What Else Can I Do?  http://pentonizer.com/general-programming/aspnet-poet-vulnerability-what-else-can-i-do/&lt;br /&gt;
* Automated Padding Oracle Attacks with PadBuster http://www.gdssecurity.com/l/b/2010/09/14/automated-padding-oracle-attacks-with-padbuster/&lt;br /&gt;
* Microsoft investigating ASP.NET vulnerabilities - http://www.thetechherald.com/article.php/201038/6170/Microsoft-investigating-ASP-NET-vulnerabilities&lt;br /&gt;
* Security researchers 'destroy' Microsoft ASP.NET security http://www.theinquirer.net/inquirer/news/1732956/security-researchers-destroy-microsoft-aspnet-security&lt;br /&gt;
* Argentina joins Axis of Evil with zero day ASP.NET exploit http://www.techeye.net/security/argentina-joins-axis-of-evil-with-zero-day-asp-net-exploit&lt;br /&gt;
* Padding Oracle Exploit Tool http://netifera.com/research/&lt;br /&gt;
* Video demonstration of using POET tool to attack vulnerable ASP.NET deployment http://www.youtube.com/watch?v=yghiC_U2RaM&lt;br /&gt;
* Google Search: http://www.google.co.uk/search?q=ASP.NET+vulnerability&lt;br /&gt;
&lt;br /&gt;
=== discussion Threads===&lt;br /&gt;
* Security researchers 'destroy' Microsoft ASP.NET security  http://news.ycombinator.com/item?id=1701502&lt;br /&gt;
* Quite serious security hole in ASP.NET discovered: http://www.reddit.com/r/programming/comments/df72k/quite_serious_security_hole_in_aspnet_discovered&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP .NET Project]]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:Vulnerability&amp;diff=38006</id>
		<title>Template:Vulnerability</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:Vulnerability&amp;diff=38006"/>
				<updated>2008-09-01T20:49:37Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Doesn't it stand to reason that any page labelled with this Template would also fit the bill for getting the Category tag?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a '''Vulnerability'''. To view all vulnerabilities, please see the [[:Category:Vulnerability|Vulnerability Category]] page.&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vulnerability]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Appendix_A:_Testing_Tools&amp;diff=38005</id>
		<title>Appendix A: Testing Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Appendix_A:_Testing_Tools&amp;diff=38005"/>
				<updated>2008-09-01T20:42:15Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: improving formatting &amp;amp; heading breaks, removed extraneous &amp;lt;br&amp;gt; tags&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v3}}&lt;br /&gt;
&lt;br /&gt;
==Open Source Black Box Testing tools==&lt;br /&gt;
&lt;br /&gt;
=== General Testing ===&lt;br /&gt;
&lt;br /&gt;
* '''[[OWASP_WebScarab_Project|OWASP WebScarab]]'''&lt;br /&gt;
* '''[[OWASP_CAL9000_Project|OWASP CAL9000]]'''&lt;br /&gt;
** CAL9000 is a collection of browser-based tools that enable more effective and efficient manual testing efforts.&lt;br /&gt;
** Includes an XSS Attack Library, Character Encoder/Decoder, HTTP Request Generator and Response Evaluator, Testing Checklist, Automated Attack Editor and much more.&lt;br /&gt;
*  '''[[:Category:OWASP Pantera Web Assessment Studio Project|OWASP Pantera Web Assessment Studio Project]]'''&lt;br /&gt;
* SPIKE - http://www.immunitysec.com&lt;br /&gt;
* Paros - http://www.parosproxy.org&lt;br /&gt;
* Burp Proxy - http://www.portswigger.net&lt;br /&gt;
* Achilles Proxy - http://www.mavensecurity.com/achilles&lt;br /&gt;
* Odysseus Proxy - http://www.wastelands.gen.nz/odysseus/&lt;br /&gt;
* Webstretch Proxy - http://sourceforge.net/projects/webstretch&lt;br /&gt;
* Firefox LiveHTTPHeaders, Tamper Data and Developer Tools - http://www.mozdev.org&lt;br /&gt;
* Sensepost Wikto (Google cached fault-finding) - http://www.sensepost.com/research/wikto/index2.html&lt;br /&gt;
* Grendel-Scan - http://www.grendel-scan.com&lt;br /&gt;
&lt;br /&gt;
=== Testing for specific vulnerabilities ===&lt;br /&gt;
&lt;br /&gt;
==== Testing AJAX ====&lt;br /&gt;
* '''[[:Category:OWASP Sprajax Project|OWASP Sprajax Project]]'''&lt;br /&gt;
==== Testing for SQL Injection ====&lt;br /&gt;
* '''[[:Category:OWASP_SQLiX_Project|OWASP SQLiX]]'''&lt;br /&gt;
* Multiple DBMS Sql Injection tool - [[SQL Power Injector]]&lt;br /&gt;
* MySql Blind Injection Bruteforcing, Reversing.org - [sqlbftools]&lt;br /&gt;
* Antonio Parata: Dump Files by sql inference on Mysql - [SqlDumper]&lt;br /&gt;
* Sqlninja: a SQL Server Injection &amp;amp; Takeover Tool - http://sqlninja.sourceforge.net&lt;br /&gt;
* Bernardo Damele and Daniele Bellucci: sqlmap, a blind SQL injection tool - http://sqlmap.sourceforge.net&lt;br /&gt;
* Absinthe 1.1 (formerly SQLSqueal) - http://www.0x90.org/releases/absinthe/&lt;br /&gt;
* SQLInjector - http://www.databasesecurity.com/sql-injector.htm&lt;br /&gt;
* bsqlbf-1.2-th - http://www.514.es&lt;br /&gt;
==== Testing Oracle ====&lt;br /&gt;
* TNS Listener tool (Perl) - http://www.jammed.com/%7Ejwa/hacks/security/tnscmd/tnscmd-doc.html&lt;br /&gt;
* Toad for Oracle - http://www.quest.com/toad &lt;br /&gt;
==== Testing SSL ====&lt;br /&gt;
* Foundstone SSL Digger - http://www.foundstone.com/resources/proddesc/ssldigger.htm&lt;br /&gt;
==== Testing for Brute Force Password ====&lt;br /&gt;
* THC Hydra - http://www.thc.org/thc-hydra/&lt;br /&gt;
* John the Ripper - http://www.openwall.com/john/&lt;br /&gt;
* Brutus - http://www.hoobie.net/brutus/ &lt;br /&gt;
* Medusa - http://www.foofus.net/~jmk/medusa/medusa.html&lt;br /&gt;
==== Testing for HTTP Methods ====&lt;br /&gt;
* NetCat - http://www.vulnwatch.org/netcat&lt;br /&gt;
==== Testing Buffer Overflow ====&lt;br /&gt;
*  OllyDbg - http://www.ollydbg.de&lt;br /&gt;
** &amp;quot;A windows based debugger used for analyzing buffer overflow vulnerabilities&amp;quot;&lt;br /&gt;
* Spike - http://www.immunitysec.com/downloads/SPIKE2.9.tgz&lt;br /&gt;
** A fuzzer framework that can be used to explore vulnerabilities and perform length testing&lt;br /&gt;
* Brute Force Binary Tester (BFB) - http://bfbtester.sourceforge.net&lt;br /&gt;
** A proactive binary checker&lt;br /&gt;
* Metasploit - http://www.metasploit.com/projects/Framework/&lt;br /&gt;
** A rapid exploit development and Testing frame work&lt;br /&gt;
==== Fuzzer  ====&lt;br /&gt;
* '''[[OWASP_WSFuzzer_Project|OWASP WSFuzzer]]'''&lt;br /&gt;
==== Googling ====&lt;br /&gt;
* Foundstone Sitedigger (Google cached fault-finding) - http://www.foundstone.com/resources/proddesc/sitedigger.htm&lt;br /&gt;
&lt;br /&gt;
==Commercial Black Box Testing tools==&lt;br /&gt;
&lt;br /&gt;
* Typhon - http://www.ngssoftware.com/products/internet-security/ngs-typhon.php&lt;br /&gt;
* NGSSQuirreL - http://www.ngssoftware.com/products/database-security/&lt;br /&gt;
* Watchfire AppScan - http://www.watchfire.com&lt;br /&gt;
* Cenzic Hailstorm - http://www.cenzic.com/products_services/cenzic_hailstorm.php&lt;br /&gt;
* SPI Dynamics WebInspect - http://www.spidynamics.com&lt;br /&gt;
* Burp Intruder - http://portswigger.net/intruder&lt;br /&gt;
* Acunetix Web Vulnerability Scanner - http://www.acunetix.com&lt;br /&gt;
* ScanDo - http://www.kavado.com&lt;br /&gt;
* WebSleuth - http://www.sandsprite.com&lt;br /&gt;
* NT Objectives NTOSpider - http://www.ntobjectives.com/products/ntospider.php&lt;br /&gt;
* Fortify Pen Testing Team Tool - http://www.fortifysoftware.com/products/tester&lt;br /&gt;
* Sandsprite Web Sleuth - http://sandsprite.com/Sleuth/&lt;br /&gt;
* MaxPatrol Security Scanner - http://www.maxpatrol.com&lt;br /&gt;
* Ecyware GreenBlue Inspector - http://www.ecyware.com&lt;br /&gt;
* Parasoft WebKing (more QA-type tool)&lt;br /&gt;
* MatriXay - http://www.dbappsecurity.com&lt;br /&gt;
* N-Stalker Web Application Security Scanner - http://www.nstalker.com&lt;br /&gt;
&lt;br /&gt;
==Source Code Analyzers==&lt;br /&gt;
&lt;br /&gt;
===Open Source / Freeware===&lt;br /&gt;
&lt;br /&gt;
* '''[[:Category:OWASP_LAPSE_Project|OWASP LAPSE]]''' &lt;br /&gt;
* PMD - http://pmd.sourceforge.net/&lt;br /&gt;
* FlawFinder - http://www.dwheeler.com/flawfinder&lt;br /&gt;
* Microsoft’s [[FxCop]]&lt;br /&gt;
* Splint - http://splint.org&lt;br /&gt;
* Boon - http://www.cs.berkeley.edu/~daw/boon&lt;br /&gt;
* Pscan - http://www.striker.ottawa.on.ca/~aland/pscan&lt;br /&gt;
* FindBugs - http://findbugs.sourceforge.net&lt;br /&gt;
&lt;br /&gt;
===Commercial ===&lt;br /&gt;
&lt;br /&gt;
* Fortify - http://www.fortifysoftware.com&lt;br /&gt;
* Ounce labs Prexis - http://www.ouncelabs.com&lt;br /&gt;
* Veracode - http://www.veracode.com&lt;br /&gt;
* GrammaTech - http://www.grammatech.com&lt;br /&gt;
* ParaSoft - http://www.parasoft.com&lt;br /&gt;
* ITS4 - http://www.cigital.com/its4&lt;br /&gt;
* CodeWizard - http://www.parasoft.com/products/wizard&lt;br /&gt;
* Armorize CodeSecure - http://www.armorize.com/product/&lt;br /&gt;
* Checkmarx CxSuite  - http://www.checkmarx.com&lt;br /&gt;
&lt;br /&gt;
==Acceptance Testing Tools==&lt;br /&gt;
Acceptance testing tools are used to validate the functionality of web applications.  Some follow a scripted approach and typically make use of a Unit Testing framework to construct test suites and test cases.  Most, if not all, can be adapted to perform security specific tests in addition to functional tests.&lt;br /&gt;
&lt;br /&gt;
===Open Source Tools===&lt;br /&gt;
&lt;br /&gt;
* WATIR - http://wtr.rubyforge.org&lt;br /&gt;
** A Ruby based web testing framework that provides an interface into Internet Explorer.&lt;br /&gt;
** Windows only.&lt;br /&gt;
* HtmlUnit - http://htmlunit.sourceforge.net &lt;br /&gt;
** A Java and JUnit based framework that uses the Apache HttpClient as the transport.&lt;br /&gt;
** Very robust and configurable and is used as the engine for a number of other testing tools.&lt;br /&gt;
* jWebUnit - http://jwebunit.sourceforge.net&lt;br /&gt;
** A Java based meta-framework that uses htmlunit or selenium as the testing engine.&lt;br /&gt;
* Canoo Webtest - http://webtest.canoo.com&lt;br /&gt;
** An XML based testing tool that provides a facade on top of htmlunit.&lt;br /&gt;
** No coding is necessary as the tests are completely specified in XML.&lt;br /&gt;
** There is the option of scripting some elements in Groovy if XML does not suffice.&lt;br /&gt;
** Very actively maintained.&lt;br /&gt;
* HttpUnit - http://httpunit.sourceforge.net&lt;br /&gt;
** One of the first web testing frameworks, suffers from using the native JDK provided HTTP transport, which can be a bit limiting for security testing.&lt;br /&gt;
* Watij - http://watij.com&lt;br /&gt;
** A Java implementation of WATIR.&lt;br /&gt;
** Windows only because it uses IE for its tests (Mozilla integration is in the works).&lt;br /&gt;
* Solex - http://solex.sourceforge.net&lt;br /&gt;
** An Eclipse plugin that provides a graphical tool to record HTTP sessions and make assertions based on the results.&lt;br /&gt;
* Selenium - http://www.openqa.org/selenium/&lt;br /&gt;
** JavaScript based testing framework, cross-platform and provides a GUI for creating tests.&lt;br /&gt;
** Mature and popular tool, but the use of JavaScript could hamper certain security tests.&lt;br /&gt;
&lt;br /&gt;
==Other Tools==&lt;br /&gt;
&lt;br /&gt;
===Runtime Analysis===&lt;br /&gt;
&lt;br /&gt;
*  Rational PurifyPlus - http://www-306.ibm.com/software/awdtools&lt;br /&gt;
&lt;br /&gt;
===Binary Analysis===&lt;br /&gt;
&lt;br /&gt;
* BugScam - http://sourceforge.net/projects/bugscam&lt;br /&gt;
* BugScan - http://www.hbgary.com&lt;br /&gt;
* Veracode - http://www.veracode.com&lt;br /&gt;
&lt;br /&gt;
===Requirements Management===&lt;br /&gt;
&lt;br /&gt;
* Rational Requisite Pro - http://www-306.ibm.com/software/awdtools/reqpro&lt;br /&gt;
&lt;br /&gt;
===Site Mirroring===&lt;br /&gt;
* wget - http://www.gnu.org/software/wget, http://www.interlog.com/~tcharron/wgetwin.html&lt;br /&gt;
* curl - http://curl.haxx.se &lt;br /&gt;
* Sam Spade - http://www.samspade.org&lt;br /&gt;
* Xenu - http://home.snafu.de/tilman/xenulink.html&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Template:OWASP_Testing_Guide_v3&amp;diff=38004</id>
		<title>Template:OWASP Testing Guide v3</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Template:OWASP_Testing_Guide_v3&amp;diff=38004"/>
				<updated>2008-09-01T20:41:08Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: added period, removed spaces&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OWASP Testing Guide v3 Table of Contents]]&lt;br /&gt;
&lt;br /&gt;
 This is a draft of a section of the new Testing Guide v3. For a stable version, please download the OWASP Testing Guide v2 '''[http://www.owasp.org/index.php/Image:OWASP_Testing_Guide_v2_pdf.zip here]'''.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
[[Category:OWASP Testing Project]]&lt;br /&gt;
[[Category:Test]]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Source_Code_Analysis_Tools&amp;diff=37966</id>
		<title>Source Code Analysis Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Source_Code_Analysis_Tools&amp;diff=37966"/>
				<updated>2008-09-01T04:48:56Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: fixed the LAPSE Project link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Source Code Analysis tools are designed to analyze source code and/or compiled version of code in order to help find security flaws. Ideally, such tools would automatically find security flaws with a high degree of confidence that what is found is indeed a flaw. However, this is beyond the state of the art for many types of application security flaws. Thus, such tools frequently serve as aids for an analyst to help them zero in on security relevant portions of code so they can find flaws more efficiently, rather than a tool that simply finds flaws automatically.&lt;br /&gt;
&lt;br /&gt;
Some tools are starting to move into the IDE. For the types of problems that can be detected during the software development phase itself, this is a powerful phase within the development lifecycle to employ such tools, as it provides immediate feedback to the developer on issues they might be introducing into the code during code development itself. This immediate feedback is very useful as compared to finding vulnerabilities much later in the development cycle.&lt;br /&gt;
&lt;br /&gt;
==Strengths and Weaknesses of such tools==&lt;br /&gt;
&lt;br /&gt;
=== Strengths ===&lt;br /&gt;
* Scales Well (Can be run on lots of software, and can be repeatedly (like in nightly builds))&lt;br /&gt;
* For things that such tools can automatically find with high confidence, such as buffer overflows, SQL Injection Flaws, etc. they are great.&lt;br /&gt;
&lt;br /&gt;
=== Weaknesses ===&lt;br /&gt;
* Many types of security vulnerabilities are very difficult to find automatically, such as authentication problems, access control issues, insecure use of cryptography, etc. The current state of the art only allows such tools to automatically find a relatively small percentage of application security flaws. Tools of this type are getting better, however.&lt;br /&gt;
* High numbers of false positives.&lt;br /&gt;
* Frequently can't find configuration issues, since they are not represented in the code.&lt;br /&gt;
* Difficult to 'prove' that an identified security issue is an actual vulnerability.&lt;br /&gt;
* Many of these tools have difficulty analyzing code that can't be compiled. Analysts frequently can't compile code because they don't have the right libraries, all the compilation instructions, all the code, etc.&lt;br /&gt;
&lt;br /&gt;
==Important Selection Criteria==&lt;br /&gt;
&lt;br /&gt;
* Requirement: Must support your language, but not usually a key factor once it does.&lt;br /&gt;
&lt;br /&gt;
* Types of Vulnerabilities it can detect (Out of the OWASP Top Ten?) (plus more?)&lt;br /&gt;
* Does it require a fully buildable set of source?&lt;br /&gt;
* Can it run against binaries instead of source?&lt;br /&gt;
* Can it be integrated into the developer's IDE?&lt;br /&gt;
&lt;br /&gt;
==OWASP Tools Of This Type==&lt;br /&gt;
&lt;br /&gt;
* [[OWASP_LAPSE_Project | OWASP LAPSE Project]]&lt;br /&gt;
&lt;br /&gt;
==Open Source or Free Tools Of This Type==&lt;br /&gt;
&lt;br /&gt;
* [[FxCop]] (Microsoft)&lt;br /&gt;
* PreFast (Microsoft)&lt;br /&gt;
* [http://www.securitycompass.com/inner_swaat.shtml SWAAT] - Simplistic Beta Tool - Languages: Java, JSP, ASP .Net, and PHP&lt;br /&gt;
* [http://www.securesoftware.com/resources/download_rats.html RATS] (Secure Software) - Scans C, C++, Perl, PHP and Python source code for security problems like buffer overflows and TOCTOU (Time Of Check, Time Of Use) race conditions&lt;br /&gt;
&lt;br /&gt;
==Commercial Tools from OWASP Members Of This Type==&lt;br /&gt;
&lt;br /&gt;
These vendors have decided to support OWASP by becoming [[Membership|members]]. OWASP appreciates the support from these organizations, but cannot endorse any commercial products or services.&lt;br /&gt;
&lt;br /&gt;
* [http://www.armorize.com/corpweb/en/products/codesecure Static Source Code Analysis with CodeSecure™] (Armorize Technologies)&lt;br /&gt;
* [http://www.fortifysoftware.com/products/sca.jsp Source Code Analysis] (Fortify)&lt;br /&gt;
* [http://www.ouncelabs.com/ Ounce] (Ounce Labs)&lt;br /&gt;
&lt;br /&gt;
==Other Well Known Commercial Tools Of This Type==&lt;br /&gt;
&lt;br /&gt;
* [http://www.coverity.com/products/prevent.html Prevent] (Coverity)&lt;br /&gt;
* [http://www.klocwork.com/products/klocworkk7.asp K7] (KlocWork)&lt;br /&gt;
&lt;br /&gt;
==More Info==&lt;br /&gt;
&lt;br /&gt;
* TODO: add comments from: http://lists.owasp.org/pipermail/owasp-dotnet/2006-August/000002.html&lt;br /&gt;
* [[Appendix_A:_Testing_Tools | Appendix A: Testing Tools]]&lt;br /&gt;
* [http://samate.nist.gov/index.php/Source_Code_Security_Analyzers NIST's list of Source Code Security Analysis Tools]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP .NET Project]]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Tools Project]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_LAPSE_Project&amp;diff=37965</id>
		<title>OWASP LAPSE Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_LAPSE_Project&amp;diff=37965"/>
				<updated>2008-09-01T04:47:51Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Added to make the internal links work better&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Category:OWASP LAPSE Project]]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=.NET_Security_for_Developers&amp;diff=37964</id>
		<title>.NET Security for Developers</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=.NET_Security_for_Developers&amp;diff=37964"/>
				<updated>2008-09-01T04:14:16Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: improved formatting, updated links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
Developers are responsible for creating secure, trustworthy web applications and services.  This section is to provide tools and guidance for the .NET Developer.&lt;br /&gt;
&lt;br /&gt;
==Areas of Concern==&lt;br /&gt;
* [[Secure Development Lifecycle]]&lt;br /&gt;
** Overview&lt;br /&gt;
** Checklists&lt;br /&gt;
** Tools&lt;br /&gt;
&lt;br /&gt;
* [[.NET Secure Coding | .NET Secure Coding]]&lt;br /&gt;
** Partial Trust&lt;br /&gt;
** Cross Platform&lt;br /&gt;
&lt;br /&gt;
* [[.NET CIA | Confidentiality, Integrity and Availability in Practice]]&lt;br /&gt;
** Cryptography&lt;br /&gt;
** Debugging and Instrumentation&lt;br /&gt;
** Adaptive Web Applications and failing gracefully&lt;br /&gt;
&lt;br /&gt;
* [[.NET Security Features | .NET Security Features (by Version)]]&lt;br /&gt;
** Authentication Best Practices&lt;br /&gt;
** Authorization&lt;br /&gt;
** Security Demands&lt;br /&gt;
&lt;br /&gt;
* [[.NET Unit and Integration Testing | Unit and Integration Testing]]&lt;br /&gt;
** Test First (TDD) and Design Patterns&lt;br /&gt;
** Fuzzing&lt;br /&gt;
&lt;br /&gt;
* .NET Web Technologies&lt;br /&gt;
** [[ASP.NET_WebForms | ASP.NET WebForms]]&lt;br /&gt;
** [[ASP.NET_MVC | ASP.NET Model View Controller]]&lt;br /&gt;
** [[SilverLight | Silverlight]]&lt;br /&gt;
** [[WSS | SharePoint (WSS)]]&lt;br /&gt;
** [[WCF Security Best Practices | Windows Communications Foundation Security Best Practices]]&lt;br /&gt;
&lt;br /&gt;
==Articles &amp;amp; Projects==&lt;br /&gt;
[http://msdn.microsoft.com/security/bb896640.aspx &amp;quot;How Do I?&amp;quot; Microsoft Security Videos]&lt;br /&gt;
&lt;br /&gt;
==Community Contributions==&lt;br /&gt;
[http://keepitlocked.net/archive/2008/04/11/developing-asp-net-in-partial-trust.aspx Developing ASP.NET in Partial Trust]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://go.microsoft.com/?linkid=8685076 Microsoft Security Development Lifecycle 3.2]&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
[[Source_Code_Analysis_Tools | Source Code Analysis Tools]]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Source_Code_Analysis_Tools&amp;diff=37963</id>
		<title>Source Code Analysis Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Source_Code_Analysis_Tools&amp;diff=37963"/>
				<updated>2008-09-01T03:54:30Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: updated links, improved formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Source Code Analysis tools are designed to analyze source code and/or compiled version of code in order to help find security flaws. Ideally, such tools would automatically find security flaws with a high degree of confidence that what is found is indeed a flaw. However, this is beyond the state of the art for many types of application security flaws. Thus, such tools frequently serve as aids for an analyst to help them zero in on security relevant portions of code so they can find flaws more efficiently, rather than a tool that simply finds flaws automatically.&lt;br /&gt;
&lt;br /&gt;
Some tools are starting to move into the IDE. For the types of problems that can be detected during the software development phase itself, this is a powerful phase within the development lifecycle to employ such tools, as it provides immediate feedback to the developer on issues they might be introducing into the code during code development itself. This immediate feedback is very useful as compared to finding vulnerabilities much later in the development cycle.&lt;br /&gt;
&lt;br /&gt;
==Strengths and Weaknesses of such tools==&lt;br /&gt;
&lt;br /&gt;
=== Strengths ===&lt;br /&gt;
* Scales Well (Can be run on lots of software, and can be repeatedly (like in nightly builds))&lt;br /&gt;
* For things that such tools can automatically find with high confidence, such as buffer overflows, SQL Injection Flaws, etc. they are great.&lt;br /&gt;
&lt;br /&gt;
=== Weaknesses ===&lt;br /&gt;
* Many types of security vulnerabilities are very difficult to find automatically, such as authentication problems, access control issues, insecure use of cryptography, etc. The current state of the art only allows such tools to automatically find a relatively small percentage of application security flaws. Tools of this type are getting better, however.&lt;br /&gt;
* High numbers of false positives.&lt;br /&gt;
* Frequently can't find configuration issues, since they are not represented in the code.&lt;br /&gt;
* Difficult to 'prove' that an identified security issue is an actual vulnerability.&lt;br /&gt;
* Many of these tools have difficulty analyzing code that can't be compiled. Analysts frequently can't compile code because they don't have the right libraries, all the compilation instructions, all the code, etc.&lt;br /&gt;
&lt;br /&gt;
==Important Selection Criteria==&lt;br /&gt;
&lt;br /&gt;
* Requirement: Must support your language, but not usually a key factor once it does.&lt;br /&gt;
&lt;br /&gt;
* Types of Vulnerabilities it can detect (Out of the OWASP Top Ten?) (plus more?)&lt;br /&gt;
* Does it require a fully buildable set of source?&lt;br /&gt;
* Can it run against binaries instead of source?&lt;br /&gt;
* Can it be integrated into the developer's IDE?&lt;br /&gt;
&lt;br /&gt;
==OWASP Tools Of This Type==&lt;br /&gt;
&lt;br /&gt;
* [[Category:OWASP_LAPSE_Project | OWASP LAPSE Project]]&lt;br /&gt;
&lt;br /&gt;
==Open Source or Free Tools Of This Type==&lt;br /&gt;
&lt;br /&gt;
* [[FxCop]] (Microsoft)&lt;br /&gt;
* PreFast (Microsoft)&lt;br /&gt;
* [http://www.securitycompass.com/inner_swaat.shtml SWAAT] - Simplistic Beta Tool - Languages: Java, JSP, ASP .Net, and PHP&lt;br /&gt;
* [http://www.securesoftware.com/resources/download_rats.html RATS] (Secure Software) - Scans C, C++, Perl, PHP and Python source code for security problems like buffer overflows and TOCTOU (Time Of Check, Time Of Use) race conditions&lt;br /&gt;
&lt;br /&gt;
==Commercial Tools from OWASP Members Of This Type==&lt;br /&gt;
&lt;br /&gt;
These vendors have decided to support OWASP by becoming [[Membership|members]]. OWASP appreciates the support from these organizations, but cannot endorse any commercial products or services.&lt;br /&gt;
&lt;br /&gt;
* [http://www.armorize.com/corpweb/en/products/codesecure Static Source Code Analysis with CodeSecure™] (Armorize Technologies)&lt;br /&gt;
* [http://www.fortifysoftware.com/products/sca.jsp Source Code Analysis] (Fortify)&lt;br /&gt;
* [http://www.ouncelabs.com/ Ounce] (Ounce Labs)&lt;br /&gt;
&lt;br /&gt;
==Other Well Known Commercial Tools Of This Type==&lt;br /&gt;
&lt;br /&gt;
* [http://www.coverity.com/products/prevent.html Prevent] (Coverity)&lt;br /&gt;
* [http://www.klocwork.com/products/klocworkk7.asp K7] (KlocWork)&lt;br /&gt;
&lt;br /&gt;
==More Info==&lt;br /&gt;
&lt;br /&gt;
* TODO: add comments from: http://lists.owasp.org/pipermail/owasp-dotnet/2006-August/000002.html&lt;br /&gt;
* [[Appendix_A:_Testing_Tools | Appendix A: Testing Tools]]&lt;br /&gt;
* [http://samate.nist.gov/index.php/Source_Code_Security_Analyzers NIST's list of Source Code Security Analysis Tools]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP .NET Project]]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Tools Project]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=FxCop&amp;diff=36928</id>
		<title>FxCop</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=FxCop&amp;diff=36928"/>
				<updated>2008-08-22T18:12:53Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* Tool, Documentation and Community */ added link to released version of FxCop 1.36&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is FxCop? ==&lt;br /&gt;
FxCop is a free code analysis tool developed by Microsoft, use to analyze MSIL (Microsoft Intermediate Language) generated from any managed language (including C# and VB.NET).&lt;br /&gt;
&lt;br /&gt;
FxCop is a standalone .NET 2.0 application, downloadable from the locations referenced below.  A modified version of the FxCop codebase is integrated into Microsoft Visual Studio 2005 and 2008.  While the rulebase for each is mostly the same, there are notable differences between the two (see the Rules comparison spreadsheet [[FxCop#References | below]]), and the compiled format for custom rules is different; thus, one cannot generally develop custom rules that can be used natively in both contexts.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Tool, Documentation and Community ===&lt;br /&gt;
* Download - [http://www.microsoft.com/downloads/details.aspx?FamilyID=9aeaa970-f281-4fb0-aba1-d59d7ed09772 FxCop v1.36]&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis FxCop v1.35]&lt;br /&gt;
* Download - [http://web.archive.org/web/*/http://www.gotdotnet.com/team/fxcop/FxCopInstall1.32.EXE FxCop v1.32 (''via archive.org'')] - only necessary if you wish to perform analysis of code written in Visual Studio 2003 or earlier.&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=556 Rules comparison spreadsheet] - documenting the rules differences between those shipped with FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Documentation - [http://msdn.microsoft.com/library/bb429476.aspx FxCop] - MSDN documentation for FxCop&lt;br /&gt;
* Forum - [http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=98&amp;amp;SiteID=1 Visual Studio Code Analysis and Code Metrics] - MSDN forum to discuss issues and ideas regarding FxCop and the Visual Studio Code Analysis features&lt;br /&gt;
* Wikipedia - [http://en.wikipedia.org/wiki/Fxcop FxCop article]&lt;br /&gt;
* Blog - [http://blogs.msdn.com/fxcop/ Microsoft Code Analysis Team blog] - addresses both the standalone FxCop tool as well as the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://davesbox.com/ Dave's Box] - personal blog written by a member of Microsoft's Code Analysis team&lt;br /&gt;
* Article - [http://blogs.microsoft.co.il/blogs/sasha/archive/2007/02/10/Run-FxCop-from-Code.aspx Run FxCop from Code]&lt;br /&gt;
* Article - [http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx Writing Real Unit Tests for your Custom FxCop Rules]&lt;br /&gt;
* Article - [http://www.binarycoder.net/fxcop/ FxCop and Code Analysis: Writing Your Own Custom Rules] - the definitive tutorial by Jason Kresowaty&lt;br /&gt;
&lt;br /&gt;
=== Custom Rules and other third-party Enhancements ===&lt;br /&gt;
* [http://www.codeplex.com/JSLFxCop JSL FxCop (CodePlex)] - open-source utility to help build custom FxCop rules, as well as many custom rules.&lt;br /&gt;
* [http://www.codeplex.com/CSAR Community Static Analysis Rules  (CodePlex)] - &amp;quot;a community-based project for creating a set of static analysis rules to extend those provided by the FxCop team.&amp;quot;&lt;br /&gt;
* [http://sourceforge.net/projects/tngfxcoprules/ TeachNaGeamhradh FxCop Rules (SourceForge)] - &amp;quot;A growing collection of rules and experimentation with FxCop to provide a comprehensive list of rules that are useful against the .Net assemblies.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/LephoneFxCopRules Lephone FxCop Rules (CodePlex)] - a small set of custom rules&lt;br /&gt;
* [http://code.msdn.microsoft.com/InfoXchange CustomFxCop (CodePlex)] - implements &amp;quot;...new rule sets to check variable naming conventions in a project. This will really help projects to automate their code review process.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/findbugs-fxcop/ findbugs-FxCop (Google Code)] - &amp;quot;This project will produce custom rules for FxCop, that will look for coding mistakes similar to those found by FindBugs, such as infinite recursive loops and ignored return values.&amp;quot;&lt;br /&gt;
* [http://web.archive.org/web/20040724165715/http://tatochip.com/archive/2004/07/19/2678.aspx Custom FxCop rule : checking for IDataReader in method parameters (Archive.org)] - a single FxCop rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113313/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=14DEFFCB-9C2B-4C38-BEEC-AB860084E372 Custom FxCop rule: demonstrates extracting literal arguments from method call (Archive.org)] - a single FxCop rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20070826010853/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=B397F7AD-4811-45DE-9A6A-33F818994CB1 Custom FxCop rules: No Numerals in Variable Names, Naming Constants (Archive.org)] - two FxCop rules in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060427042023/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=01D9F014-5F73-4D66-8E74-C658944180DD Custom FxCop 1.32 rule: detects calls to specific API (Archive.org)] - a single FxCop 1.32 rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113430/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=0BE37E51-6A0E-4E8E-A61F-84A388000859 Custom FxCop 1.32 rule: detects calls to specific API (Archive.org)] - a single FxCop 1.32 rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113604/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=BFBB8D82-678A-4E58-A305-5B00FDE900DB Custom FxCop 1.32 rules (Archive.org)] - some FxCop 1.32 rules in source code form&lt;br /&gt;
&lt;br /&gt;
* [http://web.archive.org/web/20060313113604/http://www.gotdotnet.com/Community/UserSamples/Download.aspx?SampleGuid=BFBB8D82-678A-4E58-A305-5B00FDE900DB Custom FxCop rules &amp;quot;My FxCop rules&amp;quot; (Archive.org)] - some FxCop rules [''broken link'']&lt;br /&gt;
* [http://web.archive.org/web/20060313113924/http://www.gotdotnet.com/Community/UserSamples/Download.aspx?SampleGuid=18919BD2-6502-43B3-BF3D-35C5E57DA06D TechEd 2004 presentation &amp;amp; samples by Michael Murray (Archive.org)] - &amp;quot;Code Correctness with FxCop 1.30&amp;quot; [''broken link'']&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/projects/fxdeputy/ FxDeputy (SourceForge)] - &amp;quot;This project is of use to anyone writing rules for the FxCop checker for .NET. This provides a framework that will allow you to tag tests with attributes that will provide you with control of what tests are run against your rules.&amp;quot;&lt;br /&gt;
* [http://weblogs.asp.net/rosherove/archive/2007/02/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule-testing.aspx FxCopUnit (ASP.NET blogs)] - &amp;quot;A framework for integrated FxCop rule testing&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/fxcopdelta FxCop Delta (CodePlex)] - &amp;quot;a custom check-in policy for Visual Studio Team System that runs FxCop rules before performing a check-in.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/FinRadFxCopStats FinRad Statistics Collector for FxCop (CodePlex)] - &amp;quot;...intended to help development teams to track the progress of an FxCop backlog cleanup effort.&amp;quot;&lt;br /&gt;
* [http://web.archive.org/web/20070825153755/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=BCFB8E54-989A-4464-BDB0-3C3B9B3F1346 FxCopReportAll.xsl (Archive.org)] - GotDotNet sample &amp;quot;style sheet for report that shows all Active and Excluded Messages.&amp;quot;&lt;br /&gt;
* ''([http://code.msdn.microsoft.com/CustomRulesinFxcop CustomRules in FxCop] - '''DEAD CodePlex project''')''&lt;br /&gt;
&lt;br /&gt;
=== Similar Tools for .NET code analysis ===&lt;br /&gt;
* [http://code.google.com/p/agentsmithplugin/ Agent Smith Plugin] - &amp;quot;Agent Smith is C# code style validation plugin for ReSharper (Visual Studio plugin).&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/agentjohnsonplugin/ Agent Johnson Plugin] - &amp;quot;Plugin for JetBrains ReSharper&amp;quot;, performing limited code analysis, refactoring and fixups on C# code. &lt;br /&gt;
* [http://code.google.com/p/smokey/ Smokey (Google Code)] - tool similar to FxCop for analysing managed code; has 220 separate rules.&lt;br /&gt;
* [http://research.microsoft.com/phoenix/ Phoenix] - an SDK from MS Research labelled as &amp;quot;...the software optimization and analysis framework that is the  basis for all future Microsoft® compiler technologies. The Phoenix framework is  an extensible system that can be adapted to read and write binaries and  Microsoft Intermediate Language  assemblies and represent the input files in an Intermediate Representation, which can be analyzed and  manipulated by applications by using the Phoenix API.&amp;quot;&lt;br /&gt;
* [http://www.mono-project.com/Gendarme Gendarme] - &amp;quot;Gendarme is a extensible rule-based tool to find problems in .NET applications and libraries. Gendarme inspects programs and libraries that contain code in ECMA CIL format (Mono and .NET) and looks for common problems with the code, problems that compiler do not typically check or have not historically checked.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/md-codeanalysis/ md-codeanalysis] - &amp;quot;MonoDevelop.CodeAnalysis is an addin that integrates both Gendarme and Smokey into MonoDevelop.&amp;quot;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=FxCop&amp;diff=36927</id>
		<title>FxCop</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=FxCop&amp;diff=36927"/>
				<updated>2008-08-22T18:08:16Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is FxCop? ==&lt;br /&gt;
FxCop is a free code analysis tool developed by Microsoft, use to analyze MSIL (Microsoft Intermediate Language) generated from any managed language (including C# and VB.NET).&lt;br /&gt;
&lt;br /&gt;
FxCop is a standalone .NET 2.0 application, downloadable from the locations referenced below.  A modified version of the FxCop codebase is integrated into Microsoft Visual Studio 2005 and 2008.  While the rulebase for each is mostly the same, there are notable differences between the two (see the Rules comparison spreadsheet [[FxCop#References | below]]), and the compiled format for custom rules is different; thus, one cannot generally develop custom rules that can be used natively in both contexts.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Tool, Documentation and Community ===&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis FxCop v1.35]&lt;br /&gt;
* Download - [http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&amp;amp;displaylang=en FxCop v1.36 (beta)]&lt;br /&gt;
* Download - [http://web.archive.org/web/*/http://www.gotdotnet.com/team/fxcop/FxCopInstall1.32.EXE FxCop v1.32 (''via archive.org'')] - only necessary if you wish to perform analysis of code written in Visual Studio 2003 or earlier.&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=556 Rules comparison spreadsheet] - documenting the rules differences between those shipped with FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Documentation - [http://msdn.microsoft.com/library/bb429476.aspx FxCop] - MSDN documentation for FxCop&lt;br /&gt;
* Forum - [http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=98&amp;amp;SiteID=1 Visual Studio Code Analysis and Code Metrics] - MSDN forum to discuss issues and ideas regarding FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Wikipedia - [http://en.wikipedia.org/wiki/Fxcop FxCop article]&lt;br /&gt;
* Blog - [http://blogs.msdn.com/fxcop/ Microsoft Code Analysis Team blog] - addresses both the standalone FxCop tool as well as the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://davesbox.com/ Dave's Box] - personal blog written by a member of Microsoft's Code Analysis team&lt;br /&gt;
* Article - [http://blogs.microsoft.co.il/blogs/sasha/archive/2007/02/10/Run-FxCop-from-Code.aspx Run FxCop from Code]&lt;br /&gt;
* Article - [http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx Writing Real Unit Tests for your Custom FxCop Rules]&lt;br /&gt;
* Article - [http://www.binarycoder.net/fxcop/ FxCop and Code Analysis: Writing Your Own Custom Rules] - the definitive tutorial by Jason Kresowaty&lt;br /&gt;
&lt;br /&gt;
=== Custom Rules and other third-party Enhancements ===&lt;br /&gt;
* [http://www.codeplex.com/JSLFxCop JSL FxCop (CodePlex)] - open-source utility to help build custom FxCop rules, as well as many custom rules.&lt;br /&gt;
* [http://www.codeplex.com/CSAR Community Static Analysis Rules  (CodePlex)] - &amp;quot;a community-based project for creating a set of static analysis rules to extend those provided by the FxCop team.&amp;quot;&lt;br /&gt;
* [http://sourceforge.net/projects/tngfxcoprules/ TeachNaGeamhradh FxCop Rules (SourceForge)] - &amp;quot;A growing collection of rules and experimentation with FxCop to provide a comprehensive list of rules that are useful against the .Net assemblies.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/LephoneFxCopRules Lephone FxCop Rules (CodePlex)] - a small set of custom rules&lt;br /&gt;
* [http://code.msdn.microsoft.com/InfoXchange CustomFxCop (CodePlex)] - implements &amp;quot;...new rule sets to check variable naming conventions in a project. This will really help projects to automate their code review process.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/findbugs-fxcop/ findbugs-FxCop (Google Code)] - &amp;quot;This project will produce custom rules for FxCop, that will look for coding mistakes similar to those found by FindBugs, such as infinite recursive loops and ignored return values.&amp;quot;&lt;br /&gt;
* [http://web.archive.org/web/20040724165715/http://tatochip.com/archive/2004/07/19/2678.aspx Custom FxCop rule : checking for IDataReader in method parameters (Archive.org)] - a single FxCop rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113313/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=14DEFFCB-9C2B-4C38-BEEC-AB860084E372 Custom FxCop rule: demonstrates extracting literal arguments from method call (Archive.org)] - a single FxCop rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20070826010853/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=B397F7AD-4811-45DE-9A6A-33F818994CB1 Custom FxCop rules: No Numerals in Variable Names, Naming Constants (Archive.org)] - two FxCop rules in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060427042023/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=01D9F014-5F73-4D66-8E74-C658944180DD Custom FxCop 1.32 rule: detects calls to specific API (Archive.org)] - a single FxCop 1.32 rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113430/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=0BE37E51-6A0E-4E8E-A61F-84A388000859 Custom FxCop 1.32 rule: detects calls to specific API (Archive.org)] - a single FxCop 1.32 rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113604/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=BFBB8D82-678A-4E58-A305-5B00FDE900DB Custom FxCop 1.32 rules (Archive.org)] - some FxCop 1.32 rules in source code form&lt;br /&gt;
&lt;br /&gt;
* [http://web.archive.org/web/20060313113604/http://www.gotdotnet.com/Community/UserSamples/Download.aspx?SampleGuid=BFBB8D82-678A-4E58-A305-5B00FDE900DB Custom FxCop rules &amp;quot;My FxCop rules&amp;quot; (Archive.org)] - some FxCop rules [''broken link'']&lt;br /&gt;
* [http://web.archive.org/web/20060313113924/http://www.gotdotnet.com/Community/UserSamples/Download.aspx?SampleGuid=18919BD2-6502-43B3-BF3D-35C5E57DA06D TechEd 2004 presentation &amp;amp; samples by Michael Murray (Archive.org)] - &amp;quot;Code Correctness with FxCop 1.30&amp;quot; [''broken link'']&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/projects/fxdeputy/ FxDeputy (SourceForge)] - &amp;quot;This project is of use to anyone writing rules for the FxCop checker for .NET. This provides a framework that will allow you to tag tests with attributes that will provide you with control of what tests are run against your rules.&amp;quot;&lt;br /&gt;
* [http://weblogs.asp.net/rosherove/archive/2007/02/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule-testing.aspx FxCopUnit (ASP.NET blogs)] - &amp;quot;A framework for integrated FxCop rule testing&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/fxcopdelta FxCop Delta (CodePlex)] - &amp;quot;a custom check-in policy for Visual Studio Team System that runs FxCop rules before performing a check-in.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/FinRadFxCopStats FinRad Statistics Collector for FxCop (CodePlex)] - &amp;quot;...intended to help development teams to track the progress of an FxCop backlog cleanup effort.&amp;quot;&lt;br /&gt;
* [http://web.archive.org/web/20070825153755/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=BCFB8E54-989A-4464-BDB0-3C3B9B3F1346 FxCopReportAll.xsl (Archive.org)] - GotDotNet sample &amp;quot;style sheet for report that shows all Active and Excluded Messages.&amp;quot;&lt;br /&gt;
* ''([http://code.msdn.microsoft.com/CustomRulesinFxcop CustomRules in FxCop] - '''DEAD CodePlex project''')''&lt;br /&gt;
&lt;br /&gt;
=== Similar Tools for .NET code analysis ===&lt;br /&gt;
* [http://code.google.com/p/agentsmithplugin/ Agent Smith Plugin] - &amp;quot;Agent Smith is C# code style validation plugin for ReSharper (Visual Studio plugin).&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/agentjohnsonplugin/ Agent Johnson Plugin] - &amp;quot;Plugin for JetBrains ReSharper&amp;quot;, performing limited code analysis, refactoring and fixups on C# code. &lt;br /&gt;
* [http://code.google.com/p/smokey/ Smokey (Google Code)] - tool similar to FxCop for analysing managed code; has 220 separate rules.&lt;br /&gt;
* [http://research.microsoft.com/phoenix/ Phoenix] - an SDK from MS Research labelled as &amp;quot;...the software optimization and analysis framework that is the  basis for all future Microsoft® compiler technologies. The Phoenix framework is  an extensible system that can be adapted to read and write binaries and  Microsoft Intermediate Language  assemblies and represent the input files in an Intermediate Representation, which can be analyzed and  manipulated by applications by using the Phoenix API.&amp;quot;&lt;br /&gt;
* [http://www.mono-project.com/Gendarme Gendarme] - &amp;quot;Gendarme is a extensible rule-based tool to find problems in .NET applications and libraries. Gendarme inspects programs and libraries that contain code in ECMA CIL format (Mono and .NET) and looks for common problems with the code, problems that compiler do not typically check or have not historically checked.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/md-codeanalysis/ md-codeanalysis] - &amp;quot;MonoDevelop.CodeAnalysis is an addin that integrates both Gendarme and Smokey into MonoDevelop.&amp;quot;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Unvalidated_Input&amp;diff=36651</id>
		<title>Unvalidated Input</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Unvalidated_Input&amp;diff=36651"/>
				<updated>2008-08-20T01:08:09Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Updated the links in &amp;quot;Examples and References&amp;quot; &amp;amp; &amp;quot;Description&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
Web applications use input from HTTP requests (and occasionally files) to determine how to respond. Attackers can tamper with any part of an HTTP request, including the url, querystring, headers, cookies, form fields, and hidden fields, to try to bypass the site’s security mechanisms. Common names for common input tampering attacks include: forced browsing, command insertion, cross site scripting, buffer overflows, format string attacks, SQL injection, cookie poisoning, and hidden field manipulation. Each of these attack types is described in more detail later in this paper.&lt;br /&gt;
&lt;br /&gt;
* [[Cross-site scripting|Cross Site Scripting Flaws]] discusses input that contains scripts to be executed on other user ’s browsers &lt;br /&gt;
* [[Buffer Overflow|Buffer Overflows]] discusses input that has been designed to overwrite program execution space &lt;br /&gt;
* [[Injection Flaws]] discusses input that is modified to contain executable commands&lt;br /&gt;
&lt;br /&gt;
Some sites attempt to protect themselves by filtering out malicious input. The problem is that there are so many different ways of encoding information. These encoding formats are not like encryption, since they are trivial to decode. Still, developers often forget to decode all parameters to their simplest form before using them. Parameters must be converted to the simplest form before they are validated, otherwise, malicious input can be masked and it can slip past filters. The process of simplifying these encodings is called “canonicalization.” Since almost all HTTP input can be represented in multiple formats, this technique can be used to obfuscate any attack targeting the vulnerabilities described in this document. This makes filtering very difficult. &lt;br /&gt;
&lt;br /&gt;
A surprising number of web applications use only client-side mechanisms to validate input. Client side validation mechanisms are easily bypassed, leaving the web application without any protection against malicious parameters. Attackers can generate their own HTTP requests using tools as simple as telnet. They do not have to pay attention to anything that the developer intended to happen on the client side. Note that client side validation is a fine idea for performance and usability, but it has no security benefit whatsoever. Server side checks are required to defend against parameter manipulation attacks. Once these are in place, client side checking can also be included to enhance the user experience for legitimate users and/or reduce the amount of invalid traffic to the server.&lt;br /&gt;
&lt;br /&gt;
These attacks are becoming increasingly likely as the number of tools that support parameter “fuzzing”, corruption, and brute forcing grows. The impact of using unvalidated input should not be underestimated. A huge number of attacks would become difficult or impossible if developers would simply validate input before using it. Unless a web application has a strong, centralized mechanism for validating all input from HTTP requests (and any other sources), vulnerabilities based on malicious input are very likely to exist.&lt;br /&gt;
&lt;br /&gt;
==Environments Affected==&lt;br /&gt;
&lt;br /&gt;
All web servers, application servers, and web application environments are susceptible to parameter tampering. &lt;br /&gt;
&lt;br /&gt;
==Examples and References==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:OWASP_Guide_Project|OWASP Guide to Building Secure Web Applications and Web Services]], Chapter 8: Data Validation &lt;br /&gt;
* [http://www.modsecurity.org modsecurity project] (Apache module for HTTP validation) &lt;br /&gt;
* [[How to Build an HTTP Request Validation Engine for Your J2EE Application]] (J2EE validation with Stinger) &lt;br /&gt;
* [[Have Your Cake and Eat It Too]] (.NET validation)&lt;br /&gt;
&lt;br /&gt;
==How to Determine If You Are Vulnerable==&lt;br /&gt;
&lt;br /&gt;
Any part of an HTTP request that is used by a web application without being carefully validated is known as a “tainted” parameter. The simplest way to find tainted parameter use is to have a detailed code review, searching for all the calls where information is extracted from an HTTP request. For example, in a J2EE application, these are the methods in the HttpServletRequest class. Then you can follow the code to see where that variable gets used. If the variable is not checked before it is used, there is very likely a problem. In Perl, you should consider using the “taint” (-T) option.&lt;br /&gt;
&lt;br /&gt;
It is also possible to find tainted parameter use by using tools like OWASP’s WebScarab. By submitting unexpected values in HTTP requests and viewing the web application’s responses, you can identify places where tainted parameters are used.&lt;br /&gt;
&lt;br /&gt;
==How to Protect Yourself==&lt;br /&gt;
&lt;br /&gt;
The best way to prevent parameter tampering is to ensure that all parameters are validated before they are used. A centralized component or library is likely to be the most effective, as the code performing the checking should all be in one place. Each parameter should be checked against a strict format that specifies exactly what input will be allowed. “Negative” approaches that involve filtering out certain bad input or approaches that rely on signatures are not likely to be effective and may be difficult to maintain.&lt;br /&gt;
&lt;br /&gt;
Parameters should be validated against a “positive” specification that defines:&lt;br /&gt;
&lt;br /&gt;
* Data type (string, integer, real, etc…) &lt;br /&gt;
* Allowed character set &lt;br /&gt;
* Minimum and maximum length &lt;br /&gt;
* Whether null is allowed &lt;br /&gt;
* Whether the parameter is required or not &lt;br /&gt;
* Whether duplicates are allowed &lt;br /&gt;
* Numeric range &lt;br /&gt;
* Specific legal values (enumeration) &lt;br /&gt;
* Specific patterns (regular expressions)&lt;br /&gt;
&lt;br /&gt;
A new class of security devices known as web application firewalls can provide some parameter validation services. However, in order for them to be effective, the device must be configured with a strict definition of what is valid for each parameter for your site. This includes properly protecting all types of input from the HTTP request, including URLs, forms, cookies, querystrings, hidden fields, and parameters.&lt;br /&gt;
&lt;br /&gt;
The OWASP Filters project is producing reusable components in several languages to help prevent many forms of parameter tampering. The Stinger HTTP request validation engine (http://sourceforge.net/projects/stinger) was also developed by OWASP for J2EE environments.&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Top Ten Project]]&lt;br /&gt;
&lt;br /&gt;
__NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=FxCop&amp;diff=36595</id>
		<title>FxCop</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=FxCop&amp;diff=36595"/>
				<updated>2008-08-19T20:58:06Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: added link to OWASP.NET security rules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is FxCop? ==&lt;br /&gt;
FxCop is a free code analysis tool developed by Microsoft, use to analyze MSIL (Microsoft Intermediate Language) generated from any managed language (including C# and VB.NET).&lt;br /&gt;
&lt;br /&gt;
FxCop is a standalone .NET 2.0 application, downloadable from the locations referenced below.  A modified version of the FxCop codebase is integrated into Microsoft Visual Studio 2005 and 2008.  While the rulebase for each is mostly the same, there are notable differences between the two (see the Rules comparison spreadsheet [[FxCop#References | below]]), and the compiled format for custom rules is different; thus, one cannot generally develop custom rules that can be used natively in both contexts.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Tool, Documentation and Community ===&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis FxCop v1.35]&lt;br /&gt;
* Download - [http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&amp;amp;displaylang=en FxCop v1.36 (beta)]&lt;br /&gt;
* Download - [http://web.archive.org/web/*/http://www.gotdotnet.com/team/fxcop/FxCopInstall1.32.EXE FxCop v1.32 (''via archive.org'')] - only necessary if you wish to perform analysis of code written in Visual Studio 2003 or earlier.&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=556 Rules comparison spreadsheet] - documenting the rules differences between those shipped with FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Documentation - [http://msdn.microsoft.com/library/bb429476.aspx FxCop] - MSDN documentation for FxCop&lt;br /&gt;
* Forum - [http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=98&amp;amp;SiteID=1 Visual Studio Code Analysis and Code Metrics] - MSDN forum to discuss issues and ideas regarding FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Wikipedia - [http://en.wikipedia.org/wiki/Fxcop FxCop article]&lt;br /&gt;
* Blog - [http://blogs.msdn.com/fxcop/ Microsoft Code Analysis Team blog] - addresses both the standalone FxCop tool as well as the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://davesbox.com/ Dave's Box] - personal blog written by a member of Microsoft's Code Analysis team&lt;br /&gt;
* Article - [http://blogs.microsoft.co.il/blogs/sasha/archive/2007/02/10/Run-FxCop-from-Code.aspx Run FxCop from Code]&lt;br /&gt;
* Article - [http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx Writing Real Unit Tests for your Custom FxCop Rules]&lt;br /&gt;
* Article - [http://www.binarycoder.net/fxcop/ FxCop and Code Analysis: Writing Your Own Custom Rules] - the definitive tutorial by Jason Kresowaty&lt;br /&gt;
&lt;br /&gt;
=== Custom Rules and other third-party Enhancements ===&lt;br /&gt;
* [http://www.codeplex.com/JSLFxCop JSL FxCop (CodePlex)] - open-source utility to help build custom FxCop rules, as well as many custom rules.&lt;br /&gt;
* [http://www.codeplex.com/CSAR Community Static Analysis Rules  (CodePlex)] - &amp;quot;a community-based project for creating a set of static analysis rules to extend those provided by the FxCop team.&amp;quot;&lt;br /&gt;
* [http://sourceforge.net/projects/tngfxcoprules/ TeachNaGeamhradh FxCop Rules (SourceForge)] - &amp;quot;A growing collection of rules and experimentation with FxCop to provide a comprehensive list of rules that are useful against the .Net assemblies.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/LephoneFxCopRules Lephone FxCop Rules (CodePlex)] - a small set of custom rules&lt;br /&gt;
* [http://code.msdn.microsoft.com/InfoXchange CustomFxCop (CodePlex)] - implements &amp;quot;...new rule sets to check variable naming conventions in a project. This will really help projects to automate their code review process.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/findbugs-fxcop/ findbugs-FxCop (Google Code)] - &amp;quot;This project will produce custom rules for FxCop, that will look for coding mistakes similar to those found by FindBugs, such as infinite recursive loops and ignored return values.&amp;quot;&lt;br /&gt;
* [http://trac2.assembla.com/owaspdotnet/ticket/6 OWASP FxCop rules (OWASP.Net)] - a basic set of rules devised by one of the members of the OWASP.NET project&lt;br /&gt;
* [http://web.archive.org/web/20040724165715/http://tatochip.com/archive/2004/07/19/2678.aspx Custom FxCop rule : checking for IDataReader in method parameters (Archive.org)] - a single FxCop rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113313/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=14DEFFCB-9C2B-4C38-BEEC-AB860084E372 Custom FxCop rule: demonstrates extracting literal arguments from method call (Archive.org)] - a single FxCop rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20070826010853/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=B397F7AD-4811-45DE-9A6A-33F818994CB1 Custom FxCop rules: No Numerals in Variable Names, Naming Constants (Archive.org)] - two FxCop rules in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060427042023/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=01D9F014-5F73-4D66-8E74-C658944180DD Custom FxCop 1.32 rule: detects calls to specific API (Archive.org)] - a single FxCop 1.32 rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113430/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=0BE37E51-6A0E-4E8E-A61F-84A388000859 Custom FxCop 1.32 rule: detects calls to specific API (Archive.org)] - a single FxCop 1.32 rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113604/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=BFBB8D82-678A-4E58-A305-5B00FDE900DB Custom FxCop 1.32 rules (Archive.org)] - some FxCop 1.32 rules in source code form&lt;br /&gt;
&lt;br /&gt;
* [http://web.archive.org/web/20060313113604/http://www.gotdotnet.com/Community/UserSamples/Download.aspx?SampleGuid=BFBB8D82-678A-4E58-A305-5B00FDE900DB Custom FxCop rules &amp;quot;My FxCop rules&amp;quot; (Archive.org)] - some FxCop rules [''broken link'']&lt;br /&gt;
* [http://web.archive.org/web/20060313113924/http://www.gotdotnet.com/Community/UserSamples/Download.aspx?SampleGuid=18919BD2-6502-43B3-BF3D-35C5E57DA06D TechEd 2004 presentation &amp;amp; samples by Michael Murray (Archive.org)] - &amp;quot;Code Correctness with FxCop 1.30&amp;quot; [''broken link'']&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/projects/fxdeputy/ FxDeputy (SourceForge)] - &amp;quot;This project is of use to anyone writing rules for the FxCop checker for .NET. This provides a framework that will allow you to tag tests with attributes that will provide you with control of what tests are run against your rules.&amp;quot;&lt;br /&gt;
* [http://weblogs.asp.net/rosherove/archive/2007/02/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule-testing.aspx FxCopUnit (ASP.NET blogs)] - &amp;quot;A framework for integrated FxCop rule testing&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/fxcopdelta FxCop Delta (CodePlex)] - &amp;quot;a custom check-in policy for Visual Studio Team System that runs FxCop rules before performing a check-in.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/FinRadFxCopStats FinRad Statistics Collector for FxCop (CodePlex)] - &amp;quot;...intended to help development teams to track the progress of an FxCop backlog cleanup effort.&amp;quot;&lt;br /&gt;
* [http://web.archive.org/web/20070825153755/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=BCFB8E54-989A-4464-BDB0-3C3B9B3F1346 FxCopReportAll.xsl (Archive.org)] - GotDotNet sample &amp;quot;style sheet for report that shows all Active and Excluded Messages.&amp;quot;&lt;br /&gt;
* ''([http://code.msdn.microsoft.com/CustomRulesinFxcop CustomRules in FxCop] - '''DEAD CodePlex project''')''&lt;br /&gt;
&lt;br /&gt;
=== Similar Tools for .NET code analysis ===&lt;br /&gt;
* [http://code.google.com/p/agentsmithplugin/ Agent Smith Plugin] - &amp;quot;Agent Smith is C# code style validation plugin for ReSharper (Visual Studio plugin).&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/agentjohnsonplugin/ Agent Johnson Plugin] - &amp;quot;Plugin for JetBrains ReSharper&amp;quot;, performing limited code analysis, refactoring and fixups on C# code. &lt;br /&gt;
* [http://code.google.com/p/smokey/ Smokey (Google Code)] - tool similar to FxCop for analysing managed code; has 220 separate rules.&lt;br /&gt;
* [http://research.microsoft.com/phoenix/ Phoenix] - an SDK from MS Research labelled as &amp;quot;...the software optimization and analysis framework that is the  basis for all future Microsoft® compiler technologies. The Phoenix framework is  an extensible system that can be adapted to read and write binaries and  Microsoft Intermediate Language  assemblies and represent the input files in an Intermediate Representation, which can be analyzed and  manipulated by applications by using the Phoenix API.&amp;quot;&lt;br /&gt;
* [http://www.mono-project.com/Gendarme Gendarme] - &amp;quot;Gendarme is a extensible rule-based tool to find problems in .NET applications and libraries. Gendarme inspects programs and libraries that contain code in ECMA CIL format (Mono and .NET) and looks for common problems with the code, problems that compiler do not typically check or have not historically checked.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/md-codeanalysis/ md-codeanalysis] - &amp;quot;MonoDevelop.CodeAnalysis is an addin that integrates both Gendarme and Smokey into MonoDevelop.&amp;quot;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=.Net_Assembly_Analyzer&amp;diff=36163</id>
		<title>.Net Assembly Analyzer</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=.Net_Assembly_Analyzer&amp;diff=36163"/>
				<updated>2008-08-14T22:47:28Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* Development notes */ spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.Net Assembly Analyzer is a tool that uses reflection to analyze .Net (i.e. MSIL) code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development notes ==&lt;br /&gt;
&lt;br /&gt;
* The base functionality is now created (first analysis of assemblies, storing of data in object, XML serialization, and storage of all calls made from each method (using MSIL analysis)&lt;br /&gt;
* What needs to happen next is for each call discovered, store its reference (as a callback) in the target method (this is a bit complicated because we must make sure that the signatures match)&lt;br /&gt;
* Once that is done, the next step will be do create quick spiders that will use the populated objects to map the possible paths&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
You can download the current version from here [[Media:AssemblyAnalyzer_v0.2.zip.ppt|AssemblyAnalyzer v0.2.zip.ppt]] (remove the .ppt to unzip)&lt;br /&gt;
&lt;br /&gt;
== Info ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current version takes an assembly and creates an XML file containg the following information &lt;br /&gt;
&lt;br /&gt;
 namespace Owasp.AssemblyAnalyzer&lt;br /&gt;
 {&lt;br /&gt;
    [Serializable]&lt;br /&gt;
    public class AssemblyRawData&lt;br /&gt;
    {        &lt;br /&gt;
        public List&amp;lt;aAssembly&amp;gt; aAssemblies = new List&amp;lt;aAssembly&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
    [Serializable]&lt;br /&gt;
    public class aAssembly&lt;br /&gt;
    {&lt;br /&gt;
        [XmlAttribute()] public string Name = &amp;quot;&amp;quot;;&lt;br /&gt;
        public List&amp;lt;String&amp;gt; strAttributes = new List&amp;lt;String&amp;gt;();&lt;br /&gt;
        public List&amp;lt;mModule&amp;gt; mModules = new List&amp;lt;mModule&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
    [Serializable]&lt;br /&gt;
    public class mModule&lt;br /&gt;
    {&lt;br /&gt;
        [XmlAttribute()] public string Name;&lt;br /&gt;
        public string FullyQualifiedName;&lt;br /&gt;
        public List&amp;lt;tType&amp;gt; tTypes = new List&amp;lt;tType&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
    [Serializable]&lt;br /&gt;
    public class tType&lt;br /&gt;
    {&lt;br /&gt;
        [XmlAttribute()] public string FullName;  &lt;br /&gt;
        [XmlAttribute()] public string Name;&lt;br /&gt;
        [XmlAttribute()] public string Namespace;        &lt;br /&gt;
        [XmlAttribute()] public bool bIsAbstract;&lt;br /&gt;
        [XmlAttribute()] public bool bIsAnsiClass;&lt;br /&gt;
        [XmlAttribute()] public bool bIsArray;&lt;br /&gt;
        [XmlAttribute()] public bool bIsAutoClass;&lt;br /&gt;
        [XmlAttribute()] public bool bIsAutoLayout;&lt;br /&gt;
        [XmlAttribute()] public bool bIsByRef;&lt;br /&gt;
        [XmlAttribute()] public bool bIsClass;&lt;br /&gt;
        [XmlAttribute()] public bool bIsCOMObject;&lt;br /&gt;
        [XmlAttribute()] public bool bIsContextful;&lt;br /&gt;
        [XmlAttribute()] public bool bIsEnum;&lt;br /&gt;
        [XmlAttribute()] public bool bIsExplicitLayout;&lt;br /&gt;
        [XmlAttribute()] public bool bIsGenericParameter;&lt;br /&gt;
        [XmlAttribute()] public bool bIsGenericType;&lt;br /&gt;
        [XmlAttribute()] public bool bIsGenericTypeDefinition;&lt;br /&gt;
        [XmlAttribute()] public bool bIsImport;&lt;br /&gt;
        [XmlAttribute()] public bool bIsInterface;&lt;br /&gt;
        [XmlAttribute()] public bool bIsLayoutSequential;&lt;br /&gt;
        [XmlAttribute()] public bool bIsMarshalByRef;&lt;br /&gt;
        [XmlAttribute()] public bool bIsNested;&lt;br /&gt;
        [XmlAttribute()] public bool bIsNestedAssembly;&lt;br /&gt;
        [XmlAttribute()] public bool bIsNestedFamily;&lt;br /&gt;
        [XmlAttribute()] public bool bIsNestedPrivate;&lt;br /&gt;
        [XmlAttribute()] public bool bIsNestedPublic;&lt;br /&gt;
        [XmlAttribute()] public bool bIsNotPublic;&lt;br /&gt;
        [XmlAttribute()] public bool bIsPointer;&lt;br /&gt;
        [XmlAttribute()] public bool bIsPrimitive;&lt;br /&gt;
        [XmlAttribute()] public bool bIsPublic;&lt;br /&gt;
        [XmlAttribute()] public bool bIsSealed;&lt;br /&gt;
        [XmlAttribute()] public bool bIsSerializable;&lt;br /&gt;
        [XmlAttribute()] public bool bIsSpecialName;&lt;br /&gt;
        [XmlAttribute()] public bool bIsUnicodeClass;&lt;br /&gt;
        [XmlAttribute()] public bool bIsValueType;&lt;br /&gt;
        [XmlAttribute()] public bool bIsVisible;&lt;br /&gt;
        public string strTypeAttributes;&lt;br /&gt;
        public List&amp;lt;String&amp;gt; strAttributes = new List&amp;lt;String&amp;gt;();&lt;br /&gt;
        public List&amp;lt;mMethod&amp;gt; mMethods = new List&amp;lt;mMethod&amp;gt;();&lt;br /&gt;
        public List&amp;lt;fField&amp;gt; fFields = new List&amp;lt;fField&amp;gt;();&lt;br /&gt;
        public List&amp;lt;pProperty&amp;gt; pProperties = new List&amp;lt;pProperty&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
    [Serializable]&lt;br /&gt;
    public class mMethod&lt;br /&gt;
    {&lt;br /&gt;
        [XmlAttribute()] public string Name;&lt;br /&gt;
        [XmlAttribute()] public bool bIsAbstract;&lt;br /&gt;
        [XmlAttribute()] public bool bIsAssembly;&lt;br /&gt;
        [XmlAttribute()] public bool bIsConstructor;&lt;br /&gt;
        [XmlAttribute()] public bool bIsFamily;&lt;br /&gt;
        [XmlAttribute()] public bool bIsFinal;&lt;br /&gt;
        [XmlAttribute()] public bool bIsGenericMethod;&lt;br /&gt;
        [XmlAttribute()] public bool bIsGenericMethodDefinition;&lt;br /&gt;
        [XmlAttribute()] public bool bIsHideBySig;&lt;br /&gt;
        [XmlAttribute()] public bool bIsPrivate;&lt;br /&gt;
        [XmlAttribute()] public bool bIsPublic;&lt;br /&gt;
        [XmlAttribute()] public bool bIsSpecialName;&lt;br /&gt;
        [XmlAttribute()] public bool bIsStatic;&lt;br /&gt;
        [XmlAttribute()] public bool bIsVirtual;        &lt;br /&gt;
        public List&amp;lt;string&amp;gt; strCalls = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
        public List&amp;lt;string&amp;gt; strUsedBy = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
    [Serializable]&lt;br /&gt;
    public class fField&lt;br /&gt;
    {&lt;br /&gt;
        [XmlAttribute()] public string Name;&lt;br /&gt;
    }&lt;br /&gt;
    [Serializable]&lt;br /&gt;
    public class pProperty&lt;br /&gt;
    {&lt;br /&gt;
        [XmlAttribute()] public string Name;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Output Sample==&lt;br /&gt;
&lt;br /&gt;
The output is a serialized version of the populated AssemblyRawData object&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;AssemblyRawData xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;aAssemblies&amp;gt;&lt;br /&gt;
    &amp;lt;aAssembly Name=&amp;quot;AssemblyAnalyzer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;strAttributes&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;System.Reflection.AssemblyConfigurationAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;System.Reflection.AssemblyTitleAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;System.Reflection.AssemblyCompanyAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;System.Reflection.AssemblyFileVersionAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;System.Reflection.AssemblyProductAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;System.Diagnostics.DebuggableAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;System.Runtime.CompilerServices.CompilationRelaxationsAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;System.Runtime.CompilerServices.RuntimeCompatibilityAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;System.Reflection.AssemblyDescriptionAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;System.Runtime.InteropServices.GuidAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;System.Runtime.InteropServices.ComVisibleAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;System.Reflection.AssemblyTrademarkAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;System.Reflection.AssemblyCopyrightAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
      &amp;lt;/strAttributes&amp;gt;&lt;br /&gt;
      &amp;lt;mModules&amp;gt;&lt;br /&gt;
        &amp;lt;mModule Name=&amp;quot;AssemblyAnalyzer.exe&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FullyQualifiedName&amp;gt;F:\_Research\_MS session in Seattle\AssemblyAnalyzer\bin\AssemblyAnalyzer.exe&amp;lt;/FullyQualifiedName&amp;gt;&lt;br /&gt;
          &amp;lt;tTypes&amp;gt;&lt;br /&gt;
            &amp;lt;tType FullName=&amp;quot;Owasp.AssemblyAnalyzer.Properties.Resources&amp;quot; Name=&amp;quot;Resources&amp;quot; Namespace=&amp;quot;Owasp.AssemblyAnalyzer.Properties&amp;quot; bIsAbstract=&amp;quot;false&amp;quot; bIsAnsiClass=&amp;quot;true&amp;quot; bIsArray=&amp;quot;false&amp;quot; bIsAutoClass=&amp;quot;false&amp;quot; bIsAutoLayout=&amp;quot;true&amp;quot; bIsByRef=&amp;quot;false&amp;quot; bIsClass=&amp;quot;true&amp;quot; bIsCOMObject=&amp;quot;false&amp;quot; bIsContextful=&amp;quot;false&amp;quot; bIsEnum=&amp;quot;false&amp;quot; bIsExplicitLayout=&amp;quot;false&amp;quot; bIsGenericParameter=&amp;quot;false&amp;quot; bIsGenericType=&amp;quot;false&amp;quot; bIsGenericTypeDefinition=&amp;quot;false&amp;quot; bIsImport=&amp;quot;false&amp;quot; bIsInterface=&amp;quot;false&amp;quot; bIsLayoutSequential=&amp;quot;false&amp;quot; bIsMarshalByRef=&amp;quot;false&amp;quot; bIsNested=&amp;quot;false&amp;quot; bIsNestedAssembly=&amp;quot;false&amp;quot; bIsNestedFamily=&amp;quot;false&amp;quot; bIsNestedPrivate=&amp;quot;false&amp;quot; bIsNestedPublic=&amp;quot;false&amp;quot; bIsNotPublic=&amp;quot;true&amp;quot; bIsPointer=&amp;quot;false&amp;quot; bIsPrimitive=&amp;quot;false&amp;quot; bIsPublic=&amp;quot;false&amp;quot; bIsSealed=&amp;quot;false&amp;quot; bIsSerializable=&amp;quot;false&amp;quot; bIsSpecialName=&amp;quot;false&amp;quot; bIsUnicodeClass=&amp;quot;false&amp;quot; bIsValueType=&amp;quot;false&amp;quot; bIsVisible=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;strTypeAttributes&amp;gt;AutoLayout, AnsiClass, Class, BeforeFieldInit&amp;lt;/strTypeAttributes&amp;gt;&lt;br /&gt;
              &amp;lt;strAttributes&amp;gt;&lt;br /&gt;
                &amp;lt;string&amp;gt;System.Diagnostics.DebuggerNonUserCodeAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
                &amp;lt;string&amp;gt;System.Runtime.CompilerServices.CompilerGeneratedAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
                &amp;lt;string&amp;gt;System.CodeDom.Compiler.GeneratedCodeAttribute&amp;lt;/string&amp;gt;&lt;br /&gt;
              &amp;lt;/strAttributes&amp;gt;&lt;br /&gt;
              &amp;lt;mMethods&amp;gt;&lt;br /&gt;
                &amp;lt;mMethod Name=&amp;quot;GetType&amp;quot; bIsAbstract=&amp;quot;false&amp;quot; bIsAssembly=&amp;quot;false&amp;quot; bIsConstructor=&amp;quot;false&amp;quot; bIsFamily=&amp;quot;false&amp;quot; bIsFinal=&amp;quot;false&amp;quot; bIsGenericMethod=&amp;quot;false&amp;quot; bIsGenericMethodDefinition=&amp;quot;false&amp;quot; bIsHideBySig=&amp;quot;true&amp;quot; bIsPrivate=&amp;quot;false&amp;quot; bIsPublic=&amp;quot;true&amp;quot; bIsSpecialName=&amp;quot;false&amp;quot; bIsStatic=&amp;quot;false&amp;quot; bIsVirtual=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;strCalls /&amp;gt;&lt;br /&gt;
                  &amp;lt;strUsedBy /&amp;gt;&lt;br /&gt;
                &amp;lt;/mMethod&amp;gt;&lt;br /&gt;
                &amp;lt;mMethod Name=&amp;quot;ToString&amp;quot; bIsAbstract=&amp;quot;false&amp;quot; bIsAssembly=&amp;quot;false&amp;quot; bIsConstructor=&amp;quot;false&amp;quot; bIsFamily=&amp;quot;false&amp;quot; bIsFinal=&amp;quot;false&amp;quot; bIsGenericMethod=&amp;quot;false&amp;quot; bIsGenericMethodDefinition=&amp;quot;false&amp;quot; bIsHideBySig=&amp;quot;true&amp;quot; bIsPrivate=&amp;quot;false&amp;quot; bIsPublic=&amp;quot;true&amp;quot; bIsSpecialName=&amp;quot;false&amp;quot; bIsStatic=&amp;quot;false&amp;quot; bIsVirtual=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;strCalls /&amp;gt;&lt;br /&gt;
                  &amp;lt;strUsedBy /&amp;gt;&lt;br /&gt;
                &amp;lt;/mMethod&amp;gt;&lt;br /&gt;
                &amp;lt;mMethod Name=&amp;quot;Equals&amp;quot; bIsAbstract=&amp;quot;false&amp;quot; bIsAssembly=&amp;quot;false&amp;quot; bIsConstructor=&amp;quot;false&amp;quot; bIsFamily=&amp;quot;false&amp;quot; bIsFinal=&amp;quot;false&amp;quot; bIsGenericMethod=&amp;quot;false&amp;quot; bIsGenericMethodDefinition=&amp;quot;false&amp;quot; bIsHideBySig=&amp;quot;true&amp;quot; bIsPrivate=&amp;quot;false&amp;quot; bIsPublic=&amp;quot;true&amp;quot; bIsSpecialName=&amp;quot;false&amp;quot; bIsStatic=&amp;quot;false&amp;quot; bIsVirtual=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;strCalls /&amp;gt;&lt;br /&gt;
                  &amp;lt;strUsedBy /&amp;gt;&lt;br /&gt;
                &amp;lt;/mMethod&amp;gt;&lt;br /&gt;
                &amp;lt;mMethod Name=&amp;quot;GetHashCode&amp;quot; bIsAbstract=&amp;quot;false&amp;quot; bIsAssembly=&amp;quot;false&amp;quot; bIsConstructor=&amp;quot;false&amp;quot; bIsFamily=&amp;quot;false&amp;quot; bIsFinal=&amp;quot;false&amp;quot; bIsGenericMethod=&amp;quot;false&amp;quot; bIsGenericMethodDefinition=&amp;quot;false&amp;quot; bIsHideBySig=&amp;quot;true&amp;quot; bIsPrivate=&amp;quot;false&amp;quot; bIsPublic=&amp;quot;true&amp;quot; bIsSpecialName=&amp;quot;false&amp;quot; bIsStatic=&amp;quot;false&amp;quot; bIsVirtual=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;strCalls /&amp;gt;&lt;br /&gt;
                  &amp;lt;strUsedBy /&amp;gt;&lt;br /&gt;
                &amp;lt;/mMethod&amp;gt;&lt;br /&gt;
              &amp;lt;/mMethods&amp;gt;&lt;br /&gt;
              &amp;lt;fFields /&amp;gt;&lt;br /&gt;
              &amp;lt;pProperties /&amp;gt;&lt;br /&gt;
            &amp;lt;/tType&amp;gt;&lt;br /&gt;
            &amp;lt;tType FullName=&amp;quot;Owasp.AssemblyAnalyzer.utils.serialization&amp;quot; Name=&amp;quot;serialization&amp;quot; Namespace=&amp;quot;Owasp.AssemblyAnalyzer.utils&amp;quot; bIsAbstract=&amp;quot;false&amp;quot; bIsAnsiClass=&amp;quot;true&amp;quot; bIsArray=&amp;quot;false&amp;quot; bIsAutoClass=&amp;quot;false&amp;quot; bIsAutoLayout=&amp;quot;true&amp;quot; bIsByRef=&amp;quot;false&amp;quot; bIsClass=&amp;quot;true&amp;quot; bIsCOMObject=&amp;quot;false&amp;quot; bIsContextful=&amp;quot;false&amp;quot; bIsEnum=&amp;quot;false&amp;quot; bIsExplicitLayout=&amp;quot;false&amp;quot; bIsGenericParameter=&amp;quot;false&amp;quot; bIsGenericType=&amp;quot;false&amp;quot; bIsGenericTypeDefinition=&amp;quot;false&amp;quot; bIsImport=&amp;quot;false&amp;quot; bIsInterface=&amp;quot;false&amp;quot; bIsLayoutSequential=&amp;quot;false&amp;quot; bIsMarshalByRef=&amp;quot;false&amp;quot; bIsNested=&amp;quot;false&amp;quot; bIsNestedAssembly=&amp;quot;false&amp;quot; bIsNestedFamily=&amp;quot;false&amp;quot; bIsNestedPrivate=&amp;quot;false&amp;quot; bIsNestedPublic=&amp;quot;false&amp;quot; bIsNotPublic=&amp;quot;true&amp;quot; bIsPointer=&amp;quot;false&amp;quot; bIsPrimitive=&amp;quot;false&amp;quot; bIsPublic=&amp;quot;false&amp;quot; bIsSealed=&amp;quot;false&amp;quot; bIsSerializable=&amp;quot;false&amp;quot; bIsSpecialName=&amp;quot;false&amp;quot; bIsUnicodeClass=&amp;quot;false&amp;quot; bIsValueType=&amp;quot;false&amp;quot; bIsVisible=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;strTypeAttributes&amp;gt;AutoLayout, AnsiClass, Class, BeforeFieldInit&amp;lt;/strTypeAttributes&amp;gt;&lt;br /&gt;
              &amp;lt;strAttributes /&amp;gt;&lt;br /&gt;
              &amp;lt;mMethods&amp;gt;&lt;br /&gt;
                &amp;lt;mMethod Name=&amp;quot;returnStringOfSerializedObject&amp;quot; bIsAbstract=&amp;quot;false&amp;quot; bIsAssembly=&amp;quot;false&amp;quot; bIsConstructor=&amp;quot;false&amp;quot; bIsFamily=&amp;quot;false&amp;quot; bIsFinal=&amp;quot;false&amp;quot; bIsGenericMethod=&amp;quot;false&amp;quot; bIsGenericMethodDefinition=&amp;quot;false&amp;quot; bIsHideBySig=&amp;quot;true&amp;quot; bIsPrivate=&amp;quot;false&amp;quot; bIsPublic=&amp;quot;true&amp;quot; bIsSpecialName=&amp;quot;false&amp;quot; bIsStatic=&amp;quot;true&amp;quot; bIsVirtual=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;strCalls&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.Object.GetType&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.Xml.Serialization.XmlSerializer..ctor&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.Object.GetType&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.Xml.Serialization.XmlSerializer..ctor&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.IO.MemoryStream..ctor&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.Xml.Serialization.XmlSerializer.Serialize&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.IO.Stream.Flush&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.IO.Stream.set_Position&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.IO.Stream.get_Length&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.IO.Stream.get_Length&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.IO.Stream.Read&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.Text.Encoding.get_UTF8&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.Text.Encoding.GetString&amp;lt;/string&amp;gt;&lt;br /&gt;
                  &amp;lt;/strCalls&amp;gt;&lt;br /&gt;
                  &amp;lt;strUsedBy /&amp;gt;&lt;br /&gt;
                &amp;lt;/mMethod&amp;gt;&lt;br /&gt;
                &amp;lt;mMethod Name=&amp;quot;returnDeSerializedObjectOfSerializedString&amp;quot; bIsAbstract=&amp;quot;false&amp;quot; bIsAssembly=&amp;quot;false&amp;quot; bIsConstructor=&amp;quot;false&amp;quot; bIsFamily=&amp;quot;false&amp;quot; bIsFinal=&amp;quot;false&amp;quot; bIsGenericMethod=&amp;quot;false&amp;quot; bIsGenericMethodDefinition=&amp;quot;false&amp;quot; bIsHideBySig=&amp;quot;true&amp;quot; bIsPrivate=&amp;quot;false&amp;quot; bIsPublic=&amp;quot;true&amp;quot; bIsSpecialName=&amp;quot;false&amp;quot; bIsStatic=&amp;quot;true&amp;quot; bIsVirtual=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;strCalls&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.Xml.Serialization.XmlSerializer..ctor&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.Text.Encoding.get_UTF8&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.Text.Encoding.GetBytes&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.IO.MemoryStream..ctor&amp;lt;/string&amp;gt;&lt;br /&gt;
                    &amp;lt;string&amp;gt;System.Xml.Serialization.XmlSerializer.Deserialize&amp;lt;/string&amp;gt;&lt;br /&gt;
                  &amp;lt;/strCalls&amp;gt;&lt;br /&gt;
                  &amp;lt;strUsedBy /&amp;gt;&lt;br /&gt;
                &amp;lt;/mMethod&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP .NET Project]]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Risk_Modeling&amp;diff=35820</id>
		<title>Threat Risk Modeling</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Risk_Modeling&amp;diff=35820"/>
				<updated>2008-08-11T20:36:14Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: added list of risk management tools (all open source)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
When you start a web application design, it is essential to apply threat risk modeling; otherwise you will squander resources, time and money on useless controls that fail to focus on the real risks.&lt;br /&gt;
&lt;br /&gt;
The method used to assess risk is not nearly as important as actually performing a structured threat risk modeling. Microsoft notes that the single most important factor in their security improvement program was the corporate adoption of threat risk modeling.&lt;br /&gt;
&lt;br /&gt;
OWASP recommends Microsoft’s threat modeling process because it works well for addressing the unique challenges facing web application security and is simple to learn and adopt by designers, developers, code reviewers, and the quality assurance team.&lt;br /&gt;
&lt;br /&gt;
The following sections provide some overview information (or see Section 6.9, Further Reading, for additional resources).&lt;br /&gt;
&lt;br /&gt;
== Threat Risk Modeling ==&lt;br /&gt;
Threat risk modeling is an essential process for secure web application development. It allows organizations to determine the correct controls and to produce effective countermeasures within budget. For example, there is little point in spending $100,000 for fraud control for a system that has negligible fraud risk.&lt;br /&gt;
&lt;br /&gt;
== Performing threat risk modeling using the Microsoft Threat Modeling Process ==&lt;br /&gt;
The threat risk modeling process has five steps, enumerated below and shown graphically in Figure 1. They are:&lt;br /&gt;
# Identify Security Objectives&lt;br /&gt;
# Survey the Application&lt;br /&gt;
# Decompose it&lt;br /&gt;
# Identify Threats&lt;br /&gt;
# Identify Vulnerabilities&lt;br /&gt;
&lt;br /&gt;
[[Image:Threat_Model_Flow.gif|Figure 1: Threat Model Flow]]&lt;br /&gt;
&lt;br /&gt;
Let’s consider the steps in more detail.&lt;br /&gt;
&lt;br /&gt;
=== Identify Security Objectives ===&lt;br /&gt;
The business (or project management) leadership, in concert with the software development and quality assurance teams, all need to understand the security objectives. To facilitate this, start by breaking down the application’s security objectives into the following categories:&lt;br /&gt;
&lt;br /&gt;
* '''Identity:''' Does the application protect user identity from abuse? Are there adequate controls in place to ensure evidence of identity (as required for many banking applications?)&lt;br /&gt;
* '''Financial:''' Assess the level of risk the organization is prepared to absorb in remediation, as a potential financial loss. For example, forum software may have a lower estimated financial risk than an Internet banking application.&lt;br /&gt;
* '''Reputation:''' Quantify or estimate of the loss of reputation derived from the application being misused or successfully attacked.&lt;br /&gt;
* '''Privacy and Regulatory:''' To what extent will the application have to protect user data? Forum software by its nature is public, but a tax preparation application is subject to tax regulations and privacy legislation requirements in most countries.&lt;br /&gt;
* '''Availability Guarantees:''' Is the application required to be available per a '''''Service Level Agreement (SLA)''''' or similar guarantee? Is it a nationally protected infrastructure? To what level will the application have to be available? High availability techniques are significantly more expensive, so applying the correct controls up front will save a great deal of time, resources, and money.&lt;br /&gt;
&lt;br /&gt;
This is by no means an exhaustive list, but it gives an idea of some of the business risk decisions leading into selecting and building security controls.&lt;br /&gt;
&lt;br /&gt;
Other sources of risk guidance come from:&lt;br /&gt;
* Laws (such as privacy or finance laws)&lt;br /&gt;
* Regulations (such as banking or e-commerce regulations)&lt;br /&gt;
* Standards (such as ISO 17799)&lt;br /&gt;
* Legal Agreements (such as payment card industry standards or merchant agreements)&lt;br /&gt;
* Corporate Information Security Policy&lt;br /&gt;
&lt;br /&gt;
=== Application Overview ===&lt;br /&gt;
Once the security objectives have been defined, analyze the application design to identify the '''''components''''', '''''data flows''''', and '''''trust boundaries'''''.&lt;br /&gt;
&lt;br /&gt;
Do this by surveying the application’s architecture and design documentation. In particular, look for UML component diagrams. Such high level component diagrams are generally sufficient to understand how and why data flows to various places. For example, data movement across a trust boundary (such as from the Internet to the web tier, or from the business logic to the database server), needs to be carefully analyzed, whereas data that flows within the same trust level does not need as much scrutiny.&lt;br /&gt;
&lt;br /&gt;
=== Decompose Application ===&lt;br /&gt;
Once the application architecture is understood then decompose it further, to identify the features and modules with a security impact that need to be evaluated. For example, when investigating the authentication module, it is necessary to understand how data enters the module, how the module validates and processes the data, where the data flows, how the data is stored, and what fundamental decisions and assumptions are made by the module.&lt;br /&gt;
&lt;br /&gt;
=== Identify Threats ===&lt;br /&gt;
It is impossible to write down unknown threats, but it is likewise unlikely that new malware will be created to exploit new vulnerabilities within custom systems. Therefore, concentrate on known risks, which can be easily demonstrated using tools or techniques from Bugtraq.&lt;br /&gt;
&lt;br /&gt;
Microsoft suggests two different approaches for writing up threats. One is a threat graph, as shown in Figure 2, and the other is a structured list, as shown in Figure 3.&lt;br /&gt;
&lt;br /&gt;
[[Image:Threat_Graph.gif|Figure 2: Threat Graph]]&lt;br /&gt;
&lt;br /&gt;
Typically, a threat graph imparts more information quickly but it takes longer to construct, while a structured list is easier to create but it will take longer for the threat impacts to become obvious.&lt;br /&gt;
&lt;br /&gt;
# Attacker may be able to read other user’s messages&lt;br /&gt;
# User may not have logged off on a shared PC&lt;br /&gt;
# Data validation may allow SQL injection&lt;br /&gt;
# Implement data validation&lt;br /&gt;
# Authorization may fail, allowing unauthorized access&lt;br /&gt;
# Implement authorization checks&lt;br /&gt;
# Browser cache may contain contents of message&lt;br /&gt;
# Implement anti-caching directive in HTTP headers&lt;br /&gt;
# If eavesdropping risk is high, use SSL&lt;br /&gt;
&lt;br /&gt;
Note that it takes a motivated attacker to exploit a threat; they generally want something from your application or to obviate controls. To understand the relevant threats, use the following categories to understand who might attack the application:&lt;br /&gt;
&lt;br /&gt;
* '''Accidental Discovery:''' An ordinary user stumbles across a functional mistake in your application, just using a web browser, and gains access to privileged information or functionality.&lt;br /&gt;
* '''Automated Malware:''' Programs or scripts, which are searching for known vulnerabilities, and then report them back to a central collection site.&lt;br /&gt;
* '''The Curious Attacker:''' a security researcher or ordinary user, who notices something wrong with the application, and decides to pursue further.&lt;br /&gt;
* '''Script Kiddies:''' Common renegades, seeking to compromise or deface applications for collateral gain, notoriety, or a political agenda, perhaps using the attack categories described in the ''OWASP Web Application Penetration Checklist.''&lt;br /&gt;
* '''The Motivated Attacker:''' Potentially, a disgruntled staff member with inside knowledge or a paid professional attacker.&lt;br /&gt;
* '''Organized Crime:''' Criminals seeking high stake payouts, such as cracking e-commerce or corporate banking applications, for financial gain.&lt;br /&gt;
&lt;br /&gt;
It is vital to understand the level of attacker you are defending against. For example, a motivated attacker, who understands your internal processes is often more dangerous than script kiddies.&lt;br /&gt;
&lt;br /&gt;
=== STRIDE ===&lt;br /&gt;
STRIDE is a classification scheme for characterizing known threats according to the kinds of exploit that are used (or motivation of the attacker). The STRIDE acronym is formed from the first letter of each of the following categories.&lt;br /&gt;
&lt;br /&gt;
'''''Spoofing Identity'''''&lt;br /&gt;
“Identity spoofing” is a key risk for applications that have many users but provide a single execution context at the application and database level. In particular, users should not be able to become any other user or assume the attributes of another user.&lt;br /&gt;
&lt;br /&gt;
'''''Tampering with Data'''''&lt;br /&gt;
Users can potentially change data delivered to them, return it, and thereby potentially manipulate client-side validation, GET and POST results, cookies, HTTP headers, and so forth. The application should not send data to the user, such as interest rates or periods, which are obtainable only from within the application itself. The application should also carefully check data received from the user and validate that it is sane and applicable before storing or using it.&lt;br /&gt;
&lt;br /&gt;
'''''Repudiation'''''&lt;br /&gt;
Users may dispute transactions if there is insufficient auditing or recordkeeping of their activity. For example, if a user says, “But I didn’t transfer any money to this external account!”, and you cannot track his/her activities through the application, then it is extremely likely that the transaction will have to be written off as a loss.&lt;br /&gt;
&lt;br /&gt;
Therefore, consider if the application requires non-repudiation controls, such as web access logs, audit trails at each tier, or the same user context from top to bottom. Preferably, the application should run with the user’s privileges, not more, but this may not be possible with many off-the-shelf application frameworks.&lt;br /&gt;
&lt;br /&gt;
'''''Information Disclosure'''''&lt;br /&gt;
Users are rightfully wary of submitting private details to a system. If it is possible for an attacker to publicly reveal user data at large, whether anonymously or as an authorized user, there will be an immediate loss of confidence and a substantial period of reputation loss. Therefore, applications must include strong controls to prevent user ID tampering and abuse, particularly if they use a single context to run the entire application. &lt;br /&gt;
&lt;br /&gt;
Also, consider if the user’s web browser may leak information. Some web browsers may ignore the no caching directives in HTTP headers or handle them incorrectly. In a corresponding fashion, every secure application has a responsibility to minimize the amount of information stored by the web browser, just in case it leaks or leaves information behind, which can be used by an attacker to learn details about the application, the user, or to potentially become that user.&lt;br /&gt;
&lt;br /&gt;
Finally, in implementing persistent values, keep in mind that the use of hidden fields is insecure by nature. Such storage should not be relied on to secure sensitive information or to provide adequate personal privacy safeguards.&lt;br /&gt;
&lt;br /&gt;
'''''Denial of Service'''''&lt;br /&gt;
Application designers should be aware that their applications may be subject to a denial of service attack. Therefore, the use of expensive resources such as large files, complex calculations, heavy-duty searches, or long queries should be reserved for authenticated and authorized users, and not available to anonymous users.&lt;br /&gt;
&lt;br /&gt;
For applications that do not have this luxury, every facet of the application should be engineered to perform as little work as possible, to use fast and few database queries, to avoid exposing large files or unique links per user, in order to prevent simple denial of service attacks.&lt;br /&gt;
&lt;br /&gt;
'''''Elevation of Privilege'''''&lt;br /&gt;
If an application provides distinct user and administrative roles, then it is vital to ensure that the user cannot elevate his/her role to a higher privilege one. In particular, simply not displaying privileged role links is insufficient. Instead, all actions should be gated through an authorization matrix, to ensure that only the permitted roles can access privileged functionality.&lt;br /&gt;
&lt;br /&gt;
=== DREAD ===&lt;br /&gt;
DREAD is a classification scheme for quantifying, comparing and prioritizing the amount of risk presented by each evaluated threat.  The DREAD acronym is formed from the first letter of each category below.&lt;br /&gt;
&lt;br /&gt;
DREAD modeling influences the thinking behind setting the risk rating, and is also used directly to sort the risks. The DREAD algorithm, shown below, is used to compute a risk value, which is an average of all five categories.&lt;br /&gt;
&lt;br /&gt;
'''Risk_DREAD''' = (&amp;lt;u&amp;gt;D&amp;lt;/u&amp;gt;AMAGE + &amp;lt;u&amp;gt;R&amp;lt;/u&amp;gt;EPRODUCIBILITY + &amp;lt;u&amp;gt;E&amp;lt;/u&amp;gt;XPLOITABILITY + &amp;lt;u&amp;gt;A&amp;lt;/u&amp;gt;FFECTED USERS + &amp;lt;u&amp;gt;D&amp;lt;/u&amp;gt;ISCOVERABILITY) / 5&lt;br /&gt;
&lt;br /&gt;
The calculation always produces a number between 0 and 10; the higher the number, the more serious the risk.&lt;br /&gt;
&lt;br /&gt;
Here are some examples of how to quantify the DREAD categories.&lt;br /&gt;
&lt;br /&gt;
'''''Damage Potential'''''&lt;br /&gt;
* If a threat exploit occurs, how much damage will be caused?&lt;br /&gt;
**0 = Nothing	&lt;br /&gt;
**5 = Individual user data is compromised or affected.	&lt;br /&gt;
**10 = Complete system or data destruction&lt;br /&gt;
&lt;br /&gt;
'''''Reproducibility'''''&lt;br /&gt;
* How easy is it to reproduce the threat exploit?&lt;br /&gt;
**0 = Very hard or impossible, even for administrators of the application.&lt;br /&gt;
**5 = One or two steps required, may need to be an authorized user.	&lt;br /&gt;
**10 = Just a web browser and the address bar is sufficient, without authentication.&lt;br /&gt;
&lt;br /&gt;
'''''Exploitability'''''&lt;br /&gt;
* What is needed to exploit this threat?&lt;br /&gt;
**0 = Advanced programming and networking knowledge, with custom or advanced attack tools.	&lt;br /&gt;
**5 = Malware exists on the Internet, or an exploit is easily performed, using available attack tools.	&lt;br /&gt;
**10 = Just a web browser&lt;br /&gt;
&lt;br /&gt;
'''''Affected Users'''''&lt;br /&gt;
* How many users will be affected?&lt;br /&gt;
**0 = None	&lt;br /&gt;
**5 = Some users, but not all	&lt;br /&gt;
**10 = All users&lt;br /&gt;
&lt;br /&gt;
'''''Discoverability'''''&lt;br /&gt;
* How easy is it to discover this threat?&lt;br /&gt;
**0 = Very hard to impossible; requires source code or administrative access.&lt;br /&gt;
**5 = Can figure it out by guessing or by monitoring network traces.	&lt;br /&gt;
**9 = Details of faults like this are already in the public domain and can be easily discovered using a search engine.&lt;br /&gt;
**10 = The information is visible in the web browser address bar or in a form.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When performing a security review of an existing application, “Discoverability” will often be set to 10 by convention, as it is assumed the threat issues will be discovered.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Using DREAD can be difficult at first. It may be helpful to think of Damage Potential and Affected Users in terms of Impact, while thinking of Reproducibility, Exploitability, and Discoverability in terms of Probability. Using the Impact vs Probability approach (which follows best practices such as defined in NIST-800-30), I would alter the formula to make the Impact score equal to the Probability score. Otherwise the probability scores have more weight in the total.&lt;br /&gt;
&lt;br /&gt;
== Alternative Threat Modeling Systems ==&lt;br /&gt;
OWASP recognizes that the adoption of the Microsoft modeling process may not fit all organizations. If STRIDE and DREAD are unacceptable for some reason, we recommend that your organization “dry run” the other threat risk models discussed against an existing application or design. This will allow you to determine which approach works best for you, and to adopt the most appropriate threat modeling tools for your organization.&lt;br /&gt;
&lt;br /&gt;
'''In summary, performing threat modeling provides a far greater return than most any other control in this Guide. Therefore, make threat risk modeling an early priority in your application design process.'''&lt;br /&gt;
&lt;br /&gt;
=== Trike ===&lt;br /&gt;
Trike is a threat modeling framework with similarities to the Microsoft threat modeling processes. However, Trike differs because it uses a risk based approach with distinct implementation, threat, and risk models, instead of using the STRIDE/DREAD aggregated threat model (attacks, threats, and weaknesses).&lt;br /&gt;
From the Trike paper, Trike’s goals are:&lt;br /&gt;
* With assistance from the system stakeholders, to ensure that the risk this system entails to each asset is acceptable to all stakeholders.&lt;br /&gt;
* Be able to tell whether we have done this.&lt;br /&gt;
* Communicate what we’ve done and its effects to the stakeholders.&lt;br /&gt;
* Empower stakeholders to understand and reduce the risks to them and other stakeholders implied by their actions within their domains. &lt;br /&gt;
&lt;br /&gt;
For more information on Trike, please see Section 6.9, reference 8.&lt;br /&gt;
&lt;br /&gt;
=== AS/NZS 4360:2004 Risk Management ===&lt;br /&gt;
The Australian/New Zealand Standard AS/NZS 4360, first issued in 1999, and revised in 2004, is the world’s first formal standard for documenting and managing risk and is still one of the few formal standards for managing it.&lt;br /&gt;
The standard’s approach is simple (it’s only 28 pages long), flexible, and iterative. Furthermore, it does not lock organizations into a particular risk management methodology, provided the methodology fulfils the AS/NZS 4360 five steps. It also provides several sets of risk tables as examples, and allows organizations to freely develop and adopt their own.&lt;br /&gt;
&lt;br /&gt;
'''The five steps of the AS/NZS 4360 process are:'''&lt;br /&gt;
* '''Establish Context:''' Establish the risk domain, i.e., which assets/systems are important?&lt;br /&gt;
* '''Identify the Risks:''' Within the risk domain, what specific risks are apparent?&lt;br /&gt;
* '''Analyze the Risks:''' Look at the risks and determine if there are any supporting controls in place.&lt;br /&gt;
* '''Evaluate the Risks:''' Determine the residual risk.&lt;br /&gt;
* '''Treat the Risks:''' Describe the method to treat the risks so that risks selected by the business will be mitigated.&lt;br /&gt;
AS/NZS 4360 assumes that risk will be managed by an '''''operational risk group''''', and that the organization has adequate skills and risk management resources in house to identify, analyze, and treat the risks.&lt;br /&gt;
&lt;br /&gt;
'''The advantages of AS/NZS 4360:'''&lt;br /&gt;
* AS/NZS 4360 works well as a risk management methodology for organizations requiring Sarbanes-Oxley compliance.&lt;br /&gt;
* AS/NZS 4360 works well for organizations that prefer to manage risks in a traditional way, such as just using likelihood and consequence to determine an overall risk. &lt;br /&gt;
* AS/NZS 4360 is familiar to most risk managers worldwide, and your organization may already have implemented an AS/NZS 4360 compatible approach.&lt;br /&gt;
* You are an Australian organization, and may be required to use it if you are audited on a regular basis, or to justify why you aren’t using it. Luckily, the STRIDE/DREAD model discussed earlier is AS/NZS 4360 compatible.&lt;br /&gt;
&lt;br /&gt;
'''The limitations of AS/NZS 4360:'''&lt;br /&gt;
* The AS/NZS 4360 approach works best for business or systemic risks than for technical risks.&lt;br /&gt;
* AS/NZS 4360 does not define the methodology to perform a structured threat risk modeling exercise.&lt;br /&gt;
* As AS/NZS 4360 is a generic framework for managing risk, it does not provide any structured method to enumerate web application security risks. &lt;br /&gt;
Although AS/NZS 4360 may be used to rank risks for security reviews, the lack of structured methods of enumerating threats for web applications makes it less desirable than other methodologies described earlier.&lt;br /&gt;
&lt;br /&gt;
=== CVSS ===&lt;br /&gt;
The US Department of Homeland Security (DHS) established the NIAC Vulnerability Disclosure Working Group, which incorporates input from Cisco Systems, Symantec, ISS, Qualys, Microsoft, CERT/CC, and eBay. One of the group’s outputs is the Common '''''Vulnerability Scoring System (CVSS).'''''&lt;br /&gt;
&lt;br /&gt;
'''The advantages of CVSS:'''&lt;br /&gt;
* You have just received notification from a security researcher or other source that your product has vulnerability, and you wish to ensure that it has an accurate and normalized severity rating, so as to alert your customers to the appropriate level of action required when you release the patch.&lt;br /&gt;
* You are a security researcher, and have found several threat exploits within an application. You would like to use the CVSS ranking system to produce reliable risk rankings, to ensure that the ISV will take the exploits seriously as indicated by their rating.&lt;br /&gt;
* CVSS has been recommended by the working group for use by US Government departments. However, it is unclear if it will become policy or be widely adopted at the time of this writing.&lt;br /&gt;
&lt;br /&gt;
'''The limitations of CVSS:'''&lt;br /&gt;
* CVSS does not find or reduce the attack surface area (i.e. design flaws), or help enumerate risks within any arbitrary piece of code, as it is just a scoring system, not a modeling methodology.&lt;br /&gt;
* CVSS is more complex than STRIDE/DREAD, as it aims to calculate the risk of announced vulnerabilities as applied to deployed software and environmental factors.&lt;br /&gt;
* The CVSS risk ranking is complex – a spreadsheet is required to calculate the risk components as the assumption behind CVSS is that a specific vulnerability has been identified and announced, or a worm or Trojan has been released targeting a small number of attack vectors. &lt;br /&gt;
* The overhead of calculating the CVSS risk ranking is quite high if applied to a thorough code review, which may have 250 or more threats to rank.&lt;br /&gt;
&lt;br /&gt;
=== OCTAVE ===&lt;br /&gt;
OCTAVE is a heavyweight risk methodology approach originating from Carnegie Mellon University’s Software Engineering Institute (SEI) in collaboration with CERT. OCTAVE focuses on organizational risk, not technical risk.&lt;br /&gt;
OCTAVE comes in two versions: Full OCTAVE, for large organizations, and OCTAVE-S for small organizations, both of which have specific catalogs of practices, profiles, and worksheets to document the modeling outcomes.&lt;br /&gt;
&lt;br /&gt;
'''OCTAVE is popular with many sites and is useful when:'''&lt;br /&gt;
* Implementing an organizational culture of risk management and controls becomes necessary.&lt;br /&gt;
* Documenting and measuring business risk becomes timely.&lt;br /&gt;
* Documenting and measuring the overall IT security risk, particularly as it relates to the corporate IT risk management, becomes necessary.&lt;br /&gt;
* When documenting risks surrounding complete systems becomes necessary.&lt;br /&gt;
* To accommodate a fundamental reorganization, such as when an organization does not have a working risk methodology in place, and requires a robust risk management framework to be put in place.&lt;br /&gt;
&lt;br /&gt;
'''The limitations of OCTAVE are:''' &lt;br /&gt;
* OCTAVE is incompatible with AS/NZS 4360, as it mandates Likelihood = 1 (i.e., It assumes a threat will always occur) and this is inappropriate for many organizations. OCTAVE-S makes the inclusion of this probability optional, but this is not part of the more comprehensive OCTAVE standard.&lt;br /&gt;
* Consisting of 18 volumes, OCTAVE is large and complex, with many worksheets and practices to implement.&lt;br /&gt;
* It does not provide a list of “out of the box” practices for assessing and mitigating web application security risks.&lt;br /&gt;
&lt;br /&gt;
Because of these issues, OWASP does not anticipate that OCTAVE will be used at large by application designers or developers, because it fails to take threat risk modeling into consideration, which is useful during all stages of development, by all participants, to reduce the overall risk of an application becoming vulnerable to attack.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
In this chapter, we have touched on the basic principles of threat risk modeling, risk management, and web application security. Applications that leverage the underlying intent of these principles will be more secure than their counterparts, which will only be minimally compliant just by including specific controls.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* [http://www.microsoft.com/downloads/details.aspx?familyid=334AD466-8B53-4440-8FF0-6AC8142D9198&amp;amp;displaylang=en Threat Analysis &amp;amp;amp; Modeling v2.0], © Microsoft Corporation, 2006.&lt;br /&gt;
* [http://msdn.microsoft.com/library/ms978516.aspx Threat Modeling Web Applications], J.D. Meier, Alex Mackman, Blaine Wastell, © Microsoft Corporation, May 2005.&lt;br /&gt;
* [http://msdn.microsoft.com/library/ms994921.aspx Improving Web Application Security: Threats and Countermeasures], J.D. Meier, Alex Mackman, Michael Dunner, Srinath Vasireddy, Ray Escamilla and Anandha Murukan, © Microsoft Corporation, June 2003.&lt;br /&gt;
* [http://www.microsoft.com/downloads/details.aspx?FamilyID=62830f95-0e61-4f87-88a6-e7c663444ac1&amp;amp;displaylang=en Threat Modeling], Frank Swiderski and Window Snyder, Microsoft Press, June 2004, ISBN 0-7356-1991-3.&lt;br /&gt;
* Writing Secure Code, 2nd Edition, Howard and LeBlanc, (pp. 69 – 124), Microsoft Press, 2003, ISBN 0-7356-1722-8.&lt;br /&gt;
* [http://msdn.microsoft.com/library/ms954176.aspx The STRIDE Threat Model], © Microsoft Corporation, 2005.&lt;br /&gt;
* [http://blogs.msdn.com/david_leblanc/archive/2007/08/13/dreadful.aspx DREADful] - the DREAD system, © Microsoft Corporation, 2005.&lt;br /&gt;
* [http://dymaxion.org/trike/Trike_v1_Methodology_Document-draft.pdf A Conceptual Model for Threat Modeling Applications], Saitta, Larcom, and Michael Eddington, July 2005, http://dymaxion.org/trike/.&lt;br /&gt;
* [http://www.standards.co.nz/web-shop/?action=viewSearchProduct&amp;amp;mod=catalog&amp;amp;pid=4360:2004(AS|NZS) AS/NZS 4360:2004 Risk Management], Standards Australia and Standards New Zealand.&lt;br /&gt;
* [http://www.dhs.gov/interweb/assetlibrary/NIAC_CyberVulnerabilitiesPaper_Feb05.pdf CVSS], U.S. Department of Homeland Security library, February 2005.&lt;br /&gt;
* [http://www.cert.org/octave/ OCTAVE], CERT library.&lt;br /&gt;
&lt;br /&gt;
== Appendix: Alternative open-source Risk Management tools ==&lt;br /&gt;
* [http://sourceforge.net/projects/osmr/ OSMR]&lt;br /&gt;
* [http://sourceforge.net/projects/marco/ MARCO]&lt;br /&gt;
* [http://sourceforge.net/projects/coras/ CORAS Risk Assessment Platform]&lt;br /&gt;
* [http://sourceforge.net/projects/ratiso17799/ ISO 17799 Risk Assessment Toolkit]&lt;br /&gt;
* [http://sourceforge.net/projects/easy-tra/ Easy Threat Risk Assessment]&lt;br /&gt;
* [http://sourceforge.net/projects/arms-17799/ ARMS]&lt;br /&gt;
* [http://sourceforge.net/projects/minaccia/ Minaccia]&lt;br /&gt;
* [http://sourceforge.net/projects/threatmind/ ThreatMind]&lt;br /&gt;
* [http://sourceforge.net/projects/osrmt/ Open Source Requirements Management Tool]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
[[Guide Table of Contents]]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP_Guide_Project]]&lt;br /&gt;
[[Category:Activity]]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Risk_Modeling&amp;diff=35819</id>
		<title>Threat Risk Modeling</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Risk_Modeling&amp;diff=35819"/>
				<updated>2008-08-11T20:24:56Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* Further Reading */ reformatting external links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
When you start a web application design, it is essential to apply threat risk modeling; otherwise you will squander resources, time and money on useless controls that fail to focus on the real risks.&lt;br /&gt;
&lt;br /&gt;
The method used to assess risk is not nearly as important as actually performing a structured threat risk modeling. Microsoft notes that the single most important factor in their security improvement program was the corporate adoption of threat risk modeling.&lt;br /&gt;
&lt;br /&gt;
OWASP recommends Microsoft’s threat modeling process because it works well for addressing the unique challenges facing web application security and is simple to learn and adopt by designers, developers, code reviewers, and the quality assurance team.&lt;br /&gt;
&lt;br /&gt;
The following sections provide some overview information (or see Section 6.9, Further Reading, for additional resources).&lt;br /&gt;
&lt;br /&gt;
== Threat Risk Modeling ==&lt;br /&gt;
Threat risk modeling is an essential process for secure web application development. It allows organizations to determine the correct controls and to produce effective countermeasures within budget. For example, there is little point in spending $100,000 for fraud control for a system that has negligible fraud risk.&lt;br /&gt;
&lt;br /&gt;
== Performing threat risk modeling using the Microsoft Threat Modeling Process ==&lt;br /&gt;
The threat risk modeling process has five steps, enumerated below and shown graphically in Figure 1. They are:&lt;br /&gt;
# Identify Security Objectives&lt;br /&gt;
# Survey the Application&lt;br /&gt;
# Decompose it&lt;br /&gt;
# Identify Threats&lt;br /&gt;
# Identify Vulnerabilities&lt;br /&gt;
&lt;br /&gt;
[[Image:Threat_Model_Flow.gif|Figure 1: Threat Model Flow]]&lt;br /&gt;
&lt;br /&gt;
Let’s consider the steps in more detail.&lt;br /&gt;
&lt;br /&gt;
=== Identify Security Objectives ===&lt;br /&gt;
The business (or project management) leadership, in concert with the software development and quality assurance teams, all need to understand the security objectives. To facilitate this, start by breaking down the application’s security objectives into the following categories:&lt;br /&gt;
&lt;br /&gt;
* '''Identity:''' Does the application protect user identity from abuse? Are there adequate controls in place to ensure evidence of identity (as required for many banking applications?)&lt;br /&gt;
* '''Financial:''' Assess the level of risk the organization is prepared to absorb in remediation, as a potential financial loss. For example, forum software may have a lower estimated financial risk than an Internet banking application.&lt;br /&gt;
* '''Reputation:''' Quantify or estimate of the loss of reputation derived from the application being misused or successfully attacked.&lt;br /&gt;
* '''Privacy and Regulatory:''' To what extent will the application have to protect user data? Forum software by its nature is public, but a tax preparation application is subject to tax regulations and privacy legislation requirements in most countries.&lt;br /&gt;
* '''Availability Guarantees:''' Is the application required to be available per a '''''Service Level Agreement (SLA)''''' or similar guarantee? Is it a nationally protected infrastructure? To what level will the application have to be available? High availability techniques are significantly more expensive, so applying the correct controls up front will save a great deal of time, resources, and money.&lt;br /&gt;
&lt;br /&gt;
This is by no means an exhaustive list, but it gives an idea of some of the business risk decisions leading into selecting and building security controls.&lt;br /&gt;
&lt;br /&gt;
Other sources of risk guidance come from:&lt;br /&gt;
* Laws (such as privacy or finance laws)&lt;br /&gt;
* Regulations (such as banking or e-commerce regulations)&lt;br /&gt;
* Standards (such as ISO 17799)&lt;br /&gt;
* Legal Agreements (such as payment card industry standards or merchant agreements)&lt;br /&gt;
* Corporate Information Security Policy&lt;br /&gt;
&lt;br /&gt;
=== Application Overview ===&lt;br /&gt;
Once the security objectives have been defined, analyze the application design to identify the '''''components''''', '''''data flows''''', and '''''trust boundaries'''''.&lt;br /&gt;
&lt;br /&gt;
Do this by surveying the application’s architecture and design documentation. In particular, look for UML component diagrams. Such high level component diagrams are generally sufficient to understand how and why data flows to various places. For example, data movement across a trust boundary (such as from the Internet to the web tier, or from the business logic to the database server), needs to be carefully analyzed, whereas data that flows within the same trust level does not need as much scrutiny.&lt;br /&gt;
&lt;br /&gt;
=== Decompose Application ===&lt;br /&gt;
Once the application architecture is understood then decompose it further, to identify the features and modules with a security impact that need to be evaluated. For example, when investigating the authentication module, it is necessary to understand how data enters the module, how the module validates and processes the data, where the data flows, how the data is stored, and what fundamental decisions and assumptions are made by the module.&lt;br /&gt;
&lt;br /&gt;
=== Identify Threats ===&lt;br /&gt;
It is impossible to write down unknown threats, but it is likewise unlikely that new malware will be created to exploit new vulnerabilities within custom systems. Therefore, concentrate on known risks, which can be easily demonstrated using tools or techniques from Bugtraq.&lt;br /&gt;
&lt;br /&gt;
Microsoft suggests two different approaches for writing up threats. One is a threat graph, as shown in Figure 2, and the other is a structured list, as shown in Figure 3.&lt;br /&gt;
&lt;br /&gt;
[[Image:Threat_Graph.gif|Figure 2: Threat Graph]]&lt;br /&gt;
&lt;br /&gt;
Typically, a threat graph imparts more information quickly but it takes longer to construct, while a structured list is easier to create but it will take longer for the threat impacts to become obvious.&lt;br /&gt;
&lt;br /&gt;
# Attacker may be able to read other user’s messages&lt;br /&gt;
# User may not have logged off on a shared PC&lt;br /&gt;
# Data validation may allow SQL injection&lt;br /&gt;
# Implement data validation&lt;br /&gt;
# Authorization may fail, allowing unauthorized access&lt;br /&gt;
# Implement authorization checks&lt;br /&gt;
# Browser cache may contain contents of message&lt;br /&gt;
# Implement anti-caching directive in HTTP headers&lt;br /&gt;
# If eavesdropping risk is high, use SSL&lt;br /&gt;
&lt;br /&gt;
Note that it takes a motivated attacker to exploit a threat; they generally want something from your application or to obviate controls. To understand the relevant threats, use the following categories to understand who might attack the application:&lt;br /&gt;
&lt;br /&gt;
* '''Accidental Discovery:''' An ordinary user stumbles across a functional mistake in your application, just using a web browser, and gains access to privileged information or functionality.&lt;br /&gt;
* '''Automated Malware:''' Programs or scripts, which are searching for known vulnerabilities, and then report them back to a central collection site.&lt;br /&gt;
* '''The Curious Attacker:''' a security researcher or ordinary user, who notices something wrong with the application, and decides to pursue further.&lt;br /&gt;
* '''Script Kiddies:''' Common renegades, seeking to compromise or deface applications for collateral gain, notoriety, or a political agenda, perhaps using the attack categories described in the ''OWASP Web Application Penetration Checklist.''&lt;br /&gt;
* '''The Motivated Attacker:''' Potentially, a disgruntled staff member with inside knowledge or a paid professional attacker.&lt;br /&gt;
* '''Organized Crime:''' Criminals seeking high stake payouts, such as cracking e-commerce or corporate banking applications, for financial gain.&lt;br /&gt;
&lt;br /&gt;
It is vital to understand the level of attacker you are defending against. For example, a motivated attacker, who understands your internal processes is often more dangerous than script kiddies.&lt;br /&gt;
&lt;br /&gt;
=== STRIDE ===&lt;br /&gt;
STRIDE is a classification scheme for characterizing known threats according to the kinds of exploit that are used (or motivation of the attacker). The STRIDE acronym is formed from the first letter of each of the following categories.&lt;br /&gt;
&lt;br /&gt;
'''''Spoofing Identity'''''&lt;br /&gt;
“Identity spoofing” is a key risk for applications that have many users but provide a single execution context at the application and database level. In particular, users should not be able to become any other user or assume the attributes of another user.&lt;br /&gt;
&lt;br /&gt;
'''''Tampering with Data'''''&lt;br /&gt;
Users can potentially change data delivered to them, return it, and thereby potentially manipulate client-side validation, GET and POST results, cookies, HTTP headers, and so forth. The application should not send data to the user, such as interest rates or periods, which are obtainable only from within the application itself. The application should also carefully check data received from the user and validate that it is sane and applicable before storing or using it.&lt;br /&gt;
&lt;br /&gt;
'''''Repudiation'''''&lt;br /&gt;
Users may dispute transactions if there is insufficient auditing or recordkeeping of their activity. For example, if a user says, “But I didn’t transfer any money to this external account!”, and you cannot track his/her activities through the application, then it is extremely likely that the transaction will have to be written off as a loss.&lt;br /&gt;
&lt;br /&gt;
Therefore, consider if the application requires non-repudiation controls, such as web access logs, audit trails at each tier, or the same user context from top to bottom. Preferably, the application should run with the user’s privileges, not more, but this may not be possible with many off-the-shelf application frameworks.&lt;br /&gt;
&lt;br /&gt;
'''''Information Disclosure'''''&lt;br /&gt;
Users are rightfully wary of submitting private details to a system. If it is possible for an attacker to publicly reveal user data at large, whether anonymously or as an authorized user, there will be an immediate loss of confidence and a substantial period of reputation loss. Therefore, applications must include strong controls to prevent user ID tampering and abuse, particularly if they use a single context to run the entire application. &lt;br /&gt;
&lt;br /&gt;
Also, consider if the user’s web browser may leak information. Some web browsers may ignore the no caching directives in HTTP headers or handle them incorrectly. In a corresponding fashion, every secure application has a responsibility to minimize the amount of information stored by the web browser, just in case it leaks or leaves information behind, which can be used by an attacker to learn details about the application, the user, or to potentially become that user.&lt;br /&gt;
&lt;br /&gt;
Finally, in implementing persistent values, keep in mind that the use of hidden fields is insecure by nature. Such storage should not be relied on to secure sensitive information or to provide adequate personal privacy safeguards.&lt;br /&gt;
&lt;br /&gt;
'''''Denial of Service'''''&lt;br /&gt;
Application designers should be aware that their applications may be subject to a denial of service attack. Therefore, the use of expensive resources such as large files, complex calculations, heavy-duty searches, or long queries should be reserved for authenticated and authorized users, and not available to anonymous users.&lt;br /&gt;
&lt;br /&gt;
For applications that do not have this luxury, every facet of the application should be engineered to perform as little work as possible, to use fast and few database queries, to avoid exposing large files or unique links per user, in order to prevent simple denial of service attacks.&lt;br /&gt;
&lt;br /&gt;
'''''Elevation of Privilege'''''&lt;br /&gt;
If an application provides distinct user and administrative roles, then it is vital to ensure that the user cannot elevate his/her role to a higher privilege one. In particular, simply not displaying privileged role links is insufficient. Instead, all actions should be gated through an authorization matrix, to ensure that only the permitted roles can access privileged functionality.&lt;br /&gt;
&lt;br /&gt;
=== DREAD ===&lt;br /&gt;
DREAD is a classification scheme for quantifying, comparing and prioritizing the amount of risk presented by each evaluated threat.  The DREAD acronym is formed from the first letter of each category below.&lt;br /&gt;
&lt;br /&gt;
DREAD modeling influences the thinking behind setting the risk rating, and is also used directly to sort the risks. The DREAD algorithm, shown below, is used to compute a risk value, which is an average of all five categories.&lt;br /&gt;
&lt;br /&gt;
'''Risk_DREAD''' = (&amp;lt;u&amp;gt;D&amp;lt;/u&amp;gt;AMAGE + &amp;lt;u&amp;gt;R&amp;lt;/u&amp;gt;EPRODUCIBILITY + &amp;lt;u&amp;gt;E&amp;lt;/u&amp;gt;XPLOITABILITY + &amp;lt;u&amp;gt;A&amp;lt;/u&amp;gt;FFECTED USERS + &amp;lt;u&amp;gt;D&amp;lt;/u&amp;gt;ISCOVERABILITY) / 5&lt;br /&gt;
&lt;br /&gt;
The calculation always produces a number between 0 and 10; the higher the number, the more serious the risk.&lt;br /&gt;
&lt;br /&gt;
Here are some examples of how to quantify the DREAD categories.&lt;br /&gt;
&lt;br /&gt;
'''''Damage Potential'''''&lt;br /&gt;
* If a threat exploit occurs, how much damage will be caused?&lt;br /&gt;
**0 = Nothing	&lt;br /&gt;
**5 = Individual user data is compromised or affected.	&lt;br /&gt;
**10 = Complete system or data destruction&lt;br /&gt;
&lt;br /&gt;
'''''Reproducibility'''''&lt;br /&gt;
* How easy is it to reproduce the threat exploit?&lt;br /&gt;
**0 = Very hard or impossible, even for administrators of the application.&lt;br /&gt;
**5 = One or two steps required, may need to be an authorized user.	&lt;br /&gt;
**10 = Just a web browser and the address bar is sufficient, without authentication.&lt;br /&gt;
&lt;br /&gt;
'''''Exploitability'''''&lt;br /&gt;
* What is needed to exploit this threat?&lt;br /&gt;
**0 = Advanced programming and networking knowledge, with custom or advanced attack tools.	&lt;br /&gt;
**5 = Malware exists on the Internet, or an exploit is easily performed, using available attack tools.	&lt;br /&gt;
**10 = Just a web browser&lt;br /&gt;
&lt;br /&gt;
'''''Affected Users'''''&lt;br /&gt;
* How many users will be affected?&lt;br /&gt;
**0 = None	&lt;br /&gt;
**5 = Some users, but not all	&lt;br /&gt;
**10 = All users&lt;br /&gt;
&lt;br /&gt;
'''''Discoverability'''''&lt;br /&gt;
* How easy is it to discover this threat?&lt;br /&gt;
**0 = Very hard to impossible; requires source code or administrative access.&lt;br /&gt;
**5 = Can figure it out by guessing or by monitoring network traces.	&lt;br /&gt;
**9 = Details of faults like this are already in the public domain and can be easily discovered using a search engine.&lt;br /&gt;
**10 = The information is visible in the web browser address bar or in a form.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When performing a security review of an existing application, “Discoverability” will often be set to 10 by convention, as it is assumed the threat issues will be discovered.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Using DREAD can be difficult at first. It may be helpful to think of Damage Potential and Affected Users in terms of Impact, while thinking of Reproducibility, Exploitability, and Discoverability in terms of Probability. Using the Impact vs Probability approach (which follows best practices such as defined in NIST-800-30), I would alter the formula to make the Impact score equal to the Probability score. Otherwise the probability scores have more weight in the total.&lt;br /&gt;
&lt;br /&gt;
== Alternative Threat Modeling Systems ==&lt;br /&gt;
OWASP recognizes that the adoption of the Microsoft modeling process may not fit all organizations. If STRIDE and DREAD are unacceptable for some reason, we recommend that your organization “dry run” the other threat risk models discussed against an existing application or design. This will allow you to determine which approach works best for you, and to adopt the most appropriate threat modeling tools for your organization.&lt;br /&gt;
&lt;br /&gt;
'''In summary, performing threat modeling provides a far greater return than most any other control in this Guide. Therefore, make threat risk modeling an early priority in your application design process.'''&lt;br /&gt;
&lt;br /&gt;
=== Trike ===&lt;br /&gt;
Trike is a threat modeling framework with similarities to the Microsoft threat modeling processes. However, Trike differs because it uses a risk based approach with distinct implementation, threat, and risk models, instead of using the STRIDE/DREAD aggregated threat model (attacks, threats, and weaknesses).&lt;br /&gt;
From the Trike paper, Trike’s goals are:&lt;br /&gt;
* With assistance from the system stakeholders, to ensure that the risk this system entails to each asset is acceptable to all stakeholders.&lt;br /&gt;
* Be able to tell whether we have done this.&lt;br /&gt;
* Communicate what we’ve done and its effects to the stakeholders.&lt;br /&gt;
* Empower stakeholders to understand and reduce the risks to them and other stakeholders implied by their actions within their domains. &lt;br /&gt;
&lt;br /&gt;
For more information on Trike, please see Section 6.9, reference 8.&lt;br /&gt;
&lt;br /&gt;
=== AS/NZS 4360:2004 Risk Management ===&lt;br /&gt;
The Australian/New Zealand Standard AS/NZS 4360, first issued in 1999, and revised in 2004, is the world’s first formal standard for documenting and managing risk and is still one of the few formal standards for managing it.&lt;br /&gt;
The standard’s approach is simple (it’s only 28 pages long), flexible, and iterative. Furthermore, it does not lock organizations into a particular risk management methodology, provided the methodology fulfils the AS/NZS 4360 five steps. It also provides several sets of risk tables as examples, and allows organizations to freely develop and adopt their own.&lt;br /&gt;
&lt;br /&gt;
'''The five steps of the AS/NZS 4360 process are:'''&lt;br /&gt;
* '''Establish Context:''' Establish the risk domain, i.e., which assets/systems are important?&lt;br /&gt;
* '''Identify the Risks:''' Within the risk domain, what specific risks are apparent?&lt;br /&gt;
* '''Analyze the Risks:''' Look at the risks and determine if there are any supporting controls in place.&lt;br /&gt;
* '''Evaluate the Risks:''' Determine the residual risk.&lt;br /&gt;
* '''Treat the Risks:''' Describe the method to treat the risks so that risks selected by the business will be mitigated.&lt;br /&gt;
AS/NZS 4360 assumes that risk will be managed by an '''''operational risk group''''', and that the organization has adequate skills and risk management resources in house to identify, analyze, and treat the risks.&lt;br /&gt;
&lt;br /&gt;
'''The advantages of AS/NZS 4360:'''&lt;br /&gt;
* AS/NZS 4360 works well as a risk management methodology for organizations requiring Sarbanes-Oxley compliance.&lt;br /&gt;
* AS/NZS 4360 works well for organizations that prefer to manage risks in a traditional way, such as just using likelihood and consequence to determine an overall risk. &lt;br /&gt;
* AS/NZS 4360 is familiar to most risk managers worldwide, and your organization may already have implemented an AS/NZS 4360 compatible approach.&lt;br /&gt;
* You are an Australian organization, and may be required to use it if you are audited on a regular basis, or to justify why you aren’t using it. Luckily, the STRIDE/DREAD model discussed earlier is AS/NZS 4360 compatible.&lt;br /&gt;
&lt;br /&gt;
'''The limitations of AS/NZS 4360:'''&lt;br /&gt;
* The AS/NZS 4360 approach works best for business or systemic risks than for technical risks.&lt;br /&gt;
* AS/NZS 4360 does not define the methodology to perform a structured threat risk modeling exercise.&lt;br /&gt;
* As AS/NZS 4360 is a generic framework for managing risk, it does not provide any structured method to enumerate web application security risks. &lt;br /&gt;
Although AS/NZS 4360 may be used to rank risks for security reviews, the lack of structured methods of enumerating threats for web applications makes it less desirable than other methodologies described earlier.&lt;br /&gt;
&lt;br /&gt;
=== CVSS ===&lt;br /&gt;
The US Department of Homeland Security (DHS) established the NIAC Vulnerability Disclosure Working Group, which incorporates input from Cisco Systems, Symantec, ISS, Qualys, Microsoft, CERT/CC, and eBay. One of the group’s outputs is the Common '''''Vulnerability Scoring System (CVSS).'''''&lt;br /&gt;
&lt;br /&gt;
'''The advantages of CVSS:'''&lt;br /&gt;
* You have just received notification from a security researcher or other source that your product has vulnerability, and you wish to ensure that it has an accurate and normalized severity rating, so as to alert your customers to the appropriate level of action required when you release the patch.&lt;br /&gt;
* You are a security researcher, and have found several threat exploits within an application. You would like to use the CVSS ranking system to produce reliable risk rankings, to ensure that the ISV will take the exploits seriously as indicated by their rating.&lt;br /&gt;
* CVSS has been recommended by the working group for use by US Government departments. However, it is unclear if it will become policy or be widely adopted at the time of this writing.&lt;br /&gt;
&lt;br /&gt;
'''The limitations of CVSS:'''&lt;br /&gt;
* CVSS does not find or reduce the attack surface area (i.e. design flaws), or help enumerate risks within any arbitrary piece of code, as it is just a scoring system, not a modeling methodology.&lt;br /&gt;
* CVSS is more complex than STRIDE/DREAD, as it aims to calculate the risk of announced vulnerabilities as applied to deployed software and environmental factors.&lt;br /&gt;
* The CVSS risk ranking is complex – a spreadsheet is required to calculate the risk components as the assumption behind CVSS is that a specific vulnerability has been identified and announced, or a worm or Trojan has been released targeting a small number of attack vectors. &lt;br /&gt;
* The overhead of calculating the CVSS risk ranking is quite high if applied to a thorough code review, which may have 250 or more threats to rank.&lt;br /&gt;
&lt;br /&gt;
=== OCTAVE ===&lt;br /&gt;
OCTAVE is a heavyweight risk methodology approach originating from Carnegie Mellon University’s Software Engineering Institute (SEI) in collaboration with CERT. OCTAVE focuses on organizational risk, not technical risk.&lt;br /&gt;
OCTAVE comes in two versions: Full OCTAVE, for large organizations, and OCTAVE-S for small organizations, both of which have specific catalogs of practices, profiles, and worksheets to document the modeling outcomes.&lt;br /&gt;
&lt;br /&gt;
'''OCTAVE is popular with many sites and is useful when:'''&lt;br /&gt;
* Implementing an organizational culture of risk management and controls becomes necessary.&lt;br /&gt;
* Documenting and measuring business risk becomes timely.&lt;br /&gt;
* Documenting and measuring the overall IT security risk, particularly as it relates to the corporate IT risk management, becomes necessary.&lt;br /&gt;
* When documenting risks surrounding complete systems becomes necessary.&lt;br /&gt;
* To accommodate a fundamental reorganization, such as when an organization does not have a working risk methodology in place, and requires a robust risk management framework to be put in place.&lt;br /&gt;
&lt;br /&gt;
'''The limitations of OCTAVE are:''' &lt;br /&gt;
* OCTAVE is incompatible with AS/NZS 4360, as it mandates Likelihood = 1 (i.e., It assumes a threat will always occur) and this is inappropriate for many organizations. OCTAVE-S makes the inclusion of this probability optional, but this is not part of the more comprehensive OCTAVE standard.&lt;br /&gt;
* Consisting of 18 volumes, OCTAVE is large and complex, with many worksheets and practices to implement.&lt;br /&gt;
* It does not provide a list of “out of the box” practices for assessing and mitigating web application security risks.&lt;br /&gt;
&lt;br /&gt;
Because of these issues, OWASP does not anticipate that OCTAVE will be used at large by application designers or developers, because it fails to take threat risk modeling into consideration, which is useful during all stages of development, by all participants, to reduce the overall risk of an application becoming vulnerable to attack.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
In this chapter, we have touched on the basic principles of threat risk modeling, risk management, and web application security. Applications that leverage the underlying intent of these principles will be more secure than their counterparts, which will only be minimally compliant just by including specific controls.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* [http://www.microsoft.com/downloads/details.aspx?familyid=334AD466-8B53-4440-8FF0-6AC8142D9198&amp;amp;displaylang=en Threat Analysis &amp;amp;amp; Modeling v2.0], © Microsoft Corporation, 2006.&lt;br /&gt;
* [http://msdn.microsoft.com/library/ms978516.aspx Threat Modeling Web Applications], J.D. Meier, Alex Mackman, Blaine Wastell, © Microsoft Corporation, May 2005.&lt;br /&gt;
* [http://msdn.microsoft.com/library/ms994921.aspx Improving Web Application Security: Threats and Countermeasures], J.D. Meier, Alex Mackman, Michael Dunner, Srinath Vasireddy, Ray Escamilla and Anandha Murukan, © Microsoft Corporation, June 2003.&lt;br /&gt;
* [http://www.microsoft.com/downloads/details.aspx?FamilyID=62830f95-0e61-4f87-88a6-e7c663444ac1&amp;amp;displaylang=en Threat Modeling], Frank Swiderski and Window Snyder, Microsoft Press, June 2004, ISBN 0-7356-1991-3.&lt;br /&gt;
* Writing Secure Code, 2nd Edition, Howard and LeBlanc, (pp. 69 – 124), Microsoft Press, 2003, ISBN 0-7356-1722-8.&lt;br /&gt;
* [http://msdn.microsoft.com/library/ms954176.aspx The STRIDE Threat Model], © Microsoft Corporation, 2005.&lt;br /&gt;
* [http://blogs.msdn.com/david_leblanc/archive/2007/08/13/dreadful.aspx DREADful] - the DREAD system, © Microsoft Corporation, 2005.&lt;br /&gt;
* [http://dymaxion.org/trike/Trike_v1_Methodology_Document-draft.pdf A Conceptual Model for Threat Modeling Applications], Saitta, Larcom, and Michael Eddington, July 2005, http://dymaxion.org/trike/.&lt;br /&gt;
* [http://www.standards.co.nz/web-shop/?action=viewSearchProduct&amp;amp;mod=catalog&amp;amp;pid=4360:2004(AS|NZS) AS/NZS 4360:2004 Risk Management], Standards Australia and Standards New Zealand.&lt;br /&gt;
* [http://www.dhs.gov/interweb/assetlibrary/NIAC_CyberVulnerabilitiesPaper_Feb05.pdf CVSS], U.S. Department of Homeland Security library, February 2005.&lt;br /&gt;
* [http://www.cert.org/octave/ OCTAVE], CERT library.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
[[Guide Table of Contents]]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP_Guide_Project]]&lt;br /&gt;
[[Category:Activity]]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Risk_Modeling&amp;diff=35808</id>
		<title>Threat Risk Modeling</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Risk_Modeling&amp;diff=35808"/>
				<updated>2008-08-11T20:17:06Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: further formatting cleanup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
When you start a web application design, it is essential to apply threat risk modeling; otherwise you will squander resources, time and money on useless controls that fail to focus on the real risks.&lt;br /&gt;
&lt;br /&gt;
The method used to assess risk is not nearly as important as actually performing a structured threat risk modeling. Microsoft notes that the single most important factor in their security improvement program was the corporate adoption of threat risk modeling.&lt;br /&gt;
&lt;br /&gt;
OWASP recommends Microsoft’s threat modeling process because it works well for addressing the unique challenges facing web application security and is simple to learn and adopt by designers, developers, code reviewers, and the quality assurance team.&lt;br /&gt;
&lt;br /&gt;
The following sections provide some overview information (or see Section 6.9, Further Reading, for additional resources).&lt;br /&gt;
&lt;br /&gt;
== Threat Risk Modeling ==&lt;br /&gt;
Threat risk modeling is an essential process for secure web application development. It allows organizations to determine the correct controls and to produce effective countermeasures within budget. For example, there is little point in spending $100,000 for fraud control for a system that has negligible fraud risk.&lt;br /&gt;
&lt;br /&gt;
== Performing threat risk modeling using the Microsoft Threat Modeling Process ==&lt;br /&gt;
The threat risk modeling process has five steps, enumerated below and shown graphically in Figure 1. They are:&lt;br /&gt;
# Identify Security Objectives&lt;br /&gt;
# Survey the Application&lt;br /&gt;
# Decompose it&lt;br /&gt;
# Identify Threats&lt;br /&gt;
# Identify Vulnerabilities&lt;br /&gt;
&lt;br /&gt;
[[Image:Threat_Model_Flow.gif|Figure 1: Threat Model Flow]]&lt;br /&gt;
&lt;br /&gt;
Let’s consider the steps in more detail.&lt;br /&gt;
&lt;br /&gt;
=== Identify Security Objectives ===&lt;br /&gt;
The business (or project management) leadership, in concert with the software development and quality assurance teams, all need to understand the security objectives. To facilitate this, start by breaking down the application’s security objectives into the following categories:&lt;br /&gt;
&lt;br /&gt;
* '''Identity:''' Does the application protect user identity from abuse? Are there adequate controls in place to ensure evidence of identity (as required for many banking applications?)&lt;br /&gt;
* '''Financial:''' Assess the level of risk the organization is prepared to absorb in remediation, as a potential financial loss. For example, forum software may have a lower estimated financial risk than an Internet banking application.&lt;br /&gt;
* '''Reputation:''' Quantify or estimate of the loss of reputation derived from the application being misused or successfully attacked.&lt;br /&gt;
* '''Privacy and Regulatory:''' To what extent will the application have to protect user data? Forum software by its nature is public, but a tax preparation application is subject to tax regulations and privacy legislation requirements in most countries.&lt;br /&gt;
* '''Availability Guarantees:''' Is the application required to be available per a '''''Service Level Agreement (SLA)''''' or similar guarantee? Is it a nationally protected infrastructure? To what level will the application have to be available? High availability techniques are significantly more expensive, so applying the correct controls up front will save a great deal of time, resources, and money.&lt;br /&gt;
&lt;br /&gt;
This is by no means an exhaustive list, but it gives an idea of some of the business risk decisions leading into selecting and building security controls.&lt;br /&gt;
&lt;br /&gt;
Other sources of risk guidance come from:&lt;br /&gt;
* Laws (such as privacy or finance laws)&lt;br /&gt;
* Regulations (such as banking or e-commerce regulations)&lt;br /&gt;
* Standards (such as ISO 17799)&lt;br /&gt;
* Legal Agreements (such as payment card industry standards or merchant agreements)&lt;br /&gt;
* Corporate Information Security Policy&lt;br /&gt;
&lt;br /&gt;
=== Application Overview ===&lt;br /&gt;
Once the security objectives have been defined, analyze the application design to identify the '''''components''''', '''''data flows''''', and '''''trust boundaries'''''.&lt;br /&gt;
&lt;br /&gt;
Do this by surveying the application’s architecture and design documentation. In particular, look for UML component diagrams. Such high level component diagrams are generally sufficient to understand how and why data flows to various places. For example, data movement across a trust boundary (such as from the Internet to the web tier, or from the business logic to the database server), needs to be carefully analyzed, whereas data that flows within the same trust level does not need as much scrutiny.&lt;br /&gt;
&lt;br /&gt;
=== Decompose Application ===&lt;br /&gt;
Once the application architecture is understood then decompose it further, to identify the features and modules with a security impact that need to be evaluated. For example, when investigating the authentication module, it is necessary to understand how data enters the module, how the module validates and processes the data, where the data flows, how the data is stored, and what fundamental decisions and assumptions are made by the module.&lt;br /&gt;
&lt;br /&gt;
=== Identify Threats ===&lt;br /&gt;
It is impossible to write down unknown threats, but it is likewise unlikely that new malware will be created to exploit new vulnerabilities within custom systems. Therefore, concentrate on known risks, which can be easily demonstrated using tools or techniques from Bugtraq.&lt;br /&gt;
&lt;br /&gt;
Microsoft suggests two different approaches for writing up threats. One is a threat graph, as shown in Figure 2, and the other is a structured list, as shown in Figure 3.&lt;br /&gt;
&lt;br /&gt;
[[Image:Threat_Graph.gif|Figure 2: Threat Graph]]&lt;br /&gt;
&lt;br /&gt;
Typically, a threat graph imparts more information quickly but it takes longer to construct, while a structured list is easier to create but it will take longer for the threat impacts to become obvious.&lt;br /&gt;
&lt;br /&gt;
# Attacker may be able to read other user’s messages&lt;br /&gt;
# User may not have logged off on a shared PC&lt;br /&gt;
# Data validation may allow SQL injection&lt;br /&gt;
# Implement data validation&lt;br /&gt;
# Authorization may fail, allowing unauthorized access&lt;br /&gt;
# Implement authorization checks&lt;br /&gt;
# Browser cache may contain contents of message&lt;br /&gt;
# Implement anti-caching directive in HTTP headers&lt;br /&gt;
# If eavesdropping risk is high, use SSL&lt;br /&gt;
&lt;br /&gt;
Note that it takes a motivated attacker to exploit a threat; they generally want something from your application or to obviate controls. To understand the relevant threats, use the following categories to understand who might attack the application:&lt;br /&gt;
&lt;br /&gt;
* '''Accidental Discovery:''' An ordinary user stumbles across a functional mistake in your application, just using a web browser, and gains access to privileged information or functionality.&lt;br /&gt;
* '''Automated Malware:''' Programs or scripts, which are searching for known vulnerabilities, and then report them back to a central collection site.&lt;br /&gt;
* '''The Curious Attacker:''' a security researcher or ordinary user, who notices something wrong with the application, and decides to pursue further.&lt;br /&gt;
* '''Script Kiddies:''' Common renegades, seeking to compromise or deface applications for collateral gain, notoriety, or a political agenda, perhaps using the attack categories described in the ''OWASP Web Application Penetration Checklist.''&lt;br /&gt;
* '''The Motivated Attacker:''' Potentially, a disgruntled staff member with inside knowledge or a paid professional attacker.&lt;br /&gt;
* '''Organized Crime:''' Criminals seeking high stake payouts, such as cracking e-commerce or corporate banking applications, for financial gain.&lt;br /&gt;
&lt;br /&gt;
It is vital to understand the level of attacker you are defending against. For example, a motivated attacker, who understands your internal processes is often more dangerous than script kiddies.&lt;br /&gt;
&lt;br /&gt;
=== STRIDE ===&lt;br /&gt;
STRIDE is a classification scheme for characterizing known threats according to the kinds of exploit that are used (or motivation of the attacker). The STRIDE acronym is formed from the first letter of each of the following categories.&lt;br /&gt;
&lt;br /&gt;
'''''Spoofing Identity'''''&lt;br /&gt;
“Identity spoofing” is a key risk for applications that have many users but provide a single execution context at the application and database level. In particular, users should not be able to become any other user or assume the attributes of another user.&lt;br /&gt;
&lt;br /&gt;
'''''Tampering with Data'''''&lt;br /&gt;
Users can potentially change data delivered to them, return it, and thereby potentially manipulate client-side validation, GET and POST results, cookies, HTTP headers, and so forth. The application should not send data to the user, such as interest rates or periods, which are obtainable only from within the application itself. The application should also carefully check data received from the user and validate that it is sane and applicable before storing or using it.&lt;br /&gt;
&lt;br /&gt;
'''''Repudiation'''''&lt;br /&gt;
Users may dispute transactions if there is insufficient auditing or recordkeeping of their activity. For example, if a user says, “But I didn’t transfer any money to this external account!”, and you cannot track his/her activities through the application, then it is extremely likely that the transaction will have to be written off as a loss.&lt;br /&gt;
&lt;br /&gt;
Therefore, consider if the application requires non-repudiation controls, such as web access logs, audit trails at each tier, or the same user context from top to bottom. Preferably, the application should run with the user’s privileges, not more, but this may not be possible with many off-the-shelf application frameworks.&lt;br /&gt;
&lt;br /&gt;
'''''Information Disclosure'''''&lt;br /&gt;
Users are rightfully wary of submitting private details to a system. If it is possible for an attacker to publicly reveal user data at large, whether anonymously or as an authorized user, there will be an immediate loss of confidence and a substantial period of reputation loss. Therefore, applications must include strong controls to prevent user ID tampering and abuse, particularly if they use a single context to run the entire application. &lt;br /&gt;
&lt;br /&gt;
Also, consider if the user’s web browser may leak information. Some web browsers may ignore the no caching directives in HTTP headers or handle them incorrectly. In a corresponding fashion, every secure application has a responsibility to minimize the amount of information stored by the web browser, just in case it leaks or leaves information behind, which can be used by an attacker to learn details about the application, the user, or to potentially become that user.&lt;br /&gt;
&lt;br /&gt;
Finally, in implementing persistent values, keep in mind that the use of hidden fields is insecure by nature. Such storage should not be relied on to secure sensitive information or to provide adequate personal privacy safeguards.&lt;br /&gt;
&lt;br /&gt;
'''''Denial of Service'''''&lt;br /&gt;
Application designers should be aware that their applications may be subject to a denial of service attack. Therefore, the use of expensive resources such as large files, complex calculations, heavy-duty searches, or long queries should be reserved for authenticated and authorized users, and not available to anonymous users.&lt;br /&gt;
&lt;br /&gt;
For applications that do not have this luxury, every facet of the application should be engineered to perform as little work as possible, to use fast and few database queries, to avoid exposing large files or unique links per user, in order to prevent simple denial of service attacks.&lt;br /&gt;
&lt;br /&gt;
'''''Elevation of Privilege'''''&lt;br /&gt;
If an application provides distinct user and administrative roles, then it is vital to ensure that the user cannot elevate his/her role to a higher privilege one. In particular, simply not displaying privileged role links is insufficient. Instead, all actions should be gated through an authorization matrix, to ensure that only the permitted roles can access privileged functionality.&lt;br /&gt;
&lt;br /&gt;
=== DREAD ===&lt;br /&gt;
DREAD is a classification scheme for quantifying, comparing and prioritizing the amount of risk presented by each evaluated threat.  The DREAD acronym is formed from the first letter of each category below.&lt;br /&gt;
&lt;br /&gt;
DREAD modeling influences the thinking behind setting the risk rating, and is also used directly to sort the risks. The DREAD algorithm, shown below, is used to compute a risk value, which is an average of all five categories.&lt;br /&gt;
&lt;br /&gt;
'''Risk_DREAD''' = (&amp;lt;u&amp;gt;D&amp;lt;/u&amp;gt;AMAGE + &amp;lt;u&amp;gt;R&amp;lt;/u&amp;gt;EPRODUCIBILITY + &amp;lt;u&amp;gt;E&amp;lt;/u&amp;gt;XPLOITABILITY + &amp;lt;u&amp;gt;A&amp;lt;/u&amp;gt;FFECTED USERS + &amp;lt;u&amp;gt;D&amp;lt;/u&amp;gt;ISCOVERABILITY) / 5&lt;br /&gt;
&lt;br /&gt;
The calculation always produces a number between 0 and 10; the higher the number, the more serious the risk.&lt;br /&gt;
&lt;br /&gt;
Here are some examples of how to quantify the DREAD categories.&lt;br /&gt;
&lt;br /&gt;
'''''Damage Potential'''''&lt;br /&gt;
* If a threat exploit occurs, how much damage will be caused?&lt;br /&gt;
**0 = Nothing	&lt;br /&gt;
**5 = Individual user data is compromised or affected.	&lt;br /&gt;
**10 = Complete system or data destruction&lt;br /&gt;
&lt;br /&gt;
'''''Reproducibility'''''&lt;br /&gt;
* How easy is it to reproduce the threat exploit?&lt;br /&gt;
**0 = Very hard or impossible, even for administrators of the application.&lt;br /&gt;
**5 = One or two steps required, may need to be an authorized user.	&lt;br /&gt;
**10 = Just a web browser and the address bar is sufficient, without authentication.&lt;br /&gt;
&lt;br /&gt;
'''''Exploitability'''''&lt;br /&gt;
* What is needed to exploit this threat?&lt;br /&gt;
**0 = Advanced programming and networking knowledge, with custom or advanced attack tools.	&lt;br /&gt;
**5 = Malware exists on the Internet, or an exploit is easily performed, using available attack tools.	&lt;br /&gt;
**10 = Just a web browser&lt;br /&gt;
&lt;br /&gt;
'''''Affected Users'''''&lt;br /&gt;
* How many users will be affected?&lt;br /&gt;
**0 = None	&lt;br /&gt;
**5 = Some users, but not all	&lt;br /&gt;
**10 = All users&lt;br /&gt;
&lt;br /&gt;
'''''Discoverability'''''&lt;br /&gt;
* How easy is it to discover this threat?&lt;br /&gt;
**0 = Very hard to impossible; requires source code or administrative access.&lt;br /&gt;
**5 = Can figure it out by guessing or by monitoring network traces.	&lt;br /&gt;
**9 = Details of faults like this are already in the public domain and can be easily discovered using a search engine.&lt;br /&gt;
**10 = The information is visible in the web browser address bar or in a form.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When performing a security review of an existing application, “Discoverability” will often be set to 10 by convention, as it is assumed the threat issues will be discovered.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Using DREAD can be difficult at first. It may be helpful to think of Damage Potential and Affected Users in terms of Impact, while thinking of Reproducibility, Exploitability, and Discoverability in terms of Probability. Using the Impact vs Probability approach (which follows best practices such as defined in NIST-800-30), I would alter the formula to make the Impact score equal to the Probability score. Otherwise the probability scores have more weight in the total.&lt;br /&gt;
&lt;br /&gt;
== Alternative Threat Modeling Systems ==&lt;br /&gt;
OWASP recognizes that the adoption of the Microsoft modeling process may not fit all organizations. If STRIDE and DREAD are unacceptable for some reason, we recommend that your organization “dry run” the other threat risk models discussed against an existing application or design. This will allow you to determine which approach works best for you, and to adopt the most appropriate threat modeling tools for your organization.&lt;br /&gt;
&lt;br /&gt;
'''In summary, performing threat modeling provides a far greater return than most any other control in this Guide. Therefore, make threat risk modeling an early priority in your application design process.'''&lt;br /&gt;
&lt;br /&gt;
=== Trike ===&lt;br /&gt;
Trike is a threat modeling framework with similarities to the Microsoft threat modeling processes. However, Trike differs because it uses a risk based approach with distinct implementation, threat, and risk models, instead of using the STRIDE/DREAD aggregated threat model (attacks, threats, and weaknesses).&lt;br /&gt;
From the Trike paper, Trike’s goals are:&lt;br /&gt;
* With assistance from the system stakeholders, to ensure that the risk this system entails to each asset is acceptable to all stakeholders.&lt;br /&gt;
* Be able to tell whether we have done this.&lt;br /&gt;
* Communicate what we’ve done and its effects to the stakeholders.&lt;br /&gt;
* Empower stakeholders to understand and reduce the risks to them and other stakeholders implied by their actions within their domains. &lt;br /&gt;
&lt;br /&gt;
For more information on Trike, please see Section 6.9, reference 8.&lt;br /&gt;
&lt;br /&gt;
=== AS/NZS 4360:2004 Risk Management ===&lt;br /&gt;
The Australian/New Zealand Standard AS/NZS 4360, first issued in 1999, and revised in 2004, is the world’s first formal standard for documenting and managing risk and is still one of the few formal standards for managing it.&lt;br /&gt;
The standard’s approach is simple (it’s only 28 pages long), flexible, and iterative. Furthermore, it does not lock organizations into a particular risk management methodology, provided the methodology fulfils the AS/NZS 4360 five steps. It also provides several sets of risk tables as examples, and allows organizations to freely develop and adopt their own.&lt;br /&gt;
&lt;br /&gt;
'''The five steps of the AS/NZS 4360 process are:'''&lt;br /&gt;
* '''Establish Context:''' Establish the risk domain, i.e., which assets/systems are important?&lt;br /&gt;
* '''Identify the Risks:''' Within the risk domain, what specific risks are apparent?&lt;br /&gt;
* '''Analyze the Risks:''' Look at the risks and determine if there are any supporting controls in place.&lt;br /&gt;
* '''Evaluate the Risks:''' Determine the residual risk.&lt;br /&gt;
* '''Treat the Risks:''' Describe the method to treat the risks so that risks selected by the business will be mitigated.&lt;br /&gt;
AS/NZS 4360 assumes that risk will be managed by an '''''operational risk group''''', and that the organization has adequate skills and risk management resources in house to identify, analyze, and treat the risks.&lt;br /&gt;
&lt;br /&gt;
'''The advantages of AS/NZS 4360:'''&lt;br /&gt;
* AS/NZS 4360 works well as a risk management methodology for organizations requiring Sarbanes-Oxley compliance.&lt;br /&gt;
* AS/NZS 4360 works well for organizations that prefer to manage risks in a traditional way, such as just using likelihood and consequence to determine an overall risk. &lt;br /&gt;
* AS/NZS 4360 is familiar to most risk managers worldwide, and your organization may already have implemented an AS/NZS 4360 compatible approach.&lt;br /&gt;
* You are an Australian organization, and may be required to use it if you are audited on a regular basis, or to justify why you aren’t using it. Luckily, the STRIDE/DREAD model discussed earlier is AS/NZS 4360 compatible.&lt;br /&gt;
&lt;br /&gt;
'''The limitations of AS/NZS 4360:'''&lt;br /&gt;
* The AS/NZS 4360 approach works best for business or systemic risks than for technical risks.&lt;br /&gt;
* AS/NZS 4360 does not define the methodology to perform a structured threat risk modeling exercise.&lt;br /&gt;
* As AS/NZS 4360 is a generic framework for managing risk, it does not provide any structured method to enumerate web application security risks. &lt;br /&gt;
Although AS/NZS 4360 may be used to rank risks for security reviews, the lack of structured methods of enumerating threats for web applications makes it less desirable than other methodologies described earlier.&lt;br /&gt;
&lt;br /&gt;
=== CVSS ===&lt;br /&gt;
The US Department of Homeland Security (DHS) established the NIAC Vulnerability Disclosure Working Group, which incorporates input from Cisco Systems, Symantec, ISS, Qualys, Microsoft, CERT/CC, and eBay. One of the group’s outputs is the Common '''''Vulnerability Scoring System (CVSS).'''''&lt;br /&gt;
&lt;br /&gt;
'''The advantages of CVSS:'''&lt;br /&gt;
* You have just received notification from a security researcher or other source that your product has vulnerability, and you wish to ensure that it has an accurate and normalized severity rating, so as to alert your customers to the appropriate level of action required when you release the patch.&lt;br /&gt;
* You are a security researcher, and have found several threat exploits within an application. You would like to use the CVSS ranking system to produce reliable risk rankings, to ensure that the ISV will take the exploits seriously as indicated by their rating.&lt;br /&gt;
* CVSS has been recommended by the working group for use by US Government departments. However, it is unclear if it will become policy or be widely adopted at the time of this writing.&lt;br /&gt;
&lt;br /&gt;
'''The limitations of CVSS:'''&lt;br /&gt;
* CVSS does not find or reduce the attack surface area (i.e. design flaws), or help enumerate risks within any arbitrary piece of code, as it is just a scoring system, not a modeling methodology.&lt;br /&gt;
* CVSS is more complex than STRIDE/DREAD, as it aims to calculate the risk of announced vulnerabilities as applied to deployed software and environmental factors.&lt;br /&gt;
* The CVSS risk ranking is complex – a spreadsheet is required to calculate the risk components as the assumption behind CVSS is that a specific vulnerability has been identified and announced, or a worm or Trojan has been released targeting a small number of attack vectors. &lt;br /&gt;
* The overhead of calculating the CVSS risk ranking is quite high if applied to a thorough code review, which may have 250 or more threats to rank.&lt;br /&gt;
&lt;br /&gt;
=== OCTAVE ===&lt;br /&gt;
OCTAVE is a heavyweight risk methodology approach originating from Carnegie Mellon University’s Software Engineering Institute (SEI) in collaboration with CERT. OCTAVE focuses on organizational risk, not technical risk.&lt;br /&gt;
OCTAVE comes in two versions: Full OCTAVE, for large organizations, and OCTAVE-S for small organizations, both of which have specific catalogs of practices, profiles, and worksheets to document the modeling outcomes.&lt;br /&gt;
&lt;br /&gt;
'''OCTAVE is popular with many sites and is useful when:'''&lt;br /&gt;
* Implementing an organizational culture of risk management and controls becomes necessary.&lt;br /&gt;
* Documenting and measuring business risk becomes timely.&lt;br /&gt;
* Documenting and measuring the overall IT security risk, particularly as it relates to the corporate IT risk management, becomes necessary.&lt;br /&gt;
* When documenting risks surrounding complete systems becomes necessary.&lt;br /&gt;
* To accommodate a fundamental reorganization, such as when an organization does not have a working risk methodology in place, and requires a robust risk management framework to be put in place.&lt;br /&gt;
&lt;br /&gt;
'''The limitations of OCTAVE are:''' &lt;br /&gt;
* OCTAVE is incompatible with AS/NZS 4360, as it mandates Likelihood = 1 (i.e., It assumes a threat will always occur) and this is inappropriate for many organizations. OCTAVE-S makes the inclusion of this probability optional, but this is not part of the more comprehensive OCTAVE standard.&lt;br /&gt;
* Consisting of 18 volumes, OCTAVE is large and complex, with many worksheets and practices to implement.&lt;br /&gt;
* It does not provide a list of “out of the box” practices for assessing and mitigating web application security risks.&lt;br /&gt;
&lt;br /&gt;
Because of these issues, OWASP does not anticipate that OCTAVE will be used at large by application designers or developers, because it fails to take threat risk modeling into consideration, which is useful during all stages of development, by all participants, to reduce the overall risk of an application becoming vulnerable to attack.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
In this chapter, we have touched on the basic principles of threat risk modeling, risk management, and web application security. Applications that leverage the underlying intent of these principles will be more secure than their counterparts, which will only be minimally compliant just by including specific controls.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* Threat Analysis &amp;amp;amp; Modeling v2.0, © Microsoft Corporation, 2006,&lt;br /&gt;
http://www.microsoft.com/downloads/details.aspx?familyid=334AD466-8B53-4440-8FF0-6AC8142D9198&amp;amp;displaylang=en&lt;br /&gt;
* Threat Modeling Web Applications, J.D. Meier, Alex Mackman, Blaine Wastell, © Microsoft Corporation, May 2005, &lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms978516.aspx&lt;br /&gt;
* Improving Web Application Security: Threats and Countermeasures, J.D. Meier, Alex Mackman, Michael Dunner, Srinath Vasireddy, Ray Escamilla and Anandha Murukan, © Microsoft Corporation, June 2003, http://msdn.microsoft.com/en-us/library/ms994921.aspx&lt;br /&gt;
* Threat Modeling, Frank Swiderski and Window Snyder, Microsoft Press, June 2004, ISBM 0-7356-1991-3 or http://www.microsoft.com/downloads/details.aspx?FamilyID=62830f95-0e61-4f87-88a6-e7c663444ac1&amp;amp;displaylang=en.&lt;br /&gt;
* Writing Secure Code, 2nd Edition, Howard and LeBlanc, pp 69 – 124, Microsoft Press, 2003, ISBN 0-7356-1722-8.&lt;br /&gt;
* Improving Web Application Security: Threats and Countermeasures, Meier et al, Microsoft Press, 2003.&lt;br /&gt;
* The STRIDE Threat Model, © Microsoft Corporation, 2005, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csvr2002/htm/cs_se_securecode_zlsj.asp&lt;br /&gt;
* The DREAD Threat Model, © Microsoft Corporation, 2005.&lt;br /&gt;
* A Conceptual Model for Threat Modeling Applications, Saitta, Larcom, and Michael Eddington, July 2005, http://dymaxion.org/trike/ or http://dymaxion.org/trike/Trike_v1_Methodology_Document-draft.pdf.&lt;br /&gt;
* AS/NZS 4360:2004 Risk Management, Standards Australia and Standards New Zealand, http://www.standards.co.nz/web-shop/?action=viewSearchProduct&amp;amp;mod=catalog&amp;amp;pid=4360:2004(AS|NZS).&lt;br /&gt;
* CVSS, U.S. Department of Homeland Security library, February 2005, http://www.dhs.gov/interweb/assetlibrary/NIAC_CyberVulnerabilitiesPaper_Feb05.pdf.&lt;br /&gt;
* OCTAVE, CERT library, http://www.cert.org/octave/.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
[[Guide Table of Contents]]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP_Guide_Project]]&lt;br /&gt;
[[Category:Activity]]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Threat_Risk_Modeling&amp;diff=35803</id>
		<title>Threat Risk Modeling</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Threat_Risk_Modeling&amp;diff=35803"/>
				<updated>2008-08-11T20:11:19Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: Formatting improvements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Guide Table of Contents]]&lt;br /&gt;
__TOC__&lt;br /&gt;
When you start a web application design, it is essential to apply threat risk modeling; otherwise you will squander resources, time and money on useless controls that fail to focus on the real risks.&lt;br /&gt;
&lt;br /&gt;
The method used to assess risk is not nearly as important as actually performing a structured threat risk modeling. Microsoft notes that the single most important factor in their security improvement program was the corporate adoption of threat risk modeling.&lt;br /&gt;
&lt;br /&gt;
OWASP recommends Microsoft’s threat modeling process because it works well for addressing the unique challenges facing web application security and is simple to learn and adopt by designers, developers, code reviewers, and the quality assurance team.&lt;br /&gt;
&lt;br /&gt;
The following sections provide some overview information (or see Section 6.9, Further Reading, for additional resources).&lt;br /&gt;
&lt;br /&gt;
==Threat Risk Modeling ==&lt;br /&gt;
Threat risk modeling is an essential process for secure web application development. It allows organizations to determine the correct controls and to produce effective countermeasures within budget. For example, there is little point in spending $100,000 for fraud control for a system that has negligible fraud risk.&lt;br /&gt;
&lt;br /&gt;
==Performing threat risk modeling using the Microsoft Threat Modeling Process ==&lt;br /&gt;
The threat risk modeling process has five steps , enumerated below and shown graphically in Figure 1. They are:&lt;br /&gt;
&lt;br /&gt;
# Identify Security Objectives&lt;br /&gt;
# Survey the Application&lt;br /&gt;
# Decompose it&lt;br /&gt;
# Identify Threats&lt;br /&gt;
# Identify Vulnerabilities&lt;br /&gt;
&lt;br /&gt;
[[Image:Threat_Model_Flow.gif|Figure 1: Threat Model Flow]]&lt;br /&gt;
&lt;br /&gt;
Let’s consider the steps in more detail.&lt;br /&gt;
&lt;br /&gt;
===Identify Security Objectives ===&lt;br /&gt;
The business (or project management) leadership, in concert with the software development and quality assurance teams, all need to understand the security objectives. To facilitate this, start by breaking down the application’s security objectives into the following categories:&lt;br /&gt;
&lt;br /&gt;
* '''Identity:''' Does the application protect user identity from abuse? Are there adequate controls in place to ensure evidence of identity (as required for many banking applications?)&lt;br /&gt;
&lt;br /&gt;
* '''Financial:''' Assess the level of risk the organization is prepared to absorb in remediation, as a potential financial loss. For example, forum software may have a lower estimated financial risk than an Internet banking application.&lt;br /&gt;
&lt;br /&gt;
* '''Reputation:''' Quantify or estimate of the loss of reputation derived from the application being misused or successfully attacked.&lt;br /&gt;
&lt;br /&gt;
* '''Privacy and Regulatory:''' To what extent will the application have to protect user data? Forum software by its nature is public, but a tax preparation application is subject to tax regulations and privacy legislation requirements in most countries.&lt;br /&gt;
&lt;br /&gt;
* '''Availability Guarantees:''' Is the application required to be available per a '''''Service Level Agreement (SLA)''''' or similar guarantee? Is it a nationally protected infrastructure? To what level will the application have to be available? High availability techniques are significantly more expensive, so applying the correct controls up front will save a great deal of time, resources, and money.&lt;br /&gt;
&lt;br /&gt;
This is by no means an exhaustive list, but it gives an idea of some of the business risk decisions leading into selecting and building security controls.&lt;br /&gt;
&lt;br /&gt;
Other sources of risk guidance come from:&lt;br /&gt;
&lt;br /&gt;
* Laws (such as privacy or finance laws)&lt;br /&gt;
* Regulations (such as banking or e-commerce regulations)&lt;br /&gt;
* Standards (such as ISO 17799)&lt;br /&gt;
* Legal Agreements (such as payment card industry standards or merchant agreements)&lt;br /&gt;
* Corporate Information Security Policy&lt;br /&gt;
&lt;br /&gt;
===Application Overview ===&lt;br /&gt;
Once the security objectives have been defined, analyze the application design to identify the '''''components''''', '''''data flows''''', and '''''trust boundaries'''''.&lt;br /&gt;
&lt;br /&gt;
Do this by surveying the application’s architecture and design documentation. In particular, look for UML component diagrams. Such high level component diagrams are generally sufficient to understand how and why data flows to various places. For example, data movement across a trust boundary (such as from the Internet to the web tier, or from the business logic to the database server), needs to be carefully analyzed, whereas data that flows within the same trust level does not need as much scrutiny.&lt;br /&gt;
&lt;br /&gt;
===Decompose Application ===&lt;br /&gt;
Once the application architecture is understood then decompose it further, to identify the features and modules with a security impact that need to be evaluated. For example, when investigating the authentication module, it is necessary to understand how data enters the module, how the module validates and processes the data, where the data flows, how the data is stored, and what fundamental decisions and assumptions are made by the module.&lt;br /&gt;
&lt;br /&gt;
===Identify Threats ===&lt;br /&gt;
It is impossible to write down unknown threats, but it is likewise unlikely that new malware will be created to exploit new vulnerabilities within custom systems. Therefore, concentrate on known risks, which can be easily demonstrated using tools or techniques from Bugtraq .&lt;br /&gt;
&lt;br /&gt;
Microsoft suggests two different approaches for writing up threats. One is a threat graph, as shown in Figure 2, and the other is a structured list, as shown in Figure 3.&lt;br /&gt;
&lt;br /&gt;
[[Image:Threat_Graph.gif|Figure 2: Threat Graph]]&lt;br /&gt;
&lt;br /&gt;
Typically, a threat graph imparts more information quickly but it takes longer to construct, while a structured list is easier to create but it will take longer for the threat impacts to become obvious.&lt;br /&gt;
&lt;br /&gt;
# Attacker may be able to read other user’s messages&lt;br /&gt;
# User may not have logged off on a shared PC&lt;br /&gt;
# Data validation may allow SQL injection&lt;br /&gt;
# Implement data validation&lt;br /&gt;
# Authorization may fail, allowing unauthorized access&lt;br /&gt;
# Implement authorization checks&lt;br /&gt;
# Browser cache may contain contents of message&lt;br /&gt;
# Implement anti-caching directive in HTTP headers&lt;br /&gt;
# If eavesdropping risk is high, use SSL&lt;br /&gt;
&lt;br /&gt;
Note that it takes a motivated attacker to exploit a threat; they generally want something from your application or to obviate controls. To understand the relevant threats, use the following categories to understand who might attack the application:&lt;br /&gt;
&lt;br /&gt;
* '''Accidental Discovery:''' An ordinary user stumbles across a functional mistake in your application, just using a web browser, and gains access to privileged information or functionality.&lt;br /&gt;
* '''Automated Malware:''' Programs or scripts, which are searching for known vulnerabilities, and then report them back to a central collection site.&lt;br /&gt;
* '''The Curious Attacker:''' a security researcher or ordinary user, who notices something wrong with the application, and decides to pursue further.&lt;br /&gt;
* '''Script Kiddies:''' Common renegades, seeking to compromise or deface applications for collateral gain, notoriety, or a political agenda, perhaps using the attack categories described in the ''OWASP Web Application Penetration Checklist.''&lt;br /&gt;
* '''The Motivated Attacker:''' Potentially, a disgruntled staff member with inside knowledge or a paid professional attacker.&lt;br /&gt;
* '''Organized Crime:''' Criminals seeking high stake payouts, such as cracking e-commerce or corporate banking applications, for financial gain.&lt;br /&gt;
&lt;br /&gt;
It is vital to understand the level of attacker you are defending against. For example, a motivated attacker, who understands your internal processes is often more dangerous than script kiddies.&lt;br /&gt;
&lt;br /&gt;
===STRIDE ===&lt;br /&gt;
STRIDE is a classification scheme for characterizing known threats according to the kinds of exploit that are used (or motivation of the attacker). The STRIDE acronym is formed from the first letter of each of the following categories.&lt;br /&gt;
&lt;br /&gt;
'''''Spoofing Identity'''''&lt;br /&gt;
&lt;br /&gt;
“Identity spoofing” is a key risk for applications that have many users but provide a single execution context at the application and database level. In particular, users should not be able to become any other user or assume the attributes of another user.&lt;br /&gt;
&lt;br /&gt;
'''''Tampering with Data'''''&lt;br /&gt;
&lt;br /&gt;
Users can potentially change data delivered to them, return it, and thereby potentially manipulate client-side validation, GET and POST results, cookies, HTTP headers, and so forth. The application should not send data to the user, such as interest rates or periods, which are obtainable only from within the application itself. The application should also carefully check data received from the user and validate that it is sane and applicable before storing or using it.&lt;br /&gt;
&lt;br /&gt;
'''''Repudiation'''''&lt;br /&gt;
&lt;br /&gt;
Users may dispute transactions if there is insufficient auditing or recordkeeping of their activity. For example, if a user says, “But I didn’t transfer any money to this external account!”, and you cannot track his/her activities through the application, then it is extremely likely that the transaction will have to be written off as a loss.&lt;br /&gt;
&lt;br /&gt;
Therefore, consider if the application requires non-repudiation controls, such as web access logs, audit trails at each tier, or the same user context from top to bottom. Preferably, the application should run with the user’s privileges, not more, but this may not be possible with many off-the-shelf application frameworks.&lt;br /&gt;
&lt;br /&gt;
'''''Information Disclosure'''''&lt;br /&gt;
&lt;br /&gt;
Users are rightfully wary of submitting private details to a system. If it is possible for an attacker to publicly reveal user data at large, whether anonymously or as an authorized user, there will be an immediate loss of confidence and a substantial period of reputation loss. Therefore, applications must include strong controls to prevent user ID tampering and abuse, particularly if they use a single context to run the entire application. &lt;br /&gt;
&lt;br /&gt;
Also, consider if the user’s web browser may leak information. Some web browsers may ignore the no caching directives in HTTP headers or handle them incorrectly. In a corresponding fashion, every secure application has a responsibility to minimize the amount of information stored by the web browser, just in case it leaks or leaves information behind, which can be used by an attacker to learn details about the application, the user, or to potentially become that user.&lt;br /&gt;
&lt;br /&gt;
Finally, in implementing persistent values, keep in mind that the use of hidden fields is insecure by nature. Such storage should not be relied on to secure sensitive information or to provide adequate personal privacy safeguards.&lt;br /&gt;
&lt;br /&gt;
'''''Denial of Service'''''&lt;br /&gt;
&lt;br /&gt;
Application designers should be aware that their applications may be subject to a denial of service attack. Therefore, the use of expensive resources such as large files, complex calculations, heavy-duty searches, or long queries should be reserved for authenticated and authorized users, and not available to anonymous users.&lt;br /&gt;
&lt;br /&gt;
For applications that do not have this luxury, every facet of the application should be engineered to perform as little work as possible, to use fast and few database queries, to avoid exposing large files or unique links per user, in order to prevent simple denial of service attacks.&lt;br /&gt;
&lt;br /&gt;
'''''Elevation of Privilege'''''&lt;br /&gt;
&lt;br /&gt;
If an application provides distinct user and administrative roles, then it is vital to ensure that the user cannot elevate his/her role to a higher privilege one. In particular, simply not displaying privileged role links is insufficient. Instead, all actions should be gated through an authorization matrix, to ensure that only the permitted roles can access privileged functionality.&lt;br /&gt;
&lt;br /&gt;
===DREAD ===&lt;br /&gt;
DREAD is a classification scheme for quantifying, comparing and prioritizing the amount of risk presented by each evaluated threat.  The DREAD acronym is formed from the first letter of each category below.&lt;br /&gt;
&lt;br /&gt;
DREAD modeling influences the thinking behind setting the risk rating, and is also used directly to sort the risks. The DREAD algorithm, shown below, is used to compute a risk value, which is an average of all five categories.&lt;br /&gt;
&lt;br /&gt;
'''Risk_DREAD''' = (&amp;lt;u&amp;gt;D&amp;lt;/u&amp;gt;AMAGE + &amp;lt;u&amp;gt;R&amp;lt;/u&amp;gt;EPRODUCIBILITY + &amp;lt;u&amp;gt;E&amp;lt;/u&amp;gt;XPLOITABILITY + &amp;lt;u&amp;gt;A&amp;lt;/u&amp;gt;FFECTED USERS + &amp;lt;u&amp;gt;D&amp;lt;/u&amp;gt;ISCOVERABILITY) / 5&lt;br /&gt;
&lt;br /&gt;
The calculation always produces a number between 0 and 10; the higher the number, the more serious the risk.&lt;br /&gt;
&lt;br /&gt;
Here are some examples of how to quantify the DREAD categories.&lt;br /&gt;
&lt;br /&gt;
'''''Damage Potential'''''&lt;br /&gt;
&lt;br /&gt;
* If a threat exploit occurs, how much damage will be caused?&lt;br /&gt;
**0 = Nothing	&lt;br /&gt;
**5 = Individual user data is compromised or affected.	&lt;br /&gt;
**10 = Complete system or data destruction&lt;br /&gt;
&lt;br /&gt;
'''''Reproducibility'''''&lt;br /&gt;
&lt;br /&gt;
* How easy is it to reproduce the threat exploit?&lt;br /&gt;
**0 = Very hard or impossible, even for administrators of the application.&lt;br /&gt;
**5 = One or two steps required, may need to be an authorized user.	&lt;br /&gt;
**10 = Just a web browser and the address bar is sufficient, without authentication.&lt;br /&gt;
&lt;br /&gt;
'''''Exploitability'''''&lt;br /&gt;
&lt;br /&gt;
* What is needed to exploit this threat?&lt;br /&gt;
**0 = Advanced programming and networking knowledge, with custom or advanced attack tools.	&lt;br /&gt;
**5 = Malware exists on the Internet, or an exploit is easily performed, using available attack tools.	&lt;br /&gt;
**10 = Just a web browser&lt;br /&gt;
&lt;br /&gt;
'''''Affected Users'''''&lt;br /&gt;
&lt;br /&gt;
* How many users will be affected?&lt;br /&gt;
**0 = None	&lt;br /&gt;
**5 = Some users, but not all	&lt;br /&gt;
**10 = All users&lt;br /&gt;
&lt;br /&gt;
'''''Discoverability'''''&lt;br /&gt;
&lt;br /&gt;
* How easy is it to discover this threat?&lt;br /&gt;
**0 = Very hard to impossible; requires source code or administrative access.&lt;br /&gt;
**5 = Can figure it out by guessing or by monitoring network traces.	&lt;br /&gt;
**9 = Details of faults like this are already in the public domain and can be easily discovered using a search engine.&lt;br /&gt;
**10 = The information is visible in the web browser address bar or in a form.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When performing a security review of an existing application, “Discoverability” will often be set to 10 by convention, as it is assumed the threat issues will be discovered.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Using DREAD can be difficult at first. It may be helpful to think of Damage Potential and Affected Users in terms of Impact, while thinking of Reproducibility, Exploitability, and Discoverability in terms of Probability. Using the Impact vs Probability approach (which follows best practices such as defined in NIST-800-30), I would alter the formula to make the Impact score equal to the Probability score. Otherwise the probability scores have more weight in the total.&lt;br /&gt;
&lt;br /&gt;
== Alternative Threat Modeling Systems ==&lt;br /&gt;
OWASP recognizes that the adoption of the Microsoft modeling process may not fit all organizations. If STRIDE and DREAD are unacceptable for some reason, we recommend that your organization “dry run” the other threat risk models discussed against an existing application or design. This will allow you to determine which approach works best for you, and to adopt the most appropriate threat modeling tools for your organization.&lt;br /&gt;
&lt;br /&gt;
'''In summary, performing threat modeling provides a far greater return than most any other control in this Guide. Therefore, make threat risk modeling an early priority in your application design process.'''&lt;br /&gt;
&lt;br /&gt;
=== Trike ===&lt;br /&gt;
Trike is a threat modeling framework with similarities to the Microsoft threat modeling processes. However, Trike differs because it uses a risk based approach with distinct implementation, threat, and risk models, instead of using the STRIDE/DREAD aggregated threat model (attacks, threats, and weaknesses).&lt;br /&gt;
From the Trike paper, Trike’s goals are:&lt;br /&gt;
*	With assistance from the system stakeholders, to ensure that the risk this system entails to each asset is acceptable to all stakeholders.&lt;br /&gt;
*	Be able to tell whether we have done this.&lt;br /&gt;
*	Communicate what we’ve done and its effects to the stakeholders.&lt;br /&gt;
*	Empower stakeholders to understand and reduce the risks to them and other stakeholders implied by their actions within their domains. &lt;br /&gt;
For more information on Trike, please see Section 6.9, reference 8.&lt;br /&gt;
&lt;br /&gt;
=== AS/NZS 4360:2004 Risk Management ===&lt;br /&gt;
The Australian/New Zealand Standard AS/NZS 4360, first issued in 1999, and revised in 2004, is the world’s first formal standard for documenting and managing risk and is still one of the few formal standards for managing it.&lt;br /&gt;
The standard’s approach is simple (it’s only 28 pages long), flexible, and iterative. Furthermore, it does not lock organizations into a particular risk management methodology, provided the methodology fulfils the AS/NZS 4360 five steps. It also provides several sets of risk tables as examples, and allows organizations to freely develop and adopt their own.&lt;br /&gt;
&lt;br /&gt;
'''The five steps of the AS/NZS 4360 process are:'''&lt;br /&gt;
*	'''Establish Context:''' Establish the risk domain, i.e., which assets/systems are important?&lt;br /&gt;
*	'''Identify the Risks:''' Within the risk domain, what specific risks are apparent?&lt;br /&gt;
*	'''Analyze the Risks:''' Look at the risks and determine if there are any supporting controls in place.&lt;br /&gt;
*	'''Evaluate the Risks:''' Determine the residual risk.&lt;br /&gt;
*	'''Treat the Risks:''' Describe the method to treat the risks so that risks selected by the business will be mitigated.&lt;br /&gt;
AS/NZS 4360 assumes that risk will be managed by an '''''operational risk group''''', and that the organization has adequate skills and risk management resources in house to identify, analyze, and treat the risks.&lt;br /&gt;
&lt;br /&gt;
'''The advantages of AS/NZS 4360:'''&lt;br /&gt;
*	AS/NZS 4360 works well as a risk management methodology for organizations requiring Sarbanes-Oxley compliance.&lt;br /&gt;
*	AS/NZS 4360 works well for organizations that prefer to manage risks in a traditional way, such as just using likelihood and consequence to determine an overall risk. &lt;br /&gt;
*	AS/NZS 4360 is familiar to most risk managers worldwide, and your organization may already have implemented an AS/NZS 4360 compatible approach.&lt;br /&gt;
*	You are an Australian organization, and may be required to use it if you are audited on a regular basis, or to justify why you aren’t using it. Luckily, the STRIDE/DREAD model discussed earlier is AS/NZS 4360 compatible.&lt;br /&gt;
&lt;br /&gt;
'''The limitations of AS/NZS 4360:'''&lt;br /&gt;
*	The AS/NZS 4360 approach works best for business or systemic risks than for technical risks.&lt;br /&gt;
*	AS/NZS 4360 does not define the methodology to perform a structured threat risk modeling exercise.&lt;br /&gt;
*	As AS/NZS 4360 is a generic framework for managing risk, it does not provide any structured method to enumerate web application security risks. &lt;br /&gt;
Although AS/NZS 4360 may be used to rank risks for security reviews, the lack of structured methods of enumerating threats for web applications makes it less desirable than other methodologies described earlier.&lt;br /&gt;
&lt;br /&gt;
=== CVSS ===&lt;br /&gt;
The US Department of Homeland Security (DHS) established the NIAC Vulnerability Disclosure Working Group, which incorporates input from Cisco Systems, Symantec, ISS, Qualys, Microsoft, CERT/CC, and eBay. One of the group’s outputs is the Common '''''Vulnerability Scoring System (CVSS).'''''&lt;br /&gt;
&lt;br /&gt;
'''The advantages of CVSS:'''&lt;br /&gt;
*	You have just received notification from a security researcher or other source that your product has vulnerability, and you wish to ensure that it has an accurate and normalized severity rating, so as to alert your customers to the appropriate level of action required when you release the patch.&lt;br /&gt;
*	You are a security researcher, and have found several threat exploits within an application. You would like to use the CVSS ranking system to produce reliable risk rankings, to ensure that the ISV will take the exploits seriously as indicated by their rating.&lt;br /&gt;
*	CVSS has been recommended by the working group for use by US Government departments. However, it is unclear if it will become policy or be widely adopted at the time of this writing.&lt;br /&gt;
&lt;br /&gt;
'''The limitations of CVSS:'''&lt;br /&gt;
*	CVSS does not find or reduce the attack surface area (i.e. design flaws), or help enumerate risks within any arbitrary piece of code, as it is just a scoring system, not a modeling methodology.&lt;br /&gt;
*	CVSS is more complex than STRIDE/DREAD, as it aims to calculate the risk of announced vulnerabilities as applied to deployed software and environmental factors.&lt;br /&gt;
*	The CVSS risk ranking is complex – a spreadsheet is required to calculate the risk components as the assumption behind CVSS is that a specific vulnerability has been identified and announced, or a worm or Trojan has been released targeting a small number of attack vectors. &lt;br /&gt;
*	The overhead of calculating the CVSS risk ranking is quite high if applied to a thorough code review, which may have 250 or more threats to rank.&lt;br /&gt;
&lt;br /&gt;
=== OCTAVE ===&lt;br /&gt;
OCTAVE is a heavyweight risk methodology approach originating from Carnegie Mellon University’s Software Engineering Institute (SEI) in collaboration with CERT. OCTAVE focuses on organizational risk, not technical risk.&lt;br /&gt;
OCTAVE comes in two versions: Full OCTAVE, for large organizations, and OCTAVE-S for small organizations, both of which have specific catalogs of practices, profiles, and worksheets to document the modeling outcomes.&lt;br /&gt;
&lt;br /&gt;
'''OCTAVE is popular with many sites and is useful when:'''&lt;br /&gt;
*	Implementing an organizational culture of risk management and controls becomes necessary.&lt;br /&gt;
*	Documenting and measuring business risk becomes timely.&lt;br /&gt;
*	Documenting and measuring the overall IT security risk, particularly as it relates to the corporate IT risk management, becomes necessary.&lt;br /&gt;
*	When documenting risks surrounding complete systems becomes necessary.&lt;br /&gt;
*	To accommodate a fundamental reorganization, such as when an organization does not have a working risk methodology in place, and requires a robust risk management framework to be put in place.&lt;br /&gt;
&lt;br /&gt;
'''The limitations of OCTAVE are:''' &lt;br /&gt;
*	OCTAVE is incompatible with AS/NZS 4360, as it mandates Likelihood = 1 (i.e., It assumes a threat will always occur) and this is inappropriate for many organizations. OCTAVE-S makes the inclusion of this probability optional, but this is not part of the more comprehensive OCTAVE standard.&lt;br /&gt;
*	Consisting of 18 volumes, OCTAVE is large and complex, with many worksheets and practices to implement.&lt;br /&gt;
*	It does not provide a list of “out of the box” practices for assessing and mitigating web application security risks.&lt;br /&gt;
Because of these issues, OWASP does not anticipate that OCTAVE will be used at large by application designers or developers, because it fails to take threat risk modeling into consideration, which is useful during all stages of development, by all participants, to reduce the overall risk of an application becoming vulnerable to attack.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
In this chapter, we have touched on the basic principles of threat risk modeling, risk management, and web application security. Applications that leverage the underlying intent of these principles will be more secure than their counterparts, which will only be minimally compliant just by including specific controls.&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
*       Threat Analysis &amp;amp;amp; Modeling v2.0, © Microsoft Corporation, 2006,&lt;br /&gt;
http://www.microsoft.com/downloads/details.aspx?familyid=334AD466-8B53-4440-8FF0-6AC8142D9198&amp;amp;displaylang=en&lt;br /&gt;
*	Threat Modeling Web Applications, J.D. Meier, Alex Mackman, Blaine Wastell, © Microsoft Corporation, May 2005, &lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms978516.aspx&lt;br /&gt;
*	Improving Web Application Security: Threats and Countermeasures, J.D. Meier, Alex Mackman, Michael Dunner, Srinath Vasireddy, Ray Escamilla and Anandha Murukan, © Microsoft Corporation, June 2003, http://msdn.microsoft.com/en-us/library/ms994921.aspx&lt;br /&gt;
*	Threat Modeling, Frank Swiderski and Window Snyder, Microsoft Press, June 2004, ISBM 0-7356-1991-3 or http://www.microsoft.com/downloads/details.aspx?FamilyID=62830f95-0e61-4f87-88a6-e7c663444ac1&amp;amp;displaylang=en.&lt;br /&gt;
*	Writing Secure Code, 2nd Edition, Howard and LeBlanc, pp 69 – 124, Microsoft Press, 2003, ISBN 0-7356-1722-8.&lt;br /&gt;
*	Improving Web Application Security: Threats and Countermeasures, Meier et al, Microsoft Press, 2003.&lt;br /&gt;
*	The STRIDE Threat Model, © Microsoft Corporation, 2005, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csvr2002/htm/cs_se_securecode_zlsj.asp&lt;br /&gt;
*	The DREAD Threat Model, © Microsoft Corporation, 2005.&lt;br /&gt;
*	A Conceptual Model for Threat Modeling Applications, Saitta, Larcom, and Michael Eddington, July 2005, http://dymaxion.org/trike/ or http://dymaxion.org/trike/Trike_v1_Methodology_Document-draft.pdf.&lt;br /&gt;
*	AS/NZS 4360:2004 Risk Management, Standards Australia and Standards New Zealand, http://www.standards.co.nz/web-shop/?action=viewSearchProduct&amp;amp;mod=catalog&amp;amp;pid=4360:2004(AS|NZS).&lt;br /&gt;
*	CVSS, U.S. Department of Homeland Security library, February 2005, http://www.dhs.gov/interweb/assetlibrary/NIAC_CyberVulnerabilitiesPaper_Feb05.pdf.&lt;br /&gt;
*	OCTAVE, CERT library, http://www.cert.org/octave/.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
[[Guide Table of Contents]]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP_Guide_Project]]&lt;br /&gt;
[[Category:Activity]]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34906</id>
		<title>FxCop</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34906"/>
				<updated>2008-07-29T17:34:40Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* Custom Rules and other third-party Enhancements */ added a couple of links to custom rules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is FxCop? ==&lt;br /&gt;
FxCop is a free code analysis tool developed by Microsoft, use to analyze MSIL (Microsoft Intermediate Language) generated from any managed language (including C# and VB.NET).&lt;br /&gt;
&lt;br /&gt;
FxCop is a standalone .NET 2.0 application, downloadable from the locations referenced below.  A modified version of the FxCop codebase is integrated into Microsoft Visual Studio 2005 and 2008.  While the rulebase for each is mostly the same, there are notable differences between the two (see the Rules comparison spreadsheet [[FxCop#References | below]]), and the compiled format for custom rules is different; thus, one cannot generally develop custom rules that can be used natively in both contexts.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Tool, Documentation and Community ===&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis FxCop v1.35]&lt;br /&gt;
* Download - [http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&amp;amp;displaylang=en FxCop v1.36 (beta)]&lt;br /&gt;
* Download - [http://web.archive.org/web/*/http://www.gotdotnet.com/team/fxcop/FxCopInstall1.32.EXE FxCop v1.32 (''via archive.org'')] - only necessary if you wish to perform analysis of code written in Visual Studio 2003 or earlier.&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=556 Rules comparison spreadsheet] - documenting the rules differences between those shipped with FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Documentation - [http://msdn.microsoft.com/library/bb429476.aspx FxCop] - MSDN documentation for FxCop&lt;br /&gt;
* Forum - [http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=98&amp;amp;SiteID=1 Visual Studio Code Analysis and Code Metrics] - MSDN forum to discuss issues and ideas regarding FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Wikipedia - [http://en.wikipedia.org/wiki/Fxcop FxCop article]&lt;br /&gt;
* Blog - [http://blogs.msdn.com/fxcop/ Microsoft Code Analysis Team blog] - addresses both the standalone FxCop tool as well as the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://davesbox.com/ Dave's Box] - personal blog written by a member of Microsoft's Code Analysis team&lt;br /&gt;
* Article - [http://blogs.microsoft.co.il/blogs/sasha/archive/2007/02/10/Run-FxCop-from-Code.aspx Run FxCop from Code]&lt;br /&gt;
* Article - [http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx Writing Real Unit Tests for your Custom FxCop Rules]&lt;br /&gt;
* Article - [http://www.binarycoder.net/fxcop/ FxCop and Code Analysis: Writing Your Own Custom Rules] - the definitive tutorial by Jason Kresowaty&lt;br /&gt;
&lt;br /&gt;
=== Custom Rules and other third-party Enhancements ===&lt;br /&gt;
* [http://www.codeplex.com/JSLFxCop JSL FxCop (CodePlex)] - open-source utility to help build custom FxCop rules, as well as many custom rules.&lt;br /&gt;
* [http://www.codeplex.com/CSAR Community Static Analysis Rules  (CodePlex)] - &amp;quot;a community-based project for creating a set of static analysis rules to extend those provided by the FxCop team.&amp;quot;&lt;br /&gt;
* [http://sourceforge.net/projects/tngfxcoprules/ TeachNaGeamhradh FxCop Rules (SourceForge)] - &amp;quot;A growing collection of rules and experimentation with FxCop to provide a comprehensive list of rules that are useful against the .Net assemblies.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/LephoneFxCopRules Lephone FxCop Rules (CodePlex)] - a small set of custom rules&lt;br /&gt;
* [http://code.msdn.microsoft.com/InfoXchange CustomFxCop (CodePlex)] - implements &amp;quot;...new rule sets to check variable naming conventions in a project. This will really help projects to automate their code review process.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/findbugs-fxcop/ findbugs-FxCop (Google Code)] - &amp;quot;This project will produce custom rules for FxCop, that will look for coding mistakes similar to those found by FindBugs, such as infinite recursive loops and ignored return values.&amp;quot;&lt;br /&gt;
* [http://web.archive.org/web/20040724165715/http://tatochip.com/archive/2004/07/19/2678.aspx Custom FxCop rule : checking for IDataReader in method parameters (Archive.org)] - a single FxCop rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113313/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=14DEFFCB-9C2B-4C38-BEEC-AB860084E372 Custom FxCop rule: demonstrates extracting literal arguments from method call (Archive.org)] - a single FxCop rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20070826010853/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=B397F7AD-4811-45DE-9A6A-33F818994CB1 Custom FxCop rules: No Numerals in Variable Names, Naming Constants (Archive.org)] - two FxCop rules in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060427042023/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=01D9F014-5F73-4D66-8E74-C658944180DD Custom FxCop 1.32 rule: detects calls to specific API (Archive.org)] - a single FxCop 1.32 rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113430/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=0BE37E51-6A0E-4E8E-A61F-84A388000859 Custom FxCop 1.32 rule: detects calls to specific API (Archive.org)] - a single FxCop 1.32 rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113604/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=BFBB8D82-678A-4E58-A305-5B00FDE900DB Custom FxCop 1.32 rules (Archive.org)] - some FxCop 1.32 rules in source code form&lt;br /&gt;
&lt;br /&gt;
* [http://web.archive.org/web/20060313113604/http://www.gotdotnet.com/Community/UserSamples/Download.aspx?SampleGuid=BFBB8D82-678A-4E58-A305-5B00FDE900DB Custom FxCop rules &amp;quot;My FxCop rules&amp;quot; (Archive.org)] - some FxCop rules [''broken link'']&lt;br /&gt;
* [http://web.archive.org/web/20060313113924/http://www.gotdotnet.com/Community/UserSamples/Download.aspx?SampleGuid=18919BD2-6502-43B3-BF3D-35C5E57DA06D TechEd 2004 presentation &amp;amp; samples by Michael Murray (Archive.org)] - &amp;quot;Code Correctness with FxCop 1.30&amp;quot; [''broken link'']&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/projects/fxdeputy/ FxDeputy (SourceForge)] - &amp;quot;This project is of use to anyone writing rules for the FxCop checker for .NET. This provides a framework that will allow you to tag tests with attributes that will provide you with control of what tests are run against your rules.&amp;quot;&lt;br /&gt;
* [http://weblogs.asp.net/rosherove/archive/2007/02/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule-testing.aspx FxCopUnit (ASP.NET blogs)] - &amp;quot;A framework for integrated FxCop rule testing&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/fxcopdelta FxCop Delta (CodePlex)] - &amp;quot;a custom check-in policy for Visual Studio Team System that runs FxCop rules before performing a check-in.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/FinRadFxCopStats FinRad Statistics Collector for FxCop (CodePlex)] - &amp;quot;...intended to help development teams to track the progress of an FxCop backlog cleanup effort.&amp;quot;&lt;br /&gt;
* [http://web.archive.org/web/20070825153755/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=BCFB8E54-989A-4464-BDB0-3C3B9B3F1346 FxCopReportAll.xsl (Archive.org)] - GotDotNet sample &amp;quot;style sheet for report that shows all Active and Excluded Messages.&amp;quot;&lt;br /&gt;
* ''([http://code.msdn.microsoft.com/CustomRulesinFxcop CustomRules in FxCop] - '''DEAD CodePlex project''')''&lt;br /&gt;
&lt;br /&gt;
=== Similar Tools for .NET code analysis ===&lt;br /&gt;
* [http://code.google.com/p/agentsmithplugin/ Agent Smith Plugin] - &amp;quot;Agent Smith is C# code style validation plugin for ReSharper (Visual Studio plugin).&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/agentjohnsonplugin/ Agent Johnson Plugin] - &amp;quot;Plugin for JetBrains ReSharper&amp;quot;, performing limited code analysis, refactoring and fixups on C# code. &lt;br /&gt;
* [http://code.google.com/p/smokey/ Smokey (Google Code)] - tool similar to FxCop for analysing managed code; has 220 separate rules.&lt;br /&gt;
* [http://research.microsoft.com/phoenix/ Phoenix] - an SDK from MS Research labelled as &amp;quot;...the software optimization and analysis framework that is the  basis for all future Microsoft® compiler technologies. The Phoenix framework is  an extensible system that can be adapted to read and write binaries and  Microsoft Intermediate Language  assemblies and represent the input files in an Intermediate Representation, which can be analyzed and  manipulated by applications by using the Phoenix API.&amp;quot;&lt;br /&gt;
* [http://www.mono-project.com/Gendarme Gendarme] - &amp;quot;Gendarme is a extensible rule-based tool to find problems in .NET applications and libraries. Gendarme inspects programs and libraries that contain code in ECMA CIL format (Mono and .NET) and looks for common problems with the code, problems that compiler do not typically check or have not historically checked.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/md-codeanalysis/ md-codeanalysis] - &amp;quot;MonoDevelop.CodeAnalysis is an addin that integrates both Gendarme and Smokey into MonoDevelop.&amp;quot;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Source_Code_Analysis_Tools&amp;diff=34500</id>
		<title>Source Code Analysis Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Source_Code_Analysis_Tools&amp;diff=34500"/>
				<updated>2008-07-24T01:02:36Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* Open Source or Free Tools Of This Type */ removed reference to PreFix - only available to the MS Windows developer team&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Source Code Analysis tools are designed to analyze source code and/or compiled version of code in order to help find security flaws. Ideally, such tools would automatically find security flaws with a high degree of confidence that what is found is indeed a flaw. However, this is beyond the state of the art for many types of application security flaws. Thus, such tools frequently serve as aids for an analyst to help them zero in on security relevant portions of code so they can find flaws more efficiently, rather than a tool that simply finds flaws automatically.&lt;br /&gt;
&lt;br /&gt;
Some tools are starting to move into the IDE. For the types of problems that can be detected during the software development phase itself, this is a powerful phase within the development lifecycle to employ such tools, as it provides immediate feedback to the developer on issues they might be introducing into the code during code development itself. This immediate feedback is very useful as compared to finding vulnerabilities much later in the development cycle.&lt;br /&gt;
&lt;br /&gt;
==Strengths and Weaknesses==&lt;br /&gt;
&lt;br /&gt;
Strengths:&lt;br /&gt;
* Scales Well (Can be run on lots of software, and can be repeatedly (like in nightly builds))&lt;br /&gt;
* For things that such tools can automatically find with high confidence, such as buffer overflows, SQL Injection Flaws, etc. they are great.&lt;br /&gt;
&lt;br /&gt;
Weaknesses:&lt;br /&gt;
* Many types of security vulnerabilities are very difficult to find automatically, such as authentication problems, access control issues, insecure use of cryptography, etc. The current state of the art only allows such tools to automatically find a relatively small percentage of application security flaws. Tools of this type are getting better, however.&lt;br /&gt;
* High numbers of false positives.&lt;br /&gt;
* Frequently can't find configuration issues, since they are not represented in the code.&lt;br /&gt;
* Difficult to 'prove' that an identified security issue is an actual vulnerability.&lt;br /&gt;
* Many of these tools have difficulty analyzing code that can't be compiled. Analysts frequently can't compile code because they don't have the right libraries, all the compilation instructions, all the code, etc.&lt;br /&gt;
&lt;br /&gt;
==Important Selection Criteria==&lt;br /&gt;
&lt;br /&gt;
* Requirement: Must support your language, but not usually a key factor once it does.&lt;br /&gt;
&lt;br /&gt;
* Types of Vulnerabilities it can detect (Out of the OWASP Top Ten?) (plus more?)&lt;br /&gt;
* Does it require a fully buildable set of source?&lt;br /&gt;
* Can it run against binaries instead of source?&lt;br /&gt;
* Can it be integrated into the developer's IDE?&lt;br /&gt;
&lt;br /&gt;
==OWASP Tools Of This Type==&lt;br /&gt;
&lt;br /&gt;
* [http://www.owasp.org/index.php/Category:OWASP_LAPSE_Project OWASP_LAPSE_Project]&lt;br /&gt;
&lt;br /&gt;
==Open Source or Free Tools Of This Type==&lt;br /&gt;
&lt;br /&gt;
* Microsoft - [[FxCop]]&lt;br /&gt;
* Microsoft - PreFast&lt;br /&gt;
* [http://www.securitycompass.com/swaat.html SWAAT - Simplistic Beta Tool - Languages: Java, JSP, ASP .Net, and PHP] &lt;br /&gt;
* [http://www.securesoftware.com/resources/download_rats.html Secure Software - RATS - Scans C, C++, Perl, PHP and Python source code for security problems like buffer overflows and TOCTOU (Time Of Check, Time Of Use) race conditions]&lt;br /&gt;
&lt;br /&gt;
==Commercial Tools from OWASP Members Of This Type==&lt;br /&gt;
&lt;br /&gt;
These vendors have decided to support OWASP by becoming [[Membership|members]]. OWASP appreciates the support from these organizations, but cannnot endorse any commercial products or services.&lt;br /&gt;
&lt;br /&gt;
* [http://www.armorize.com/corpweb/en/products/codesecure Armorize Technologies - Static Source Code Analysis with CodeSecure™]&lt;br /&gt;
* [http://www.fortifysoftware.com/products/sca.jsp Fortify - Source Code Analysis]&lt;br /&gt;
* [http://www.ouncelabs.com/ Ounce Labs - Ounce]&lt;br /&gt;
&lt;br /&gt;
==Other Well Known Commercial Tools Of This Type==&lt;br /&gt;
&lt;br /&gt;
* [http://www.coverity.com/products/prevent.html Coverity - Prevent]&lt;br /&gt;
* [http://www.klocwork.com/products/klocworkk7.asp KlocWork - K7]&lt;br /&gt;
&lt;br /&gt;
==More Info==&lt;br /&gt;
&lt;br /&gt;
* add comments from: http://lists.owasp.org/pipermail/owasp-dotnet/2006-August/000002.html&lt;br /&gt;
* http://www.owasp.org/index.php/Appendix_A:_Testing_Tools&lt;br /&gt;
* NIST's list of Source Code Security Analysis Tools - http://samate.nist.gov/index.php/Source_Code_Security_Analyzers&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP .NET Project]]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Tools Project]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34381</id>
		<title>FxCop</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34381"/>
				<updated>2008-07-21T08:32:40Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* Custom Rules and other third-party Enhancements */ added links to GotDotNet samples pulled from Archive.org&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is FxCop? ==&lt;br /&gt;
FxCop is a free code analysis tool developed by Microsoft, use to analyze MSIL (Microsoft Intermediate Language) generated from any managed language (including C# and VB.NET).&lt;br /&gt;
&lt;br /&gt;
FxCop is a standalone .NET 2.0 application, downloadable from the locations referenced below.  A modified version of the FxCop codebase is integrated into Microsoft Visual Studio 2005 and 2008.  While the rulebase for each is mostly the same, there are notable differences between the two (see the Rules comparison spreadsheet [[FxCop#References | below]]), and the compiled format for custom rules is different; thus, one cannot generally develop custom rules that can be used natively in both contexts.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Tool, Documentation and Community ===&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis FxCop v1.35]&lt;br /&gt;
* Download - [http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&amp;amp;displaylang=en FxCop v1.36 (beta)]&lt;br /&gt;
* Download - [http://web.archive.org/web/*/http://www.gotdotnet.com/team/fxcop/FxCopInstall1.32.EXE FxCop v1.32 (''via archive.org'')] - only necessary if you wish to perform analysis of code written in Visual Studio 2003 or earlier.&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=556 Rules comparison spreadsheet] - documenting the rules differences between those shipped with FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Documentation - [http://msdn.microsoft.com/library/bb429476.aspx FxCop] - MSDN documentation for FxCop&lt;br /&gt;
* Forum - [http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=98&amp;amp;SiteID=1 Visual Studio Code Analysis and Code Metrics] - MSDN forum to discuss issues and ideas regarding FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Wikipedia - [http://en.wikipedia.org/wiki/Fxcop FxCop article]&lt;br /&gt;
* Blog - [http://blogs.msdn.com/fxcop/ Microsoft Code Analysis Team blog] - addresses both the standalone FxCop tool as well as the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://davesbox.com/ Dave's Box] - personal blog written by a member of Microsoft's Code Analysis team&lt;br /&gt;
* Article - [http://blogs.microsoft.co.il/blogs/sasha/archive/2007/02/10/Run-FxCop-from-Code.aspx Run FxCop from Code]&lt;br /&gt;
* Article - [http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx Writing Real Unit Tests for your Custom FxCop Rules]&lt;br /&gt;
* Article - [http://www.binarycoder.net/fxcop/ FxCop and Code Analysis: Writing Your Own Custom Rules] - the definitive tutorial by Jason Kresowaty&lt;br /&gt;
&lt;br /&gt;
=== Custom Rules and other third-party Enhancements ===&lt;br /&gt;
* [http://www.codeplex.com/JSLFxCop JSL FxCop (CodePlex)] - open-source utility to help build custom FxCop rules, as well as many custom rules.&lt;br /&gt;
* [http://www.codeplex.com/CSAR Community Static Analysis Rules  (CodePlex)] - &amp;quot;a community-based project for creating a set of static analysis rules to extend those provided by the FxCop team.&amp;quot;&lt;br /&gt;
* [http://sourceforge.net/projects/tngfxcoprules/ TeachNaGeamhradh FxCop Rules (SourceForge)] - &amp;quot;A growing collection of rules and experimentation with FxCop to provide a comprehensive list of rules that are useful against the .Net assemblies.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/LephoneFxCopRules Lephone FxCop Rules (CodePlex)] - a small set of custom rules&lt;br /&gt;
* [http://code.msdn.microsoft.com/InfoXchange CustomFxCop (CodePlex)] - implements &amp;quot;...new rule sets to check variable naming conventions in a project. This will really help projects to automate their code review process.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/findbugs-fxcop/ findbugs-FxCop (Google Code)] - &amp;quot;This project will produce custom rules for FxCop, that will look for coding mistakes similar to those found by FindBugs, such as infinite recursive loops and ignored return values.&amp;quot;&lt;br /&gt;
* [http://web.archive.org/web/20040724165715/http://tatochip.com/archive/2004/07/19/2678.aspx Custom FxCop rule : checking for IDataReader in method parameters (Archive.org)] - a single FxCop rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113313/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=14DEFFCB-9C2B-4C38-BEEC-AB860084E372 Custom FxCop rule: demonstrates extracting literal arguments from method call (Archive.org)] - a single FxCop rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20070826010853/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=B397F7AD-4811-45DE-9A6A-33F818994CB1 Custom FxCop rules: No Numerals in Variable Names, Naming Constants (Archive.org)] - two FxCop rules in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060427042023/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=01D9F014-5F73-4D66-8E74-C658944180DD Custom FxCop 1.32 rule: detects calls to specific API] - a single FxCop 1.32 rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113430/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=0BE37E51-6A0E-4E8E-A61F-84A388000859 Custom FxCop 1.32 rule: detects calls to specific API] - a single FxCop 1.32 rule in source code form&lt;br /&gt;
* [http://web.archive.org/web/20060313113604/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=BFBB8D82-678A-4E58-A305-5B00FDE900DB Custom FxCop 1.32 rules] - some FxCop 1.32 rules in source code form&lt;br /&gt;
* [http://sourceforge.net/projects/fxdeputy/ FxDeputy (SourceForge)] - &amp;quot;This project is of use to anyone writing rules for the FxCop checker for .NET. This provides a framework that will allow you to tag tests with attributes that will provide you with control of what tests are run against your rules.&amp;quot;&lt;br /&gt;
* [http://weblogs.asp.net/rosherove/archive/2007/02/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule-testing.aspx FxCopUnit (ASP.NET blogs)] - &amp;quot;A framework for integrated FxCop rule testing&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/fxcopdelta FxCop Delta (CodePlex)] - &amp;quot;a custom check-in policy for Visual Studio Team System that runs FxCop rules before performing a check-in.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/FinRadFxCopStats FinRad Statistics Collector for FxCop (CodePlex)] - &amp;quot;...intended to help development teams to track the progress of an FxCop backlog cleanup effort.&amp;quot;&lt;br /&gt;
* [http://web.archive.org/web/20070825153755/www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=BCFB8E54-989A-4464-BDB0-3C3B9B3F1346 FxCopReportAll.xsl (Archive.org)] - GotDotNet sample &amp;quot;style sheet for report that shows all Active and Excluded Messages.&amp;quot;&lt;br /&gt;
* ''([http://code.msdn.microsoft.com/CustomRulesinFxcop CustomRules in FxCop] - '''DEAD CodePlex project''')''&lt;br /&gt;
&lt;br /&gt;
=== Similar Tools for .NET code analysis ===&lt;br /&gt;
* [http://code.google.com/p/agentsmithplugin/ Agent Smith Plugin] - &amp;quot;Agent Smith is C# code style validation plugin for ReSharper (Visual Studio plugin).&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/agentjohnsonplugin/ Agent Johnson Plugin] - &amp;quot;Plugin for JetBrains ReSharper&amp;quot;, performing limited code analysis, refactoring and fixups on C# code. &lt;br /&gt;
* [http://code.google.com/p/smokey/ Smokey (Google Code)] - tool similar to FxCop for analysing managed code; has 220 separate rules.&lt;br /&gt;
* [http://research.microsoft.com/phoenix/ Phoenix] - an SDK from MS Research labelled as &amp;quot;...the software optimization and analysis framework that is the  basis for all future Microsoft® compiler technologies. The Phoenix framework is  an extensible system that can be adapted to read and write binaries and  Microsoft Intermediate Language  assemblies and represent the input files in an Intermediate Representation, which can be analyzed and  manipulated by applications by using the Phoenix API.&amp;quot;&lt;br /&gt;
* [http://www.mono-project.com/Gendarme Gendarme] - &amp;quot;Gendarme is a extensible rule-based tool to find problems in .NET applications and libraries. Gendarme inspects programs and libraries that contain code in ECMA CIL format (Mono and .NET) and looks for common problems with the code, problems that compiler do not typically check or have not historically checked.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/md-codeanalysis/ md-codeanalysis] - &amp;quot;MonoDevelop.CodeAnalysis is an addin that integrates both Gendarme and Smokey into MonoDevelop.&amp;quot;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34375</id>
		<title>FxCop</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34375"/>
				<updated>2008-07-20T23:27:58Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* Similar Tools for .NET code analysis */ added link to Phoenix, Gendarme, MD-codeanalysis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is FxCop? ==&lt;br /&gt;
FxCop is a free code analysis tool developed by Microsoft, use to analyze MSIL (Microsoft Intermediate Language) generated from any managed language (including C# and VB.NET).&lt;br /&gt;
&lt;br /&gt;
FxCop is a standalone .NET 2.0 application, downloadable from the locations referenced below.  A modified version of the FxCop codebase is integrated into Microsoft Visual Studio 2005 and 2008.  While the rulebase for each is mostly the same, there are notable differences between the two (see the Rules comparison spreadsheet [[FxCop#References | below]]), and the compiled format for custom rules is different; thus, one cannot generally develop custom rules that can be used natively in both contexts.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Tool, Documentation and Community ===&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis FxCop v1.35]&lt;br /&gt;
* Download - [http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&amp;amp;displaylang=en FxCop v1.36 (beta)]&lt;br /&gt;
* Download - [http://web.archive.org/web/*/http://www.gotdotnet.com/team/fxcop/FxCopInstall1.32.EXE FxCop v1.32 (''via archive.org'')] - only necessary if you wish to perform analysis of code written in Visual Studio 2003 or earlier.&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=556 Rules comparison spreadsheet] - documenting the rules differences between those shipped with FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Documentation - [http://msdn.microsoft.com/library/bb429476.aspx FxCop] - MSDN documentation for FxCop&lt;br /&gt;
* Forum - [http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=98&amp;amp;SiteID=1 Visual Studio Code Analysis and Code Metrics] - MSDN forum to discuss issues and ideas regarding FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Wikipedia - [http://en.wikipedia.org/wiki/Fxcop FxCop article]&lt;br /&gt;
* Blog - [http://blogs.msdn.com/fxcop/ Microsoft Code Analysis Team blog] - addresses both the standalone FxCop tool as well as the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://davesbox.com/ Dave's Box] - personal blog written by a member of Microsoft's Code Analysis team&lt;br /&gt;
* Article - [http://blogs.microsoft.co.il/blogs/sasha/archive/2007/02/10/Run-FxCop-from-Code.aspx Run FxCop from Code]&lt;br /&gt;
* Article - [http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx Writing Real Unit Tests for your Custom FxCop Rules]&lt;br /&gt;
* Article - [http://www.binarycoder.net/fxcop/ FxCop and Code Analysis: Writing Your Own Custom Rules] - the definitive tutorial by Jason Kresowaty&lt;br /&gt;
&lt;br /&gt;
=== Custom Rules and other third-party Enhancements ===&lt;br /&gt;
* [http://www.codeplex.com/JSLFxCop JSL FxCop (CodePlex)] - open-source utility to help build custom FxCop rules, as well as many custom rules.&lt;br /&gt;
* [http://www.codeplex.com/CSAR Community Static Analysis Rules  (CodePlex)] - &amp;quot;a community-based project for creating a set of static analysis rules to extend those provided by the FxCop team.&amp;quot;&lt;br /&gt;
* [http://sourceforge.net/projects/tngfxcoprules/ TeachNaGeamhradh FxCop Rules (SourceForge)] - &amp;quot;A growing collection of rules and experimentation with FxCop to provide a comprehensive list of rules that are useful against the .Net assemblies.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/LephoneFxCopRules Lephone FxCop Rules (CodePlex)] - a small set of custom rules&lt;br /&gt;
* [http://code.msdn.microsoft.com/InfoXchange CustomFxCop (CodePlex)] - implements &amp;quot;...new rule sets to check variable naming conventions in a project. This will really help projects to automate their code review process.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/findbugs-fxcop/ findbugs-FxCop] - &amp;quot;This project will produce custom rules for FxCop, that will look for coding mistakes similar to those found by FindBugs, such as infinite recursive loops and ignored return values.&amp;quot;&lt;br /&gt;
* [http://web.archive.org/web/20040724165715/http://tatochip.com/archive/2004/07/19/2678.aspx fxcop rule : checking for IDataReader in method parameters] - a single FxCop rule in source code form&lt;br /&gt;
* [http://sourceforge.net/projects/fxdeputy/ FxDeputy] - &amp;quot;This project is of use to anyone writing rules for the FxCop checker for .NET. This provides a framework that will allow you to tag tests with attributes that will provide you with control of what tests are run against your rules.&amp;quot;&lt;br /&gt;
* [http://weblogs.asp.net/rosherove/archive/2007/02/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule-testing.aspx FxCopUnit] - &amp;quot;A framework for integrated FxCop rule testing&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/fxcopdelta FxCop Delta (CodePlex)] - &amp;quot;a custom check-in policy for Visual Studio Team System that runs FxCop rules before performing a check-in.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/FinRadFxCopStats FinRad Statistics Collector for FxCop (CodePlex)] - &amp;quot;...intended to help development teams to track the progress of an FxCop backlog cleanup effort.&amp;quot;&lt;br /&gt;
* ''([http://code.msdn.microsoft.com/CustomRulesinFxcop CustomRules in FxCop] - '''DEAD CodePlex project''')''&lt;br /&gt;
&lt;br /&gt;
=== Similar Tools for .NET code analysis ===&lt;br /&gt;
* [http://code.google.com/p/agentsmithplugin/ Agent Smith Plugin] - &amp;quot;Agent Smith is C# code style validation plugin for ReSharper (Visual Studio plugin).&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/agentjohnsonplugin/ Agent Johnson Plugin] - &amp;quot;Plugin for JetBrains ReSharper&amp;quot;, performing limited code analysis, refactoring and fixups on C# code. &lt;br /&gt;
* [http://code.google.com/p/smokey/ Smokey (Google Code)] - tool similar to FxCop for analysing managed code; has 220 separate rules.&lt;br /&gt;
* [http://research.microsoft.com/phoenix/ Phoenix] - an SDK from MS Research labelled as &amp;quot;...the software optimization and analysis framework that is the  basis for all future Microsoft® compiler technologies. The Phoenix framework is  an extensible system that can be adapted to read and write binaries and  Microsoft Intermediate Language  assemblies and represent the input files in an Intermediate Representation, which can be analyzed and  manipulated by applications by using the Phoenix API.&amp;quot;&lt;br /&gt;
* [http://www.mono-project.com/Gendarme Gendarme] - &amp;quot;Gendarme is a extensible rule-based tool to find problems in .NET applications and libraries. Gendarme inspects programs and libraries that contain code in ECMA CIL format (Mono and .NET) and looks for common problems with the code, problems that compiler do not typically check or have not historically checked.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/md-codeanalysis/ md-codeanalysis] - &amp;quot;MonoDevelop.CodeAnalysis is an addin that integrates both Gendarme and Smokey into MonoDevelop.&amp;quot;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34374</id>
		<title>FxCop</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34374"/>
				<updated>2008-07-20T22:56:07Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* Tool, Documentation and Community */ links to FxCop v1.32 via Archive.org&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is FxCop? ==&lt;br /&gt;
FxCop is a free code analysis tool developed by Microsoft, use to analyze MSIL (Microsoft Intermediate Language) generated from any managed language (including C# and VB.NET).&lt;br /&gt;
&lt;br /&gt;
FxCop is a standalone .NET 2.0 application, downloadable from the locations referenced below.  A modified version of the FxCop codebase is integrated into Microsoft Visual Studio 2005 and 2008.  While the rulebase for each is mostly the same, there are notable differences between the two (see the Rules comparison spreadsheet [[FxCop#References | below]]), and the compiled format for custom rules is different; thus, one cannot generally develop custom rules that can be used natively in both contexts.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Tool, Documentation and Community ===&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis FxCop v1.35]&lt;br /&gt;
* Download - [http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&amp;amp;displaylang=en FxCop v1.36 (beta)]&lt;br /&gt;
* Download - [http://web.archive.org/web/*/http://www.gotdotnet.com/team/fxcop/FxCopInstall1.32.EXE FxCop v1.32 (''via archive.org'')] - only necessary if you wish to perform analysis of code written in Visual Studio 2003 or earlier.&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=556 Rules comparison spreadsheet] - documenting the rules differences between those shipped with FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Documentation - [http://msdn.microsoft.com/library/bb429476.aspx FxCop] - MSDN documentation for FxCop&lt;br /&gt;
* Forum - [http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=98&amp;amp;SiteID=1 Visual Studio Code Analysis and Code Metrics] - MSDN forum to discuss issues and ideas regarding FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Wikipedia - [http://en.wikipedia.org/wiki/Fxcop FxCop article]&lt;br /&gt;
* Blog - [http://blogs.msdn.com/fxcop/ Microsoft Code Analysis Team blog] - addresses both the standalone FxCop tool as well as the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://davesbox.com/ Dave's Box] - personal blog written by a member of Microsoft's Code Analysis team&lt;br /&gt;
* Article - [http://blogs.microsoft.co.il/blogs/sasha/archive/2007/02/10/Run-FxCop-from-Code.aspx Run FxCop from Code]&lt;br /&gt;
* Article - [http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx Writing Real Unit Tests for your Custom FxCop Rules]&lt;br /&gt;
* Article - [http://www.binarycoder.net/fxcop/ FxCop and Code Analysis: Writing Your Own Custom Rules] - the definitive tutorial by Jason Kresowaty&lt;br /&gt;
&lt;br /&gt;
=== Custom Rules and other third-party Enhancements ===&lt;br /&gt;
* [http://www.codeplex.com/JSLFxCop JSL FxCop (CodePlex)] - open-source utility to help build custom FxCop rules, as well as many custom rules.&lt;br /&gt;
* [http://www.codeplex.com/CSAR Community Static Analysis Rules  (CodePlex)] - &amp;quot;a community-based project for creating a set of static analysis rules to extend those provided by the FxCop team.&amp;quot;&lt;br /&gt;
* [http://sourceforge.net/projects/tngfxcoprules/ TeachNaGeamhradh FxCop Rules (SourceForge)] - &amp;quot;A growing collection of rules and experimentation with FxCop to provide a comprehensive list of rules that are useful against the .Net assemblies.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/LephoneFxCopRules Lephone FxCop Rules (CodePlex)] - a small set of custom rules&lt;br /&gt;
* [http://code.msdn.microsoft.com/InfoXchange CustomFxCop (CodePlex)] - implements &amp;quot;...new rule sets to check variable naming conventions in a project. This will really help projects to automate their code review process.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/findbugs-fxcop/ findbugs-FxCop] - &amp;quot;This project will produce custom rules for FxCop, that will look for coding mistakes similar to those found by FindBugs, such as infinite recursive loops and ignored return values.&amp;quot;&lt;br /&gt;
* [http://web.archive.org/web/20040724165715/http://tatochip.com/archive/2004/07/19/2678.aspx fxcop rule : checking for IDataReader in method parameters] - a single FxCop rule in source code form&lt;br /&gt;
* [http://sourceforge.net/projects/fxdeputy/ FxDeputy] - &amp;quot;This project is of use to anyone writing rules for the FxCop checker for .NET. This provides a framework that will allow you to tag tests with attributes that will provide you with control of what tests are run against your rules.&amp;quot;&lt;br /&gt;
* [http://weblogs.asp.net/rosherove/archive/2007/02/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule-testing.aspx FxCopUnit] - &amp;quot;A framework for integrated FxCop rule testing&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/fxcopdelta FxCop Delta (CodePlex)] - &amp;quot;a custom check-in policy for Visual Studio Team System that runs FxCop rules before performing a check-in.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/FinRadFxCopStats FinRad Statistics Collector for FxCop (CodePlex)] - &amp;quot;...intended to help development teams to track the progress of an FxCop backlog cleanup effort.&amp;quot;&lt;br /&gt;
* ''([http://code.msdn.microsoft.com/CustomRulesinFxcop CustomRules in FxCop] - '''DEAD CodePlex project''')''&lt;br /&gt;
&lt;br /&gt;
=== Similar Tools for .NET code analysis ===&lt;br /&gt;
* [http://code.google.com/p/agentsmithplugin/ Agent Smith Plugin] - &amp;quot;Agent Smith is C# code style validation plugin for ReSharper (Visual Studio plugin).&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/agentjohnsonplugin/ Agent Johnson Plugin] - &amp;quot;Plugin for JetBrains ReSharper&amp;quot;, performing limited code analysis, refactoring and fixups on C# code. &lt;br /&gt;
* [http://code.google.com/p/smokey/ Smokey (Google Code)] - tool similar to FxCop for analysing managed code; has 220 separate rules.&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34373</id>
		<title>FxCop</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34373"/>
				<updated>2008-07-20T22:48:46Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* Tool, Documentation and Community */ added link to Custom Rules tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is FxCop? ==&lt;br /&gt;
FxCop is a free code analysis tool developed by Microsoft, use to analyze MSIL (Microsoft Intermediate Language) generated from any managed language (including C# and VB.NET).&lt;br /&gt;
&lt;br /&gt;
FxCop is a standalone .NET 2.0 application, downloadable from the locations referenced below.  A modified version of the FxCop codebase is integrated into Microsoft Visual Studio 2005 and 2008.  While the rulebase for each is mostly the same, there are notable differences between the two (see the Rules comparison spreadsheet [[FxCop#References | below]]), and the compiled format for custom rules is different; thus, one cannot generally develop custom rules that can be used natively in both contexts.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Tool, Documentation and Community ===&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis FxCop v1.35]&lt;br /&gt;
* Download - [http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&amp;amp;displaylang=en FxCop v1.36 (beta)]&lt;br /&gt;
* Download - [ FxCop v1.32] - necessary if you wish to perform analysis of code written in Visual Studio 2003 or earlier&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=556 Rules comparison spreadsheet] - documenting the rules differences between those shipped with FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Documentation - [http://msdn.microsoft.com/library/bb429476.aspx FxCop] - MSDN documentation for FxCop&lt;br /&gt;
* Forum - [http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=98&amp;amp;SiteID=1 Visual Studio Code Analysis and Code Metrics] - MSDN forum to discuss issues and ideas regarding FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Wikipedia - [http://en.wikipedia.org/wiki/Fxcop FxCop article]&lt;br /&gt;
* Blog - [http://blogs.msdn.com/fxcop/ Microsoft Code Analysis Team blog] - addresses both the standalone FxCop tool as well as the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://davesbox.com/ Dave's Box] - personal blog written by a member of Microsoft's Code Analysis team&lt;br /&gt;
* Article - [http://blogs.microsoft.co.il/blogs/sasha/archive/2007/02/10/Run-FxCop-from-Code.aspx Run FxCop from Code]&lt;br /&gt;
* Article - [http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx Writing Real Unit Tests for your Custom FxCop Rules]&lt;br /&gt;
* Article - [http://www.binarycoder.net/fxcop/ FxCop and Code Analysis: Writing Your Own Custom Rules] - the definitive tutorial by Jason Kresowaty&lt;br /&gt;
&lt;br /&gt;
=== Custom Rules and other third-party Enhancements ===&lt;br /&gt;
* [http://www.codeplex.com/JSLFxCop JSL FxCop (CodePlex)] - open-source utility to help build custom FxCop rules, as well as many custom rules.&lt;br /&gt;
* [http://www.codeplex.com/CSAR Community Static Analysis Rules  (CodePlex)] - &amp;quot;a community-based project for creating a set of static analysis rules to extend those provided by the FxCop team.&amp;quot;&lt;br /&gt;
* [http://sourceforge.net/projects/tngfxcoprules/ TeachNaGeamhradh FxCop Rules (SourceForge)] - &amp;quot;A growing collection of rules and experimentation with FxCop to provide a comprehensive list of rules that are useful against the .Net assemblies.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/LephoneFxCopRules Lephone FxCop Rules (CodePlex)] - a small set of custom rules&lt;br /&gt;
* [http://code.msdn.microsoft.com/InfoXchange CustomFxCop (CodePlex)] - implements &amp;quot;...new rule sets to check variable naming conventions in a project. This will really help projects to automate their code review process.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/findbugs-fxcop/ findbugs-FxCop] - &amp;quot;This project will produce custom rules for FxCop, that will look for coding mistakes similar to those found by FindBugs, such as infinite recursive loops and ignored return values.&amp;quot;&lt;br /&gt;
* [http://web.archive.org/web/20040724165715/http://tatochip.com/archive/2004/07/19/2678.aspx fxcop rule : checking for IDataReader in method parameters] - a single FxCop rule in source code form&lt;br /&gt;
* [http://sourceforge.net/projects/fxdeputy/ FxDeputy] - &amp;quot;This project is of use to anyone writing rules for the FxCop checker for .NET. This provides a framework that will allow you to tag tests with attributes that will provide you with control of what tests are run against your rules.&amp;quot;&lt;br /&gt;
* [http://weblogs.asp.net/rosherove/archive/2007/02/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule-testing.aspx FxCopUnit] - &amp;quot;A framework for integrated FxCop rule testing&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/fxcopdelta FxCop Delta (CodePlex)] - &amp;quot;a custom check-in policy for Visual Studio Team System that runs FxCop rules before performing a check-in.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/FinRadFxCopStats FinRad Statistics Collector for FxCop (CodePlex)] - &amp;quot;...intended to help development teams to track the progress of an FxCop backlog cleanup effort.&amp;quot;&lt;br /&gt;
* ''([http://code.msdn.microsoft.com/CustomRulesinFxcop CustomRules in FxCop] - '''DEAD CodePlex project''')''&lt;br /&gt;
&lt;br /&gt;
=== Similar Tools for .NET code analysis ===&lt;br /&gt;
* [http://code.google.com/p/agentsmithplugin/ Agent Smith Plugin] - &amp;quot;Agent Smith is C# code style validation plugin for ReSharper (Visual Studio plugin).&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/agentjohnsonplugin/ Agent Johnson Plugin] - &amp;quot;Plugin for JetBrains ReSharper&amp;quot;, performing limited code analysis, refactoring and fixups on C# code. &lt;br /&gt;
* [http://code.google.com/p/smokey/ Smokey (Google Code)] - tool similar to FxCop for analysing managed code; has 220 separate rules.&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34372</id>
		<title>FxCop</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34372"/>
				<updated>2008-07-20T22:34:55Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* Custom Rules and other third-party Enhancements */ yet more links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is FxCop? ==&lt;br /&gt;
FxCop is a free code analysis tool developed by Microsoft, use to analyze MSIL (Microsoft Intermediate Language) generated from any managed language (including C# and VB.NET).&lt;br /&gt;
&lt;br /&gt;
FxCop is a standalone .NET 2.0 application, downloadable from the locations referenced below.  A modified version of the FxCop codebase is integrated into Microsoft Visual Studio 2005 and 2008.  While the rulebase for each is mostly the same, there are notable differences between the two (see the Rules comparison spreadsheet [[FxCop#References | below]]), and the compiled format for custom rules is different; thus, one cannot generally develop custom rules that can be used natively in both contexts.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Tool, Documentation and Community ===&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis FxCop v1.35]&lt;br /&gt;
* Download - [http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&amp;amp;displaylang=en FxCop v1.36 (beta)]&lt;br /&gt;
* Download - [ FxCop v1.32] - necessary if you wish to perform analysis of code written in Visual Studio 2003 or earlier&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=556 Rules comparison spreadsheet] - documenting the rules differences between those shipped with FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Documentation - [http://msdn.microsoft.com/library/bb429476.aspx FxCop] - MSDN documentation for FxCop&lt;br /&gt;
* Forum - [http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=98&amp;amp;SiteID=1 Visual Studio Code Analysis and Code Metrics] - MSDN forum to discuss issues and ideas regarding FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Wikipedia - [http://en.wikipedia.org/wiki/Fxcop FxCop article]&lt;br /&gt;
* Blog - [http://blogs.msdn.com/fxcop/ Microsoft Code Analysis Team blog] - addresses both the standalone FxCop tool as well as the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://davesbox.com/ Dave's Box] - personal blog written by a member of Microsoft's Code Analysis team&lt;br /&gt;
* Article - [http://blogs.microsoft.co.il/blogs/sasha/archive/2007/02/10/Run-FxCop-from-Code.aspx Run FxCop from Code]&lt;br /&gt;
* Article - [http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx Writing Real Unit Tests for your Custom FxCop Rules]&lt;br /&gt;
&lt;br /&gt;
=== Custom Rules and other third-party Enhancements ===&lt;br /&gt;
* [http://www.codeplex.com/JSLFxCop JSL FxCop (CodePlex)] - open-source utility to help build custom FxCop rules, as well as many custom rules.&lt;br /&gt;
* [http://www.codeplex.com/CSAR Community Static Analysis Rules  (CodePlex)] - &amp;quot;a community-based project for creating a set of static analysis rules to extend those provided by the FxCop team.&amp;quot;&lt;br /&gt;
* [http://sourceforge.net/projects/tngfxcoprules/ TeachNaGeamhradh FxCop Rules (SourceForge)] - &amp;quot;A growing collection of rules and experimentation with FxCop to provide a comprehensive list of rules that are useful against the .Net assemblies.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/LephoneFxCopRules Lephone FxCop Rules (CodePlex)] - a small set of custom rules&lt;br /&gt;
* [http://code.msdn.microsoft.com/InfoXchange CustomFxCop (CodePlex)] - implements &amp;quot;...new rule sets to check variable naming conventions in a project. This will really help projects to automate their code review process.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/findbugs-fxcop/ findbugs-FxCop] - &amp;quot;This project will produce custom rules for FxCop, that will look for coding mistakes similar to those found by FindBugs, such as infinite recursive loops and ignored return values.&amp;quot;&lt;br /&gt;
* [http://web.archive.org/web/20040724165715/http://tatochip.com/archive/2004/07/19/2678.aspx fxcop rule : checking for IDataReader in method parameters] - a single FxCop rule in source code form&lt;br /&gt;
* [http://sourceforge.net/projects/fxdeputy/ FxDeputy] - &amp;quot;This project is of use to anyone writing rules for the FxCop checker for .NET. This provides a framework that will allow you to tag tests with attributes that will provide you with control of what tests are run against your rules.&amp;quot;&lt;br /&gt;
* [http://weblogs.asp.net/rosherove/archive/2007/02/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule-testing.aspx FxCopUnit] - &amp;quot;A framework for integrated FxCop rule testing&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/fxcopdelta FxCop Delta (CodePlex)] - &amp;quot;a custom check-in policy for Visual Studio Team System that runs FxCop rules before performing a check-in.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/FinRadFxCopStats FinRad Statistics Collector for FxCop (CodePlex)] - &amp;quot;...intended to help development teams to track the progress of an FxCop backlog cleanup effort.&amp;quot;&lt;br /&gt;
* ''([http://code.msdn.microsoft.com/CustomRulesinFxcop CustomRules in FxCop] - '''DEAD CodePlex project''')''&lt;br /&gt;
&lt;br /&gt;
=== Similar Tools for .NET code analysis ===&lt;br /&gt;
* [http://code.google.com/p/agentsmithplugin/ Agent Smith Plugin] - &amp;quot;Agent Smith is C# code style validation plugin for ReSharper (Visual Studio plugin).&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/agentjohnsonplugin/ Agent Johnson Plugin] - &amp;quot;Plugin for JetBrains ReSharper&amp;quot;, performing limited code analysis, refactoring and fixups on C# code. &lt;br /&gt;
* [http://code.google.com/p/smokey/ Smokey (Google Code)] - tool similar to FxCop for analysing managed code; has 220 separate rules.&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34371</id>
		<title>FxCop</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34371"/>
				<updated>2008-07-20T21:55:44Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* References */ re-organized references, added additional links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is FxCop? ==&lt;br /&gt;
FxCop is a free code analysis tool developed by Microsoft, use to analyze MSIL (Microsoft Intermediate Language) generated from any managed language (including C# and VB.NET).&lt;br /&gt;
&lt;br /&gt;
FxCop is a standalone .NET 2.0 application, downloadable from the locations referenced below.  A modified version of the FxCop codebase is integrated into Microsoft Visual Studio 2005 and 2008.  While the rulebase for each is mostly the same, there are notable differences between the two (see the Rules comparison spreadsheet [[FxCop#References | below]]), and the compiled format for custom rules is different; thus, one cannot generally develop custom rules that can be used natively in both contexts.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Tool, Documentation and Community ===&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis FxCop v1.35]&lt;br /&gt;
* Download - [http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&amp;amp;displaylang=en FxCop v1.36 (beta)]&lt;br /&gt;
* Download - [ FxCop v1.32] - necessary if you wish to perform analysis of code written in Visual Studio 2003 or earlier&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=556 Rules comparison spreadsheet] - documenting the rules differences between those shipped with FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Documentation - [http://msdn.microsoft.com/library/bb429476.aspx FxCop] - MSDN documentation for FxCop&lt;br /&gt;
* Forum - [http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=98&amp;amp;SiteID=1 Visual Studio Code Analysis and Code Metrics] - MSDN forum to discuss issues and ideas regarding FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Wikipedia - [http://en.wikipedia.org/wiki/Fxcop FxCop article]&lt;br /&gt;
* Blog - [http://blogs.msdn.com/fxcop/ Microsoft Code Analysis Team blog] - addresses both the standalone FxCop tool as well as the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://davesbox.com/ Dave's Box] - personal blog written by a member of Microsoft's Code Analysis team&lt;br /&gt;
* Article - [http://blogs.microsoft.co.il/blogs/sasha/archive/2007/02/10/Run-FxCop-from-Code.aspx Run FxCop from Code]&lt;br /&gt;
* Article - [http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx Writing Real Unit Tests for your Custom FxCop Rules]&lt;br /&gt;
&lt;br /&gt;
=== Custom Rules and other third-party Enhancements ===&lt;br /&gt;
* [http://www.codeplex.com/JSLFxCop JSL FxCop (CodePlex)] - open-source utility to help build custom FxCop rules, as well as many custom rules.&lt;br /&gt;
* [http://www.codeplex.com/CSAR Community Static Analysis Rules  (CodePlex)] - &amp;quot;a community-based project for creating a set of static analysis rules to extend those provided by the FxCop team.&amp;quot;&lt;br /&gt;
* [http://sourceforge.net/projects/tngfxcoprules/ TeachNaGeamhradh FxCop Rules (SourceForge)] - &amp;quot;A growing collection of rules and experimentation with FxCop to provide a comprehensive list of rules that are useful against the .Net assemblies.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/LephoneFxCopRules Lephone FxCop Rules (CodePlex)] - a small set of custom rules&lt;br /&gt;
* [http://code.msdn.microsoft.com/InfoXchange CustomFxCop (CodePlex)] - implements &amp;quot;...new rule sets to check variable naming conventions in a project. This will really help projects to automate their code review process.&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/findbugs-fxcop/ findbugs-FxCop] - &amp;quot;This project will produce custom rules for FxCop, that will look for coding mistakes similar to those found by FindBugs, such as infinite recursive loops and ignored return values.&amp;quot;&lt;br /&gt;
* [http://sourceforge.net/projects/fxdeputy/ FxDeputy] - &amp;quot;This project is of use to anyone writing rules for the FxCop checker for .NET. This provides a framework that will allow you to tag tests with attributes that will provide you with control of what tests are run against your rules.&amp;quot;&lt;br /&gt;
* [http://weblogs.asp.net/rosherove/archive/2007/02/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule-testing.aspx FxCopUnit] - &amp;quot;A framework for integrated FxCop rule testing&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/fxcopdelta FxCop Delta (CodePlex)] - &amp;quot;a custom check-in policy for Visual Studio Team System that runs FxCop rules before performing a check-in.&amp;quot;&lt;br /&gt;
* [http://www.codeplex.com/FinRadFxCopStats FinRad Statistics Collector for FxCop (CodePlex)] - &amp;quot;...intended to help development teams to track the progress of an FxCop backlog cleanup effort.&amp;quot;&lt;br /&gt;
* ''([http://code.msdn.microsoft.com/CustomRulesinFxcop CustomRules in FxCop] - '''DEAD CodePlex project''')''&lt;br /&gt;
&lt;br /&gt;
=== Similar Tools for .NET code analysis ===&lt;br /&gt;
* [http://code.google.com/p/agentsmithplugin/ Agent Smith Plugin] - &amp;quot;Agent Smith is C# code style validation plugin for ReSharper (Visual Studio plugin).&amp;quot;&lt;br /&gt;
* [http://code.google.com/p/agentjohnsonplugin/ Agent Johnson Plugin] - &amp;quot;Plugin for JetBrains ReSharper&amp;quot;, performing limited code analysis, refactoring and fixups on C# code. &lt;br /&gt;
* [http://code.google.com/p/smokey/ Smokey (Google Code)] - tool similar to FxCop for analysing managed code; has 220 separate rules.&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34360</id>
		<title>FxCop</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34360"/>
				<updated>2008-07-20T18:39:33Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* References */ added link to more CodePlex custom rules projects, and to Wikipedia article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is FxCop? ==&lt;br /&gt;
FxCop is a free code analysis tool developed by Microsoft, use to analyze MSIL (Microsoft Intermediate Language) generated from any managed language (including C# and VB.NET).&lt;br /&gt;
&lt;br /&gt;
FxCop is a standalone .NET 2.0 application, downloadable from the locations referenced below.  A modified version of the FxCop codebase is integrated into Microsoft Visual Studio 2005 and 2008.  While the rulebase for each is mostly the same, there are notable differences between the two (see the Rules comparison spreadsheet [[FxCop#References | below]]), and the compiled format for custom rules is different; thus, one cannot generally develop custom rules that can be used natively in both contexts.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis FxCop v1.35]&lt;br /&gt;
* Download - [http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&amp;amp;displaylang=en FxCop v1.36 (beta)]&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=556 Rules comparison spreadsheet] - documenting the rules differences between those shipped with FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Documentation - [http://msdn.microsoft.com/library/bb429476.aspx FxCop] - MSDN documentation for FxCop&lt;br /&gt;
* Forum - [http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=98&amp;amp;SiteID=1 Visual Studio Code Analysis and Code Metrics] - MSDN forum to discuss issues and ideas regarding FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Wikipedia - [http://en.wikipedia.org/wiki/Fxcop FxCop article]&lt;br /&gt;
* Blog - [http://blogs.msdn.com/fxcop/ Microsoft Code Analysis Team blog] - addresses both the standalone FxCop tool as well as the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://davesbox.com/ Dave's Box] - personal blog written by a member of Microsoft's Code Analysis team&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/JSLFxCop JSL FxCop] - open-source utility to help build custom FxCop rules&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/CSAR Community Static Analysis Rules] - &amp;quot;a community-based project for creating a set of static analysis rules to extend those provided by the FxCop team.&amp;quot;&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/LephoneFxCopRules Lephone FxCop Rules] - simple set of custom rules and the source code to create them&lt;br /&gt;
* CodePlex project - [http://code.msdn.microsoft.com/InfoXchange CustomFxCop] - implements &amp;quot;...new rule sets to check variable naming conventions in a project. This will really help projects to automate their code review process.&amp;quot;&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/fxcopdelta FxCop Delta] - &amp;quot;a custom check-in policy for Visual Studio Team System that runs FxCop rules before performing a check-in.&amp;quot;&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/FinRadFxCopStats FinRad Statistics Collector for FxCop] - &amp;quot;...intended to help development teams to track the progress of an FxCop backlog cleanup effort.&amp;quot;&lt;br /&gt;
* Google project - [http://code.google.com/p/smokey/ Smokey] - tool similar to FxCop for analysing managed code; has 220 separate rules.&lt;br /&gt;
* ''(CodePlex project - [http://code.msdn.microsoft.com/CustomRulesinFxcop CustomRules in FxCop] - '''DEAD project''')''&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Phoenix/Tools&amp;diff=34353</id>
		<title>Phoenix/Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Phoenix/Tools&amp;diff=34353"/>
				<updated>2008-07-20T08:32:37Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* Microsoft .NET static analysis and security framework tools, mostly for ASP.NET and ASP.NET AJAX, but also C# and VB.NET */  updated obsolete links, formatted for readability&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p&amp;gt;Please send comments or questions to the [https://lists.owasp.org/mailman/listinfo/owasp-phoenix Phoenix-OWASP mailing-list].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LiveCDs==&lt;br /&gt;
Monday, January 29, 2007  4:02 PM    828569600 AOC_Labrat-ALPHA-0010.iso - http://www.packetfocus.com/hackos/&amp;lt;br /&amp;gt;&lt;br /&gt;
DVL (Damn Vulnerable Linux) - http://www.damnvulnerablelinux.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Test sites / testing grounds==&lt;br /&gt;
SPI Dynamics (live) - http://zero.webappsecurity.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Cenzic (live) - http://crackme.cenzic.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Watchfire (live) - http://demo.testfire.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Acunetix (live) - http://testphp.acunetix.com/ http://testasp.acunetix.com http://testaspnet.acunetix.com&amp;lt;br /&amp;gt;&lt;br /&gt;
WebMaven / Buggy Bank (includes live testsite) - http://www.mavensecurity.com/webmaven&amp;lt;br /&amp;gt;&lt;br /&gt;
Foundstone SASS tools - http://www.foundstone.com/index.htm?subnav=resources/navigation.htm&amp;amp;subcontent=/resources/s3i_tools.htm&amp;lt;br /&amp;gt;&lt;br /&gt;
OWASP WebGoat - http://www.owasp.org/index.php/OWASP_WebGoat_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
OWASP SiteGenerator - http://www.owasp.org/index.php/Owasp_SiteGenerator&amp;lt;br /&amp;gt;&lt;br /&gt;
Stanford SecuriBench - http://suif.stanford.edu/~livshits/securibench/&amp;lt;br /&amp;gt;&lt;br /&gt;
SecuriBench Micro - http://suif.stanford.edu/~livshits/work/securibench-micro/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==HTTP proxying / editing==&lt;br /&gt;
WebScarab - http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
Burp - http://www.portswigger.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Paros - http://www.parosproxy.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Fiddler - http://www.fiddlertool.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Web Proxy Editor - http://www.microsoft.com/mspress/companion/0-7356-2187-X/&amp;lt;br /&amp;gt;&lt;br /&gt;
Pantera - http://www.owasp.org/index.php/Category:OWASP_Pantera_Web_Assessment_Studio_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
Suru - http://www.sensepost.com/research/suru/&amp;lt;br /&amp;gt;&lt;br /&gt;
httpedit (curses-based) - http://www.neutralbit.com/en/rd/httpedit/&amp;lt;br /&amp;gt;&lt;br /&gt;
Charles - http://www.xk72.com/charles/&amp;lt;br /&amp;gt;&lt;br /&gt;
Odysseus - http://www.bindshell.net/tools/odysseus&amp;lt;br /&amp;gt;&lt;br /&gt;
Burp, Paros, and WebScarab for Mac OS X - http://www.corsaire.com/downloads/&amp;lt;br /&amp;gt;&lt;br /&gt;
Web-application scanning tool from `Network Security Tools'/O'Reilly - http://examples.oreilly.com/networkst/&amp;lt;br /&amp;gt;&lt;br /&gt;
JS Commander - http://jscmd.rubyforge.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RSnake's XSS cheat sheet based-tools, webapp fuzzing, and encoding tools==&lt;br /&gt;
Wfuzz - http://www.edge-security.com/wfuzz.php&amp;lt;br /&amp;gt;&lt;br /&gt;
ProxMon - http://www.isecpartners.com/proxmon.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Wapiti - http://wapiti.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Grabber - http://rgaucher.info/beta/grabber/&amp;lt;br /&amp;gt;&lt;br /&gt;
XSSScan - http://darkcode.ath.cx/scanners/XSSscan.py&amp;lt;br /&amp;gt;&lt;br /&gt;
CAL9000 - http://www.owasp.org/index.php/Category:OWASP_CAL9000_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
HTMangLe - http://www.fishnetsecurity.com/Tools/HTMangLe/publish.htm&amp;lt;br /&amp;gt;&lt;br /&gt;
JBroFuzz - http://sourceforge.net/projects/jbrofuzz&amp;lt;br /&amp;gt;&lt;br /&gt;
XSSFuzz - http://ha.ckers.org/blog/20060921/xssfuzz-released/&amp;lt;br /&amp;gt;&lt;br /&gt;
WhiteAcid's XSS Assistant - http://www.whiteacid.org/greasemonkey/&amp;lt;br /&amp;gt;&lt;br /&gt;
Overlong UTF - http://www.microsoft.com/mspress/companion/0-7356-2187-X/&amp;lt;br /&amp;gt;&lt;br /&gt;
[TGZ] MielieTool (SensePost Research) - http://packetstormsecurity.org/UNIX/utilities/mielietools-v1.0.tgz&amp;lt;br /&amp;gt;&lt;br /&gt;
RegFuzzer: test your regular expression filter - http://rgaucher.info/b/index.php/post/2007/05/26/RegFuzzer%3A-Test-your-regular-expression-filter&amp;lt;br /&amp;gt;&lt;br /&gt;
screamingCobra - http://www.dachb0den.com/projects/screamingcobra.html&amp;lt;br /&amp;gt;&lt;br /&gt;
SPIKE and SPIKE Proxy - http://immunitysec.com/resources-freesoftware.shtml&amp;lt;br /&amp;gt;&lt;br /&gt;
RFuzz - http://rfuzz.rubyforge.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
WebFuzz - http://www.codebreakers-journal.com/index.php?option=com_content&amp;amp;task=view&amp;amp;id=112&amp;amp;Itemid=99999999&amp;lt;br /&amp;gt;&lt;br /&gt;
TestMaker - http://www.pushtotest.com/Docs/downloads/features.html&amp;lt;br /&amp;gt;&lt;br /&gt;
ASP Auditor - http://michaeldaw.org/projects/asp-auditor-v2/&amp;lt;br /&amp;gt;&lt;br /&gt;
WSTool - http://wstool.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Web Hack Control Center (WHCC) - http://ussysadmin.com/whcc/&amp;lt;br /&amp;gt;&lt;br /&gt;
Web Text Converter - http://www.microsoft.com/mspress/companion/0-7356-2187-X/&amp;lt;br /&amp;gt;&lt;br /&gt;
HackBar (Firefox Add-on) - https://addons.mozilla.org/firefox/3899/&amp;lt;br /&amp;gt;&lt;br /&gt;
Net-Force Tools (NF-Tools, Firefox Add-on) - http://www.net-force.nl/library/downloads/&amp;lt;br /&amp;gt;&lt;br /&gt;
PostIntercepter (Greasemonkey script) - http://userscripts.org/scripts/show/743&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==HTTP general testing / fingerprinting==&lt;br /&gt;
Wbox: HTTP testing tool - http://hping.org/wbox/&amp;lt;br /&amp;gt;&lt;br /&gt;
ht://Check - http://htcheck.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Mumsie - http://www.lurhq.com/tools/mumsie.html&amp;lt;br /&amp;gt;&lt;br /&gt;
WebInject - http://www.webinject.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Torture.pl Home Page - http://stein.cshl.org/~lstein/torture/&amp;lt;br /&amp;gt;&lt;br /&gt;
JoeDog's Seige - http://www.joedog.org/JoeDog/Siege/&amp;lt;br /&amp;gt;&lt;br /&gt;
OPEN-LABS: metoscan (http method testing) - http://www.open-labs.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Load-balancing detector - http://ge.mine.nu/lbd.html&amp;lt;br /&amp;gt;&lt;br /&gt;
HMAP - http://ujeni.murkyroc.com/hmap/&amp;lt;br /&amp;gt;&lt;br /&gt;
Net-Square: httprint - http://net-square.com/httprint/&amp;lt;br /&amp;gt;&lt;br /&gt;
Wpoison: http stress testing - http://wpoison.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Net-square: MSNPawn - http://net-square.com/msnpawn/index.shtml&amp;lt;br /&amp;gt;&lt;br /&gt;
hcraft: HTTP Vuln Request Crafter - http://druid.caughq.org/projects/hcraft/&amp;lt;br /&amp;gt;&lt;br /&gt;
rfp.labs: LibWhisker - http://www.wiretrip.net/rfp/lw.asp&amp;lt;br /&amp;gt;&lt;br /&gt;
Nikto - http://www.cirt.net/code/nikto.shtml&amp;lt;br /&amp;gt;&lt;br /&gt;
twill - http://twill.idyll.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
DirBuster - http://www.owasp.org/index.php/Category:OWASP_DirBuster_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
[ZIP] DFF Scanner - http://security-net.biz/files/dff/DFF.zip&amp;lt;br /&amp;gt;&lt;br /&gt;
[ZIP] The Elza project - http://packetstormsecurity.org/web/elza-1.4.7-beta.zip http://www.stoev.org/elza.html&amp;lt;br /&amp;gt;&lt;br /&gt;
HackerFox(http://yehg.co.nr) : Portable Firefox with web hacking addons bundled - http://sf.net/projects/hackfox&lt;br /&gt;
&lt;br /&gt;
==Browser-based HTTP tampering / editing / replaying==&lt;br /&gt;
TamperIE - http://www.bayden.com/Other/&amp;lt;br /&amp;gt;&lt;br /&gt;
isr-form - http://www.infobyte.com.ar/developments.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Modify Headers (Firefox Add-on) - http://modifyheaders.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Tamper Data (Firefox Add-on) - http://tamperdata.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
UrlParams (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1290/&amp;lt;br /&amp;gt;&lt;br /&gt;
TestGen4Web (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1385/&amp;lt;br /&amp;gt;&lt;br /&gt;
DOM Inspector / Inspect This (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1806/ https://addons.mozilla.org/en-US/firefox/addon/1913/&amp;lt;br /&amp;gt;&lt;br /&gt;
LiveHTTPHeaders / Header Monitor (Firefox Add-on) - http://livehttpheaders.mozdev.org/ https://addons.mozilla.org/en-US/firefox/addon/575/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cookie editing / poisoning==&lt;br /&gt;
[TGZ] stompy: session id tool - http://lcamtuf.coredump.cx/stompy.tgz&amp;lt;br /&amp;gt;&lt;br /&gt;
Add'N Edit Cookies (AnEC, Firefox Add-on) - http://addneditcookies.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
CookieCuller (Firefox Add-on) - http://cookieculler.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
CookiePie (Firefox Add-on) - http://www.nektra.com/oss/firefox/extensions/cookiepie/&amp;lt;br /&amp;gt;&lt;br /&gt;
CookieSpy - http://www.codeproject.com/shell/cookiespy.asp&amp;lt;br /&amp;gt;&lt;br /&gt;
Cookies Explorer - http://www.dutchduck.com/Features/Cookies.aspx&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ajax and XHR scanning==&lt;br /&gt;
Sahi - http://sahi.co.in/&amp;lt;br /&amp;gt;&lt;br /&gt;
scRUBYt - http://scrubyt.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
jQuery - http://jquery.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
jquery-include - http://www.gnucitizen.org/projects/jquery-include&amp;lt;br /&amp;gt;&lt;br /&gt;
Sprajax - http://www.denimgroup.com/sprajax.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Watir - http://wtr.rubyforge.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Watij - http://watij.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Watin - http://watin.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
RBNarcissus - http://idontsmoke.co.uk/2005/rbnarcissus/&amp;lt;br /&amp;gt;&lt;br /&gt;
SpiderTest (Spider Fuzz plugin) - http://blog.caboo.se/articles/2007/2/21/the-fabulous-spider-fuzz-plugin&amp;lt;br /&amp;gt;&lt;br /&gt;
Javascript Inline Debugger (jasildbg) - http://jasildbg.googlepages.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Firebug Lite - http://www.getfirebug.com/lite.html&amp;lt;br /&amp;gt;&lt;br /&gt;
firewaitr - http://code.google.com/p/firewatir/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RSS extensions and caching==&lt;br /&gt;
LiveLines (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/324/&amp;lt;br /&amp;gt;&lt;br /&gt;
rss-cache - http://www.dubfire.net/chris/projects/rss-cache/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SQL injection scanning==&lt;br /&gt;
0x90.org: home of Absinthe, Mezcal, etc - http://0x90.org/releases.php&amp;lt;br /&amp;gt;&lt;br /&gt;
SQLiX - http://www.owasp.org/index.php/Category:OWASP_SQLiX_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
sqlninja: a SQL Server injection and takover tool - http://sqlninja.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
JustinClarke's SQL Brute - http://www.justinclarke.com/archives/2006/03/sqlbrute.html&amp;lt;br /&amp;gt;&lt;br /&gt;
BobCat - http://www.northern-monkee.co.uk/projects/bobcat/bobcat.html&amp;lt;br /&amp;gt;&lt;br /&gt;
sqlmap - http://sqlmap.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Scully: SQL Server DB Front-End and Brute-Forcer - http://www.sensepost.com/research/scully/&amp;lt;br /&amp;gt;&lt;br /&gt;
FG-Injector - http://www.flowgate.net/?lang=en&amp;amp;seccion=herramientas&amp;lt;br /&amp;gt;&lt;br /&gt;
PRIAMOS - http://www.priamos-project.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web application security malware, backdoors, and evil code==&lt;br /&gt;
W3AF: Web Application Attack and Audit Framework - http://w3af.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Jikto - http://busin3ss.name/jikto-in-the-wild/&amp;lt;br /&amp;gt;&lt;br /&gt;
XSS Shell - http://ferruh.mavituna.com/article/?1338&amp;lt;br /&amp;gt;&lt;br /&gt;
XSS-Proxy - http://xss-proxy.sourceforge.net&amp;lt;br /&amp;gt;&lt;br /&gt;
AttackAPI - http://www.gnucitizen.org/projects/attackapi/&amp;lt;br /&amp;gt;&lt;br /&gt;
FFsniFF - http://azurit.elbiahosting.sk/ffsniff/&amp;lt;br /&amp;gt;&lt;br /&gt;
HoneyBlog's web-based junkyard - http://honeyblog.org/junkyard/web-based/&amp;lt;br /&amp;gt;&lt;br /&gt;
BeEF - http://www.bindshell.net/tools/beef/&amp;lt;br /&amp;gt;&lt;br /&gt;
Firefox Extension Scanner (FEX) - http://www.gnucitizen.org/projects/fex/&amp;lt;br /&amp;gt;&lt;br /&gt;
What is my IP address? - http://reglos.de/myaddress/&amp;lt;br /&amp;gt;&lt;br /&gt;
xRumer: blogspam automation tool - http://www.botmaster.net/movies/XFull.htm&amp;lt;br /&amp;gt;&lt;br /&gt;
SpyJax - http://www.merchantos.com/makebeta/tools/spyjax/&amp;lt;br /&amp;gt;&lt;br /&gt;
Greasecarnaval - http://www.gnucitizen.org/projects/greasecarnaval&amp;lt;br /&amp;gt;&lt;br /&gt;
Technika - http://www.gnucitizen.org/projects/technika/&amp;lt;br /&amp;gt;&lt;br /&gt;
Load-AttackAPI bookmarklet - http://www.gnucitizen.org/projects/load-attackapi-bookmarklet&amp;lt;br /&amp;gt;&lt;br /&gt;
MD's Projects: JS port scanner, pinger, backdoors, etc - http://michaeldaw.org/my-projects/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web application services that aid in web application security assessment==&lt;br /&gt;
Netcraft - http://www.netcraft.net&amp;lt;br /&amp;gt;&lt;br /&gt;
AboutURL - http://www.abouturl.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
The Scrutinizer - http://www.scrutinizethis.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
net.toolkit - http://clez.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
ServerSniff - http://www.serversniff.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Online Microsoft script decoder - http://www.greymagic.com/security/tools/decoder/&amp;lt;br /&amp;gt;&lt;br /&gt;
Webmaster-Toolkit - http://www.webmaster-toolkit.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
myIPNeighbbors, et al - http://digg.com/security/MyIPNeighbors_Find_Out_Who_Else_is_Hosted_on_Your_Site_s_IP_Address&amp;lt;br /&amp;gt;&lt;br /&gt;
PHP charset encoding - http://h4k.in/encoding&amp;lt;br /&amp;gt;&lt;br /&gt;
data: URL testcases - http://h4k.in/dataurl&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Browser-based security fuzzing / checking==&lt;br /&gt;
Zalewski's MangleMe - http://lcamtuf.coredump.cx/mangleme/mangle.cgi&amp;lt;br /&amp;gt;&lt;br /&gt;
hdm's tools: Hamachi, CSSDIE, DOM-Hanoi, AxMan - http://metasploit.com/users/hdm/tools/&amp;lt;br /&amp;gt;&lt;br /&gt;
Peach Fuzzer Framework - http://peachfuzz.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
TagBruteForcer - http://research.eeye.com/html/tools/RT20060801-3.html&amp;lt;br /&amp;gt;&lt;br /&gt;
PROTOS Test-Suite: c05-http-reply - http://www.ee.oulu.fi/research/ouspg/protos/testing/c05/http-reply/index.html&amp;lt;br /&amp;gt;&lt;br /&gt;
COMRaider - http://labs.idefense.com&amp;lt;br /&amp;gt;&lt;br /&gt;
bcheck - http://bcheck.scanit.be/bcheck/&amp;lt;br /&amp;gt;&lt;br /&gt;
Stop-Phishing: Projects page - http://www.indiana.edu/~phishing/?projects&amp;lt;br /&amp;gt;&lt;br /&gt;
LinkScanner - http://linkscanner.explabs.com/linkscanner/default.asp&amp;lt;br /&amp;gt;&lt;br /&gt;
BrowserCheck - http://www.heise-security.co.uk/services/browsercheck/&amp;lt;br /&amp;gt;&lt;br /&gt;
Cross-browser Exploit Tests - http://www.jungsonnstudios.com/cool.php&amp;lt;br /&amp;gt;&lt;br /&gt;
Stealing information using DNS pinning demo - http://www.jumperz.net/index.php?i=2&amp;amp;a=1&amp;amp;b=7&amp;lt;br /&amp;gt;&lt;br /&gt;
Javascript Website Login Checker - http://ha.ckers.org/weird/javascript-website-login-checker.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Mozilla Activex - http://www.iol.ie/~locka/mozilla/mozilla.htm&amp;lt;br /&amp;gt;&lt;br /&gt;
Jungsonn's Black Dragon Project - http://blackdragon.jungsonnstudios.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Mr. T (Master Recon Tool, includes Read Firefox Settings PoC) - http://ha.ckers.org/mr-t/&amp;lt;br /&amp;gt;&lt;br /&gt;
Vulnerable Adobe Plugin Detection For UXSS PoC - http://www.0x000000.com/?i=324&amp;lt;br /&amp;gt;&lt;br /&gt;
About Flash: is your flash up-to-date? - http://www.macromedia.com/software/flash/about/&amp;lt;br /&amp;gt;&lt;br /&gt;
Test your installation of Java software - http://java.com/en/download/installed.jsp?detect=jre&amp;amp;try=1&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PHP static analysis and file inclusion scanning==&lt;br /&gt;
PHP-SAT.org: Static analysis for PHP - http://www.program-transformation.org/PHP/&amp;lt;br /&amp;gt;&lt;br /&gt;
Unl0ck Research Team: tool for searching in google for include bugs - http://unl0ck.net/tools.php&amp;lt;br /&amp;gt;&lt;br /&gt;
FIS: File Inclusion Scanner - http://www.segfault.gr/index.php?cat_id=3&amp;amp;cont_id=25&amp;lt;br/&amp;gt;&lt;br /&gt;
PHPSecAudit - http://developer.spikesource.com/projects/phpsecaudit&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web Application Firewall (WAF) and Intrusion Detection (APIDS) rules and resources==&lt;br /&gt;
APIDS on Wikipedia - http://en.wikipedia.org/wiki/APIDS&amp;lt;br /&amp;gt;&lt;br /&gt;
PHP Intrusion Detection System (PHP-IDS) - http://php-ids.org/ http://code.google.com/p/phpids/&amp;lt;br /&amp;gt;&lt;br /&gt;
dotnetids - http://code.google.com/p/dotnetids/&amp;lt;br /&amp;gt;&lt;br /&gt;
Secure Science InterScout - http://www.securescience.com/home/newsandevents/news/interscout1.0.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Remo: whitelist rule editor for mod_security - http://remo.netnea.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
GotRoot: ModSecuirty rules - http://www.gotroot.com/tiki-index.php?page=mod_security+rules&amp;lt;br /&amp;gt;&lt;br /&gt;
The Web Security Gateway (WSGW) - http://wsgw.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
mod_security rules generator - http://noeljackson.com/tools/modsecurity/&amp;lt;br /&amp;gt;&lt;br /&gt;
Mod_Anti_Tamper - http://www.wisec.it/projects.php?id=3&amp;lt;br /&amp;gt;&lt;br /&gt;
[TGZ] Automatic Rules Generation for Mod_Security - http://www.wisec.it/rdr.php?fn=/Projects/Rule-o-matic.tgz&amp;lt;br /&amp;gt;&lt;br /&gt;
AQTRONIX WebKnight - http://www.aqtronix.com/?PageID=99&amp;lt;br /&amp;gt;&lt;br /&gt;
Akismet: blog spam defense - http://akismet.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Samoa: Formal tools for securing web services - http://research.microsoft.com/projects/samoa/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web services enumeration / scanning / fuzzing==&lt;br /&gt;
WebServiceStudio2.0 - http://www.codeplex.com/WebserviceStudio&amp;lt;br /&amp;gt;&lt;br /&gt;
Net-square: wsChess - http://net-square.com/wschess/index.shtml&amp;lt;br /&amp;gt;&lt;br /&gt;
WSFuzzer - http://www.owasp.org/index.php/Category:OWASP_WSFuzzer_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
SIFT: web method search tool - http://www.sift.com.au/73/171/sift-web-method-search-tool.htm&amp;lt;br /&amp;gt;&lt;br /&gt;
iSecPartners: WSMap, WSBang, etc - http://www.isecpartners.com/tools.html&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web application non-specific static source-code analysis==&lt;br /&gt;
Pixy: a static analysis tool for detecting XSS vulnerabilities - http://www.seclab.tuwien.ac.at/projects/pixy/&amp;lt;br /&amp;gt;&lt;br /&gt;
Brixoft.Net: Source Edit - http://www.brixoft.net/prodinfo.asp?id=1&amp;lt;br /&amp;gt;&lt;br /&gt;
Security compass web application auditing tools (SWAAT) - http://www.owasp.org/index.php/Category:OWASP_SWAAT_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
An even more complete list here - http://www.cs.cmu.edu/~aldrich/courses/654/tools/&amp;lt;br /&amp;gt;&lt;br /&gt;
A nice list that claims some demos available - http://www.cs.cmu.edu/~aldrich/courses/413/tools.html&amp;lt;br /&amp;gt;&lt;br /&gt;
A smaller, but also good list - http://spinroot.com/static/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Static analysis for C/C++ (CGI, ISAPI, etc) in web applications==&lt;br /&gt;
RATS - http://www.securesoftware.com/resources/download_rats.html&amp;lt;br /&amp;gt;&lt;br /&gt;
ITS4 - http://www.cigital.com/its4/&amp;lt;br /&amp;gt;&lt;br /&gt;
FlawFinder - http://www.dwheeler.com/flawfinder/&amp;lt;br /&amp;gt;&lt;br /&gt;
Splint - http://www.splint.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Uno - http://spinroot.com/uno/&amp;lt;br /&amp;gt;&lt;br /&gt;
BOON (Buffer Overrun detectiON) - http://www.cs.berkeley.edu/~daw/boon/ http://boon.sourceforge.net&amp;lt;br /&amp;gt;&lt;br /&gt;
Valgrind - http://www.valgrind.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Java static analysis, security frameworks, and web application security tools==&lt;br /&gt;
HDIV Struts - http://hdiv.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Orizon - http://sourceforge.net/projects/orizon/&amp;lt;br /&amp;gt;&lt;br /&gt;
FindBugs: Find bugs in Java programs - http://findbugs.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
PMD - http://pmd.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
CUTE: A Concolic Unit Testing Engine for C and Java - http://osl.cs.uiuc.edu/~ksen/cute/&amp;lt;br /&amp;gt;&lt;br /&gt;
EMMA - http://emma.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
JLint - http://jlint.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Java PathFinder - http://javapathfinder.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Fujaba: Move between UML and Java source code - http://wwwcs.uni-paderborn.de/cs/fujaba/&amp;lt;br /&amp;gt;&lt;br /&gt;
Checkstyle - http://checkstyle.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Cookie Revolver Security Framework - http://sourceforge.net/projects/cookie-revolver&amp;lt;br /&amp;gt;&lt;br /&gt;
tinapoc - http://sourceforge.net/projects/tinapoc&amp;lt;br /&amp;gt;&lt;br /&gt;
jarsigner - http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/jarsigner.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Solex - http://solex.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Java Explorer - http://metal.hurlant.com/jexplore/&amp;lt;br /&amp;gt;&lt;br /&gt;
HTTPClient - http://www.innovation.ch/java/HTTPClient/&amp;lt;br /&amp;gt;&lt;br /&gt;
another HttpClient - http://jakarta.apache.org/commons/httpclient/&amp;lt;br /&amp;gt;&lt;br /&gt;
a list of code coverage and analysis tools for Java - http://mythinkpond.blogspot.com/2007/06/java-foss-freeopen-source-software.html&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Microsoft .NET static analysis and security framework tools, mostly for ASP.NET and ASP.NET AJAX, but also C# and VB.NET==&lt;br /&gt;
* Visual Studio 2008 Code Analysis, available in:&lt;br /&gt;
** VSTS 2008 Development Edition (http://msdn.microsoft.com/vsts2008/products/bb933752.aspx) and &lt;br /&gt;
** VSTS 2008 Team Suite (http://msdn.microsoft.com/vsts2008/products/bb933735.aspx)&lt;br /&gt;
* Visual Studio 2005 Code Analyzer, available in:&lt;br /&gt;
** Visual Studio 2005 Team Edition for Software Developers  (http://msdn.microsoft.com/en-us/vstudio/aa718806.aspx)&lt;br /&gt;
** Visual Studio 2005 Team Suite (http://msdn.microsoft.com/en-us/vstudio/aa718806.aspx)&lt;br /&gt;
* Web Development Helper - http://www.nikhilk.net/Project.WebDevHelper.aspx&lt;br /&gt;
* FxCop:&lt;br /&gt;
** (blog) http://blogs.msdn.com/fxcop/&lt;br /&gt;
** (download) http://code.msdn.microsoft.com/codeanalysis&lt;br /&gt;
* Microsoft internal tools you can't have yet:&lt;br /&gt;
** http://www.microsoft.com/windows/cse/pa_projects.mspx &lt;br /&gt;
** http://research.microsoft.com/Pex/ &lt;br /&gt;
** http://www.owasp.org/images/5/5b/OWASP_IL_7_FuzzGuru.pdf&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Threat modeling==&lt;br /&gt;
Microsoft Threat Analysis and Modeling Tool v2.1 (TAM) - http://www.microsoft.com/downloads/details.aspx?FamilyID=59888078-9daf-4e96-b7d1-944703479451&amp;amp;displaylang=en&amp;lt;br /&amp;gt;&lt;br /&gt;
Amenaza: Attack Tree Modeling (SecurITree) - http://www.amenaza.com/software.php&amp;lt;br /&amp;gt;&lt;br /&gt;
Octotrike - http://www.octotrike.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Add-ons for Firefox that help with general web application security==&lt;br /&gt;
Web Developer Toolbar - https://addons.mozilla.org/firefox/60/&amp;lt;br /&amp;gt;&lt;br /&gt;
Plain Old Webserver (POW) - https://addons.mozilla.org/firefox/3002/&amp;lt;br /&amp;gt;&lt;br /&gt;
XML Developer Toolbar - https://addons.mozilla.org/firefox/2897/&amp;lt;br /&amp;gt;&lt;br /&gt;
Public Fox - https://addons.mozilla.org/firefox/3911/&amp;lt;br /&amp;gt;&lt;br /&gt;
XForms Buddy - http://beaufour.dk/index.php?sec=misc&amp;amp;pagename=xforms&amp;lt;br /&amp;gt;&lt;br /&gt;
MR Tech Local Install - http://www.mrtech.com/extensions/local_install/&amp;lt;br /&amp;gt;&lt;br /&gt;
Nightly Tester Tools - http://users.blueprintit.co.uk/~dave/web/firefox/buildid/index.html&amp;lt;br /&amp;gt;&lt;br /&gt;
IE Tab - https://addons.mozilla.org/firefox/1419/&amp;lt;br /&amp;gt;&lt;br /&gt;
User-Agent Switcher - https://addons.mozilla.org/firefox/59/&amp;lt;br /&amp;gt;&lt;br /&gt;
ServerSwitcher - https://addons.mozilla.org/firefox/2409/&amp;lt;br /&amp;gt;&lt;br /&gt;
HeaderMonitor - https://addons.mozilla.org/firefox/575/&amp;lt;br /&amp;gt;&lt;br /&gt;
RefControl - https://addons.mozilla.org/firefox/953/&amp;lt;br /&amp;gt;&lt;br /&gt;
refspoof - https://addons.mozilla.org/firefox/667/&amp;lt;br /&amp;gt;&lt;br /&gt;
No-Referrer - https://addons.mozilla.org/firefox/1999/&amp;lt;br /&amp;gt;&lt;br /&gt;
LocationBar^2 - https://addons.mozilla.org/firefox/4014/&amp;lt;br /&amp;gt;&lt;br /&gt;
SpiderZilla - http://spiderzilla.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Slogger - https://addons.mozilla.org/en-US/firefox/addon/143&amp;lt;br /&amp;gt;&lt;br /&gt;
Fire Encrypter - https://addons.mozilla.org/firefox/3208/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Add-ons for Firefox that help with Javascript and Ajax web application security==&lt;br /&gt;
Selenium IDE - http://www.openqa.org/selenium-ide/&amp;lt;br /&amp;gt;&lt;br /&gt;
Firebug - http://www.joehewitt.com/software/firebug/&amp;lt;br /&amp;gt;&lt;br /&gt;
Venkman - http://www.mozilla.org/projects/venkman/&amp;lt;br /&amp;gt;&lt;br /&gt;
Chickenfoot - http://groups.csail.mit.edu/uid/chickenfoot/&amp;lt;br /&amp;gt;&lt;br /&gt;
Greasemonkey - http://www.greasespot.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Greasemonkey compiler - http://www.letitblog.com/greasemonkey-compiler/&amp;lt;br /&amp;gt;&lt;br /&gt;
User script compiler - http://arantius.com/misc/greasemonkey/script-compiler&amp;lt;br /&amp;gt;&lt;br /&gt;
Extension Developer's Extension (Firefox Add-on) - http://ted.mielczarek.org/code/mozilla/extensiondev/&amp;lt;br /&amp;gt;&lt;br /&gt;
Smart Middle Click (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/3885/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bookmarklets that aid in web application security==&lt;br /&gt;
RSnake's security bookmarklets - http://ha.ckers.org/bookmarklets.html&amp;lt;br /&amp;gt;&lt;br /&gt;
BMlets - http://optools.awardspace.com/bmlet.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Huge list of bookmarklets - http://www.squarefree.com/bookmarklets/&amp;lt;br /&amp;gt;&lt;br /&gt;
Blummy: consists of small widgets, called blummlets, which make use of Javascript to provide&lt;br /&gt;
rich functionality - http://www.blummy.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Bookmarklets every blogger should have - http://www.micropersuasion.com/2005/10/bookmarklets_ev.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Flat Bookmark Editing (Firefox Add-on) - http://n01se.net/chouser/proj/mozhack/&amp;lt;br /&amp;gt;&lt;br /&gt;
OpenBook and Update Bookmark (Firefox Add-ons) - http://www.chuonthis.com/extensions/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SSL certificate checking / scanning==&lt;br /&gt;
[ZIP] THCSSLCheck - http://thc.org/root/tools/THCSSLCheck.zip&amp;lt;br /&amp;gt;&lt;br /&gt;
[ZIP] Foundstone SSLDigger - http://www.foundstone.com/us/resources/termsofuse.asp?file=ssldigger.zip&amp;lt;br /&amp;gt;&lt;br /&gt;
Cert Viewer Plus (Firefox Add-on) - https://addons.mozilla.org/firefox/1964/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Honeyclients, Web Application, and Web Proxy honeypots==&lt;br /&gt;
Honeyclient Project: an open-source honeyclient - http://www.honeyclient.org/trac/ &amp;lt;br /&amp;gt;&lt;br /&gt;
HoneyC: the low-interaction honeyclient - http://honeyc.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Capture: a high-interaction honeyclient - http://capture-hpc.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Google Hack Honeypot - http://ghh.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
PHP.Hop - PHP Honeynet Project - http://www.rstack.org/phphop/&amp;lt;br /&amp;gt;&lt;br /&gt;
SpyBye - http://www.monkey.org/~provos/spybye/&amp;lt;br /&amp;gt;&lt;br /&gt;
Honeytokens - http://www.securityfocus.com/infocus/1713&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Blackhat SEO and maybe some whitehat SEO==&lt;br /&gt;
SearchStatus (Firefox Add-on) - http://www.quirk.biz/searchstatus/&amp;lt;br /&amp;gt;&lt;br /&gt;
SEO for Firefox (Firefox Add-on) - http://tools.seobook.com/firefox/seo-for-firefox.html&amp;lt;br /&amp;gt;&lt;br /&gt;
SEOQuake (Firefox Add-on) - http://www.seoquake.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Footprinting for web application security==&lt;br /&gt;
Evolution - http://www.paterva.com/evolution-e.html&amp;lt;br /&amp;gt;&lt;br /&gt;
GooSweep - http://www.mcgrewsecurity.com/projects/goosweep/&amp;lt;br /&amp;gt;&lt;br /&gt;
Aura: Google API Utility Tools - http://www.sensepost.com/research/aura/&amp;lt;br /&amp;gt;&lt;br /&gt;
Edge-Security tools - http://www.edge-security.com/soft.php&amp;lt;br /&amp;gt;&lt;br /&gt;
Fierce Domain Scanner - http://ha.ckers.org/fierce/&amp;lt;br /&amp;gt;&lt;br /&gt;
Googlegath - http://www.nothink.org/perl/googlegath/&amp;lt;br /&amp;gt;&lt;br /&gt;
Advanced Dork (Firefox Add-on) - https://addons.mozilla.org/firefox/2144/&amp;lt;br /&amp;gt;&lt;br /&gt;
Passive Cache (Firefox Add-on) - https://addons.mozilla.org/firefox/977/&amp;lt;br /&amp;gt;&lt;br /&gt;
CacheOut! (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1453/&amp;lt;br /&amp;gt;&lt;br /&gt;
BugMeNot Extension (Firefox Add-on) - http://roachfiend.com/archives/2005/02/07/bugmenot/&amp;lt;br /&amp;gt;&lt;br /&gt;
TrashMail.net Extension (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1813/&amp;lt;br /&amp;gt;&lt;br /&gt;
DiggiDig (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/2819/&amp;lt;br /&amp;gt;&lt;br /&gt;
Digger (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1467/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Database security assessment==&lt;br /&gt;
Scuba by Imperva Database Vulnerability Scanner - http://www.imperva.com/scuba/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Browser Defenses==&lt;br /&gt;
DieHard - http://www.diehard-software.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
LocalRodeo (Firefox Add-on) - http://databasement.net/labs/localrodeo/&amp;lt;br /&amp;gt;&lt;br /&gt;
NoMoXSS - http://www.seclab.tuwien.ac.at/projects/jstaint/&amp;lt;br /&amp;gt;&lt;br /&gt;
Request Rodeo - http://savannah.nongnu.org/projects/requestrodeo&amp;lt;br /&amp;gt;&lt;br /&gt;
FlashBlock (Firefox Add-on) - http://flashblock.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
CookieSafe (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/2497&amp;lt;br /&amp;gt;&lt;br /&gt;
NoScript (Firefox Add-on) - http://www.noscript.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
FormFox (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1579/&amp;lt;br /&amp;gt;&lt;br /&gt;
Adblock (Firefox Add-on) - http://adblock.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
httpOnly in Firefox (Firefox Add-on) - http://blog.php-security.org/archives/40-httpOnly-Cookies-in-Firefox-2.0.html&amp;lt;br /&amp;gt;&lt;br /&gt;
SafeCache (Firefox Add-on) - http://www.safecache.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
SafeHistory (Firefox Add-on) - http://www.safehistory.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
PrefBar (Firefox Add-on) - http://prefbar.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
All-in-One Sidebar (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1027/&amp;lt;br /&amp;gt;&lt;br /&gt;
QArchive.org web file checker (Firefox Add-on) - https://addons.mozilla.org/firefox/4115/&amp;lt;br /&amp;gt;&lt;br /&gt;
Update Notified (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/2098/&amp;lt;br /&amp;gt;&lt;br /&gt;
FireKeeper - http://firekeeper.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Greasemonkey: XSS Malware Script Detector (http://yehg.co.nr) -  http://userscripts.org/scripts/show/22955&lt;br /&gt;
&lt;br /&gt;
==Browser Privacy==&lt;br /&gt;
TrackMeNot (Firefox Add-on) - https://addons.mozilla.org/firefox/3173/&amp;lt;br /&amp;gt;&lt;br /&gt;
Privacy Bird - http://www.privacybird.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Application and protocol fuzzing (random instead of targeted)==&lt;br /&gt;
Sulley - http://fuzzing.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
taof: The Art of Fuzzing - http://sourceforge.net/projects/taof/&amp;lt;br /&amp;gt;&lt;br /&gt;
zzuf: multipurpose fuzzer - http://sam.zoy.org/zzuf/&amp;lt;br /&amp;gt;&lt;br /&gt;
autodafé: an act of software torture - http://autodafe.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
EFS and GPF: Evolutionary Fuzzing System - http://www.appliedsec.com/resources.html&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Phoenix/Tools&amp;diff=34352</id>
		<title>Phoenix/Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Phoenix/Tools&amp;diff=34352"/>
				<updated>2008-07-20T07:26:09Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* Web services enumeration / scanning / fuzzing */ replaced link to GotDotNet with new CodePlex site&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p&amp;gt;Please send comments or questions to the [https://lists.owasp.org/mailman/listinfo/owasp-phoenix Phoenix-OWASP mailing-list].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LiveCDs==&lt;br /&gt;
Monday, January 29, 2007  4:02 PM    828569600 AOC_Labrat-ALPHA-0010.iso - http://www.packetfocus.com/hackos/&amp;lt;br /&amp;gt;&lt;br /&gt;
DVL (Damn Vulnerable Linux) - http://www.damnvulnerablelinux.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Test sites / testing grounds==&lt;br /&gt;
SPI Dynamics (live) - http://zero.webappsecurity.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Cenzic (live) - http://crackme.cenzic.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Watchfire (live) - http://demo.testfire.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Acunetix (live) - http://testphp.acunetix.com/ http://testasp.acunetix.com http://testaspnet.acunetix.com&amp;lt;br /&amp;gt;&lt;br /&gt;
WebMaven / Buggy Bank (includes live testsite) - http://www.mavensecurity.com/webmaven&amp;lt;br /&amp;gt;&lt;br /&gt;
Foundstone SASS tools - http://www.foundstone.com/index.htm?subnav=resources/navigation.htm&amp;amp;subcontent=/resources/s3i_tools.htm&amp;lt;br /&amp;gt;&lt;br /&gt;
OWASP WebGoat - http://www.owasp.org/index.php/OWASP_WebGoat_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
OWASP SiteGenerator - http://www.owasp.org/index.php/Owasp_SiteGenerator&amp;lt;br /&amp;gt;&lt;br /&gt;
Stanford SecuriBench - http://suif.stanford.edu/~livshits/securibench/&amp;lt;br /&amp;gt;&lt;br /&gt;
SecuriBench Micro - http://suif.stanford.edu/~livshits/work/securibench-micro/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==HTTP proxying / editing==&lt;br /&gt;
WebScarab - http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
Burp - http://www.portswigger.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Paros - http://www.parosproxy.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Fiddler - http://www.fiddlertool.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Web Proxy Editor - http://www.microsoft.com/mspress/companion/0-7356-2187-X/&amp;lt;br /&amp;gt;&lt;br /&gt;
Pantera - http://www.owasp.org/index.php/Category:OWASP_Pantera_Web_Assessment_Studio_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
Suru - http://www.sensepost.com/research/suru/&amp;lt;br /&amp;gt;&lt;br /&gt;
httpedit (curses-based) - http://www.neutralbit.com/en/rd/httpedit/&amp;lt;br /&amp;gt;&lt;br /&gt;
Charles - http://www.xk72.com/charles/&amp;lt;br /&amp;gt;&lt;br /&gt;
Odysseus - http://www.bindshell.net/tools/odysseus&amp;lt;br /&amp;gt;&lt;br /&gt;
Burp, Paros, and WebScarab for Mac OS X - http://www.corsaire.com/downloads/&amp;lt;br /&amp;gt;&lt;br /&gt;
Web-application scanning tool from `Network Security Tools'/O'Reilly - http://examples.oreilly.com/networkst/&amp;lt;br /&amp;gt;&lt;br /&gt;
JS Commander - http://jscmd.rubyforge.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RSnake's XSS cheat sheet based-tools, webapp fuzzing, and encoding tools==&lt;br /&gt;
Wfuzz - http://www.edge-security.com/wfuzz.php&amp;lt;br /&amp;gt;&lt;br /&gt;
ProxMon - http://www.isecpartners.com/proxmon.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Wapiti - http://wapiti.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Grabber - http://rgaucher.info/beta/grabber/&amp;lt;br /&amp;gt;&lt;br /&gt;
XSSScan - http://darkcode.ath.cx/scanners/XSSscan.py&amp;lt;br /&amp;gt;&lt;br /&gt;
CAL9000 - http://www.owasp.org/index.php/Category:OWASP_CAL9000_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
HTMangLe - http://www.fishnetsecurity.com/Tools/HTMangLe/publish.htm&amp;lt;br /&amp;gt;&lt;br /&gt;
JBroFuzz - http://sourceforge.net/projects/jbrofuzz&amp;lt;br /&amp;gt;&lt;br /&gt;
XSSFuzz - http://ha.ckers.org/blog/20060921/xssfuzz-released/&amp;lt;br /&amp;gt;&lt;br /&gt;
WhiteAcid's XSS Assistant - http://www.whiteacid.org/greasemonkey/&amp;lt;br /&amp;gt;&lt;br /&gt;
Overlong UTF - http://www.microsoft.com/mspress/companion/0-7356-2187-X/&amp;lt;br /&amp;gt;&lt;br /&gt;
[TGZ] MielieTool (SensePost Research) - http://packetstormsecurity.org/UNIX/utilities/mielietools-v1.0.tgz&amp;lt;br /&amp;gt;&lt;br /&gt;
RegFuzzer: test your regular expression filter - http://rgaucher.info/b/index.php/post/2007/05/26/RegFuzzer%3A-Test-your-regular-expression-filter&amp;lt;br /&amp;gt;&lt;br /&gt;
screamingCobra - http://www.dachb0den.com/projects/screamingcobra.html&amp;lt;br /&amp;gt;&lt;br /&gt;
SPIKE and SPIKE Proxy - http://immunitysec.com/resources-freesoftware.shtml&amp;lt;br /&amp;gt;&lt;br /&gt;
RFuzz - http://rfuzz.rubyforge.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
WebFuzz - http://www.codebreakers-journal.com/index.php?option=com_content&amp;amp;task=view&amp;amp;id=112&amp;amp;Itemid=99999999&amp;lt;br /&amp;gt;&lt;br /&gt;
TestMaker - http://www.pushtotest.com/Docs/downloads/features.html&amp;lt;br /&amp;gt;&lt;br /&gt;
ASP Auditor - http://michaeldaw.org/projects/asp-auditor-v2/&amp;lt;br /&amp;gt;&lt;br /&gt;
WSTool - http://wstool.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Web Hack Control Center (WHCC) - http://ussysadmin.com/whcc/&amp;lt;br /&amp;gt;&lt;br /&gt;
Web Text Converter - http://www.microsoft.com/mspress/companion/0-7356-2187-X/&amp;lt;br /&amp;gt;&lt;br /&gt;
HackBar (Firefox Add-on) - https://addons.mozilla.org/firefox/3899/&amp;lt;br /&amp;gt;&lt;br /&gt;
Net-Force Tools (NF-Tools, Firefox Add-on) - http://www.net-force.nl/library/downloads/&amp;lt;br /&amp;gt;&lt;br /&gt;
PostIntercepter (Greasemonkey script) - http://userscripts.org/scripts/show/743&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==HTTP general testing / fingerprinting==&lt;br /&gt;
Wbox: HTTP testing tool - http://hping.org/wbox/&amp;lt;br /&amp;gt;&lt;br /&gt;
ht://Check - http://htcheck.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Mumsie - http://www.lurhq.com/tools/mumsie.html&amp;lt;br /&amp;gt;&lt;br /&gt;
WebInject - http://www.webinject.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Torture.pl Home Page - http://stein.cshl.org/~lstein/torture/&amp;lt;br /&amp;gt;&lt;br /&gt;
JoeDog's Seige - http://www.joedog.org/JoeDog/Siege/&amp;lt;br /&amp;gt;&lt;br /&gt;
OPEN-LABS: metoscan (http method testing) - http://www.open-labs.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Load-balancing detector - http://ge.mine.nu/lbd.html&amp;lt;br /&amp;gt;&lt;br /&gt;
HMAP - http://ujeni.murkyroc.com/hmap/&amp;lt;br /&amp;gt;&lt;br /&gt;
Net-Square: httprint - http://net-square.com/httprint/&amp;lt;br /&amp;gt;&lt;br /&gt;
Wpoison: http stress testing - http://wpoison.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Net-square: MSNPawn - http://net-square.com/msnpawn/index.shtml&amp;lt;br /&amp;gt;&lt;br /&gt;
hcraft: HTTP Vuln Request Crafter - http://druid.caughq.org/projects/hcraft/&amp;lt;br /&amp;gt;&lt;br /&gt;
rfp.labs: LibWhisker - http://www.wiretrip.net/rfp/lw.asp&amp;lt;br /&amp;gt;&lt;br /&gt;
Nikto - http://www.cirt.net/code/nikto.shtml&amp;lt;br /&amp;gt;&lt;br /&gt;
twill - http://twill.idyll.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
DirBuster - http://www.owasp.org/index.php/Category:OWASP_DirBuster_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
[ZIP] DFF Scanner - http://security-net.biz/files/dff/DFF.zip&amp;lt;br /&amp;gt;&lt;br /&gt;
[ZIP] The Elza project - http://packetstormsecurity.org/web/elza-1.4.7-beta.zip http://www.stoev.org/elza.html&amp;lt;br /&amp;gt;&lt;br /&gt;
HackerFox(http://yehg.co.nr) : Portable Firefox with web hacking addons bundled - http://sf.net/projects/hackfox&lt;br /&gt;
&lt;br /&gt;
==Browser-based HTTP tampering / editing / replaying==&lt;br /&gt;
TamperIE - http://www.bayden.com/Other/&amp;lt;br /&amp;gt;&lt;br /&gt;
isr-form - http://www.infobyte.com.ar/developments.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Modify Headers (Firefox Add-on) - http://modifyheaders.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Tamper Data (Firefox Add-on) - http://tamperdata.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
UrlParams (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1290/&amp;lt;br /&amp;gt;&lt;br /&gt;
TestGen4Web (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1385/&amp;lt;br /&amp;gt;&lt;br /&gt;
DOM Inspector / Inspect This (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1806/ https://addons.mozilla.org/en-US/firefox/addon/1913/&amp;lt;br /&amp;gt;&lt;br /&gt;
LiveHTTPHeaders / Header Monitor (Firefox Add-on) - http://livehttpheaders.mozdev.org/ https://addons.mozilla.org/en-US/firefox/addon/575/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cookie editing / poisoning==&lt;br /&gt;
[TGZ] stompy: session id tool - http://lcamtuf.coredump.cx/stompy.tgz&amp;lt;br /&amp;gt;&lt;br /&gt;
Add'N Edit Cookies (AnEC, Firefox Add-on) - http://addneditcookies.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
CookieCuller (Firefox Add-on) - http://cookieculler.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
CookiePie (Firefox Add-on) - http://www.nektra.com/oss/firefox/extensions/cookiepie/&amp;lt;br /&amp;gt;&lt;br /&gt;
CookieSpy - http://www.codeproject.com/shell/cookiespy.asp&amp;lt;br /&amp;gt;&lt;br /&gt;
Cookies Explorer - http://www.dutchduck.com/Features/Cookies.aspx&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ajax and XHR scanning==&lt;br /&gt;
Sahi - http://sahi.co.in/&amp;lt;br /&amp;gt;&lt;br /&gt;
scRUBYt - http://scrubyt.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
jQuery - http://jquery.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
jquery-include - http://www.gnucitizen.org/projects/jquery-include&amp;lt;br /&amp;gt;&lt;br /&gt;
Sprajax - http://www.denimgroup.com/sprajax.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Watir - http://wtr.rubyforge.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Watij - http://watij.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Watin - http://watin.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
RBNarcissus - http://idontsmoke.co.uk/2005/rbnarcissus/&amp;lt;br /&amp;gt;&lt;br /&gt;
SpiderTest (Spider Fuzz plugin) - http://blog.caboo.se/articles/2007/2/21/the-fabulous-spider-fuzz-plugin&amp;lt;br /&amp;gt;&lt;br /&gt;
Javascript Inline Debugger (jasildbg) - http://jasildbg.googlepages.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Firebug Lite - http://www.getfirebug.com/lite.html&amp;lt;br /&amp;gt;&lt;br /&gt;
firewaitr - http://code.google.com/p/firewatir/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RSS extensions and caching==&lt;br /&gt;
LiveLines (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/324/&amp;lt;br /&amp;gt;&lt;br /&gt;
rss-cache - http://www.dubfire.net/chris/projects/rss-cache/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SQL injection scanning==&lt;br /&gt;
0x90.org: home of Absinthe, Mezcal, etc - http://0x90.org/releases.php&amp;lt;br /&amp;gt;&lt;br /&gt;
SQLiX - http://www.owasp.org/index.php/Category:OWASP_SQLiX_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
sqlninja: a SQL Server injection and takover tool - http://sqlninja.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
JustinClarke's SQL Brute - http://www.justinclarke.com/archives/2006/03/sqlbrute.html&amp;lt;br /&amp;gt;&lt;br /&gt;
BobCat - http://www.northern-monkee.co.uk/projects/bobcat/bobcat.html&amp;lt;br /&amp;gt;&lt;br /&gt;
sqlmap - http://sqlmap.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Scully: SQL Server DB Front-End and Brute-Forcer - http://www.sensepost.com/research/scully/&amp;lt;br /&amp;gt;&lt;br /&gt;
FG-Injector - http://www.flowgate.net/?lang=en&amp;amp;seccion=herramientas&amp;lt;br /&amp;gt;&lt;br /&gt;
PRIAMOS - http://www.priamos-project.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web application security malware, backdoors, and evil code==&lt;br /&gt;
W3AF: Web Application Attack and Audit Framework - http://w3af.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Jikto - http://busin3ss.name/jikto-in-the-wild/&amp;lt;br /&amp;gt;&lt;br /&gt;
XSS Shell - http://ferruh.mavituna.com/article/?1338&amp;lt;br /&amp;gt;&lt;br /&gt;
XSS-Proxy - http://xss-proxy.sourceforge.net&amp;lt;br /&amp;gt;&lt;br /&gt;
AttackAPI - http://www.gnucitizen.org/projects/attackapi/&amp;lt;br /&amp;gt;&lt;br /&gt;
FFsniFF - http://azurit.elbiahosting.sk/ffsniff/&amp;lt;br /&amp;gt;&lt;br /&gt;
HoneyBlog's web-based junkyard - http://honeyblog.org/junkyard/web-based/&amp;lt;br /&amp;gt;&lt;br /&gt;
BeEF - http://www.bindshell.net/tools/beef/&amp;lt;br /&amp;gt;&lt;br /&gt;
Firefox Extension Scanner (FEX) - http://www.gnucitizen.org/projects/fex/&amp;lt;br /&amp;gt;&lt;br /&gt;
What is my IP address? - http://reglos.de/myaddress/&amp;lt;br /&amp;gt;&lt;br /&gt;
xRumer: blogspam automation tool - http://www.botmaster.net/movies/XFull.htm&amp;lt;br /&amp;gt;&lt;br /&gt;
SpyJax - http://www.merchantos.com/makebeta/tools/spyjax/&amp;lt;br /&amp;gt;&lt;br /&gt;
Greasecarnaval - http://www.gnucitizen.org/projects/greasecarnaval&amp;lt;br /&amp;gt;&lt;br /&gt;
Technika - http://www.gnucitizen.org/projects/technika/&amp;lt;br /&amp;gt;&lt;br /&gt;
Load-AttackAPI bookmarklet - http://www.gnucitizen.org/projects/load-attackapi-bookmarklet&amp;lt;br /&amp;gt;&lt;br /&gt;
MD's Projects: JS port scanner, pinger, backdoors, etc - http://michaeldaw.org/my-projects/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web application services that aid in web application security assessment==&lt;br /&gt;
Netcraft - http://www.netcraft.net&amp;lt;br /&amp;gt;&lt;br /&gt;
AboutURL - http://www.abouturl.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
The Scrutinizer - http://www.scrutinizethis.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
net.toolkit - http://clez.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
ServerSniff - http://www.serversniff.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Online Microsoft script decoder - http://www.greymagic.com/security/tools/decoder/&amp;lt;br /&amp;gt;&lt;br /&gt;
Webmaster-Toolkit - http://www.webmaster-toolkit.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
myIPNeighbbors, et al - http://digg.com/security/MyIPNeighbors_Find_Out_Who_Else_is_Hosted_on_Your_Site_s_IP_Address&amp;lt;br /&amp;gt;&lt;br /&gt;
PHP charset encoding - http://h4k.in/encoding&amp;lt;br /&amp;gt;&lt;br /&gt;
data: URL testcases - http://h4k.in/dataurl&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Browser-based security fuzzing / checking==&lt;br /&gt;
Zalewski's MangleMe - http://lcamtuf.coredump.cx/mangleme/mangle.cgi&amp;lt;br /&amp;gt;&lt;br /&gt;
hdm's tools: Hamachi, CSSDIE, DOM-Hanoi, AxMan - http://metasploit.com/users/hdm/tools/&amp;lt;br /&amp;gt;&lt;br /&gt;
Peach Fuzzer Framework - http://peachfuzz.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
TagBruteForcer - http://research.eeye.com/html/tools/RT20060801-3.html&amp;lt;br /&amp;gt;&lt;br /&gt;
PROTOS Test-Suite: c05-http-reply - http://www.ee.oulu.fi/research/ouspg/protos/testing/c05/http-reply/index.html&amp;lt;br /&amp;gt;&lt;br /&gt;
COMRaider - http://labs.idefense.com&amp;lt;br /&amp;gt;&lt;br /&gt;
bcheck - http://bcheck.scanit.be/bcheck/&amp;lt;br /&amp;gt;&lt;br /&gt;
Stop-Phishing: Projects page - http://www.indiana.edu/~phishing/?projects&amp;lt;br /&amp;gt;&lt;br /&gt;
LinkScanner - http://linkscanner.explabs.com/linkscanner/default.asp&amp;lt;br /&amp;gt;&lt;br /&gt;
BrowserCheck - http://www.heise-security.co.uk/services/browsercheck/&amp;lt;br /&amp;gt;&lt;br /&gt;
Cross-browser Exploit Tests - http://www.jungsonnstudios.com/cool.php&amp;lt;br /&amp;gt;&lt;br /&gt;
Stealing information using DNS pinning demo - http://www.jumperz.net/index.php?i=2&amp;amp;a=1&amp;amp;b=7&amp;lt;br /&amp;gt;&lt;br /&gt;
Javascript Website Login Checker - http://ha.ckers.org/weird/javascript-website-login-checker.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Mozilla Activex - http://www.iol.ie/~locka/mozilla/mozilla.htm&amp;lt;br /&amp;gt;&lt;br /&gt;
Jungsonn's Black Dragon Project - http://blackdragon.jungsonnstudios.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Mr. T (Master Recon Tool, includes Read Firefox Settings PoC) - http://ha.ckers.org/mr-t/&amp;lt;br /&amp;gt;&lt;br /&gt;
Vulnerable Adobe Plugin Detection For UXSS PoC - http://www.0x000000.com/?i=324&amp;lt;br /&amp;gt;&lt;br /&gt;
About Flash: is your flash up-to-date? - http://www.macromedia.com/software/flash/about/&amp;lt;br /&amp;gt;&lt;br /&gt;
Test your installation of Java software - http://java.com/en/download/installed.jsp?detect=jre&amp;amp;try=1&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PHP static analysis and file inclusion scanning==&lt;br /&gt;
PHP-SAT.org: Static analysis for PHP - http://www.program-transformation.org/PHP/&amp;lt;br /&amp;gt;&lt;br /&gt;
Unl0ck Research Team: tool for searching in google for include bugs - http://unl0ck.net/tools.php&amp;lt;br /&amp;gt;&lt;br /&gt;
FIS: File Inclusion Scanner - http://www.segfault.gr/index.php?cat_id=3&amp;amp;cont_id=25&amp;lt;br/&amp;gt;&lt;br /&gt;
PHPSecAudit - http://developer.spikesource.com/projects/phpsecaudit&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web Application Firewall (WAF) and Intrusion Detection (APIDS) rules and resources==&lt;br /&gt;
APIDS on Wikipedia - http://en.wikipedia.org/wiki/APIDS&amp;lt;br /&amp;gt;&lt;br /&gt;
PHP Intrusion Detection System (PHP-IDS) - http://php-ids.org/ http://code.google.com/p/phpids/&amp;lt;br /&amp;gt;&lt;br /&gt;
dotnetids - http://code.google.com/p/dotnetids/&amp;lt;br /&amp;gt;&lt;br /&gt;
Secure Science InterScout - http://www.securescience.com/home/newsandevents/news/interscout1.0.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Remo: whitelist rule editor for mod_security - http://remo.netnea.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
GotRoot: ModSecuirty rules - http://www.gotroot.com/tiki-index.php?page=mod_security+rules&amp;lt;br /&amp;gt;&lt;br /&gt;
The Web Security Gateway (WSGW) - http://wsgw.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
mod_security rules generator - http://noeljackson.com/tools/modsecurity/&amp;lt;br /&amp;gt;&lt;br /&gt;
Mod_Anti_Tamper - http://www.wisec.it/projects.php?id=3&amp;lt;br /&amp;gt;&lt;br /&gt;
[TGZ] Automatic Rules Generation for Mod_Security - http://www.wisec.it/rdr.php?fn=/Projects/Rule-o-matic.tgz&amp;lt;br /&amp;gt;&lt;br /&gt;
AQTRONIX WebKnight - http://www.aqtronix.com/?PageID=99&amp;lt;br /&amp;gt;&lt;br /&gt;
Akismet: blog spam defense - http://akismet.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Samoa: Formal tools for securing web services - http://research.microsoft.com/projects/samoa/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web services enumeration / scanning / fuzzing==&lt;br /&gt;
WebServiceStudio2.0 - http://www.codeplex.com/WebserviceStudio&amp;lt;br /&amp;gt;&lt;br /&gt;
Net-square: wsChess - http://net-square.com/wschess/index.shtml&amp;lt;br /&amp;gt;&lt;br /&gt;
WSFuzzer - http://www.owasp.org/index.php/Category:OWASP_WSFuzzer_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
SIFT: web method search tool - http://www.sift.com.au/73/171/sift-web-method-search-tool.htm&amp;lt;br /&amp;gt;&lt;br /&gt;
iSecPartners: WSMap, WSBang, etc - http://www.isecpartners.com/tools.html&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web application non-specific static source-code analysis==&lt;br /&gt;
Pixy: a static analysis tool for detecting XSS vulnerabilities - http://www.seclab.tuwien.ac.at/projects/pixy/&amp;lt;br /&amp;gt;&lt;br /&gt;
Brixoft.Net: Source Edit - http://www.brixoft.net/prodinfo.asp?id=1&amp;lt;br /&amp;gt;&lt;br /&gt;
Security compass web application auditing tools (SWAAT) - http://www.owasp.org/index.php/Category:OWASP_SWAAT_Project&amp;lt;br /&amp;gt;&lt;br /&gt;
An even more complete list here - http://www.cs.cmu.edu/~aldrich/courses/654/tools/&amp;lt;br /&amp;gt;&lt;br /&gt;
A nice list that claims some demos available - http://www.cs.cmu.edu/~aldrich/courses/413/tools.html&amp;lt;br /&amp;gt;&lt;br /&gt;
A smaller, but also good list - http://spinroot.com/static/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Static analysis for C/C++ (CGI, ISAPI, etc) in web applications==&lt;br /&gt;
RATS - http://www.securesoftware.com/resources/download_rats.html&amp;lt;br /&amp;gt;&lt;br /&gt;
ITS4 - http://www.cigital.com/its4/&amp;lt;br /&amp;gt;&lt;br /&gt;
FlawFinder - http://www.dwheeler.com/flawfinder/&amp;lt;br /&amp;gt;&lt;br /&gt;
Splint - http://www.splint.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Uno - http://spinroot.com/uno/&amp;lt;br /&amp;gt;&lt;br /&gt;
BOON (Buffer Overrun detectiON) - http://www.cs.berkeley.edu/~daw/boon/ http://boon.sourceforge.net&amp;lt;br /&amp;gt;&lt;br /&gt;
Valgrind - http://www.valgrind.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Java static analysis, security frameworks, and web application security tools==&lt;br /&gt;
HDIV Struts - http://hdiv.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Orizon - http://sourceforge.net/projects/orizon/&amp;lt;br /&amp;gt;&lt;br /&gt;
FindBugs: Find bugs in Java programs - http://findbugs.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
PMD - http://pmd.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
CUTE: A Concolic Unit Testing Engine for C and Java - http://osl.cs.uiuc.edu/~ksen/cute/&amp;lt;br /&amp;gt;&lt;br /&gt;
EMMA - http://emma.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
JLint - http://jlint.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Java PathFinder - http://javapathfinder.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Fujaba: Move between UML and Java source code - http://wwwcs.uni-paderborn.de/cs/fujaba/&amp;lt;br /&amp;gt;&lt;br /&gt;
Checkstyle - http://checkstyle.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Cookie Revolver Security Framework - http://sourceforge.net/projects/cookie-revolver&amp;lt;br /&amp;gt;&lt;br /&gt;
tinapoc - http://sourceforge.net/projects/tinapoc&amp;lt;br /&amp;gt;&lt;br /&gt;
jarsigner - http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/jarsigner.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Solex - http://solex.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Java Explorer - http://metal.hurlant.com/jexplore/&amp;lt;br /&amp;gt;&lt;br /&gt;
HTTPClient - http://www.innovation.ch/java/HTTPClient/&amp;lt;br /&amp;gt;&lt;br /&gt;
another HttpClient - http://jakarta.apache.org/commons/httpclient/&amp;lt;br /&amp;gt;&lt;br /&gt;
a list of code coverage and analysis tools for Java - http://mythinkpond.blogspot.com/2007/06/java-foss-freeopen-source-software.html&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Microsoft .NET static analysis and security framework tools, mostly for ASP.NET and ASP.NET AJAX, but also C# and VB.NET==&lt;br /&gt;
Orcas - http://msdn.microsoft.com/vstudio/express/future/downloads/default.aspx&amp;lt;br /&amp;gt;&lt;br /&gt;
Web Development Helper - http://www.nikhilk.net/Project.WebDevHelper.aspx&amp;lt;br /&amp;gt;&lt;br /&gt;
FxCop - http://blogs.msdn.com/fxcop/ http://www.gotdotnet.com/team/fxcop/&amp;lt;br /&amp;gt;&lt;br /&gt;
Microsoft Application Verifier - http://www.microsoft.com/technet/prodtechnol/windows/appcompatibility/appverifier.mspx&amp;lt;br /&amp;gt;&lt;br /&gt;
Microsoft internal tools you can't have yet - http://www.microsoft.com/windows/cse/pa_projects.mspx http://research.microsoft.com/Pex/ http://www.owasp.org/images/5/5b/OWASP_IL_7_FuzzGuru.pdf&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Threat modeling==&lt;br /&gt;
Microsoft Threat Analysis and Modeling Tool v2.1 (TAM) - http://www.microsoft.com/downloads/details.aspx?FamilyID=59888078-9daf-4e96-b7d1-944703479451&amp;amp;displaylang=en&amp;lt;br /&amp;gt;&lt;br /&gt;
Amenaza: Attack Tree Modeling (SecurITree) - http://www.amenaza.com/software.php&amp;lt;br /&amp;gt;&lt;br /&gt;
Octotrike - http://www.octotrike.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Add-ons for Firefox that help with general web application security==&lt;br /&gt;
Web Developer Toolbar - https://addons.mozilla.org/firefox/60/&amp;lt;br /&amp;gt;&lt;br /&gt;
Plain Old Webserver (POW) - https://addons.mozilla.org/firefox/3002/&amp;lt;br /&amp;gt;&lt;br /&gt;
XML Developer Toolbar - https://addons.mozilla.org/firefox/2897/&amp;lt;br /&amp;gt;&lt;br /&gt;
Public Fox - https://addons.mozilla.org/firefox/3911/&amp;lt;br /&amp;gt;&lt;br /&gt;
XForms Buddy - http://beaufour.dk/index.php?sec=misc&amp;amp;pagename=xforms&amp;lt;br /&amp;gt;&lt;br /&gt;
MR Tech Local Install - http://www.mrtech.com/extensions/local_install/&amp;lt;br /&amp;gt;&lt;br /&gt;
Nightly Tester Tools - http://users.blueprintit.co.uk/~dave/web/firefox/buildid/index.html&amp;lt;br /&amp;gt;&lt;br /&gt;
IE Tab - https://addons.mozilla.org/firefox/1419/&amp;lt;br /&amp;gt;&lt;br /&gt;
User-Agent Switcher - https://addons.mozilla.org/firefox/59/&amp;lt;br /&amp;gt;&lt;br /&gt;
ServerSwitcher - https://addons.mozilla.org/firefox/2409/&amp;lt;br /&amp;gt;&lt;br /&gt;
HeaderMonitor - https://addons.mozilla.org/firefox/575/&amp;lt;br /&amp;gt;&lt;br /&gt;
RefControl - https://addons.mozilla.org/firefox/953/&amp;lt;br /&amp;gt;&lt;br /&gt;
refspoof - https://addons.mozilla.org/firefox/667/&amp;lt;br /&amp;gt;&lt;br /&gt;
No-Referrer - https://addons.mozilla.org/firefox/1999/&amp;lt;br /&amp;gt;&lt;br /&gt;
LocationBar^2 - https://addons.mozilla.org/firefox/4014/&amp;lt;br /&amp;gt;&lt;br /&gt;
SpiderZilla - http://spiderzilla.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Slogger - https://addons.mozilla.org/en-US/firefox/addon/143&amp;lt;br /&amp;gt;&lt;br /&gt;
Fire Encrypter - https://addons.mozilla.org/firefox/3208/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Add-ons for Firefox that help with Javascript and Ajax web application security==&lt;br /&gt;
Selenium IDE - http://www.openqa.org/selenium-ide/&amp;lt;br /&amp;gt;&lt;br /&gt;
Firebug - http://www.joehewitt.com/software/firebug/&amp;lt;br /&amp;gt;&lt;br /&gt;
Venkman - http://www.mozilla.org/projects/venkman/&amp;lt;br /&amp;gt;&lt;br /&gt;
Chickenfoot - http://groups.csail.mit.edu/uid/chickenfoot/&amp;lt;br /&amp;gt;&lt;br /&gt;
Greasemonkey - http://www.greasespot.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Greasemonkey compiler - http://www.letitblog.com/greasemonkey-compiler/&amp;lt;br /&amp;gt;&lt;br /&gt;
User script compiler - http://arantius.com/misc/greasemonkey/script-compiler&amp;lt;br /&amp;gt;&lt;br /&gt;
Extension Developer's Extension (Firefox Add-on) - http://ted.mielczarek.org/code/mozilla/extensiondev/&amp;lt;br /&amp;gt;&lt;br /&gt;
Smart Middle Click (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/3885/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bookmarklets that aid in web application security==&lt;br /&gt;
RSnake's security bookmarklets - http://ha.ckers.org/bookmarklets.html&amp;lt;br /&amp;gt;&lt;br /&gt;
BMlets - http://optools.awardspace.com/bmlet.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Huge list of bookmarklets - http://www.squarefree.com/bookmarklets/&amp;lt;br /&amp;gt;&lt;br /&gt;
Blummy: consists of small widgets, called blummlets, which make use of Javascript to provide&lt;br /&gt;
rich functionality - http://www.blummy.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
Bookmarklets every blogger should have - http://www.micropersuasion.com/2005/10/bookmarklets_ev.html&amp;lt;br /&amp;gt;&lt;br /&gt;
Flat Bookmark Editing (Firefox Add-on) - http://n01se.net/chouser/proj/mozhack/&amp;lt;br /&amp;gt;&lt;br /&gt;
OpenBook and Update Bookmark (Firefox Add-ons) - http://www.chuonthis.com/extensions/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SSL certificate checking / scanning==&lt;br /&gt;
[ZIP] THCSSLCheck - http://thc.org/root/tools/THCSSLCheck.zip&amp;lt;br /&amp;gt;&lt;br /&gt;
[ZIP] Foundstone SSLDigger - http://www.foundstone.com/us/resources/termsofuse.asp?file=ssldigger.zip&amp;lt;br /&amp;gt;&lt;br /&gt;
Cert Viewer Plus (Firefox Add-on) - https://addons.mozilla.org/firefox/1964/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Honeyclients, Web Application, and Web Proxy honeypots==&lt;br /&gt;
Honeyclient Project: an open-source honeyclient - http://www.honeyclient.org/trac/ &amp;lt;br /&amp;gt;&lt;br /&gt;
HoneyC: the low-interaction honeyclient - http://honeyc.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Capture: a high-interaction honeyclient - http://capture-hpc.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Google Hack Honeypot - http://ghh.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
PHP.Hop - PHP Honeynet Project - http://www.rstack.org/phphop/&amp;lt;br /&amp;gt;&lt;br /&gt;
SpyBye - http://www.monkey.org/~provos/spybye/&amp;lt;br /&amp;gt;&lt;br /&gt;
Honeytokens - http://www.securityfocus.com/infocus/1713&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Blackhat SEO and maybe some whitehat SEO==&lt;br /&gt;
SearchStatus (Firefox Add-on) - http://www.quirk.biz/searchstatus/&amp;lt;br /&amp;gt;&lt;br /&gt;
SEO for Firefox (Firefox Add-on) - http://tools.seobook.com/firefox/seo-for-firefox.html&amp;lt;br /&amp;gt;&lt;br /&gt;
SEOQuake (Firefox Add-on) - http://www.seoquake.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Footprinting for web application security==&lt;br /&gt;
Evolution - http://www.paterva.com/evolution-e.html&amp;lt;br /&amp;gt;&lt;br /&gt;
GooSweep - http://www.mcgrewsecurity.com/projects/goosweep/&amp;lt;br /&amp;gt;&lt;br /&gt;
Aura: Google API Utility Tools - http://www.sensepost.com/research/aura/&amp;lt;br /&amp;gt;&lt;br /&gt;
Edge-Security tools - http://www.edge-security.com/soft.php&amp;lt;br /&amp;gt;&lt;br /&gt;
Fierce Domain Scanner - http://ha.ckers.org/fierce/&amp;lt;br /&amp;gt;&lt;br /&gt;
Googlegath - http://www.nothink.org/perl/googlegath/&amp;lt;br /&amp;gt;&lt;br /&gt;
Advanced Dork (Firefox Add-on) - https://addons.mozilla.org/firefox/2144/&amp;lt;br /&amp;gt;&lt;br /&gt;
Passive Cache (Firefox Add-on) - https://addons.mozilla.org/firefox/977/&amp;lt;br /&amp;gt;&lt;br /&gt;
CacheOut! (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1453/&amp;lt;br /&amp;gt;&lt;br /&gt;
BugMeNot Extension (Firefox Add-on) - http://roachfiend.com/archives/2005/02/07/bugmenot/&amp;lt;br /&amp;gt;&lt;br /&gt;
TrashMail.net Extension (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1813/&amp;lt;br /&amp;gt;&lt;br /&gt;
DiggiDig (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/2819/&amp;lt;br /&amp;gt;&lt;br /&gt;
Digger (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1467/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Database security assessment==&lt;br /&gt;
Scuba by Imperva Database Vulnerability Scanner - http://www.imperva.com/scuba/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Browser Defenses==&lt;br /&gt;
DieHard - http://www.diehard-software.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
LocalRodeo (Firefox Add-on) - http://databasement.net/labs/localrodeo/&amp;lt;br /&amp;gt;&lt;br /&gt;
NoMoXSS - http://www.seclab.tuwien.ac.at/projects/jstaint/&amp;lt;br /&amp;gt;&lt;br /&gt;
Request Rodeo - http://savannah.nongnu.org/projects/requestrodeo&amp;lt;br /&amp;gt;&lt;br /&gt;
FlashBlock (Firefox Add-on) - http://flashblock.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
CookieSafe (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/2497&amp;lt;br /&amp;gt;&lt;br /&gt;
NoScript (Firefox Add-on) - http://www.noscript.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
FormFox (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1579/&amp;lt;br /&amp;gt;&lt;br /&gt;
Adblock (Firefox Add-on) - http://adblock.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
httpOnly in Firefox (Firefox Add-on) - http://blog.php-security.org/archives/40-httpOnly-Cookies-in-Firefox-2.0.html&amp;lt;br /&amp;gt;&lt;br /&gt;
SafeCache (Firefox Add-on) - http://www.safecache.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
SafeHistory (Firefox Add-on) - http://www.safehistory.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
PrefBar (Firefox Add-on) - http://prefbar.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
All-in-One Sidebar (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/1027/&amp;lt;br /&amp;gt;&lt;br /&gt;
QArchive.org web file checker (Firefox Add-on) - https://addons.mozilla.org/firefox/4115/&amp;lt;br /&amp;gt;&lt;br /&gt;
Update Notified (Firefox Add-on) - https://addons.mozilla.org/en-US/firefox/addon/2098/&amp;lt;br /&amp;gt;&lt;br /&gt;
FireKeeper - http://firekeeper.mozdev.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
Greasemonkey: XSS Malware Script Detector (http://yehg.co.nr) -  http://userscripts.org/scripts/show/22955&lt;br /&gt;
&lt;br /&gt;
==Browser Privacy==&lt;br /&gt;
TrackMeNot (Firefox Add-on) - https://addons.mozilla.org/firefox/3173/&amp;lt;br /&amp;gt;&lt;br /&gt;
Privacy Bird - http://www.privacybird.com/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Application and protocol fuzzing (random instead of targeted)==&lt;br /&gt;
Sulley - http://fuzzing.org/&amp;lt;br /&amp;gt;&lt;br /&gt;
taof: The Art of Fuzzing - http://sourceforge.net/projects/taof/&amp;lt;br /&amp;gt;&lt;br /&gt;
zzuf: multipurpose fuzzer - http://sam.zoy.org/zzuf/&amp;lt;br /&amp;gt;&lt;br /&gt;
autodafé: an act of software torture - http://autodafe.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
EFS and GPF: Evolutionary Fuzzing System - http://www.appliedsec.com/resources.html&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:ParanoidMike&amp;diff=34351</id>
		<title>User:ParanoidMike</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:ParanoidMike&amp;diff=34351"/>
				<updated>2008-07-20T06:05:36Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Who: Mike Smith-Lonergan&lt;br /&gt;
&lt;br /&gt;
What: Security Consultant in the Security Center of Excellence group at Intel.&lt;br /&gt;
&lt;br /&gt;
Where: Portland, OR&lt;br /&gt;
&lt;br /&gt;
Why: I'm here to make what contributions I can to this site (which to me appears to be one of the strongest online resources dedicated to Threat Modeling and to providing actionable mitigations for software vulnerabilities).&lt;br /&gt;
&lt;br /&gt;
[http://paranoidmike.blogspot.com Sporadic blog]&lt;br /&gt;
&lt;br /&gt;
[http://www.codeplex.com/site/users/view/MikeSL Codeplex open-source software projects]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:ParanoidMike&amp;diff=34350</id>
		<title>User:ParanoidMike</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:ParanoidMike&amp;diff=34350"/>
				<updated>2008-07-20T06:05:08Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Who: Mike Smith-Lonergan&lt;br /&gt;
&lt;br /&gt;
What: Security Consultant in the Security Center of Excellence group at Intel.&lt;br /&gt;
&lt;br /&gt;
Where: Portland, OR&lt;br /&gt;
&lt;br /&gt;
Why: I'm here to make what contributions I can to this site (which to me appears to be one of the strongest online resources dedicated to Threat Modeling and to providing actionable mitigations for software vulnerabilities).&lt;br /&gt;
&lt;br /&gt;
[http://paranoidmike.blogspot.com Sporadic blog]&lt;br /&gt;
[http://www.codeplex.com/site/users/view/MikeSL Codeplex open-source software projects]&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:ParanoidMike&amp;diff=34349</id>
		<title>User:ParanoidMike</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:ParanoidMike&amp;diff=34349"/>
				<updated>2008-07-20T06:03:07Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: New page: Who: Mike Smith-Lonergan What: Security Consultant in the Security Center of Excellence group at Intel. Where: Portland, OR Why: I'm here to make what contributions I can to this site (whi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Who: Mike Smith-Lonergan&lt;br /&gt;
What: Security Consultant in the Security Center of Excellence group at Intel.&lt;br /&gt;
Where: Portland, OR&lt;br /&gt;
Why: I'm here to make what contributions I can to this site (which to me appears to be one of the strongest online resources dedicated to Threat Modeling and to providing actionable mitigations for software vulnerabilities).&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34347</id>
		<title>FxCop</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34347"/>
				<updated>2008-07-20T05:27:51Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* References */ added reference to Smokey (tool similar to FxCop)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is FxCop? ==&lt;br /&gt;
FxCop is a free code analysis tool developed by Microsoft, use to analyze MSIL (Microsoft Intermediate Language) generated from any managed language (including C# and VB.NET).&lt;br /&gt;
&lt;br /&gt;
FxCop is a standalone .NET 2.0 application, downloadable from the locations referenced below.  A modified version of the FxCop codebase is integrated into Microsoft Visual Studio 2005 and 2008.  While the rulebase for each is mostly the same, there are notable differences between the two (see the Rules comparison spreadsheet [[FxCop#References | below]]), and the compiled format for custom rules is different; thus, one cannot generally develop custom rules that can be used natively in both contexts.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis FxCop v1.35]&lt;br /&gt;
* Download - [http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&amp;amp;displaylang=en FxCop v1.36 (beta)]&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=556 Rules comparison spreadsheet] - documenting the rules differences between those shipped with FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Documentation - [http://msdn.microsoft.com/library/bb429476.aspx FxCop] - MSDN documentation for FxCop&lt;br /&gt;
* Forum - [http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=98&amp;amp;SiteID=1 Visual Studio Code Analysis and Code Metrics] - MSDN forum to discuss issues and ideas regarding FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://blogs.msdn.com/fxcop/ Microsoft Code Analysis Team blog] - addresses both the standalone FxCop tool as well as the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://davesbox.com/ Dave's Box] - personal blog written by a member of Microsoft's Code Analysis team&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/JSLFxCop JSL FxCop] - open-source utility to help build custom FxCop rules&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/LephoneFxCopRules Lephone FxCop Rules] - simple set of custom rules and the source code to create them&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/CSAR Community Static Analysis Rules] - &amp;quot;a community-based project for creating a set of static analysis rules to extend those provided by the FxCop team.&amp;quot;&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/fxcopdelta FxCop Delta] - &amp;quot;a custom check-in policy for Visual Studio Team System that runs FxCop rules before performing a check-in.&amp;quot;&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/FinRadFxCopStats FinRad Statistics Collector for FxCop] - &amp;quot;...intended to help development teams to track the progress of an FxCop backlog cleanup effort.&amp;quot;&lt;br /&gt;
* Google project - [http://code.google.com/p/smokey/ Smokey] - tool similar to FxCop for analysing managed code; has 220 separate rules.&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34346</id>
		<title>FxCop</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=FxCop&amp;diff=34346"/>
				<updated>2008-07-20T05:14:21Z</updated>
		
		<summary type="html">&lt;p&gt;ParanoidMike: /* References */ added Documentation link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is FxCop? ==&lt;br /&gt;
FxCop is a free code analysis tool developed by Microsoft, use to analyze MSIL (Microsoft Intermediate Language) generated from any managed language (including C# and VB.NET).&lt;br /&gt;
&lt;br /&gt;
FxCop is a standalone .NET 2.0 application, downloadable from the locations referenced below.  A modified version of the FxCop codebase is integrated into Microsoft Visual Studio 2005 and 2008.  While the rulebase for each is mostly the same, there are notable differences between the two (see the Rules comparison spreadsheet [[FxCop#References | below]]), and the compiled format for custom rules is different; thus, one cannot generally develop custom rules that can be used natively in both contexts.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis FxCop v1.35]&lt;br /&gt;
* Download - [http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&amp;amp;displaylang=en FxCop v1.36 (beta)]&lt;br /&gt;
* Download - [http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=556 Rules comparison spreadsheet] - documenting the rules differences between those shipped with FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Documentation - [http://msdn.microsoft.com/library/bb429476.aspx FxCop] - MSDN documentation for FxCop&lt;br /&gt;
* Forum - [http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=98&amp;amp;SiteID=1 Visual Studio Code Analysis and Code Metrics] - MSDN forum to discuss issues and ideas regarding FxCop and the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://blogs.msdn.com/fxcop/ Microsoft Code Analysis Team blog] - addresses both the standalone FxCop tool as well as the Visual Studio Code Analysis feature&lt;br /&gt;
* Blog - [http://davesbox.com/ Dave's Box] - personal blog written by a member of Microsoft's Code Analysis team&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/JSLFxCop JSL FxCop] - open-source utility to help build custom FxCop rules&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/LephoneFxCopRules Lephone FxCop Rules] - simple set of custom rules and the source code to create them&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/CSAR Community Static Analysis Rules] - &amp;quot;a community-based project for creating a set of static analysis rules to extend those provided by the FxCop team.&amp;quot;&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/fxcopdelta FxCop Delta] - &amp;quot;a custom check-in policy for Visual Studio Team System that runs FxCop rules before performing a check-in.&amp;quot;&lt;br /&gt;
* CodePlex project - [http://www.codeplex.com/FinRadFxCopStats FinRad Statistics Collector for FxCop] - &amp;quot;...intended to help development teams to track the progress of an FxCop backlog cleanup effort.&amp;quot;&lt;/div&gt;</summary>
		<author><name>ParanoidMike</name></author>	</entry>

	</feed>