<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>AntiXSS Discussions Rss Feed</title><link>http://www.codeplex.com/AntiXSS/Thread/List.aspx</link><description>AntiXSS Discussions Rss Description</description><item><title>New Post: Comparison with validating XHTML via XML Schema</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=74660</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I have updated the validating schema to restrict the . Originally, the &lt;strong&gt;a/@href&lt;/strong&gt; (hypertext link URI) element's href attribute&amp;nbsp;was of type xs:anyURI. However, this allowed script input like:&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;a&lt;/span&gt; &lt;span style="color:Red"&gt;href&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;javascript:alert('oh oh');&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;scripted&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;a&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;So I have updated the XML schema so that the &lt;strong&gt;a/@href&lt;/strong&gt; attribute uses&amp;nbsp;a custom simple type (called restrictedURI)&amp;nbsp;derived by restriction from xs:anyURI and constrained by a pattern to have to start with &amp;quot;http://&amp;quot; as shown below:&lt;/p&gt;
&lt;pre&gt;&lt;div style="color:Black;background-color:White"&gt;&lt;pre&gt;&lt;span style="color:Blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#A31515"&gt;xml&lt;/span&gt; &lt;span style="color:Red"&gt;version&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;1.0&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;encoding&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;UTF-8&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;?&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;schema&lt;/span&gt; &lt;span style="color:Red"&gt;xmlns:xs&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;http://www.w3.org/2001/XMLSchema&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;http://www.w3.org/1999/xhtml&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;targetNamespace&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;http://www.w3.org/1999/xhtml&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;annotation&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;documentation&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
		  Greatly simplified from W3C modular schema.
		&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;documentation&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;annotation&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Green"&gt;&amp;lt;!-- div --&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;complexType&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;div.type&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;choice&lt;/span&gt; &lt;span style="color:Red"&gt;minOccurs&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;0&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;maxOccurs&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;unbounded&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;ref&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;p&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;ref&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;ol&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;ref&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;ul&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;choice&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;complexType&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;div&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;type&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;div.type&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
	&lt;span style="color:Green"&gt;&amp;lt;!-- p --&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;p&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;type&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;inlineContent&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
	&lt;span style="color:Green"&gt;&amp;lt;!-- li --&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;li&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;type&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;inlineContent&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
	&lt;span style="color:Green"&gt;&amp;lt;!-- ol  --&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;complexType&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;xhtml.ol.type&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;sequence&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;ref&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;li&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;maxOccurs&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;unbounded&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;sequence&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;complexType&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;ol&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;type&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;xhtml.ol.type&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
	&lt;span style="color:Green"&gt;&amp;lt;!-- ul  --&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;complexType&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;xhtml.ul.type&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;sequence&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;ref&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;li&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;maxOccurs&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;unbounded&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;sequence&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;complexType&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;ul&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;type&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;xhtml.ul.type&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
	&lt;span style="color:Green"&gt;&amp;lt;!-- a --&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;a&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;complexType&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;simpleContent&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
				&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;extension&lt;/span&gt; &lt;span style="color:Red"&gt;base&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;xs:string&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
					&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;attribute&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;href&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;type&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;restrictedURI&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
				&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;extension&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;simpleContent&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;complexType&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Green"&gt;&amp;lt;!-- em --&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;complexType&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;xhtml.em.type&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;mixed&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;true&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;em&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;type&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;xhtml.em.type&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
	&lt;span style="color:Green"&gt;&amp;lt;!-- strong --&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;complexType&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;xhtml.strong.type&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;mixed&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;true&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;strong&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;type&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;xhtml.strong.type&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
	&lt;span style="color:Green"&gt;&amp;lt;!-- inline content --&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;complexType&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;inlineContent&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;mixed&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;true&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;choice&lt;/span&gt; &lt;span style="color:Red"&gt;minOccurs&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;0&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;maxOccurs&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;unbounded&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;ref&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;a&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;ref&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;em&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;element&lt;/span&gt; &lt;span style="color:Red"&gt;ref&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;strong&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;choice&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;complexType&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Green"&gt;&amp;lt;!-- restricted URL --&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;simpleType&lt;/span&gt; &lt;span style="color:Red"&gt;name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;restrictedURI&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;restriction&lt;/span&gt; &lt;span style="color:Red"&gt;base&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;xs:anyURI&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;pattern&lt;/span&gt; &lt;span style="color:Red"&gt;value&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;http://.*&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;restriction&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;simpleType&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;xs&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;schema&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;&lt;/div&gt;</description><author>TavisR</author><pubDate>Tue, 17 Nov 2009 15:43:36 GMT</pubDate><guid isPermaLink="false">New Post: Comparison with validating XHTML via XML Schema 20091117034336P</guid></item><item><title>New Post: Can you configure "SafeHTML"?</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=70740</link><description>&lt;div style="line-height: normal;"&gt;&lt;div class=Section1&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Interesting solution. There is a similar type of problem in this discussion &lt;a href="http://antixss.codeplex.com/Thread/View.aspx?ThreadId=74660"&gt;http://antixss.codeplex.com/Thread/View.aspx?ThreadId=74660&lt;/a&gt;. It uses a different approach of sanitization and encoding.&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Thanks&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Anil Revuru (INFORMATION SECURITY TOOLS)&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in"&gt;&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;span style="font-size:10.0pt;font-family:'Tahoma','sans-serif'"&gt;From:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.0pt;font-family:'Tahoma','sans-serif'"&gt; patrikc [mailto:notifications@codeplex.com] &lt;br&gt;&lt;b&gt;Sent:&lt;/b&gt; Thursday, November 12, 2009 10:16 PM&lt;br&gt;&lt;b&gt;To:&lt;/b&gt; Anil Revuru (INFORMATION SECURITY TOOLS)&lt;br&gt;&lt;b&gt;Subject:&lt;/b&gt; Re: Can you configure &amp;quot;SafeHTML&amp;quot;? [AntiXSS:70740]&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=MsoNormal&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;From: patrikc&lt;/span&gt;&lt;/p&gt;&lt;div style="margin-bottom:24.0pt" id=ThreadNotificationPostBody&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;I also needed that so I created a regex to fetch all the tags except a list of tags that I wanted to render through GetSafeHtml.&lt;br&gt;I wrote about it on my &lt;a href="http://patrikc.wordpress.com/2009/11/12/antixss-med-valfria-html-taggar/"&gt;blog&lt;/a&gt; (swedish), however the code I used looked something like this.&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;String data = &lt;/span&gt;&lt;span style="color:#A31515"&gt;&amp;quot;some text.&amp;quot;&lt;/span&gt;&lt;span style="color:black"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;String tags = &lt;/span&gt;&lt;span style="color:#A31515"&gt;&amp;quot;div|img|br&amp;quot;&lt;/span&gt;&lt;span style="color:black"&gt;; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;String pattern = String.Concat(&lt;/span&gt;&lt;span style="color:#A31515"&gt;@&amp;quot;&amp;lt;(?!/?(&amp;quot;&lt;/span&gt;&lt;span style="color:black"&gt;, tags, &lt;/span&gt;&lt;span style="color:#A31515"&gt;@&amp;quot;)( .*?|&amp;gt;)).*?&amp;gt;&amp;quot;&lt;/span&gt;&lt;span style="color:black"&gt;);&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;MatchCollection mc = Regex.Matches(data, pattern, RegexOptions.IgnoreCase);&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background:white"&gt;&lt;span style="color:blue"&gt;foreach&lt;/span&gt;&lt;span style="color:black"&gt; (Match match &lt;/span&gt;&lt;span style="color:blue"&gt;in&lt;/span&gt;&lt;span style="color:black"&gt; mc)&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    data = data.Replace(match.Value, AntiXss.HtmlEncode(match.Value));&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;data = AntiXss.GetSafeHtml(data); &lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border:none;border-top:solid #CCCCCC 1.0pt;padding:0in 0in 0in 0in" id=ThreadNotificationFooter&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;Read the &lt;a href="http://antixss.codeplex.com/Thread/View.aspx?ThreadId=70740&amp;ANCHOR#Post256460"&gt;full discussion online&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;To add a post to this discussion, reply to this email (&lt;a href="mailto:AntiXSS@discussions.codeplex.com?subject=[AntiXSS:70740]"&gt;AntiXSS@discussions.codeplex.com&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;To start a new discussion for this project, email &lt;a href="mailto:AntiXSS@discussions.codeplex.com"&gt;AntiXSS@discussions.codeplex.com&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;You are receiving this email because you subscribed to this discussion on CodePlex. You can &lt;a href="https://antixss.codeplex.com/subscriptions/thread/project/edit"&gt;unsubscribe or change your settings&lt;/a&gt; on codePlex.com.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><author>anilkr</author><pubDate>Mon, 16 Nov 2009 19:26:36 GMT</pubDate><guid isPermaLink="false">New Post: Can you configure "SafeHTML"? 20091116072636P</guid></item><item><title>New Post: Comparison with validating XHTML via XML Schema</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=74660</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Thanks for your reply. Here is our &lt;a title="W3C XML Schema" href="http://www.adamsmithcollege.ac.uk/xml/schema/w3c/1999/xhtml/simpletextentry.xsd"&gt;prototype &amp;quot;simple text entry&amp;quot; schema&lt;/a&gt; based on W3C XHTML. I tried to create this&amp;nbsp;with XHTML modules, but that was more complex than I could manage in the time. We do not want users to format the input with styles, but just use paragraphs, lists and hyperlinks.&lt;/p&gt;
