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

	<entry>
		<id>https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=25475</id>
		<title>.NET Web Service Validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=25475"/>
				<updated>2008-02-17T00:12:11Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Downloading */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There was a great article on MSDN a while back (years at this point) that showed the creation of a SOAP extension that would verify incoming requests against a schema, something .NET does not support out of the box (even in 2.0).  Additionally there was quasi support for [http://www.schematron.com/ schematron] via Assert attributes.  This allows for a very powerful input validation of web services.&lt;br /&gt;
&lt;br /&gt;
This is a project to provide continued support for this extension.  There have been some updates to the original code, including moving to the .NET Framework v2.0.&lt;br /&gt;
&lt;br /&gt;
The original article is available [http://msdn.microsoft.com/msdnmag/issues/03/07/XMLSchemaValidation/ here].&lt;br /&gt;
&lt;br /&gt;
== Performance Penalties ==&lt;br /&gt;
&lt;br /&gt;
To add in XML schema validation we must parse the soap packet ourselves.  This of course will incur an additional performance hit outside of simply turning on validation.  Unfortunately there is no method (that I'm aware of) to enable schema validation in .NET currently.&lt;br /&gt;
&lt;br /&gt;
== Downloading ==&lt;br /&gt;
&lt;br /&gt;
[http://canoodle.googlecode.com/files/SoapValidation-0.5.msi SoapValidation-0.5.msi] - Assembly, documentation, samples&lt;br /&gt;
&lt;br /&gt;
[http://canoodle.googlecode.com/files/SoapValidation-0.5-src.zip SoapValidation-0.5-src.zip] - Source, documentation, samples&lt;br /&gt;
&lt;br /&gt;
The latest code is now being maintained in a [http://code.google.com/p/canoodle/ Google Code repository].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the installer and run.  Easy :)&lt;br /&gt;
&lt;br /&gt;
== Reporting Bugs ==&lt;br /&gt;
&lt;br /&gt;
Report bugs to Michael Eddington @ meddington@phed.org.&lt;br /&gt;
&lt;br /&gt;
== Use ==&lt;br /&gt;
&lt;br /&gt;
Add a reference to SoapValidator.dll from your web service project.  Modify your web.config to include the required settings and add attributes to classes and/or methods.  See examples later.&lt;br /&gt;
&lt;br /&gt;
=== Methods of Use ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for using the validator.  First you can force all web methods to be validated using the web.config file.  Second you can mark methods using [Validation] attribute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Attributes&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;Validation&amp;lt;/strong&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Mark web method for validation against schemas&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;ValidationSchemaFolder&amp;lt;/strong&amp;gt;(string relativeFolder)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add folders that contain schemas to load and cache.&amp;amp;nbsp; This attribute is only valid for classes.&amp;amp;nbsp; The relativeFolder parameter is relative to the vroot.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;relativeFolder&amp;lt;/em&amp;gt; -- Folder of schemas to load and cache.&amp;amp;nbsp; Relative to the virtual root (vroot).&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;ValidationSchema&amp;lt;/strong&amp;gt;(string schemaFile)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add schema files to load and cache.&amp;amp;nbsp; This attribute is only valid for classes.&amp;amp;nbsp; The schemaFile parameter is relative to the vroot.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;schemaFile&amp;lt;/em&amp;gt; -- Schema file to load.&amp;amp;nbsp; Relative to the virtual root (vroot).&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;Assert&amp;lt;/strong&amp;gt;(string rule)]&amp;lt;br&amp;gt;[&amp;lt;strong&amp;gt;Assert&amp;lt;/strong&amp;gt;(string rule, string description)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add an XPath&amp;amp;nbsp;validation expression to a web method.&amp;amp;nbsp; The XPath expression must evaluate to true.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;rule&amp;lt;/em&amp;gt; -- XPath validation expression.&amp;amp;nbsp; Must evaluate to true. &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;description&amp;lt;/em&amp;gt; -- [optional] Description of assertion rule.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;AssertNamespaceBinding&amp;lt;/strong&amp;gt;(string prefix, string ns)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Specifies namespace bindings used by assert xpath's.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;prefix&amp;lt;/em&amp;gt; -- namespace prefix &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;ns&amp;lt;/em&amp;gt; -- namespace to map to&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Web.config Changes&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;First two extensions must be registered by adding the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;soapExtensionReflectorTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationExtensionReflector, SoapValidation&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/soapExtensionReflectorTypes&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;serviceDescriptionFormatExtensionTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationFormatExtension, SoapValidation&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/serviceDescriptionFormatExtensionTypes&amp;amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Next, POST and GET protocols must be disabled by adding the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;protocols&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;amp;lt;remove name=&amp;quot;HttpPost&amp;quot; /&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;remove name=&amp;quot;HttpGet&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/protocols&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Finally, if you want to force all web methods to be validated with out using the [Validation] attribute add the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;soapExtensionTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationExtension, SoapValidation&amp;quot; priority=&amp;quot;1&amp;quot; group=&amp;quot;0&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;/soapExtensionTypes&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Using Validation&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Here is a basic example that will cause validation to be run:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;[WebService(Namespace=&amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]public&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&lt;br /&gt;
public&amp;lt;/a&amp;gt; class SimpleTests : System.Web.Services.WebService&lt;br /&gt;
{ &lt;br /&gt;
  [WebMethod]&lt;br /&gt;
  [Validation]&lt;br /&gt;
  public double CalcArea2(double length, double width)&lt;br /&gt;
  {&lt;br /&gt;
    return length * width;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Using Assertions&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Here is an example of using assertions to verify business rules in a way schema's fall short.&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;[AssertNamespaceBinding(&amp;quot;t&amp;quot;, &amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&amp;lt;/a&amp;gt;&lt;br /&gt;
[WebService(Namespace=&amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&amp;lt;/a&amp;gt;&lt;br /&gt;
public class SimpleTests : System.Web.Services.WebService&lt;br /&gt;
{ &lt;br /&gt;
  [WebMethod]&lt;br /&gt;
  [Validation]&lt;br /&gt;
  [Assert(&amp;quot;(//t:length * //t:width) &amp;amp;gt; 100&amp;quot;, &amp;quot;Area must be greater than 100&amp;quot;)]&lt;br /&gt;
  [Assert(&amp;quot;(//t:length div //t:width) = 2&amp;quot;, &amp;quot;Length must be exactly twice width&amp;quot;)]&lt;br /&gt;
  public double CalcArea2(double length, double width)&lt;br /&gt;
  {&lt;br /&gt;
    return length * width;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP .NET Project]]&lt;br /&gt;
[[Category:OWASP Download]]&lt;br /&gt;
[[Category:OWASP Tool]]&lt;br /&gt;
[[Category:OWASP Validation Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=25387</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=25387"/>
				<updated>2008-02-14T21:17:49Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Credit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the [http://www.json.org/ JSON page] for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== JSON ==&lt;br /&gt;
&lt;br /&gt;
=== Never send JSON via Querystring ===&lt;br /&gt;
&lt;br /&gt;
Sending JSON over a querystring would typically cause a cross-site scripting vulnerability as JSON strings are eval'd by the Javascript.  JSON content should always come from a trusted source as the content body.&lt;br /&gt;
&lt;br /&gt;
=== Always return JSON with an Object on the outside ===&lt;br /&gt;
&lt;br /&gt;
Always have the outside primitive be an object for JSON strings.  This will help mitigate so called &amp;quot;JavaScript Hijacking&amp;quot; as talked about in [http://www.fortifysoftware.com/servlet/downloads/public/JavaScript_Hijacking.pdf this paper].&lt;br /&gt;
&lt;br /&gt;
'''Explotable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[{&amp;quot;object&amp;quot;: &amp;quot;inside an array&amp;quot;}]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Not exploitable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;object&amp;quot;: &amp;quot;not inside an array&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Also not exploitable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;result&amp;quot;: [{&amp;quot;object&amp;quot;: &amp;quot;inside an array&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[[:.NET_Web_Service_Validation|Check out OWASP .NET Web Service Validation.]]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing framework ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get right.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
Last updated 02/13/2008&lt;br /&gt;
&lt;br /&gt;
Created on 12/12/2006&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;br /&gt;
[[Category:AJAX]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=25386</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=25386"/>
				<updated>2008-02-14T21:17:37Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Credit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the [http://www.json.org/ JSON page] for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== JSON ==&lt;br /&gt;
&lt;br /&gt;
=== Never send JSON via Querystring ===&lt;br /&gt;
&lt;br /&gt;
Sending JSON over a querystring would typically cause a cross-site scripting vulnerability as JSON strings are eval'd by the Javascript.  JSON content should always come from a trusted source as the content body.&lt;br /&gt;
&lt;br /&gt;
=== Always return JSON with an Object on the outside ===&lt;br /&gt;
&lt;br /&gt;
Always have the outside primitive be an object for JSON strings.  This will help mitigate so called &amp;quot;JavaScript Hijacking&amp;quot; as talked about in [http://www.fortifysoftware.com/servlet/downloads/public/JavaScript_Hijacking.pdf this paper].&lt;br /&gt;
&lt;br /&gt;
'''Explotable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[{&amp;quot;object&amp;quot;: &amp;quot;inside an array&amp;quot;}]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Not exploitable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;object&amp;quot;: &amp;quot;not inside an array&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Also not exploitable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;result&amp;quot;: [{&amp;quot;object&amp;quot;: &amp;quot;inside an array&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[[:.NET_Web_Service_Validation|Check out OWASP .NET Web Service Validation.]]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing framework ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get right.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
Last updated 02/13/2008&lt;br /&gt;
Created on 12/12/2006&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;br /&gt;
[[Category:AJAX]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=25385</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=25385"/>
				<updated>2008-02-14T21:15:31Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Never transmit secrets to the client */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the [http://www.json.org/ JSON page] for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== JSON ==&lt;br /&gt;
&lt;br /&gt;
=== Never send JSON via Querystring ===&lt;br /&gt;
&lt;br /&gt;
Sending JSON over a querystring would typically cause a cross-site scripting vulnerability as JSON strings are eval'd by the Javascript.  JSON content should always come from a trusted source as the content body.&lt;br /&gt;
&lt;br /&gt;
=== Always return JSON with an Object on the outside ===&lt;br /&gt;
&lt;br /&gt;
Always have the outside primitive be an object for JSON strings.  This will help mitigate so called &amp;quot;JavaScript Hijacking&amp;quot; as talked about in [http://www.fortifysoftware.com/servlet/downloads/public/JavaScript_Hijacking.pdf this paper].&lt;br /&gt;
&lt;br /&gt;
'''Explotable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[{&amp;quot;object&amp;quot;: &amp;quot;inside an array&amp;quot;}]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Not exploitable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;object&amp;quot;: &amp;quot;not inside an array&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Also not exploitable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;result&amp;quot;: [{&amp;quot;object&amp;quot;: &amp;quot;inside an array&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[[:.NET_Web_Service_Validation|Check out OWASP .NET Web Service Validation.]]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing framework ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get right.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
Last updated 02/13/2008&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;br /&gt;
[[Category:AJAX]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=25384</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=25384"/>
				<updated>2008-02-14T21:15:08Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Avoid writing serialization code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the [http://www.json.org/ JSON page] for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== JSON ==&lt;br /&gt;
&lt;br /&gt;
=== Never send JSON via Querystring ===&lt;br /&gt;
&lt;br /&gt;
Sending JSON over a querystring would typically cause a cross-site scripting vulnerability as JSON strings are eval'd by the Javascript.  JSON content should always come from a trusted source as the content body.&lt;br /&gt;
&lt;br /&gt;
=== Always return JSON with an Object on the outside ===&lt;br /&gt;
&lt;br /&gt;
Always have the outside primitive be an object for JSON strings.  This will help mitigate so called &amp;quot;JavaScript Hijacking&amp;quot; as talked about in [http://www.fortifysoftware.com/servlet/downloads/public/JavaScript_Hijacking.pdf this paper].&lt;br /&gt;
&lt;br /&gt;
'''Explotable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[{&amp;quot;object&amp;quot;: &amp;quot;inside an array&amp;quot;}]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Not exploitable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;object&amp;quot;: &amp;quot;not inside an array&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Also not exploitable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;result&amp;quot;: [{&amp;quot;object&amp;quot;: &amp;quot;inside an array&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[[:.NET_Web_Service_Validation|Check out OWASP .NET Web Service Validation.]]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing framework ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get right.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
Last updated 02/13/2008&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;br /&gt;
[[Category:AJAX]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=25383</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=25383"/>
				<updated>2008-02-14T21:11:20Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== JSON ==&lt;br /&gt;
&lt;br /&gt;
=== Never send JSON via Querystring ===&lt;br /&gt;
&lt;br /&gt;
Sending JSON over a querystring would typically cause a cross-site scripting vulnerability as JSON strings are eval'd by the Javascript.  JSON content should always come from a trusted source as the content body.&lt;br /&gt;
&lt;br /&gt;
=== Always return JSON with an Object on the outside ===&lt;br /&gt;
&lt;br /&gt;
Always have the outside primitive be an object for JSON strings.  This will help mitigate so called &amp;quot;JavaScript Hijacking&amp;quot; as talked about in [http://www.fortifysoftware.com/servlet/downloads/public/JavaScript_Hijacking.pdf this paper].&lt;br /&gt;
&lt;br /&gt;
'''Explotable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[{&amp;quot;object&amp;quot;: &amp;quot;inside an array&amp;quot;}]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Not exploitable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;object&amp;quot;: &amp;quot;not inside an array&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Also not exploitable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;result&amp;quot;: [{&amp;quot;object&amp;quot;: &amp;quot;inside an array&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[[:.NET_Web_Service_Validation|Check out OWASP .NET Web Service Validation.]]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing framework ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get right.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
Last updated 02/13/2008&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;br /&gt;
[[Category:AJAX]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=25332</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=25332"/>
				<updated>2008-02-13T21:46:12Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== JSON ==&lt;br /&gt;
&lt;br /&gt;
=== Never send JSON via Querystring ===&lt;br /&gt;
&lt;br /&gt;
Sending JSON over a querystring would typically cause a cross-site scripting vulnerability as JSON strings are eval'd by the Javascript.  JSON content should always come from a trusted source as it will be executed.&lt;br /&gt;
&lt;br /&gt;
=== Always return JSON with an Object on the outside ===&lt;br /&gt;
&lt;br /&gt;
Always have the outside primitive be an object for JSON strings.&lt;br /&gt;
&lt;br /&gt;
'''Explotable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[{&amp;quot;object&amp;quot;: &amp;quot;inside an array&amp;quot;}]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Not exploitable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;object&amp;quot;: &amp;quot;not inside an array&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Also not exploitable:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;result&amp;quot;: [{&amp;quot;object&amp;quot;: &amp;quot;inside an array&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[[:.NET_Web_Service_Validation|Check out OWASP .NET Web Service Validation.]]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing framework ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get right.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
Last updated 02/13/2008&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;br /&gt;
[[Category:AJAX]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=22870</id>
		<title>.NET Web Service Validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=22870"/>
				<updated>2007-11-03T09:30:08Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There was a great article on MSDN a while back (years at this point) that showed the creation of a SOAP extension that would verify incoming requests against a schema, something .NET does not support out of the box (even in 2.0).  Additionally there was quasi support for [http://www.schematron.com/ schematron] via Assert attributes.  This allows for a very powerful input validation of web services.&lt;br /&gt;
&lt;br /&gt;
This is a project to provide continued support for this extension.  There have been some updates to the original code, including moving to the .NET Framework v2.0.&lt;br /&gt;
&lt;br /&gt;
The original article is available [http://msdn.microsoft.com/msdnmag/issues/03/07/XMLSchemaValidation/ here].&lt;br /&gt;
&lt;br /&gt;
== Performance Penalties ==&lt;br /&gt;
&lt;br /&gt;
To add in XML schema validation we must parse the soap packet ourselves.  This of course will incur an additional performance hit outside of simply turning on validation.  Unfortunately there is no method (that I'm aware of) to enable schema validation in .NET currently.&lt;br /&gt;
&lt;br /&gt;
== Downloading ==&lt;br /&gt;
&lt;br /&gt;
[http://canoodle.googlecode.com/files/SoapValidation-0.5.msi SoapValidation-0.5.msi] - Assembly, documentation, samples&lt;br /&gt;
&lt;br /&gt;
[http://canoodle.googlecode.com/files/SoapValidation-0.5-src.zip SoapValidation-0.5-src.zip] - Source, documentation, samples&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the installer and run.  Easy :)&lt;br /&gt;
&lt;br /&gt;
== Reporting Bugs ==&lt;br /&gt;
&lt;br /&gt;
Report bugs to Michael Eddington @ meddington@phed.org.&lt;br /&gt;
&lt;br /&gt;
== Use ==&lt;br /&gt;
&lt;br /&gt;
Add a reference to SoapValidator.dll from your web service project.  Modify your web.config to include the required settings and add attributes to classes and/or methods.  See examples later.&lt;br /&gt;
&lt;br /&gt;
=== Methods of Use ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for using the validator.  First you can force all web methods to be validated using the web.config file.  Second you can mark methods using [Validation] attribute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Attributes&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;Validation&amp;lt;/strong&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Mark web method for validation against schemas&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;ValidationSchemaFolder&amp;lt;/strong&amp;gt;(string relativeFolder)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add folders that contain schemas to load and cache.&amp;amp;nbsp; This attribute is only valid for classes.&amp;amp;nbsp; The relativeFolder parameter is relative to the vroot.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;relativeFolder&amp;lt;/em&amp;gt; -- Folder of schemas to load and cache.&amp;amp;nbsp; Relative to the virtual root (vroot).&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;ValidationSchema&amp;lt;/strong&amp;gt;(string schemaFile)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add schema files to load and cache.&amp;amp;nbsp; This attribute is only valid for classes.&amp;amp;nbsp; The schemaFile parameter is relative to the vroot.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;schemaFile&amp;lt;/em&amp;gt; -- Schema file to load.&amp;amp;nbsp; Relative to the virtual root (vroot).&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;Assert&amp;lt;/strong&amp;gt;(string rule)]&amp;lt;br&amp;gt;[&amp;lt;strong&amp;gt;Assert&amp;lt;/strong&amp;gt;(string rule, string description)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add an XPath&amp;amp;nbsp;validation expression to a web method.&amp;amp;nbsp; The XPath expression must evaluate to true.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;rule&amp;lt;/em&amp;gt; -- XPath validation expression.&amp;amp;nbsp; Must evaluate to true. &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;description&amp;lt;/em&amp;gt; -- [optional] Description of assertion rule.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;AssertNamespaceBinding&amp;lt;/strong&amp;gt;(string prefix, string ns)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Specifies namespace bindings used by assert xpath's.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;prefix&amp;lt;/em&amp;gt; -- namespace prefix &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;ns&amp;lt;/em&amp;gt; -- namespace to map to&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Web.config Changes&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;First two extensions must be registered by adding the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;soapExtensionReflectorTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationExtensionReflector, SoapValidation&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/soapExtensionReflectorTypes&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;serviceDescriptionFormatExtensionTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationFormatExtension, SoapValidation&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/serviceDescriptionFormatExtensionTypes&amp;amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Next, POST and GET protocols must be disabled by adding the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;protocols&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;amp;lt;remove name=&amp;quot;HttpPost&amp;quot; /&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;remove name=&amp;quot;HttpGet&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/protocols&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Finally, if you want to force all web methods to be validated with out using the [Validation] attribute add the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;soapExtensionTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationExtension, SoapValidation&amp;quot; priority=&amp;quot;1&amp;quot; group=&amp;quot;0&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;/soapExtensionTypes&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Using Validation&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Here is a basic example that will cause validation to be run:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;[WebService(Namespace=&amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]public&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&lt;br /&gt;
public&amp;lt;/a&amp;gt; class SimpleTests : System.Web.Services.WebService&lt;br /&gt;
{ &lt;br /&gt;
  [WebMethod]&lt;br /&gt;
  [Validation]&lt;br /&gt;
  public double CalcArea2(double length, double width)&lt;br /&gt;
  {&lt;br /&gt;
    return length * width;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Using Assertions&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Here is an example of using assertions to verify business rules in a way schema's fall short.&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;[AssertNamespaceBinding(&amp;quot;t&amp;quot;, &amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&amp;lt;/a&amp;gt;&lt;br /&gt;
[WebService(Namespace=&amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&amp;lt;/a&amp;gt;&lt;br /&gt;
public class SimpleTests : System.Web.Services.WebService&lt;br /&gt;
{ &lt;br /&gt;
  [WebMethod]&lt;br /&gt;
  [Validation]&lt;br /&gt;
  [Assert(&amp;quot;(//t:length * //t:width) &amp;amp;gt; 100&amp;quot;, &amp;quot;Area must be greater than 100&amp;quot;)]&lt;br /&gt;
  [Assert(&amp;quot;(//t:length div //t:width) = 2&amp;quot;, &amp;quot;Length must be exactly twice width&amp;quot;)]&lt;br /&gt;
  public double CalcArea2(double length, double width)&lt;br /&gt;
  {&lt;br /&gt;
    return length * width;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP .NET Project]]&lt;br /&gt;
[[Category:OWASP Download]]&lt;br /&gt;
[[Category:OWASP Tool]]&lt;br /&gt;
[[Category:OWASP Validation Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=18641</id>
		<title>Category:OWASP Encoding Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=18641"/>
				<updated>2007-05-14T19:13:37Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Download */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Web applications face any number of threats; one of them is cross-site scripting and related injection attacks.  90% of all web applications contain cross-site scripting attacks because they are easy to introduce, and the proper tools are not always available to prevent them.  The Reform library provides a solid set of functions for encoding output for the most common context targets in web applications (e.g. HTML, XML, JavaScript, etc).  The library also takes a conservative view of what are allowable characters based on historical vulnerabilities, and current injection techniques.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide tools needed by developers to mitigate canonicalization issues in web technologies.&lt;br /&gt;
* Provide a solution that will not need to be patched (no security patches since release in 2004, private implementations in use since 2002).&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
[http://reform.googlecode.com/files/Reform-0.12.zip Reform-0.12.zip] (stable)&lt;br /&gt;
&lt;br /&gt;
The latest code is now being maintained in a Google Code repository [http://code.google.com/p/reform/]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Unicode support&lt;br /&gt;
* Context specific functions (HTML, XML, JavaScript, etc)&lt;br /&gt;
* Many supported languages&lt;br /&gt;
** Java&lt;br /&gt;
** .NET v1/v2&lt;br /&gt;
** PHP&lt;br /&gt;
** Python&lt;br /&gt;
** Perl&lt;br /&gt;
** JavaScript&lt;br /&gt;
** ASP&lt;br /&gt;
* Support for AJAX&lt;br /&gt;
* Conservative approach&lt;br /&gt;
* Solves all current XSS techniques&lt;br /&gt;
* Full xUnit style test cases&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
* Ruby support&lt;br /&gt;
* Java framework support&lt;br /&gt;
* LDAP encoding functions&lt;br /&gt;
* Add documentation on resolving XPath issues&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Adopts Reform - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
OWASP is adopting the Reform Encoding Library as an OWASP project.  We are currently in the process of moving over the source, downloads, and documentation.&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Created! - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
The Open Web Application Security Project is proud to announce the OWASP Encoding Project!&lt;br /&gt;
&lt;br /&gt;
== Feedback and Participation: ==&lt;br /&gt;
&lt;br /&gt;
We hope you find the OWASP Encoding Project useful. Please contribute to the Project by volunteering for one of the tasks, sending your comments, questions, and suggestions to owasp@owasp.org.  To join the OWASP Encoding Project mailing list or view the archives, please visit the [http://lists.owasp.org/mailman/listinfo/owasp-encoding subscription page.]&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;br /&gt;
[[Category:OWASP Download]]&lt;br /&gt;
[[Category:OWASP Tool]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=16504</id>
		<title>Category:OWASP Encoding Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=16504"/>
				<updated>2007-02-17T01:18:14Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Web applications face any number of threats; one of them is cross-site scripting and related injection attacks.  90% of all web applications contain cross-site scripting attacks because they are easy to introduce, and the proper tools are not always available to prevent them.  The Reform library provides a solid set of functions for encoding output for the most common context targets in web applications (e.g. HTML, XML, JavaScript, etc).  The library also takes a conservative view of what are allowable characters based on historical vulnerabilities, and current injection techniques.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide tools needed by developers to mitigate canonicalization issues in web technologies.&lt;br /&gt;
* Provide a solution that will not need to be patched (no security patches since release in 2004, private implementations in use since 2002).&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/Reform-0.12.zip Reform-0.12.zip] (stable)&lt;br /&gt;
&lt;br /&gt;
The latest code is now being maintained in a Google Code repository [http://code.google.com/p/reform/]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Unicode support&lt;br /&gt;
* Context specific functions (HTML, XML, JavaScript, etc)&lt;br /&gt;
* Many supported languages&lt;br /&gt;
** Java&lt;br /&gt;
** .NET v1/v2&lt;br /&gt;
** PHP&lt;br /&gt;
** Python&lt;br /&gt;
** Perl&lt;br /&gt;
** JavaScript&lt;br /&gt;
** ASP&lt;br /&gt;
* Support for AJAX&lt;br /&gt;
* Conservative approach&lt;br /&gt;
* Solves all current XSS techniques&lt;br /&gt;
* Full xUnit style test cases&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
* Ruby support&lt;br /&gt;
* Java framework support&lt;br /&gt;
* LDAP encoding functions&lt;br /&gt;
* Add documentation on resolving XPath issues&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Adopts Reform - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
OWASP is adopting the Reform Encoding Library as an OWASP project.  We are currently in the process of moving over the source, downloads, and documentation.&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Created! - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
The Open Web Application Security Project is proud to announce the OWASP Encoding Project!&lt;br /&gt;
&lt;br /&gt;
== Feedback and Participation: ==&lt;br /&gt;
&lt;br /&gt;
We hope you find the OWASP Encoding Project useful. Please contribute to the Project by volunteering for one of the tasks, sending your comments, questions, and suggestions to owasp@owasp.org.  To join the OWASP Encoding Project mailing list or view the archives, please visit the [http://lists.owasp.org/mailman/listinfo/owasp-encoding subscription page.]&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;br /&gt;
[[Category:OWASP Download]]&lt;br /&gt;
[[Category:OWASP Tool]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=14218</id>
		<title>Category:OWASP Encoding Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=14218"/>
				<updated>2006-12-12T05:05:08Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Web applications face any number of threats; one of them is cross-site scripting and related injection attacks.  90% of all web applications contain cross-site scripting attacks because they are easy to introduce, and the proper tools are not always available to prevent them.  There is no good single library that provides all the functions required by developers to incorporate a fix into there code that will stand up to the test of time and continual research in the field.  The Reform library attempts to provide a solid set of functions for encoding output for the most common context targets in web applications (e.g. HTML, XML, JavaScript, etc).  The library also takes a conservative view of what are allowable characters based on historical vulnerabilities, and current injection techniques.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide tools needed by developers to mitigate canonicalization issues in web technologies.&lt;br /&gt;
* Provide a solution that will not need to be patched (no security patches since release in 2004, private implementations in use since 2002).&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/Reform-0.12.zip Reform-0.12.zip] (stable)&lt;br /&gt;
&lt;br /&gt;
The latest code is now being maintained in a Google Code repository [http://code.google.com/p/reform/]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Unicode support&lt;br /&gt;
* Context specific functions (HTML, XML, JavaScript, etc)&lt;br /&gt;
* Many supported languages&lt;br /&gt;
** Java&lt;br /&gt;
** .NET v1/v2&lt;br /&gt;
** PHP&lt;br /&gt;
** Python&lt;br /&gt;
** Perl&lt;br /&gt;
** JavaScript&lt;br /&gt;
** ASP&lt;br /&gt;
* Support for AJAX&lt;br /&gt;
* Conservative approach&lt;br /&gt;
* Solves all current XSS techniques&lt;br /&gt;
* Full xUnit style test cases&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
* Ruby support&lt;br /&gt;
* Java framework support&lt;br /&gt;
* LDAP encoding functions&lt;br /&gt;
* Add documentation on resolving XPath issues&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Adopts Reform - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
OWASP is adopting the Reform Encoding Library as an OWASP project.  We are currently in the process of moving over the source, downloads, and documentation.&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Created! - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
The Open Web Application Security Project is proud to announce the OWASP Encoding Project!&lt;br /&gt;
&lt;br /&gt;
== Feedback and Participation: ==&lt;br /&gt;
&lt;br /&gt;
We hope you find the OWASP Encoding Project useful. Please contribute to the Project by volunteering for one of the tasks, sending your comments, questions, and suggestions to owasp@owasp.org.  To join the OWASP Encoding Project mailing list or view the archives, please visit the [http://lists.owasp.org/mailman/listinfo/owasp-encoding subscription page.]&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;br /&gt;
[[Category:OWASP Download]]&lt;br /&gt;
[[Category:OWASP Tool]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14217</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14217"/>
				<updated>2006-12-12T05:00:44Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Web service calls are not schema verified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[[:.NET_Web_Service_Validation|Check out OWASP .NET Web Service Validation.]]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get right.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14216</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14216"/>
				<updated>2006-12-12T05:00:36Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Avoid building XML dynamically */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/.NET_Web_Service_Validation Check out OWASP .NET Web Service Validation.]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get right.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14215</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14215"/>
				<updated>2006-12-12T04:59:46Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Avoid building XML dynamically */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/.NET_Web_Service_Validation Check out OWASP .NET Web Service Validation.]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get right.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14214</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14214"/>
				<updated>2006-12-12T04:59:02Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Canonicalize data to consumer (read: encode before use) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[[:Category:OWASP_Encoding_Project|Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/.NET_Web_Service_Validation Check out OWASP .NET Web Service Validation.]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get right.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14213</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14213"/>
				<updated>2006-12-12T04:55:24Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Canonicalize data to consumer (read: encode before use) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/.NET_Web_Service_Validation Check out OWASP .NET Web Service Validation.]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get right.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14212</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14212"/>
				<updated>2006-12-12T04:55:10Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Avoid building XML dynamically */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/.NET_Web_Service_Validation Check out OWASP .NET Web Service Validation.]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get right.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14211</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14211"/>
				<updated>2006-12-12T04:54:05Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Web service calls are not schema verified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/.NET_Web_Service_Validation Check out OWASP .NET Web Service Validation.]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get right.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14210</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14210"/>
				<updated>2006-12-12T04:52:39Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Avoid building JSON by hand, use an existing frameworl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/.NET_Web_Service_Validation Check out OWASP .NET Web Service Validation.]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get right.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=14209</id>
		<title>.NET Web Service Validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=14209"/>
				<updated>2006-12-12T04:38:08Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There was a great article on MSDN a while back (years at this point) that showed the creation of a SOAP extension that would verify incoming requests against a schema, something .NET does not support out of the box (even in 2.0).  Additionally there was quasi support for [http://www.schematron.com/ schematron] via Assert attributes.  This allows for a very powerful input validation of web services.&lt;br /&gt;
&lt;br /&gt;
This is a project to provide continued support for this extension.  There have been some updates to the original code, including moving to the .NET Framework v2.0.&lt;br /&gt;
&lt;br /&gt;
The original article is available [http://msdn.microsoft.com/msdnmag/issues/03/07/XMLSchemaValidation/ here].&lt;br /&gt;
&lt;br /&gt;
== Performance Penalties ==&lt;br /&gt;
&lt;br /&gt;
To add in XML schema validation we must parse the soap packet ourselves.  This of course will incur an additional performance hit outside of simply turning on validation.  Unfortunately there is no method (that I'm aware of) to enable schema validation in .NET currently.&lt;br /&gt;
&lt;br /&gt;
== Downloading ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/SoapValidation-0.5.msi SoapValidation-0.5.msi] - Assembly, documentation, samples&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/SoapValidation-0.5-src.zip SoapValidation-0.5-src.zip] - Source, documentation, samples&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the installer and run.  Easy :)&lt;br /&gt;
&lt;br /&gt;
== Reporting Bugs ==&lt;br /&gt;
&lt;br /&gt;
Report bugs to Michael Eddington @ meddington@phed.org.&lt;br /&gt;
&lt;br /&gt;
== Use ==&lt;br /&gt;
&lt;br /&gt;
Add a reference to SoapValidator.dll from your web service project.  Modify your web.config to include the required settings and add attributes to classes and/or methods.  See examples later.&lt;br /&gt;
&lt;br /&gt;
=== Methods of Use ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for using the validator.  First you can force all web methods to be validated using the web.config file.  Second you can mark methods using [Validation] attribute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Attributes&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;Validation&amp;lt;/strong&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Mark web method for validation against schemas&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;ValidationSchemaFolder&amp;lt;/strong&amp;gt;(string relativeFolder)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add folders that contain schemas to load and cache.&amp;amp;nbsp; This attribute is only valid for classes.&amp;amp;nbsp; The relativeFolder parameter is relative to the vroot.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;relativeFolder&amp;lt;/em&amp;gt; -- Folder of schemas to load and cache.&amp;amp;nbsp; Relative to the virtual root (vroot).&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;ValidationSchema&amp;lt;/strong&amp;gt;(string schemaFile)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add schema files to load and cache.&amp;amp;nbsp; This attribute is only valid for classes.&amp;amp;nbsp; The schemaFile parameter is relative to the vroot.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;schemaFile&amp;lt;/em&amp;gt; -- Schema file to load.&amp;amp;nbsp; Relative to the virtual root (vroot).&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;Assert&amp;lt;/strong&amp;gt;(string rule)]&amp;lt;br&amp;gt;[&amp;lt;strong&amp;gt;Assert&amp;lt;/strong&amp;gt;(string rule, string description)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add an XPath&amp;amp;nbsp;validation expression to a web method.&amp;amp;nbsp; The XPath expression must evaluate to true.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;rule&amp;lt;/em&amp;gt; -- XPath validation expression.&amp;amp;nbsp; Must evaluate to true. &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;description&amp;lt;/em&amp;gt; -- [optional] Description of assertion rule.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;AssertNamespaceBinding&amp;lt;/strong&amp;gt;(string prefix, string ns)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Specifies namespace bindings used by assert xpath's.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;prefix&amp;lt;/em&amp;gt; -- namespace prefix &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;ns&amp;lt;/em&amp;gt; -- namespace to map to&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Web.config Changes&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;First two extensions must be registered by adding the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;soapExtensionReflectorTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationExtensionReflector, SoapValidation&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/soapExtensionReflectorTypes&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;serviceDescriptionFormatExtensionTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationFormatExtension, SoapValidation&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/serviceDescriptionFormatExtensionTypes&amp;amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Next, POST and GET protocols must be disabled by adding the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;protocols&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;amp;lt;remove name=&amp;quot;HttpPost&amp;quot; /&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;remove name=&amp;quot;HttpGet&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/protocols&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Finally, if you want to force all web methods to be validated with out using the [Validation] attribute add the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;soapExtensionTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationExtension, SoapValidation&amp;quot; priority=&amp;quot;1&amp;quot; group=&amp;quot;0&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;/soapExtensionTypes&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Using Validation&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Here is a basic example that will cause validation to be run:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;[WebService(Namespace=&amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]public&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&lt;br /&gt;
public&amp;lt;/a&amp;gt; class SimpleTests : System.Web.Services.WebService&lt;br /&gt;
{ &lt;br /&gt;
  [WebMethod]&lt;br /&gt;
  [Validation]&lt;br /&gt;
  public double CalcArea2(double length, double width)&lt;br /&gt;
  {&lt;br /&gt;
    return length * width;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Using Assertions&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Here is an example of using assertions to verify business rules in a way schema's fall short.&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;[AssertNamespaceBinding(&amp;quot;t&amp;quot;, &amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&amp;lt;/a&amp;gt;&lt;br /&gt;
[WebService(Namespace=&amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&amp;lt;/a&amp;gt;&lt;br /&gt;
public class SimpleTests : System.Web.Services.WebService&lt;br /&gt;
{ &lt;br /&gt;
  [WebMethod]&lt;br /&gt;
  [Validation]&lt;br /&gt;
  [Assert(&amp;quot;(//t:length * //t:width) &amp;amp;gt; 100&amp;quot;, &amp;quot;Area must be greater than 100&amp;quot;)]&lt;br /&gt;
  [Assert(&amp;quot;(//t:length div //t:width) = 2&amp;quot;, &amp;quot;Length must be exactly twice width&amp;quot;)]&lt;br /&gt;
  public double CalcArea2(double length, double width)&lt;br /&gt;
  {&lt;br /&gt;
    return length * width;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP .NET Project]]&lt;br /&gt;
[[Category:OWASP Download]]&lt;br /&gt;
[[Category:OWASP Tool]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14208</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14208"/>
				<updated>2006-12-12T04:34:32Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/.NET_Web_Service_Validation Check out OWASP .NET Web Service Validation.]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get wrong.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
&lt;br /&gt;
This content was created by [http://phed.org Michael Eddington] of  [http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14207</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14207"/>
				<updated>2006-12-12T04:17:17Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Web service calls are not schema verified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/.NET_Web_Service_Validation Check out OWASP .NET Web Service Validation.]&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get wrong.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Contributors =&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
= Project Sponsor =&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=14206</id>
		<title>.NET Web Service Validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=14206"/>
				<updated>2006-12-12T04:16:48Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There was a great article on MSDN a while back (years at this point) that showed the creation of a SOAP extension that would verify incoming requests against a schema, something .NET does not support out of the box (even in 2.0).  Additionally there was quasi support for [http://www.schematron.com/ schematron] via Assert attributes.  This allows for a very powerful input validation of web services.&lt;br /&gt;
&lt;br /&gt;
This is a project to provide continued support for this extension.  There have been some updates to the original code, including moving to the .NET Framework v2.0.&lt;br /&gt;
&lt;br /&gt;
The original article is available [http://msdn.microsoft.com/msdnmag/issues/03/07/XMLSchemaValidation/ here].&lt;br /&gt;
&lt;br /&gt;
== Performance Penalties ==&lt;br /&gt;
&lt;br /&gt;
To add in XML schema validation we must parse the soap packet ourselves.  This of course will incur an additional performance hit outside of simply turning on validation.  Unfortunately there is no method (that I'm aware of) to enable schema validation in .NET currently.&lt;br /&gt;
&lt;br /&gt;
== Downloading ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/SoapValidation-0.5.msi SoapValidation-0.5.msi] - Assembly, documentation, samples&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/SoapValidation-0.5-src.zip SoapValidation-0.5-src.zip] - Source, documentation, samples&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the installer and run.  Easy :)&lt;br /&gt;
&lt;br /&gt;
== Reporting Bugs ==&lt;br /&gt;
&lt;br /&gt;
Report bugs to Michael Eddington @ meddington@phed.org.&lt;br /&gt;
&lt;br /&gt;
== Use ==&lt;br /&gt;
&lt;br /&gt;
Add a reference to SoapValidator.dll from your web service project.  Modify your web.config to include the required settings and add attributes to classes and/or methods.  See examples later.&lt;br /&gt;
&lt;br /&gt;
=== Methods of Use ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for using the validator.  First you can force all web methods to be validated using the web.config file.  Second you can mark methods using [Validation] attribute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Attributes&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;Validation&amp;lt;/strong&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Mark web method for validation against schemas&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;ValidationSchemaFolder&amp;lt;/strong&amp;gt;(string relativeFolder)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add folders that contain schemas to load and cache.&amp;amp;nbsp; This attribute is only valid for classes.&amp;amp;nbsp; The relativeFolder parameter is relative to the vroot.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;relativeFolder&amp;lt;/em&amp;gt; -- Folder of schemas to load and cache.&amp;amp;nbsp; Relative to the virtual root (vroot).&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;ValidationSchema&amp;lt;/strong&amp;gt;(string schemaFile)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add schema files to load and cache.&amp;amp;nbsp; This attribute is only valid for classes.&amp;amp;nbsp; The schemaFile parameter is relative to the vroot.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;schemaFile&amp;lt;/em&amp;gt; -- Schema file to load.&amp;amp;nbsp; Relative to the virtual root (vroot).&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;Assert&amp;lt;/strong&amp;gt;(string rule)]&amp;lt;br&amp;gt;[&amp;lt;strong&amp;gt;Assert&amp;lt;/strong&amp;gt;(string rule, string description)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add an XPath&amp;amp;nbsp;validation expression to a web method.&amp;amp;nbsp; The XPath expression must evaluate to true.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;rule&amp;lt;/em&amp;gt; -- XPath validation expression.&amp;amp;nbsp; Must evaluate to true. &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;description&amp;lt;/em&amp;gt; -- [optional] Description of assertion rule.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;AssertNamespaceBinding&amp;lt;/strong&amp;gt;(string prefix, string ns)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Specifies namespace bindings used by assert xpath's.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;prefix&amp;lt;/em&amp;gt; -- namespace prefix &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;ns&amp;lt;/em&amp;gt; -- namespace to map to&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Web.config Changes&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;First two extensions must be registered by adding the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;soapExtensionReflectorTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationExtensionReflector, SoapValidation&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/soapExtensionReflectorTypes&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;serviceDescriptionFormatExtensionTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationFormatExtension, SoapValidation&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/serviceDescriptionFormatExtensionTypes&amp;amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Next, POST and GET protocols must be disabled by adding the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;protocols&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;amp;lt;remove name=&amp;quot;HttpPost&amp;quot; /&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;remove name=&amp;quot;HttpGet&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/protocols&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Finally, if you want to force all web methods to be validated with out using the [Validation] attribute add the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;soapExtensionTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationExtension, SoapValidation&amp;quot; priority=&amp;quot;1&amp;quot; group=&amp;quot;0&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;/soapExtensionTypes&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Using Validation&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Here is a basic example that will cause validation to be run:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;[WebService(Namespace=&amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]public&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&lt;br /&gt;
public&amp;lt;/a&amp;gt; class SimpleTests : System.Web.Services.WebService&lt;br /&gt;
{ &lt;br /&gt;
  [WebMethod]&lt;br /&gt;
  [Validation]&lt;br /&gt;
  public double CalcArea2(double length, double width)&lt;br /&gt;
  {&lt;br /&gt;
    return length * width;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Using Assertions&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Here is an example of using assertions to verify business rules in a way schema's fall short.&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;[AssertNamespaceBinding(&amp;quot;t&amp;quot;, &amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&amp;lt;/a&amp;gt;&lt;br /&gt;
[WebService(Namespace=&amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&amp;lt;/a&amp;gt;&lt;br /&gt;
public class SimpleTests : System.Web.Services.WebService&lt;br /&gt;
{ &lt;br /&gt;
  [WebMethod]&lt;br /&gt;
  [Validation]&lt;br /&gt;
  [Assert(&amp;quot;(//t:length * //t:width) &amp;amp;gt; 100&amp;quot;, &amp;quot;Area must be greater than 100&amp;quot;)]&lt;br /&gt;
  [Assert(&amp;quot;(//t:length div //t:width) = 2&amp;quot;, &amp;quot;Length must be exactly twice width&amp;quot;)]&lt;br /&gt;
  public double CalcArea2(double length, double width)&lt;br /&gt;
  {&lt;br /&gt;
    return length * width;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP .NET Project]]&lt;br /&gt;
[[Category:OWASP Download]]&lt;br /&gt;
[[Category:OWASP Tool]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14205</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14205"/>
				<updated>2006-12-12T04:06:16Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Canonicalize data (read: encode before use) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data to consumer (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, CSS, XML, JSON, etc. make sure you take into account how that data must be presented in a literal sense to keep it's logical meaning.  Data should be properly encoded before used in this manor to prevent injection style issues, and to make sure the logical meaning is preserved.&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
Check out OWASP .NET Web Service Validation.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get wrong.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Contributors =&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
= Project Sponsor =&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14204</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14204"/>
				<updated>2006-12-12T03:52:36Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Avoid building XML dynamically */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, css, XML, Jason, etc. make sure you take into account canonicalization.  Data should be properly encoded before used to prevent injection style issues. &lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
Check out OWASP .NET Web Service Validation.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get wrong.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Contributors =&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
= Project Sponsor =&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14203</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14203"/>
				<updated>2006-12-12T03:51:53Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Canonicalize data (read: encode before use) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, css, XML, Jason, etc. make sure you take into account canonicalization.  Data should be properly encoded before used to prevent injection style issues. &lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[/Category:OWASP_Encoding_Project&amp;amp;action=edit Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
Check out OWASP .NET Web Service Validation.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get wrong.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Contributors =&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
= Project Sponsor =&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14202</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14202"/>
				<updated>2006-12-12T03:50:51Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, css, XML, Jason, etc. make sure you take into account canonicalization.  Data should be properly encoded before used to prevent injection style issues. &lt;br /&gt;
&lt;br /&gt;
[/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[/Category:OWASP_Encoding_Project&amp;amp;action=edit Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
Check out OWASP .NET Web Service Validation.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get wrong.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Contributors =&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
= Project Sponsor =&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14201</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14201"/>
				<updated>2006-12-12T03:49:57Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Avoid building XML dynamically */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, css, XML, Jason, etc. make sure you take into account canonicalization.  Data should be properly encoded before used to prevent injection style issues. &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP_Encoding_Project&amp;amp;action=edit Check out the OWASP Encoding Project.]]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
Check out OWASP .NET Web Service Validation.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get wrong.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Contributors =&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
= Project Sponsor =&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14200</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14200"/>
				<updated>2006-12-12T03:48:51Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Avoid building XML dynamically */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, css, XML, Jason, etc. make sure you take into account canonicalization.  Data should be properly encoded before used to prevent injection style issues. &lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
[Category:OWASP_Encoding_Project&amp;amp;action=edit Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
Check out OWASP .NET Web Service Validation.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get wrong.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Contributors =&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
= Project Sponsor =&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14199</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14199"/>
				<updated>2006-12-12T03:47:01Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, css, XML, Jason, etc. make sure you take into account canonicalization.  Data should be properly encoded before used to prevent injection style issues. &lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
Check out the OWASP Encoding Project.&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
Check out OWASP .NET Web Service Validation.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get wrong.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Project Contributors =&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
= Project Sponsor =&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
[[Category:OWASP AJAX Security Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14198</id>
		<title>OWASP AJAX Security Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_AJAX_Security_Guidelines&amp;diff=14198"/>
				<updated>2006-12-12T03:39:21Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= AJAX Security Guidelines =&lt;br /&gt;
&lt;br /&gt;
There is a complete lack of guidelines for AJAX.  This document will provide a starting point for AJAX security and will hopefully be updated and expanded reasonably often to provide more detailed information about specific frameworks and technologies.&lt;br /&gt;
&lt;br /&gt;
== Client Side (Javascript) ==&lt;br /&gt;
&lt;br /&gt;
=== Use .innerText instead of .innerHtml ===&lt;br /&gt;
&lt;br /&gt;
The use of .innerText will prevent most XSS problems as it will automatically encode the text.  Only use innerHtml when you are displaying HTML.&lt;br /&gt;
&lt;br /&gt;
=== Don't use eval ===&lt;br /&gt;
&lt;br /&gt;
Eval is evil, never use it.  Needing to use eval usually indicates a problem in your design.&lt;br /&gt;
&lt;br /&gt;
=== Canonicalize data (read: encode before use) ===&lt;br /&gt;
&lt;br /&gt;
When using data to build HTML, script, css, XML, Jason, etc. make sure you take into account canonicalization.  Data should be properly encoded before used to prevent injection style issues. &lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/Category:OWASP_Encoding_Project Check out the OWASP Encoding Project.]&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client logic for security ===&lt;br /&gt;
&lt;br /&gt;
Least ye have forgotten the user controls the client side logic.  I can use a number of browser plugging to set breakpoints, skip code, change values, etc.  Never rely on client logic.&lt;br /&gt;
&lt;br /&gt;
=== Don't rely on client business logic ===&lt;br /&gt;
&lt;br /&gt;
Just like the security one, make sure any interesting business rules/logic is duplicated on the server side less a user bypass needed logic and do something silly, or worse, costly.&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code ===&lt;br /&gt;
&lt;br /&gt;
This is hard and even a small mistake can cause large security issues.  There are already a lot of frameworks to provide this functionality.  Take a look at the JSON page for links.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML dynamically ===&lt;br /&gt;
&lt;br /&gt;
Just like building HTML or SQL you will cause XML injection bugs, so stay way from this or at least use an encoding library to make attributes and element data safe.&lt;br /&gt;
&lt;br /&gt;
Check out the OWASP Encoding Project.&lt;br /&gt;
&lt;br /&gt;
=== Never transmit secrets to the client ===&lt;br /&gt;
&lt;br /&gt;
I hope this is a &amp;quot;duh&amp;quot; item.  Anything the client knows the user will also know, so keep all that secret stuff on the server please.&lt;br /&gt;
&lt;br /&gt;
=== Don't perform encryption in client side code ===&lt;br /&gt;
&lt;br /&gt;
Use SSL and encrypt on the server!&lt;br /&gt;
&lt;br /&gt;
=== Don't perform security impacting logic on client side ===&lt;br /&gt;
&lt;br /&gt;
This is the overall one that gets me out of trouble in case I missed something :) &lt;br /&gt;
&lt;br /&gt;
== ASP.NET ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Avoid writing serialization code. Remember ref vs. value types! ===&lt;br /&gt;
&lt;br /&gt;
Writing serialization code in .NET seems not to hard and yet everyone gets it wrong.  Look for an existing library that has been reviewed.  I'll post more on that as I eval them.&lt;br /&gt;
&lt;br /&gt;
=== Services can be called by users directly ===&lt;br /&gt;
&lt;br /&gt;
Even though you only expect your AJAX client side code to call those services the users can too.  Make sure you validate inputs and treat them like they are under user control (because they are!).&lt;br /&gt;
&lt;br /&gt;
=== Web service calls are not schema verified ===&lt;br /&gt;
&lt;br /&gt;
You need to use a 3rd party library to validate web services. &lt;br /&gt;
&lt;br /&gt;
Check out OWASP .NET Web Service Validation.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building XML by hand, use the framework ===&lt;br /&gt;
&lt;br /&gt;
Use the framework and be safe, do it by hand and have security issues.  Simple.&lt;br /&gt;
&lt;br /&gt;
=== Avoid building JSON by hand, use an existing frameworl ===&lt;br /&gt;
&lt;br /&gt;
This is to hard to get wrong.  Use existing code for this.  Check out the JSON site for information.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Coming soon....maybe...&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=13903</id>
		<title>Category:OWASP Encoding Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=13903"/>
				<updated>2006-12-01T19:34:48Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Download */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Web applications face any number of threats; one of them is cross-site scripting and related injection attacks.  90% of all web applications contain cross-site scripting attacks because they are easy to introduce, and the proper tools are not always available to prevent them.  There is no good single library that provides all the functions required by developers to incorporate a fix into there code that will stand up to the test of time and continual research in the field.  The Reform library attempts to provide a solid set of functions for encoding output for the most common context targets in web applications (e.g. HTML, XML, JavaScript, etc).  The library also takes a conservative view of what are allowable characters based on historical vulnerabilities, and current injection techniques.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide tools needed by developers to mitigate canonicalization issues in web technologies.&lt;br /&gt;
* Provide a solution that will not need to be patched (no security patches since release in 2004, private implementations in use since 2002).&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/Reform-0.12.zip Reform-0.12.zip] (stable)&lt;br /&gt;
&lt;br /&gt;
The latest code is now being maintained in a Google Code repository [http://code.google.com/p/reform/]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Unicode support&lt;br /&gt;
* Context specific functions (HTML, XML, JavaScript, etc)&lt;br /&gt;
* Many supported languages&lt;br /&gt;
** Java&lt;br /&gt;
** .NET v1/v2&lt;br /&gt;
** PHP (Unicode issues)&lt;br /&gt;
** Python&lt;br /&gt;
** Perl&lt;br /&gt;
** JavaScript&lt;br /&gt;
** ASP&lt;br /&gt;
* Support for AJAX&lt;br /&gt;
* Conservative approach&lt;br /&gt;
* Solves all current XSS techniques&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
* Ruby support&lt;br /&gt;
* Java framework support&lt;br /&gt;
* LDAP encoding functions&lt;br /&gt;
* Add documentation on resolving XPath issues&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Adopts Reform - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
OWASP is adopting the Reform Encoding Library as an OWASP project.  We are currently in the process of moving over the source, downloads, and documentation.&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Created! - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
The Open Web Application Security Project is proud to announce the OWASP Encoding Project!&lt;br /&gt;
&lt;br /&gt;
== Feedback and Participation: ==&lt;br /&gt;
&lt;br /&gt;
We hope you find the OWASP Encoding Project useful. Please contribute to the Project by volunteering for one of the tasks, sending your comments, questions, and suggestions to owasp@owasp.org.  To join the OWASP Encoding Project mailing list or view the archives, please visit the [http://lists.owasp.org/mailman/listinfo/owasp-encoding subscription page.]&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;br /&gt;
[[Category:OWASP Download]]&lt;br /&gt;
[[Category:OWASP Tool]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=13391</id>
		<title>.NET Web Service Validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=13391"/>
				<updated>2006-11-20T04:04:58Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There was a great article on MSDN a while back (years at this point) that showed the creation of a SOAP extension that would verify incoming requests against a schema, something .NET does not support out of the box (even in 2.0).  Additionally there was quasi support for [http://www.schematron.com/ schematron] via Assert attributes.  This allows for a very powerful input validation of web services.&lt;br /&gt;
&lt;br /&gt;
This is a project to provide continued support for this extension.  There have been some updates to the original code, including moving to the .NET Framework v2.0.&lt;br /&gt;
&lt;br /&gt;
The original article is available [http://msdn.microsoft.com/msdnmag/issues/03/07/XMLSchemaValidation/ here].&lt;br /&gt;
&lt;br /&gt;
== Performance Penalties ==&lt;br /&gt;
&lt;br /&gt;
To add in XML schema validation we must parse the soap packet ourselves.  This of course will incur an additional performance hit outside of simply turning on validation.  Unfortunately there is no method (that I'm aware of) to enable schema validation in .NET currently.&lt;br /&gt;
&lt;br /&gt;
== Downloading ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/SoapValidation-0.5.msi SoapValidation-0.5.msi] - Assembly, documentation, samples&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/SoapValidation-0.5-src.zip SoapValidation-0.5-src.zip] - Source, documentation, samples&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the installer and run.  Easy :)&lt;br /&gt;
&lt;br /&gt;
== Reporting Bugs ==&lt;br /&gt;
&lt;br /&gt;
Report bugs to Michael Eddington @ meddington@phed.org.&lt;br /&gt;
&lt;br /&gt;
== Use ==&lt;br /&gt;
&lt;br /&gt;
Add a reference to SoapValidator.dll from your web service project.  Modify your web.config to include the required settings and add attributes to classes and/or methods.  See examples later.&lt;br /&gt;
&lt;br /&gt;
=== Methods of Use ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for using the validator.  First you can force all web methods to be validated using the web.config file.  Second you can mark methods using [Validation] attribute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Attributes&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;Validation&amp;lt;/strong&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Mark web method for validation against schemas&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;ValidationSchemaFolder&amp;lt;/strong&amp;gt;(string relativeFolder)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add folders that contain schemas to load and cache.&amp;amp;nbsp; This attribute is only valid for classes.&amp;amp;nbsp; The relativeFolder parameter is relative to the vroot.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;relativeFolder&amp;lt;/em&amp;gt; -- Folder of schemas to load and cache.&amp;amp;nbsp; Relative to the virtual root (vroot).&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;ValidationSchema&amp;lt;/strong&amp;gt;(string schemaFile)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add schema files to load and cache.&amp;amp;nbsp; This attribute is only valid for classes.&amp;amp;nbsp; The schemaFile parameter is relative to the vroot.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;schemaFile&amp;lt;/em&amp;gt; -- Schema file to load.&amp;amp;nbsp; Relative to the virtual root (vroot).&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;Assert&amp;lt;/strong&amp;gt;(string rule)]&amp;lt;br&amp;gt;[&amp;lt;strong&amp;gt;Assert&amp;lt;/strong&amp;gt;(string rule, string description)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Used to add an XPath&amp;amp;nbsp;validation expression to a web method.&amp;amp;nbsp; The XPath expression must evaluate to true.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;rule&amp;lt;/em&amp;gt; -- XPath validation expression.&amp;amp;nbsp; Must evaluate to true. &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;description&amp;lt;/em&amp;gt; -- [optional] Description of assertion rule.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[&amp;lt;strong&amp;gt;AssertNamespaceBinding&amp;lt;/strong&amp;gt;(string prefix, string ns)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Specifies namespace bindings used by assert xpath's.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;prefix&amp;lt;/em&amp;gt; -- namespace prefix &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;ns&amp;lt;/em&amp;gt; -- namespace to map to&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Web.config Changes&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;First two extensions must be registered by adding the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;soapExtensionReflectorTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationExtensionReflector, SoapValidation&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/soapExtensionReflectorTypes&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;serviceDescriptionFormatExtensionTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationFormatExtension, SoapValidation&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/serviceDescriptionFormatExtensionTypes&amp;amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Next, POST and GET protocols must be disabled by adding the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;protocols&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;amp;lt;remove name=&amp;quot;HttpPost&amp;quot; /&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;remove name=&amp;quot;HttpGet&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/protocols&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Finally, if you want to force all web methods to be validated with out using the [Validation] attribute add the following inside of the &amp;amp;lt;webServices&amp;amp;gt; node:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;&amp;amp;lt;soapExtensionTypes&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;add type=&amp;quot;SoapValidation.ValidationExtension, SoapValidation&amp;quot; priority=&amp;quot;1&amp;quot; group=&amp;quot;0&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;/soapExtensionTypes&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Using Validation&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Here is a basic example that will cause validation to be run:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;[WebService(Namespace=&amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]public&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&lt;br /&gt;
public&amp;lt;/a&amp;gt; class SimpleTests : System.Web.Services.WebService&lt;br /&gt;
{ &lt;br /&gt;
  [WebMethod]&lt;br /&gt;
  [Validation]&lt;br /&gt;
  public double CalcArea2(double length, double width)&lt;br /&gt;
  {&lt;br /&gt;
    return length * width;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Using Assertions&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Here is an example of using assertions to verify business rules in a way schema's fall short.&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;[AssertNamespaceBinding(&amp;quot;t&amp;quot;, &amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&amp;lt;/a&amp;gt;&lt;br /&gt;
[WebService(Namespace=&amp;quot;&amp;lt;a href=&amp;quot;http://example.org/geometry&amp;amp;quot;)]&amp;quot;&amp;gt;http://example.org/geometry&amp;quot;)]&amp;lt;/a&amp;gt;&lt;br /&gt;
public class SimpleTests : System.Web.Services.WebService&lt;br /&gt;
{ &lt;br /&gt;
  [WebMethod]&lt;br /&gt;
  [Validation]&lt;br /&gt;
  [Assert(&amp;quot;(//t:length * //t:width) &amp;amp;gt; 100&amp;quot;, &amp;quot;Area must be greater than 100&amp;quot;)]&lt;br /&gt;
  [Assert(&amp;quot;(//t:length div //t:width) = 2&amp;quot;, &amp;quot;Length must be exactly twice width&amp;quot;)]&lt;br /&gt;
  public double CalcArea2(double length, double width)&lt;br /&gt;
  {&lt;br /&gt;
    return length * width;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP .NET Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=13390</id>
		<title>.NET Web Service Validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=13390"/>
				<updated>2006-11-20T03:57:37Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There was a great article on MSDN a while back (years at this point) that showed the creation of a SOAP extension that would verify incoming requests against a schema, something .NET does not support out of the box (even in 2.0).  Additionally there was quasi support for [http://www.schematron.com/ schematron] via Assert attributes.  This allows for a very powerful input validation of web services.&lt;br /&gt;
&lt;br /&gt;
This is a project to provide continued support for this extension.  There have been some updates to the original code, including moving to the .NET Framework v2.0.&lt;br /&gt;
&lt;br /&gt;
The original article is available [http://msdn.microsoft.com/msdnmag/issues/03/07/XMLSchemaValidation/ here].&lt;br /&gt;
&lt;br /&gt;
== Performance Penalties ==&lt;br /&gt;
&lt;br /&gt;
To add in XML schema validation we must parse the soap packet ourselves.  This of course will incur an additional performance hit outside of simply turning on validation.  Unfortunately there is no method (that I'm aware of) to enable schema validation in .NET currently.&lt;br /&gt;
&lt;br /&gt;
== Downloading ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/SoapValidation-0.5.msi SoapValidation-0.5.msi] - Assembly, documentation, samples&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/SoapValidation-0.5-src.zip SoapValidation-0.5-src.zip] - Source, documentation, samples&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the installer and run.  Easy :)&lt;br /&gt;
&lt;br /&gt;
== Reporting Bugs ==&lt;br /&gt;
&lt;br /&gt;
Report bugs to Michael Eddington @ meddington@phed.org.&lt;br /&gt;
&lt;br /&gt;
== Use ==&lt;br /&gt;
&lt;br /&gt;
Add a reference to SoapValidator.dll from your web service project.  Modify your web.config to include the required settings and add attributes to classes and/or methods.  See examples later.&lt;br /&gt;
&lt;br /&gt;
=== Methods of Use ===&lt;br /&gt;
&lt;br /&gt;
There are two methods for using the validator.  First you can force all web methods to be validated using the web.config file.  Second you can mark methods using [Validation] attribute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP .NET Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=13385</id>
		<title>.NET Web Service Validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=13385"/>
				<updated>2006-11-20T03:18:31Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There was a great article on MSDN a while back (years at this point) that showed the creation of a SOAP extension that would verify incoming requests against a schema, something .NET does not support out of the box (even in 2.0).  Additionally there was quasi support for [http://www.schematron.com/ schematron] via Assert attributes.  This allows for a very powerful input validation of web services.&lt;br /&gt;
&lt;br /&gt;
This is a project to provide continued support for this extension.  There have been some updates to the original code, including moving to the .NET Framework v2.0.&lt;br /&gt;
&lt;br /&gt;
The original article is available [http://msdn.microsoft.com/msdnmag/issues/03/07/XMLSchemaValidation/ here].&lt;br /&gt;
&lt;br /&gt;
== Performance Penalties ==&lt;br /&gt;
&lt;br /&gt;
To add in XML schema validation we must parse the soap packet ourselves.  This of course will incur an additional performance hit outside of simply turning on validation.  Unfortunately there is no method (that I'm aware of) to enable schema validation in .NET currently.&lt;br /&gt;
&lt;br /&gt;
== Downloading ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/SoapValidation-0.5.msi SoapValidation-0.5.msi] - Assembly, documentation, samples&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/SoapValidation-0.5-src.zip SoapValidation-0.5-src.zip] - Source, documentation, samples&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the installer and run.  Easy :)&lt;br /&gt;
&lt;br /&gt;
== Methods of Use ==&lt;br /&gt;
&lt;br /&gt;
There are two methods for using the validator.  First you can force all web methods to be validated using the web.config file.  Second you can mark methods using [Validation] attribute.&lt;br /&gt;
&lt;br /&gt;
== Use ==&lt;br /&gt;
&lt;br /&gt;
Add a reference to SoapValidator.dll from your web service project.  Modify your web.config to include the required settings and add attributes to classes and/or methods.  See examples later.&lt;br /&gt;
&lt;br /&gt;
== Reporting Bugs ==&lt;br /&gt;
&lt;br /&gt;
Report bugs to Michael Eddington @ meddington@phed.org.&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP .NET Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=13383</id>
		<title>.NET Web Service Validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=13383"/>
				<updated>2006-11-20T03:15:32Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* .NET Web Service Validation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There was a great article on MSDN a while back (years at this point) that showed the creation of a SOAP extension that would verify incoming requests against a schema, something .NET does not support out of the box (even in 2.0).  Additionally there was quasi support for [http://www.schematron.com/ schematron] via Assert attributes.  This allows for a very powerful input validation of web services.&lt;br /&gt;
&lt;br /&gt;
This is a project to provide continued support for this extension.  There have been some updates to the original code, including moving to the .NET Framework v2.0.&lt;br /&gt;
&lt;br /&gt;
The original article is available [http://msdn.microsoft.com/msdnmag/issues/03/07/XMLSchemaValidation/ here].&lt;br /&gt;
&lt;br /&gt;
== Performance Penalties ==&lt;br /&gt;
&lt;br /&gt;
To add in XML schema validation we must parse the soap packet ourselves.  This of course will incur an additional performance hit outside of simply turning on validation.  Unfortunately there is no method (that I'm aware of) to enable schema validation in .NET currently.&lt;br /&gt;
&lt;br /&gt;
== Downloading ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/SoapValidation-0.5.msi SoapValidation-0.5.msi] - Assembly, documentation, samples&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/SoapValidation-0.5-src.zip SoapValidation-0.5-src.zip] - Source, documentation, samples&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Download the installer and run.  Easy :)&lt;br /&gt;
&lt;br /&gt;
== Methods of Use ==&lt;br /&gt;
&lt;br /&gt;
There are two methods for using the validator.  First you can force all web methods to be validated using the web.config file.  Second you can mark methods using [Validation] attribute.&lt;br /&gt;
&lt;br /&gt;
== Use ==&lt;br /&gt;
&lt;br /&gt;
Add a reference to SoapValidator.dll from your web service project.  Modify your web.config to include the required settings and add attributes to classes and/or methods.  See examples later.&lt;br /&gt;
&lt;br /&gt;
== Reporting Bugs ==&lt;br /&gt;
&lt;br /&gt;
Report bugs to Michael Eddington @ meddington@phed.org.&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=13382</id>
		<title>.NET Web Service Validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=.NET_Web_Service_Validation&amp;diff=13382"/>
				<updated>2006-11-20T03:14:18Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== .NET Web Service Validation ==&lt;br /&gt;
&lt;br /&gt;
There was a great article on MSDN a while back (years at this point) that showed the creation of a SOAP extension that would verify incoming requests against a schema, something .NET does not support out of the box (even in 2.0).  Additionally there was quasi support for [http://www.schematron.com/ schematron] via Assert attributes.  This allows for a very powerful input validation of web services.&lt;br /&gt;
&lt;br /&gt;
This is a project to provide continued support for this extension.  There have been some updates to the original code, including moving to the .NET Framework v2.0.&lt;br /&gt;
&lt;br /&gt;
The original article is available [http://msdn.microsoft.com/msdnmag/issues/03/07/XMLSchemaValidation/ here].&lt;br /&gt;
&lt;br /&gt;
'''Performance Penalties'''&lt;br /&gt;
&lt;br /&gt;
To add in XML schema validation we must parse the soap packet ourselves.  This of course will incur an additional performance hit outside of simply turning on validation.  Unfortunately there is no method (that I'm aware of) to enable schema validation in .NET currently.&lt;br /&gt;
&lt;br /&gt;
'''Downloading'''&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/SoapValidation-0.5.msi SoapValidation-0.5.msi] - Assembly, documentation, samples&lt;br /&gt;
[http://phed.org/files/SoapValidation-0.5-src.zip SoapValidation-0.5-src.zip] - Source, documentation, samples&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Download the installer and run.  Easy :)&lt;br /&gt;
&lt;br /&gt;
'''Methods of Use'''&lt;br /&gt;
&lt;br /&gt;
There are two methods for using the validator.  First you can force all web methods to be validated using the web.config file.  Second you can mark methods using [Validation] attribute.&lt;br /&gt;
&lt;br /&gt;
'''Use'''&lt;br /&gt;
&lt;br /&gt;
Add a reference to SoapValidator.dll from your web service project.  Modify your web.config to include the required settings and add attributes to classes and/or methods.  See examples later.&lt;br /&gt;
&lt;br /&gt;
'''Reporting Bugs'''&lt;br /&gt;
&lt;br /&gt;
Report bugs to Michael Eddington @ meddington@phed.org.&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=13379</id>
		<title>Category:OWASP Encoding Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=13379"/>
				<updated>2006-11-20T03:08:33Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Project Contributors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Web applications face any number of threats; one of them is cross-site scripting and related injection attacks.  90% of all web applications contain cross-site scripting attacks because they are easy to introduce, and the proper tools are not always available to prevent them.  There is no good single library that provides all the functions required by developers to incorporate a fix into there code that will stand up to the test of time and continual research in the field.  The Reform library attempts to provide a solid set of functions for encoding output for the most common context targets in web applications (e.g. HTML, XML, JavaScript, etc).  The library also takes a conservative view of what are allowable characters based on historical vulnerabilities, and current injection techniques.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide tools needed by developers to mitigate canonicalization issues in web technologies.&lt;br /&gt;
* Provide a solution that will not need to be patched (no security patches since release in 2004, private implementations in use since 2002).&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/Reform-0.11.zip Reform-0.11.zip] (stable)&lt;br /&gt;
&lt;br /&gt;
The latest code is now being maintained in a Google Code repository [http://code.google.com/p/reform/]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Unicode support&lt;br /&gt;
* Context specific functions (HTML, XML, JavaScript, etc)&lt;br /&gt;
* Many supported languages&lt;br /&gt;
** Java&lt;br /&gt;
** .NET v1/v2&lt;br /&gt;
** PHP (Unicode issues)&lt;br /&gt;
** Python&lt;br /&gt;
** Perl&lt;br /&gt;
** JavaScript&lt;br /&gt;
** ASP&lt;br /&gt;
* Support for AJAX&lt;br /&gt;
* Conservative approach&lt;br /&gt;
* Solves all current XSS techniques&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
* Ruby support&lt;br /&gt;
* Java framework support&lt;br /&gt;
* LDAP encoding functions&lt;br /&gt;
* Add documentation on resolving XPath issues&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Adopts Reform - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
OWASP is adopting the Reform Encoding Library as an OWASP project.  We are currently in the process of moving over the source, downloads, and documentation.&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Created! - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
The Open Web Application Security Project is proud to announce the OWASP Encoding Project!&lt;br /&gt;
&lt;br /&gt;
== Feedback and Participation: ==&lt;br /&gt;
&lt;br /&gt;
We hope you find the OWASP Encoding Project useful. Please contribute to the Project by volunteering for one of the tasks, sending your comments, questions, and suggestions to owasp@owasp.org.  To join the OWASP Encoding Project mailing list or view the archives, please visit the [http://lists.owasp.org/mailman/listinfo/owasp-encoding subscription page.]&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org Michael Eddington]&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;br /&gt;
[[Category:OWASP Download]]&lt;br /&gt;
[[Category:OWASP Tool]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:Preventing_LDAP_Injection_in_Java&amp;diff=12627</id>
		<title>Talk:Preventing LDAP Injection in Java</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:Preventing_LDAP_Injection_in_Java&amp;diff=12627"/>
				<updated>2006-11-14T22:47:52Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Question - would it be better to encode using a whitelist approach?  I.e. encode everything that is not in a limited set of safe characters? Jeff Williams - 11:54, 14 August 2006 (EDT) &lt;br /&gt;
&lt;br /&gt;
:My only concern with that approach is that we'll be breaking the spec- some LDAP implementations may not handle escaped characters that are not meta-characters properly.  [[User:Stephendv|Stephendv]] 07:23, 11 September 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
::Then perhaps a rule that only allows a limited set of characters AND encodes any of those that are meta-characters would work [[User:Jeff Williams|Jeff Williams]] 15:33, 11 September 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
While for DN there is some provision for specifying a byte encoding (\XX) there is by spec only certain characters that should be encoded: , (comma), = (equals), + (plus), &amp;lt; (less than), &amp;gt; (greater than), # (number sign), ; (semicolon), \ (backslash), and &amp;quot; (quotation mark, ASCII 34)&lt;br /&gt;
&lt;br /&gt;
Method 1: Escape chars, only , = + &amp;lt; &amp;gt; # ; \ are valid to be escaped:&lt;br /&gt;
&lt;br /&gt;
CN=L. Eagle,O=Sue\, Grabbit and Runn,C=GB&lt;br /&gt;
&lt;br /&gt;
Method 2: Replace with hex digits, unknown if all LDAP servers limit to just valid chars to escape:&lt;br /&gt;
&lt;br /&gt;
CN=L. Eagle,O=Sue\2C Grabbit and Runn,C=GB&lt;br /&gt;
&lt;br /&gt;
Method 3: Quote attribute and escape \ or &amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;you need to escape a single backslash this way \\&amp;quot;&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12363</id>
		<title>Category:OWASP Encoding Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12363"/>
				<updated>2006-11-12T10:12:16Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Web applications face any number of threats; one of them is cross-site scripting and related injection attacks.  90% of all web applications contain cross-site scripting attacks because they are easy to introduce, and the proper tools are not always available to prevent them.  There is no good single library that provides all the functions required by developers to incorporate a fix into there code that will stand up to the test of time and continual research in the field.  The Reform library attempts to provide a solid set of functions for encoding output for the most common context targets in web applications (e.g. HTML, XML, JavaScript, etc).  The library also takes a conservative view of what are allowable characters based on historical vulnerabilities, and current injection techniques.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide tools needed by developers to mitigate canonicalization issues in web technologies.&lt;br /&gt;
* Provide a solution that will not need to be patched (no security patches since release in 2004, private implementations in use since 2002).&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/Reform-0.11.zip Reform-0.11.zip] (stable)&lt;br /&gt;
&lt;br /&gt;
The latest code is now being maintained in a Google Code repository [http://code.google.com/p/reform/]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Unicode support&lt;br /&gt;
* Context specific functions (HTML, XML, JavaScript, etc)&lt;br /&gt;
* Many supported languages&lt;br /&gt;
** Java&lt;br /&gt;
** .NET v1/v2&lt;br /&gt;
** PHP (Unicode issues)&lt;br /&gt;
** Python&lt;br /&gt;
** Perl&lt;br /&gt;
** JavaScript&lt;br /&gt;
** ASP&lt;br /&gt;
* Support for AJAX&lt;br /&gt;
* Conservative approach&lt;br /&gt;
* Solves all current XSS techniques&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
* Ruby support&lt;br /&gt;
* Java framework support&lt;br /&gt;
* LDAP encoding functions&lt;br /&gt;
* Add documentation on resolving XPath issues&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Adopts Reform - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
OWASP is adopting the Reform Encoding Library as an OWASP project.  We are currently in the process of moving over the source, downloads, and documentation.&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Created! - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
The Open Web Application Security Project is proud to announce the OWASP Encoding Project!&lt;br /&gt;
&lt;br /&gt;
== Feedback and Participation: ==&lt;br /&gt;
&lt;br /&gt;
We hope you find the OWASP Encoding Project useful. Please contribute to the Project by volunteering for one of the tasks, sending your comments, questions, and suggestions to owasp@owasp.org.  To join the OWASP Encoding Project mailing list or view the archives, please visit the [http://lists.owasp.org/mailman/listinfo/owasp-encoding subscription page.]&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
Michael Eddington&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12362</id>
		<title>Category:OWASP Encoding Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12362"/>
				<updated>2006-11-12T10:11:53Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Web applications face any number of threats; one of them is cross-site scripting and related injection attacks.  90% of all web applications contain cross-site scripting attacks because they are easy to introduce, and the proper tools are not always available to prevent them.  There is no good single library that provides all the functions required by developers to incorporate a fix into there code that will stand up to the test of time and continual research in the field.  The Reform library attempts to provide a solid set of functions for encoding output for the most common context targets in web applications (e.g. HTML, XML, JavaScript, etc).  The library also takes a conservative view of what are allowable characters based on historical vulnerabilities, and current injection techniques.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide tools needed by developers to mitigate canonicalization issues in web technologies.&lt;br /&gt;
* Provide a solution that will not need to be patched (no security patches since release in 2004, private implementations in use since 2002).&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/Reform-0.11.zip Reform-0.11.zip] (stable)&lt;br /&gt;
&lt;br /&gt;
The latest code is now being maintained in a Google Code repository [http://code.google.com/p/reform/]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Unicode support&lt;br /&gt;
* Context specific functions (HTML, XML, JavaScript, etc)&lt;br /&gt;
* Many supported languages&lt;br /&gt;
** Java&lt;br /&gt;
** .NET v1/v2&lt;br /&gt;
** PHP (Unicode support broken)&lt;br /&gt;
** Python&lt;br /&gt;
** Perl&lt;br /&gt;
** JavaScript&lt;br /&gt;
** ASP&lt;br /&gt;
* Support for AJAX&lt;br /&gt;
* Conservative approach&lt;br /&gt;
* Solves all current XSS techniques&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
* Ruby support&lt;br /&gt;
* Java framework support&lt;br /&gt;
* LDAP encoding functions&lt;br /&gt;
* Add documentation on resolving XPath issues&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Adopts Reform - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
OWASP is adopting the Reform Encoding Library as an OWASP project.  We are currently in the process of moving over the source, downloads, and documentation.&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Created! - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
The Open Web Application Security Project is proud to announce the OWASP Encoding Project!&lt;br /&gt;
&lt;br /&gt;
== Feedback and Participation: ==&lt;br /&gt;
&lt;br /&gt;
We hope you find the OWASP Encoding Project useful. Please contribute to the Project by volunteering for one of the tasks, sending your comments, questions, and suggestions to owasp@owasp.org.  To join the OWASP Encoding Project mailing list or view the archives, please visit the [http://lists.owasp.org/mailman/listinfo/owasp-encoding subscription page.]&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
Michael Eddington&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12361</id>
		<title>Category:OWASP Encoding Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12361"/>
				<updated>2006-11-12T10:11:25Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Download */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Web applications face any number of threats; one of them is cross-site scripting and related injection attacks.  90% of all web applications contain cross-site scripting attacks because they are easy to introduce, and the proper tools are not always available to prevent them.  There is no good single library that provides all the functions required by developers to incorporate a fix into there code that will stand up to the test of time and continual research in the field.  The Reform library attempts to provide a solid set of functions for encoding output for the most common context targets in web applications (e.g. HTML, XML, JavaScript, etc).  The library also takes a conservative view of what are allowable characters based on historical vulnerabilities, and current injection techniques.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide tools needed by developers to mitigate canonicalization issues in web technologies.&lt;br /&gt;
* Provide a solution that will not need to be patched (no security patches since release in 2004, private implementations in use since 2002).&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/Reform-0.11.zip Reform-0.11.zip] (stable)&lt;br /&gt;
&lt;br /&gt;
The latest code is now being maintained in a Google Code repository [http://code.google.com/p/reform/]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Unicode support&lt;br /&gt;
* Context specific functions (HTML, XML, JavaScript, etc)&lt;br /&gt;
* Many supported languages&lt;br /&gt;
** Java&lt;br /&gt;
** .NET v1/v2&lt;br /&gt;
** PHP&lt;br /&gt;
** Python&lt;br /&gt;
** Perl&lt;br /&gt;
** JavaScript&lt;br /&gt;
* Support for AJAX&lt;br /&gt;
* Conservative approach&lt;br /&gt;
* Solves all current XSS techniques&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
* Ruby support&lt;br /&gt;
* Java framework support&lt;br /&gt;
* LDAP encoding functions&lt;br /&gt;
* Add documentation on resolving XPath issues&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Adopts Reform - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
OWASP is adopting the Reform Encoding Library as an OWASP project.  We are currently in the process of moving over the source, downloads, and documentation.&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Created! - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
The Open Web Application Security Project is proud to announce the OWASP Encoding Project!&lt;br /&gt;
&lt;br /&gt;
== Feedback and Participation: ==&lt;br /&gt;
&lt;br /&gt;
We hope you find the OWASP Encoding Project useful. Please contribute to the Project by volunteering for one of the tasks, sending your comments, questions, and suggestions to owasp@owasp.org.  To join the OWASP Encoding Project mailing list or view the archives, please visit the [http://lists.owasp.org/mailman/listinfo/owasp-encoding subscription page.]&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
Michael Eddington&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12360</id>
		<title>Category:OWASP Encoding Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12360"/>
				<updated>2006-11-12T10:11:10Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Download */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Web applications face any number of threats; one of them is cross-site scripting and related injection attacks.  90% of all web applications contain cross-site scripting attacks because they are easy to introduce, and the proper tools are not always available to prevent them.  There is no good single library that provides all the functions required by developers to incorporate a fix into there code that will stand up to the test of time and continual research in the field.  The Reform library attempts to provide a solid set of functions for encoding output for the most common context targets in web applications (e.g. HTML, XML, JavaScript, etc).  The library also takes a conservative view of what are allowable characters based on historical vulnerabilities, and current injection techniques.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide tools needed by developers to mitigate canonicalization issues in web technologies.&lt;br /&gt;
* Provide a solution that will not need to be patched (no security patches since release in 2004, private implementations in use since 2002).&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/Reform-0.11.zip Reform-0.11.zip] (stable)&lt;br /&gt;
[http://phed.org/files/Reform-0.10.zip Reform-0.10.zip]&lt;br /&gt;
&lt;br /&gt;
The latest code is now being maintained in a Google Code repository [http://code.google.com/p/reform/]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Unicode support&lt;br /&gt;
* Context specific functions (HTML, XML, JavaScript, etc)&lt;br /&gt;
* Many supported languages&lt;br /&gt;
** Java&lt;br /&gt;
** .NET v1/v2&lt;br /&gt;
** PHP&lt;br /&gt;
** Python&lt;br /&gt;
** Perl&lt;br /&gt;
** JavaScript&lt;br /&gt;
* Support for AJAX&lt;br /&gt;
* Conservative approach&lt;br /&gt;
* Solves all current XSS techniques&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
* Ruby support&lt;br /&gt;
* Java framework support&lt;br /&gt;
* LDAP encoding functions&lt;br /&gt;
* Add documentation on resolving XPath issues&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Adopts Reform - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
OWASP is adopting the Reform Encoding Library as an OWASP project.  We are currently in the process of moving over the source, downloads, and documentation.&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Created! - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
The Open Web Application Security Project is proud to announce the OWASP Encoding Project!&lt;br /&gt;
&lt;br /&gt;
== Feedback and Participation: ==&lt;br /&gt;
&lt;br /&gt;
We hope you find the OWASP Encoding Project useful. Please contribute to the Project by volunteering for one of the tasks, sending your comments, questions, and suggestions to owasp@owasp.org.  To join the OWASP Encoding Project mailing list or view the archives, please visit the [http://lists.owasp.org/mailman/listinfo/owasp-encoding subscription page.]&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
Michael Eddington&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12255</id>
		<title>Category:OWASP Encoding Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12255"/>
				<updated>2006-11-11T00:52:25Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Download */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Web applications face any number of threats; one of them is cross-site scripting and related injection attacks.  90% of all web applications contain cross-site scripting attacks because they are easy to introduce, and the proper tools are not always available to prevent them.  There is no good single library that provides all the functions required by developers to incorporate a fix into there code that will stand up to the test of time and continual research in the field.  The Reform library attempts to provide a solid set of functions for encoding output for the most common context targets in web applications (e.g. HTML, XML, JavaScript, etc).  The library also takes a conservative view of what are allowable characters based on historical vulnerabilities, and current injection techniques.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide tools needed by developers to mitigate canonicalization issues in web technologies.&lt;br /&gt;
* Provide a solution that will not need to be patched (no security patches since release in 2004, private implementations in use since 2002).&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
[http://phed.org/files/Reform-0.10.zip Reform-0.10.zip] (stable)&lt;br /&gt;
&lt;br /&gt;
The latest code is now being maintained in a Google Code repository [http://code.google.com/p/reform/]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Unicode support&lt;br /&gt;
* Context specific functions (HTML, XML, JavaScript, etc)&lt;br /&gt;
* Many supported languages&lt;br /&gt;
** Java&lt;br /&gt;
** .NET v1/v2&lt;br /&gt;
** PHP&lt;br /&gt;
** Python&lt;br /&gt;
** Perl&lt;br /&gt;
** JavaScript&lt;br /&gt;
* Support for AJAX&lt;br /&gt;
* Conservative approach&lt;br /&gt;
* Solves all current XSS techniques&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
* Ruby support&lt;br /&gt;
* Java framework support&lt;br /&gt;
* LDAP encoding functions&lt;br /&gt;
* Add documentation on resolving XPath issues&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Adopts Reform - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
OWASP is adopting the Reform Encoding Library as an OWASP project.  We are currently in the process of moving over the source, downloads, and documentation.&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Created! - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
The Open Web Application Security Project is proud to announce the OWASP Encoding Project!&lt;br /&gt;
&lt;br /&gt;
== Feedback and Participation: ==&lt;br /&gt;
&lt;br /&gt;
We hope you find the OWASP Encoding Project useful. Please contribute to the Project by volunteering for one of the tasks, sending your comments, questions, and suggestions to owasp@owasp.org.  To join the OWASP Encoding Project mailing list or view the archives, please visit the [http://lists.owasp.org/mailman/listinfo/owasp-encoding subscription page.]&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
Michael Eddington&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12254</id>
		<title>Category:OWASP Encoding Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12254"/>
				<updated>2006-11-11T00:48:24Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Download */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Web applications face any number of threats; one of them is cross-site scripting and related injection attacks.  90% of all web applications contain cross-site scripting attacks because they are easy to introduce, and the proper tools are not always available to prevent them.  There is no good single library that provides all the functions required by developers to incorporate a fix into there code that will stand up to the test of time and continual research in the field.  The Reform library attempts to provide a solid set of functions for encoding output for the most common context targets in web applications (e.g. HTML, XML, JavaScript, etc).  The library also takes a conservative view of what are allowable characters based on historical vulnerabilities, and current injection techniques.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide tools needed by developers to mitigate canonicalization issues in web technologies.&lt;br /&gt;
* Provide a solution that will not need to be patched (no security patches since release in 2004, private implementations in use since 2002).&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The most recent released version of Reform can be downloaded from [http://sourceforge.net/project/showfiles.php?group_id=149309].&lt;br /&gt;
&lt;br /&gt;
The latest code is also now being maintained in a Google Code repository [http://code.google.com/p/reform/]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Unicode support&lt;br /&gt;
* Context specific functions (HTML, XML, JavaScript, etc)&lt;br /&gt;
* Many supported languages&lt;br /&gt;
** Java&lt;br /&gt;
** .NET v1/v2&lt;br /&gt;
** PHP&lt;br /&gt;
** Python&lt;br /&gt;
** Perl&lt;br /&gt;
** JavaScript&lt;br /&gt;
* Support for AJAX&lt;br /&gt;
* Conservative approach&lt;br /&gt;
* Solves all current XSS techniques&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
* Ruby support&lt;br /&gt;
* Java framework support&lt;br /&gt;
* LDAP encoding functions&lt;br /&gt;
* Add documentation on resolving XPath issues&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Adopts Reform - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
OWASP is adopting the Reform Encoding Library as an OWASP project.  We are currently in the process of moving over the source, downloads, and documentation.&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Created! - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
The Open Web Application Security Project is proud to announce the OWASP Encoding Project!&lt;br /&gt;
&lt;br /&gt;
== Feedback and Participation: ==&lt;br /&gt;
&lt;br /&gt;
We hope you find the OWASP Encoding Project useful. Please contribute to the Project by volunteering for one of the tasks, sending your comments, questions, and suggestions to owasp@owasp.org.  To join the OWASP Encoding Project mailing list or view the archives, please visit the [http://lists.owasp.org/mailman/listinfo/owasp-encoding subscription page.]&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
Michael Eddington&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12086</id>
		<title>Category:OWASP Encoding Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12086"/>
				<updated>2006-11-09T02:02:19Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: /* Download */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Web applications face any number of threats; one of them is cross-site scripting and related injection attacks.  90% of all web applications contain cross-site scripting attacks because they are easy to introduce, and the proper tools are not always available to prevent them.  There is no good single library that provides all the functions required by developers to incorporate a fix into there code that will stand up to the test of time and continual research in the field.  The Reform library attempts to provide a solid set of functions for encoding output for the most common context targets in web applications (e.g. HTML, XML, JavaScript, etc).  The library also takes a conservative view of what are allowable characters based on historical vulnerabilities, and current injection techniques.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide tools needed by developers to mitigate canonicalization issues in web technologies.&lt;br /&gt;
* Provide a solution that will not need to be patched (no security patches since release in 2004, private implementations in use since 2002).&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The most recent released version of Reform can be downloaded from [http://sourceforge.net/project/showfiles.php?group_id=149309].&lt;br /&gt;
&lt;br /&gt;
The latest code is also now being maintained in a Google Code repository [http://code.google.com/p/reform/]  (well, we are moving things over.  check out sf.net for now)&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Unicode support&lt;br /&gt;
* Context specific functions (HTML, XML, JavaScript, etc)&lt;br /&gt;
* Many supported languages&lt;br /&gt;
** Java&lt;br /&gt;
** .NET v1/v2&lt;br /&gt;
** PHP&lt;br /&gt;
** Python&lt;br /&gt;
** Perl&lt;br /&gt;
** JavaScript&lt;br /&gt;
* Support for AJAX&lt;br /&gt;
* Conservative approach&lt;br /&gt;
* Solves all current XSS techniques&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
* Ruby support&lt;br /&gt;
* Java framework support&lt;br /&gt;
* LDAP encoding functions&lt;br /&gt;
* Add documentation on resolving XPath issues&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Adopts Reform - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
OWASP is adopting the Reform Encoding Library as an OWASP project.  We are currently in the process of moving over the source, downloads, and documentation.&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Created! - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
The Open Web Application Security Project is proud to announce the OWASP Encoding Project!&lt;br /&gt;
&lt;br /&gt;
== Feedback and Participation: ==&lt;br /&gt;
&lt;br /&gt;
We hope you find the OWASP Encoding Project useful. Please contribute to the Project by volunteering for one of the tasks, sending your comments, questions, and suggestions to owasp@owasp.org.  To join the OWASP Encoding Project mailing list or view the archives, please visit the [http://lists.owasp.org/mailman/listinfo/owasp-encoding subscription page.]&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
Michael Eddington&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12085</id>
		<title>Category:OWASP Encoding Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Encoding_Project&amp;diff=12085"/>
				<updated>2006-11-09T01:58:58Z</updated>
		
		<summary type="html">&lt;p&gt;Meddington: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Web applications face any number of threats; one of them is cross-site scripting and related injection attacks.  90% of all web applications contain cross-site scripting attacks because they are easy to introduce, and the proper tools are not always available to prevent them.  There is no good single library that provides all the functions required by developers to incorporate a fix into there code that will stand up to the test of time and continual research in the field.  The Reform library attempts to provide a solid set of functions for encoding output for the most common context targets in web applications (e.g. HTML, XML, JavaScript, etc).  The library also takes a conservative view of what are allowable characters based on historical vulnerabilities, and current injection techniques.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide tools needed by developers to mitigate canonicalization issues in web technologies.&lt;br /&gt;
* Provide a solution that will not need to be patched (no security patches since release in 2004, private implementations in use since 2002).&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The most recent released version of Reform can be downloaded from [http://sourceforge.net/project/showfiles.php?group_id=149309].&lt;br /&gt;
&lt;br /&gt;
The latest code is also now being maintained in a Google Code repository [http://code.google.com/p/reform/]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Unicode support&lt;br /&gt;
* Context specific functions (HTML, XML, JavaScript, etc)&lt;br /&gt;
* Many supported languages&lt;br /&gt;
** Java&lt;br /&gt;
** .NET v1/v2&lt;br /&gt;
** PHP&lt;br /&gt;
** Python&lt;br /&gt;
** Perl&lt;br /&gt;
** JavaScript&lt;br /&gt;
* Support for AJAX&lt;br /&gt;
* Conservative approach&lt;br /&gt;
* Solves all current XSS techniques&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
* Ruby support&lt;br /&gt;
* Java framework support&lt;br /&gt;
* LDAP encoding functions&lt;br /&gt;
* Add documentation on resolving XPath issues&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Adopts Reform - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
OWASP is adopting the Reform Encoding Library as an OWASP project.  We are currently in the process of moving over the source, downloads, and documentation.&lt;br /&gt;
&lt;br /&gt;
 '''OWASP Encoding Project Created! - 10:01, 8 November 2006 (EST)'''&lt;br /&gt;
&lt;br /&gt;
The Open Web Application Security Project is proud to announce the OWASP Encoding Project!&lt;br /&gt;
&lt;br /&gt;
== Feedback and Participation: ==&lt;br /&gt;
&lt;br /&gt;
We hope you find the OWASP Encoding Project useful. Please contribute to the Project by volunteering for one of the tasks, sending your comments, questions, and suggestions to owasp@owasp.org.  To join the OWASP Encoding Project mailing list or view the archives, please visit the [http://lists.owasp.org/mailman/listinfo/owasp-encoding subscription page.]&lt;br /&gt;
&lt;br /&gt;
== Project Contributors ==&lt;br /&gt;
&lt;br /&gt;
Michael Eddington&lt;br /&gt;
&lt;br /&gt;
== Project Sponsor ==&lt;br /&gt;
&lt;br /&gt;
[http://leviathansecurity.com Leviathan Security Group, Inc.]&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;/div&gt;</summary>
		<author><name>Meddington</name></author>	</entry>

	</feed>