&lt;p&gt;Our test&amp;nbsp;ASP.NET page validates the HTML entry of our FCKEditor page. Here are the various components.&lt;/p&gt;
&lt;p&gt;ASP.NET page:&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;&lt;span style="background-color:Yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:Blue"&gt;@&lt;/span&gt; &lt;span style="color:#A31515"&gt;Page&lt;/span&gt; &lt;span style="color:Red"&gt;Title&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;Custom XML Schema validation of FCKEditor HTML input&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;Language&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;VB&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;MasterPageFile&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;~/plainer.master&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;CodeFile&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;default.aspx.vb&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;Inherits&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;tests_validation_html_customvalidator_default&amp;quot;&lt;/span&gt; &lt;span style="background-color:Yellow"&gt;%&amp;gt;&lt;/span&gt;
&lt;span style="background-color:Yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:Blue"&gt;@&lt;/span&gt; &lt;span style="color:#A31515"&gt;Register&lt;/span&gt; &lt;span style="color:Red"&gt;TagPrefix&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;FCKeditorV2&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;Namespace&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;FredCK.FCKeditorV2&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;Assembly&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;FredCK.FCKeditorV2&amp;quot;&lt;/span&gt; &lt;span style="background-color:Yellow"&gt;%&amp;gt;&lt;/span&gt;

&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;asp&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;Content&lt;/span&gt; &lt;span style="color:Red"&gt;ID&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;Content1&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;ContentPlaceHolderID&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;plaContent&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;Runat&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;Server&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;h1&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;a&lt;/span&gt; &lt;span style="color:Red"&gt;href&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;/tests/validation/html/customvalidator&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;Custom XML Schema validation of FCKEditor HTML input&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;a&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;abbr&lt;/span&gt; &lt;span style="color:Red"&gt;title&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;major version&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;abbr&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;.
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;abbr&lt;/span&gt; &lt;span style="color:Red"&gt;title&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;minor version&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;4&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;abbr&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;.
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;abbr&lt;/span&gt; &lt;span style="color:Red"&gt;title&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;revision&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;abbr&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;.
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;abbr&lt;/span&gt; &lt;span style="color:Red"&gt;title&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;build&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;48&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;abbr&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;h1&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;p&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;The Additional Information/Please include details box is validated against a
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;a&lt;/span&gt; &lt;span style="color:Red"&gt;href&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;http://www.adamsmithcollege.ac.uk/xml/schema/w3c/1999/xhtml/simpletextentry.xsd&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;very cut-down XHTML-based schema&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;a&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;.
		The box uses the FCKEditor Basic toolbar set, which includes the &lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;code&lt;/span&gt; &lt;span style="color:Red"&gt;style&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;font-size: large;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;b&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;B&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;b&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;code&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt; and
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;code&lt;/span&gt; &lt;span style="color:Red"&gt;style&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;font-size: large;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;i&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;I&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;i&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;code&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt; buttons; these elements are not allowed
		in the schema, so if they are used in the input text, it should fail the validation.&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;p&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;p&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;The Additional Information/Reason for making this application is validated against a
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;a&lt;/span&gt; &lt;span style="color:Red"&gt;href&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;http://www.adamsmithcollege.ac.uk/xml/schema/w3c/1999/xhtml/simpletextentry.xsd&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;very cut-down XHTML-based schema&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;a&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;.
		The box uses a custom toolbar set called ascSimpleTextEntry which does &lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;strong&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;not&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;strong&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt; include the &lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;code&lt;/span&gt; &lt;span style="color:Red"&gt;style&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;font-size: large;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;b&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;B&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;b&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;code&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
		and &lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;code&lt;/span&gt; &lt;span style="color:Red"&gt;style&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;font-size: large;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;i&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;I&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;i&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;code&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt; buttons.&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;p&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;p&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;The FCKEditor controls on this page use the ascconfig.js configuration file.&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;p&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;div&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;asp&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;Label&lt;/span&gt; &lt;span style="color:Red"&gt;ID&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;lblOutput&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;Text&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;Validation test results and HTML code captured: &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;runat&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;div&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;div&lt;/span&gt; &lt;span style="color:Red"&gt;id&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;formlong&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;fieldset&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;legend&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;Additional Information&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;legend&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;label&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;Please include details of any skills, aptitudes, or personal qualities and explain how you might use them in this post.
				&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;FCKeditorV2&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;FCKeditor&lt;/span&gt; &lt;span style="color:Red"&gt;id&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;fckAdditionalInformation&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;CustomConfigurationsPath&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;/fckeditor/ascconfig.js&amp;quot;&lt;/span&gt;
					&lt;span style="color:Red"&gt;EnableXHTML&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;ToolbarSet&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;Basic&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;EnableSourceXHTML&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;ForcePasteAsPlainText&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;FormatSource&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;
					&lt;span style="color:Red"&gt;runat&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
				&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;asp&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;CustomValidator&lt;/span&gt; &lt;span style="color:Red"&gt;ID&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;cvlAdditionalInformation&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;ControlToValidate&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;fckAdditionalInformation&amp;quot;&lt;/span&gt;
           &lt;span style="color:Red"&gt;OnServerValidate&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;ServerValidation&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;ErrorMessage&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;Additional Information is not valid. &amp;quot;&lt;/span&gt; 
           &lt;span style="color:Red"&gt;Display&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;Dynamic&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;runat&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;label&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;label&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;Reason for making this application:
				&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;FCKeditorV2&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;FCKeditor&lt;/span&gt; &lt;span style="color:Red"&gt;id&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;fckApplicationReason&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;CustomConfigurationsPath&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;/fckeditor/ascconfig.js&amp;quot;&lt;/span&gt;
					&lt;span style="color:Red"&gt;EnableXHTML&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;ToolbarSet&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;ascSimpleTextEntry&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;EnableSourceXHTML&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;ForcePasteAsPlainText&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;FormatSource&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;
					&lt;span style="color:Red"&gt;runat&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
				&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;asp&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;CustomValidator&lt;/span&gt; &lt;span style="color:Red"&gt;ID&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;cvlApplicationReason&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;ControlToValidate&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;fckApplicationReason&amp;quot;&lt;/span&gt;
           &lt;span style="color:Red"&gt;OnServerValidate&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;ServerValidation&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;ErrorMessage&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;Additional Information is not valid. &amp;quot;&lt;/span&gt; 
           &lt;span style="color:Red"&gt;Display&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;Dynamic&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;runat&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
			&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;label&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;fieldset&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;asp&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;Button&lt;/span&gt; &lt;span style="color:Red"&gt;id&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;btnSubmit&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;Text&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;Validate&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;OnClick&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;ValidateBtn_OnClick&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;CausesValidation&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;
			&lt;span style="color:Red"&gt;runat&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
		&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;asp&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;ValidationSummary&lt;/span&gt; &lt;span style="color:Red"&gt;ID&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;vlsInsert&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;ValidationGroup&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;vlgInsert&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;runat&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
	&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;div&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;asp&lt;/span&gt;&lt;span style="color:Blue"&gt;:&lt;/span&gt;&lt;span style="color:#A31515"&gt;Content&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Code behind (VB.NET):&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
Imports System.Xml.XPath
Partial Class tests_validation_html_customvalidator_default
	Inherits System.Web.UI.Page
	Public strValidationMessages As String
	Function ValidateXhtml(ByVal strXhtmlFragment As String) As Boolean
		' Validate a string as a cut-down subset of XHTML.
		Dim booXhtmlValid As Boolean = True
		Dim trdXhtml As TextReader = New StringReader(strXhtmlFragment)
		' Try something from http://msdn.microsoft.com/en-us/library/ms162371.aspx
		Dim settings As XmlReaderSettings = New XmlReaderSettings()
		Dim eventHandler As ValidationEventHandler = New ValidationEventHandler(AddressOf ValidationCallBack)
		Dim document As XmlDocument = New XmlDocument()
		Dim navigator As XPathNavigator = document.CreateNavigator()
		Try
			settings.Schemas.Add(&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;, &amp;quot;http://www.adamsmithcollege.ac.uk/xml/schema/w3c/1999/xhtml/simpletextentry.xsd&amp;quot;)
			settings.ValidationType = ValidationType.Schema
			' Create the XmlReader object.
			Dim reader As XmlReader = XmlReader.Create(trdXhtml, settings)
			document.Load(reader)
			' Validate the document, and set the return value of True (validates against schema) or False (fails to validate) accordingly.
			document.Validate(eventHandler)
			If document.SchemaInfo.Validity = XmlSchemaValidity.Invalid Or document.SchemaInfo.Validity = XmlSchemaValidity.NotKnown Then
				booXhtmlValid = False
			End If
			document.Validate(eventHandler)
			' Debugging information.
			strValidationMessages &amp;amp;= &amp;quot;document.OuterXml = &amp;quot; &amp;amp; Server.HtmlEncode(document.OuterXml) &amp;amp; &amp;quot;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;br&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;&amp;quot;
			strValidationMessages &amp;amp;= &amp;quot;document.SchemaInfo.Validity = &amp;quot; &amp;amp; Server.HtmlEncode(document.SchemaInfo.Validity.ToString) &amp;amp; &amp;quot;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;br&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;&amp;quot;
		Catch ex As Exception
			strValidationMessages &amp;amp;= ex.Message
			booXhtmlValid = False
		End Try
		Return booXhtmlValid
	End Function
	'' Display any validation errors.
	Sub ValidationCallBack(ByVal sender As Object, ByVal e As ValidationEventArgs)
		strValidationMessages &amp;amp;= e.Message
	End Sub
	Sub ValidateBtn_OnClick(ByVal sender As Object, ByVal e As EventArgs)
		lblOutput.Text &amp;amp;= strValidationMessages
		If Page.IsValid Then
			lblOutput.Text &amp;amp;= &amp;quot;Page is valid. &lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;br&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;br&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;&amp;quot;
		Else
			lblOutput.Text &amp;amp;= &amp;quot;Page is not valid! &lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;br&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;br&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;&amp;quot;
		End If
	End Sub
	Sub ServerValidation(ByVal source As Object, ByVal arguments As ServerValidateEventArgs)
		Dim strAdditionalInformation As String = &amp;quot;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;div&lt;/span&gt; &lt;span style="color:Red"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;&amp;quot; &amp;amp; arguments.Value &amp;amp; &amp;quot;&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;div&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;&amp;quot;
		'lblOutput.Text &amp;amp;= &amp;quot;strAdditionalInformation = &amp;quot; &amp;amp; Server.HtmlEncode(strAdditionalInformation) &amp;amp; &amp;quot;. &amp;quot;
		arguments.IsValid = ValidateXhtml(strAdditionalInformation)
	End Sub
End Class
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;FCKEditor configuration has this custom ascSimpleTextEntry&amp;nbsp;toolbar set&amp;nbsp;which should only show buttons which put in elements which are valid against the &amp;quot;simple text entry&amp;quot; schema:&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;&lt;span style="color:Green"&gt;// Toolbar Sets&lt;/span&gt;
FCKConfig.ToolbarSets[&lt;span style="color:#A31515"&gt;&amp;quot;ascSimpleTextEntry&amp;quot;&lt;/span&gt;] = [
[&lt;span style="color:#A31515"&gt;'OrderedList'&lt;/span&gt;,&lt;span style="color:#A31515"&gt;'UnorderedList'&lt;/span&gt;,&lt;span style="color:#A31515"&gt;'-'&lt;/span&gt;,&lt;span style="color:#A31515"&gt;'Link'&lt;/span&gt;,&lt;span style="color:#A31515"&gt;'Unlink'&lt;/span&gt;,&lt;span style="color:#A31515"&gt;'-'&lt;/span&gt;,&lt;span style="color:#A31515"&gt;'About'&lt;/span&gt;]
] ;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;FCKEditor could be replaced by another XHTML-compliant editor (like its successor CKEditor),&amp;nbsp;the principle is the same.&lt;/p&gt;
&lt;p&gt;So, following your suggestion, one extra thing we would need to sanitize is the content of the a/@href attribute. To be doubly sure of no HTML text&amp;nbsp;content being HTML unencoded in future, we could sanitize that (even though we intend to store the HTML input encoded, and therefore never unencode it). Assuming these steps were taken, do you think the XSS security angles would be covered?&lt;/p&gt;&lt;/div&gt;</description><author>TavisR</author><pubDate>Fri, 13 Nov 2009 09:55:20 GMT</pubDate><guid isPermaLink="false">New Post: Comparison with validating XHTML via XML Schema 20091113095520A</guid></item><item><title>New Post: Comparison with validating XHTML via XML Schema</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=74660</link><description>&lt;div style="line-height: normal;"&gt;&lt;div class=Section1&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;This is interesting way to sanitize input, I have to agree that it does fall in the inclusions principle space. XML schema can be used to validate HTML for valid structure. But I would not suggest it as a security option though, primarily you are checking the structure but not its content. For example, you could have an element with class or style attribute with scripts in them. You are only as good as your allowed list of elements and attributes, which can make formatting very hard for users.&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;I think encoding and sanitization are two options for the same solution. Where sanitization involves removing or replacing undesirable characters and encoding involves transforming undesirable characters into representation which otherwise might pose a security threat. So you would either choose to sanitize the input (which is a tougher problem to solve based on the domain of characters you are accepting) or encode the input. You could do both, but does not add any value.&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;I would suggest one addition to your approach, validate the schema as you said and in addition validate content inside each element to ensure you accept valid characters. Have a whitelist of characters that you accept and ensure that text inside elements match this whitelist. This way, you are validating the structure and content inside structure. I would like to know your final implementation for curiosity sake.&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Thoughts?&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Anil Revuru (INFORMATION SECURITY TOOLS)&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in"&gt;&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;span style="font-size:10.0pt;font-family:'Tahoma','sans-serif'"&gt;From:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.0pt;font-family:'Tahoma','sans-serif'"&gt; TavisR [mailto:notifications@codeplex.com] &lt;br&gt;&lt;b&gt;Sent:&lt;/b&gt; Tuesday, November 10, 2009 7:22 AM&lt;br&gt;&lt;b&gt;To:&lt;/b&gt; Anil Revuru (INFORMATION SECURITY TOOLS)&lt;br&gt;&lt;b&gt;Subject:&lt;/b&gt; Comparison with validating XHTML via XML Schema [AntiXSS:74660]&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=MsoNormal&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;From: TavisR&lt;/span&gt;&lt;/p&gt;&lt;div style="margin-bottom:24.0pt" id=ThreadNotificationPostBody&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;I gather that the XSS Library uses a character-based whitelist method.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;We were looking at another approach to validating FCKEditor-generated XHTML content using a custom ASP.NET validator which validates the text input against an &lt;a href="http://www.w3.org/standards/techs/xmlschema" title="World Wide Web Consortium: XML Schema Current Status"&gt;XML Schema&lt;/a&gt; representing a greatly cut-down subset of XHTML (basically allowing elements div, p, ul, ol, li, strong, em with no attribute plus a with @href).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;This approach (done right) would seem to serve security, editorial and accessibility purposes. It wouldn't work with HTML rather than XHTML (unless there was a prior conversion). You would need to lock down your XHTML editor interface to only present allowable formatting options (FCKEditor is sufficiently configurable). In our test page, we are currently wrapping XHTML fragment input in a div with the http://www.w3.org/1999/xhtml namespace, although your XHTML editor might manage this itself.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;So I think the schema-validation approach meets the &amp;quot;principle of inclusions&amp;quot; that XSS Library also follows. Using XML Schema we can be very sure of the input content structure.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Have you considered making this available via the XSS Library, or do you see problems with it? Are the two methods (encoding, schema) in any way complementary?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Might the XSS Library offer such XHTML-subset validation in future?&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div style="border:none;border-top:solid #CCCCCC 1.0pt;padding:0in 0in 0in 0in" id=ThreadNotificationFooter&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;Read the &lt;a href="http://antixss.codeplex.com/Thread/View.aspx?ThreadId=74660&amp;ANCHOR#Post255521"&gt;full discussion online&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;To add a post to this discussion, reply to this email (&lt;a href="mailto:AntiXSS@discussions.codeplex.com?subject=[AntiXSS:74660]"&gt;AntiXSS@discussions.codeplex.com&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;To start a new discussion for this project, email &lt;a href="mailto:AntiXSS@discussions.codeplex.com"&gt;AntiXSS@discussions.codeplex.com&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;You are receiving this email because you subscribed to this discussion on CodePlex. You can &lt;a href="https://antixss.codeplex.com/subscriptions/thread/project/edit"&gt;unsubscribe or change your settings&lt;/a&gt; on codePlex.com.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><author>anilkr</author><pubDate>Fri, 13 Nov 2009 06:06:01 GMT</pubDate><guid isPermaLink="false">New Post: Comparison with validating XHTML via XML Schema 20091113060601A</guid></item><item><title>New Post: Can you configure "SafeHTML"?</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=70740</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I also needed that so I created a regex to fetch all the tags except a list of tags that I wanted to render through GetSafeHtml.&lt;br&gt;I wrote about it on my &lt;a href="http://patrikc.wordpress.com/2009/11/12/antixss-med-valfria-html-taggar/"&gt;blog&lt;/a&gt; (swedish), however the code I used looked something like this.&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;String data = &lt;span style="color:#A31515"&gt;&amp;quot;some text.&amp;quot;&lt;/span&gt;;

String tags = &lt;span style="color:#A31515"&gt;&amp;quot;div|img|br&amp;quot;&lt;/span&gt;; 
String pattern = String.Concat(&lt;span style="color:#A31515"&gt;@&amp;quot;&amp;lt;(?!/?(&amp;quot;&lt;/span&gt;, tags, &lt;span style="color:#A31515"&gt;@&amp;quot;)( .*?|&amp;gt;)).*?&amp;gt;&amp;quot;&lt;/span&gt;);

MatchCollection mc = Regex.Matches(data, pattern, RegexOptions.IgnoreCase);
&lt;span style="color:Blue"&gt;foreach&lt;/span&gt; (Match match &lt;span style="color:Blue"&gt;in&lt;/span&gt; mc)
{
    data = data.Replace(match.Value, AntiXss.HtmlEncode(match.Value));
}

data = AntiXss.GetSafeHtml(data); 
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description><author>patrikc</author><pubDate>Thu, 12 Nov 2009 20:49:14 GMT</pubDate><guid isPermaLink="false">New Post: Can you configure "SafeHTML"? 20091112084914P</guid></item><item><title>New Post: Comparison with validating XHTML via XML Schema</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=74660</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I gather that the XSS Library uses a character-based whitelist method.&lt;/p&gt;
&lt;p&gt;We were looking at another approach to validating FCKEditor-generated XHTML content using a custom ASP.NET validator which validates the text input against an &lt;a title="World Wide Web Consortium: XML Schema Current Status" href="http://www.w3.org/standards/techs/xmlschema"&gt;XML Schema&lt;/a&gt; representing a&amp;nbsp;greatly cut-down subset of XHTML (basically allowing elements&amp;nbsp;div, p, ul, ol, li, strong, em with no attribute plus a with @href).&lt;/p&gt;
&lt;p&gt;This approach (done right) would seem to&amp;nbsp;serve security, editorial and accessibility purposes. It wouldn't work with HTML rather than XHTML (unless there was a prior conversion). You would need to lock down your XHTML editor&amp;nbsp;interface to only present allowable formatting options (FCKEditor is sufficiently configurable). In our test page, we are currently&amp;nbsp;wrapping XHTML fragment input in a div with the http://www.w3.org/1999/xhtml namespace, although your XHTML editor might manage this itself.&lt;/p&gt;
&lt;p&gt;So I think the schema-validation&amp;nbsp;approach&amp;nbsp;meets the &amp;quot;principle of inclusions&amp;quot; that XSS Library also follows. Using XML Schema we can be very sure of the input content structure.&lt;/p&gt;
&lt;p&gt;Have you considered making this available via the XSS Library, or do you see problems with it? Are the two methods (encoding, schema)&amp;nbsp;in any way complementary?&lt;/p&gt;
&lt;p&gt;Might the XSS Library offer such XHTML-subset validation in future?&lt;/p&gt;&lt;/div&gt;</description><author>TavisR</author><pubDate>Tue, 10 Nov 2009 15:17:18 GMT</pubDate><guid isPermaLink="false">New Post: Comparison with validating XHTML via XML Schema 20091110031718P</guid></item><item><title>New Post: x_ prepended to invalid HTML class attribute values?</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=74318</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I am finding (correct me if i'm wrong) when html is sent through GetSafeHtmlFragment(), if the class attribute value does not have comma's around it, the value is prepended with x_&lt;/p&gt;
&lt;p&gt;-thanks for any help you can give me&lt;/p&gt;
&lt;p&gt;Alex.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;P&lt;/span&gt; &lt;span style="color:Red"&gt;class&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;pageText&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;asdasd&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;P&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;.  &lt;span style="font-size:12pt"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;br&gt; Was sanatized into&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:12pt"&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;p&lt;/span&gt; &lt;span style="color:Red"&gt;class&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;quot;x_pageText&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;asdasd&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;p&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt; 
&lt;br&gt;&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>alexkey</author><pubDate>Fri, 06 Nov 2009 14:29:52 GMT</pubDate><guid isPermaLink="false">New Post: x_ prepended to invalid HTML class attribute values? 20091106022952P</guid></item><item><title>New Post: Legacy system, wrap in COM object for vbscript?</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=73612</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;After looking in detail about the implications of COM objects (i havn't used them before)... Due to not wanting to mess around with COM object registration etc, I've gone down the route of wrapping AntiXSS in a WCF service, which so far so good and it's working pretty well.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>alexkey</author><pubDate>Fri, 06 Nov 2009 11:48:39 GMT</pubDate><guid isPermaLink="false">New Post: Legacy system, wrap in COM object for vbscript? 20091106114839A</guid></item><item><title>New Post: Way of knowing if AntiXSS has found something bad?</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=74010</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Thanks for the information, i've taken your advice into consideration and made sure i'm only using string compare sparingly.&lt;/p&gt;
&lt;p&gt;If anyone else needs to do this, be aware that AntiXSS will convert your html fragment into proper xhtml case. i.e. lower case tag names.&lt;/p&gt;
&lt;p&gt;So take this into consideration when doing your string comparision.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>alexkey</author><pubDate>Fri, 06 Nov 2009 09:45:28 GMT</pubDate><guid isPermaLink="false">New Post: Way of knowing if AntiXSS has found something bad? 20091106094528A</guid></item><item><title>New Post: Way of knowing if AntiXSS has found something bad?</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=74010</link><description>&lt;div style="line-height: normal;"&gt;&lt;div class=Section1&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Akex,&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Anti-XSS encoding methods simply encode the characters passed in the string. They don’t detect any malicious input. It is the same about SRE HTTP Module.&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;However, you could compare the strings, but it will affect the performance of the application. &lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Thanks&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;RV&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in"&gt;&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;span style="font-size:10.0pt;font-family:'Tahoma','sans-serif'"&gt;From:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.0pt;font-family:'Tahoma','sans-serif'"&gt; alexkey [mailto:notifications@codeplex.com] &lt;br&gt;&lt;b&gt;Sent:&lt;/b&gt; Wednesday, November 04, 2009 1:28 AM&lt;br&gt;&lt;b&gt;To:&lt;/b&gt; Anil Revuru (INFORMATION SECURITY TOOLS)&lt;br&gt;&lt;b&gt;Subject:&lt;/b&gt; Way of knowing if AntiXSS has found something bad? [AntiXSS:74010]&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=MsoNormal&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;From: alexkey&lt;/span&gt;&lt;/p&gt;&lt;div style="margin-bottom:24.0pt" id=ThreadNotificationPostBody&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Hi,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;I am attempting to add logging to the antiXSS, so I can spot any false positives (we are retrofitting AntiXSS) found in our WYSIWIG.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Is there a way of knowing if AntiXSS has found something malicous? I'm not sure exactly what I'm looking for, but I can imagine something similar to a boolean output parameter that says if antiXSS found anything bad.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Or just thinking about it, is it safe to simply do a string compare on the input and output? Or does AntiXSS always effect the string somehow.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;-thanks&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Alex.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt; &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div style="border:none;border-top:solid #CCCCCC 1.0pt;padding:0in 0in 0in 0in" id=ThreadNotificationFooter&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;Read the &lt;a href="http://antixss.codeplex.com/Thread/View.aspx?ThreadId=74010&amp;ANCHOR#Post253153"&gt;full discussion online&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;To add a post to this discussion, reply to this email (&lt;a href="mailto:AntiXSS@discussions.codeplex.com?subject=[AntiXSS:74010]"&gt;AntiXSS@discussions.codeplex.com&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;To start a new discussion for this project, email &lt;a href="mailto:AntiXSS@discussions.codeplex.com"&gt;AntiXSS@discussions.codeplex.com&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;You are receiving this email because you subscribed to this discussion on CodePlex. You can &lt;a href="https://antixss.codeplex.com/subscriptions/thread/project/edit"&gt;unsubscribe or change your settings&lt;/a&gt; on codePlex.com.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><author>anilkr</author><pubDate>Wed, 04 Nov 2009 16:48:25 GMT</pubDate><guid isPermaLink="false">New Post: Way of knowing if AntiXSS has found something bad? 20091104044825P</guid></item><item><title>New Post: Way of knowing if AntiXSS has found something bad?</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=74010</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I am attempting to add logging to the antiXSS, so I can spot any false positives (we are retrofitting AntiXSS) found in our WYSIWIG.&lt;/p&gt;
&lt;p&gt;Is there a way of knowing if AntiXSS has found something malicous? I'm not sure exactly what I'm looking for, but I can imagine something similar to a boolean output parameter that says if antiXSS found anything bad.&lt;/p&gt;
&lt;p&gt;Or just thinking about it, is it safe to simply do a string compare on the input and output? Or does AntiXSS always effect the string somehow.&lt;/p&gt;
&lt;p&gt;-thanks&lt;/p&gt;
&lt;p&gt;Alex.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>alexkey</author><pubDate>Wed, 04 Nov 2009 09:28:08 GMT</pubDate><guid isPermaLink="false">New Post: Way of knowing if AntiXSS has found something bad? 20091104092808A</guid></item><item><title>New Post: Unable to use AntiXss with .Net 2.0</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=72076</link><description>&lt;div style="line-height: normal;"&gt;&lt;div class=Section1&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;With .NET 2.0, SRE uses PostMapRequestHandler which tells us when a Page is mapped to ASP.NET Page Handler. In case of .NET 1.1 there is really no equivalent event, I would try using PreRequestHandlerExecute, but I am not entirely certain that it will work.&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Thanks&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Anil Revuru (INFORMATION SECURITY TOOLS)&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in"&gt;&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;span style="font-size:10.0pt;font-family:'Tahoma','sans-serif'"&gt;From:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.0pt;font-family:'Tahoma','sans-serif'"&gt; Shubhra [mailto:notifications@codeplex.com] &lt;br&gt;&lt;b&gt;Sent:&lt;/b&gt; Tuesday, November 03, 2009 6:14 AM&lt;br&gt;&lt;b&gt;To:&lt;/b&gt; Anil Revuru (INFORMATION SECURITY TOOLS)&lt;br&gt;&lt;b&gt;Subject:&lt;/b&gt; Re: Unable to use AntiXss with .Net 2.0 [AntiXSS:72076]&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=MsoNormal&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;From: Shubhra&lt;/span&gt;&lt;/p&gt;&lt;div style="margin-bottom:24.0pt" id=ThreadNotificationPostBody&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Hi Anil,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Also I need your help.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;With the success of AntiXSS in 2.0.(thanks to u),now I have to implement it in .Net 1.1.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;I am going to follow teh same steps as had recommended for using AntiXSS with .Net2.0..&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Any other advice you would like to give me:-)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Thanks&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Shubhs&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt; &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div style="border:none;border-top:solid #CCCCCC 1.0pt;padding:0in 0in 0in 0in" id=ThreadNotificationFooter&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;Read the &lt;a href="http://antixss.codeplex.com/Thread/View.aspx?ThreadId=72076&amp;ANCHOR#Post252810"&gt;full discussion online&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;To add a post to this discussion, reply to this email (&lt;a href="mailto:AntiXSS@discussions.codeplex.com?subject=[AntiXSS:72076]"&gt;AntiXSS@discussions.codeplex.com&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;To start a new discussion for this project, email &lt;a href="mailto:AntiXSS@discussions.codeplex.com"&gt;AntiXSS@discussions.codeplex.com&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;You are receiving this email because you subscribed to this discussion on CodePlex. You can &lt;a href="https://antixss.codeplex.com/subscriptions/thread/project/edit"&gt;unsubscribe or change your settings&lt;/a&gt; on codePlex.com.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><author>anilkr</author><pubDate>Tue, 03 Nov 2009 18:42:35 GMT</pubDate><guid isPermaLink="false">New Post: Unable to use AntiXss with .Net 2.0 20091103064235P</guid></item><item><title>New Post: Unable to use AntiXss with .Net 2.0</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=72076</link><description>&lt;div style="line-height: normal;"&gt;&lt;div class=Section1&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;No, I have not worked with Infragistics controls, however we tested SRE with some other 3rd party controls and it worked fine. As long as the control and its property is properly defined in antixssmodule.config file.&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Thanks&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Anil Revuru (INFORMATION SECURITY TOOLS)&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in"&gt;&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;span style="font-size:10.0pt;font-family:'Tahoma','sans-serif'"&gt;From:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.0pt;font-family:'Tahoma','sans-serif'"&gt; Shubhra [mailto:notifications@codeplex.com] &lt;br&gt;&lt;b&gt;Sent:&lt;/b&gt; Tuesday, November 03, 2009 6:07 AM&lt;br&gt;&lt;b&gt;To:&lt;/b&gt; Anil Revuru (INFORMATION SECURITY TOOLS)&lt;br&gt;&lt;b&gt;Subject:&lt;/b&gt; Re: Unable to use AntiXss with .Net 2.0 [AntiXSS:72076]&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=MsoNormal&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;From: Shubhra&lt;/span&gt;&lt;/p&gt;&lt;div style="margin-bottom:24.0pt" id=ThreadNotificationPostBody&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Hey,&lt;br&gt;I had commented the code for table and table cells and was working fine.&lt;br&gt;Actually I guess it was getting double encoded.&lt;br&gt;It worked Thanks!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Have you ever worked with Infragistics Controls?&lt;br&gt;Specially UltraWebGrid?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Thanks in advance!&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div style="border:none;border-top:solid #CCCCCC 1.0pt;padding:0in 0in 0in 0in" id=ThreadNotificationFooter&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;Read the &lt;a href="http://antixss.codeplex.com/Thread/View.aspx?ThreadId=72076&amp;ANCHOR#Post252806"&gt;full discussion online&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;To add a post to this discussion, reply to this email (&lt;a href="mailto:AntiXSS@discussions.codeplex.com?subject=[AntiXSS:72076]"&gt;AntiXSS@discussions.codeplex.com&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;To start a new discussion for this project, email &lt;a href="mailto:AntiXSS@discussions.codeplex.com"&gt;AntiXSS@discussions.codeplex.com&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;You are receiving this email because you subscribed to this discussion on CodePlex. You can &lt;a href="https://antixss.codeplex.com/subscriptions/thread/project/edit"&gt;unsubscribe or change your settings&lt;/a&gt; on codePlex.com.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><author>anilkr</author><pubDate>Tue, 03 Nov 2009 18:36:38 GMT</pubDate><guid isPermaLink="false">New Post: Unable to use AntiXss with .Net 2.0 20091103063638P</guid></item><item><title>New Post: Unable to use AntiXss with .Net 2.0</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=72076</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi Anil,&lt;/p&gt;
&lt;p&gt;Also I need your help.&lt;/p&gt;
&lt;p&gt;With the success of AntiXSS in 2.0.(thanks to u),now I have to implement it in .Net 1.1.&lt;/p&gt;
&lt;p&gt;I am going to follow teh same steps as had recommended for using AntiXSS with .Net2.0..&lt;/p&gt;
&lt;p&gt;Any other advice you would like to give me:-)&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;Shubhs&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>Shubhra</author><pubDate>Tue, 03 Nov 2009 14:14:22 GMT</pubDate><guid isPermaLink="false">New Post: Unable to use AntiXss with .Net 2.0 20091103021422P</guid></item><item><title>New Post: Unable to use AntiXss with .Net 2.0</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=72076</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hey,&lt;br&gt;I had commented the code for table and table cells and was working fine.&lt;br&gt;Actually I guess it was getting double encoded.&lt;br&gt;It worked Thanks!&lt;/p&gt;
&lt;p&gt;Have you ever worked with Infragistics Controls?&lt;br&gt;Specially UltraWebGrid?&lt;/p&gt;
&lt;p&gt;Thanks in advance!&lt;/p&gt;&lt;/div&gt;</description><author>Shubhra</author><pubDate>Tue, 03 Nov 2009 14:06:27 GMT</pubDate><guid isPermaLink="false">New Post: Unable to use AntiXss with .Net 2.0 20091103020627P</guid></item><item><title>New Post: Legacy system, wrap in COM object for vbscript?</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=73612</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Intruiging, thanks Anil.&lt;span style="font-size:11pt;font-family:'Calibri','sans-serif';color:#1f497d"&gt;&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><author>alexkey</author><pubDate>Fri, 30 Oct 2009 16:01:47 GMT</pubDate><guid isPermaLink="false">New Post: Legacy system, wrap in COM object for vbscript? 20091030040147P</guid></item><item><title>New Post: Legacy system, wrap in COM object for vbscript?</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=73612</link><description>&lt;div style="line-height: normal;"&gt;&lt;div class=Section1&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Yes, You can do it. There will be performance implications due to marshaling of objects. But I don’t think the performance would be severely degraded, this is because Anti-XSS library mostly uses strings as parameters and return values.&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;I would be really interested to see your performance results.&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Thanks&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt;Anil&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style="font-size:11.0pt;font-family:'Calibri','sans-serif';color:#1F497D"&gt; &lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in"&gt;&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;span style="font-size:10.0pt;font-family:'Tahoma','sans-serif'"&gt;From:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.0pt;font-family:'Tahoma','sans-serif'"&gt; alexkey [mailto:notifications@codeplex.com] &lt;br&gt;&lt;b&gt;Sent:&lt;/b&gt; Friday, October 30, 2009 7:37 AM&lt;br&gt;&lt;b&gt;To:&lt;/b&gt; Anil Revuru (INFORMATION SECURITY TOOLS)&lt;br&gt;&lt;b&gt;Subject:&lt;/b&gt; Legacy system, wrap in COM object for vbscript? [AntiXSS:73612]&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=MsoNormal&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;From: alexkey&lt;/span&gt;&lt;/p&gt;&lt;div style="margin-bottom:24.0pt" id=ThreadNotificationPostBody&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Hi,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;A bit of an open subject, but do you think it is possible to wrap the AntiXSS library within a COM object so it is accessible from classic ASP?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;The getting of a clean html fragment would be awesome and mind bending to create this from scratch in vbscript.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;I was thinking of opening up the library via a webservice, but I don't really want to have the performance penelty.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;-thanks&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif'"&gt;Alex.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div style="border:none;border-top:solid #CCCCCC 1.0pt;padding:0in 0in 0in 0in" id=ThreadNotificationFooter&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;Read the &lt;a href="http://antixss.codeplex.com/Thread/View.aspx?ThreadId=73612&amp;ANCHOR#Post251597"&gt;full discussion online&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;To add a post to this discussion, reply to this email (&lt;a href="mailto:AntiXSS@discussions.codeplex.com?subject=[AntiXSS:73612]"&gt;AntiXSS@discussions.codeplex.com&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;To start a new discussion for this project, email &lt;a href="mailto:AntiXSS@discussions.codeplex.com"&gt;AntiXSS@discussions.codeplex.com&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;You are receiving this email because you subscribed to this discussion on CodePlex. You can &lt;a href="https://antixss.codeplex.com/subscriptions/thread/project/edit"&gt;unsubscribe or change your settings&lt;/a&gt; on codePlex.com.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9.0pt;font-family:'Verdana','sans-serif';color:gray"&gt;Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><author>anilkr</author><pubDate>Fri, 30 Oct 2009 15:26:29 GMT</pubDate><guid isPermaLink="false">New Post: Legacy system, wrap in COM object for vbscript? 20091030032629P</guid></item><item><title>New Post: Legacy system, wrap in COM object for vbscript?</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=73612</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;A bit of an open subject, but do you think it is possible to wrap the AntiXSS library within a COM object so it is accessible from classic ASP?&lt;/p&gt;
&lt;p&gt;The getting of a clean html fragment would be awesome and mind bending to create this from scratch in vbscript.&lt;/p&gt;
&lt;p&gt;I was thinking of opening up the library via a webservice, but I don't really want to have the performance penelty.&lt;/p&gt;
&lt;p&gt;-thanks&lt;/p&gt;
&lt;p&gt;Alex.&lt;/p&gt;&lt;/div&gt;</description><author>alexkey</author><pubDate>Fri, 30 Oct 2009 14:36:50 GMT</pubDate><guid isPermaLink="false">New Post: Legacy system, wrap in COM object for vbscript? 20091030023650P</guid></item><item><title>New Post: XHTML?</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=69355</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;When will the next version be available? Especially the 2. (x_ prefix) is a showstopper when using WYSIWYG editors.&lt;/p&gt;
&lt;p&gt;thanks, Marcel&lt;/p&gt;&lt;/div&gt;</description><author>mdekleine</author><pubDate>Mon, 26 Oct 2009 15:14:30 GMT</pubDate><guid isPermaLink="false">New Post: XHTML? 20091026031430P</guid></item><item><title>New Post: Couple of bugs or hard integration process?</title><link>http://antixss.codeplex.com/Thread/View.aspx?ThreadId=72303</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi Maryan,&lt;/p&gt;
&lt;p&gt;I see you have multiple issues here, will try to answer as much as I can.&lt;/p&gt;
&lt;p&gt;1. SRE is a HTTP module which adds event handler of Page.PreRender event, which is causing this issue. We have seen this issue earlier and we are looking to making some changes in the future versions. At this point, I would suggest avoiding overriding OnPreRender instead use PreRender event handler.&lt;br&gt;2. Eval expressions are ASP.NET compile time data binding expressions. Thus they are unavailable to SRE execution, although we would like to cover this scenario, it is very difficult for us to protect them. Also Eval itself is not very good to use as it use reflection to do late binding. &lt;br&gt;3. GetSafeHtmlFragment may not change anytime soon.&lt;/p&gt;
&lt;p&gt;Thanks&lt;br&gt;Anil&lt;/p&gt;&lt;/div&gt;</description><author>anilkr</author><pubDate>Fri, 23 Oct 2009 16:22:50 GMT</pubDate><guid isPermaLink="false">New Post: Couple of bugs or hard integration process? 20091023042250P</guid></item></channel></rss>