<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>ingig.net</title>
    <description>Ideas, problems and development of Fronturs websites</description>
    <link>http://ingig.net/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.Net Syndication Generator 1.0.0.0 (http://dotnetblogengine.net/)</generator>
    <language>en-GB</language>
    <blogChannel:blogRoll>http://ingig.net/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>Ingi Gauti</dc:creator>
    <dc:title>ingig.net</dc:title>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Ingignet" type="application/rss+xml" /><item>
      <title>I want to thank everybody for the support</title>
      <description>&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="384" height="304"&gt;
	&lt;param name="width" value="384" /&gt;
	&lt;param name="height" value="304" /&gt;
	&lt;param name="bgcolor" value="#000000" /&gt;
	&lt;param name="flashvars" value="firstname=Ingi Gauti&amp;amp;lastname=Ragnarsson&amp;amp;urlfin=http%3A%2F%2Fwww.tsgnet.com%2Fpres.php?id=46832%26altf=Kpio1D4%26altl=Ewpsbl%26lap=2" /&gt;
	&lt;param name="allowscriptaccess" value="always" /&gt;
	&lt;param name="src" value="http://www.paltalk.com/marketing/media/vanksen/main.swf" /&gt;
	&lt;embed type="application/x-shockwave-flash" width="384" height="304" bgcolor="#000000" flashvars="firstname=Ingi Gauti&amp;amp;lastname=Ragnarsson&amp;amp;urlfin=http%3A%2F%2Fwww.tsgnet.com%2Fpres.php?id=46832%26altf=Kpio1D4%26altl=Ewpsbl%26lap=2" allowscriptaccess="always" src="http://www.paltalk.com/marketing/media/vanksen/main.swf"&gt;&lt;/embed&gt;
&lt;/object&gt;
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/Xvf1fcvBYYo/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/I-want-to-thank-everybody-for-the-support.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=22d9ad9a-e57b-4214-b772-b9f0b9d789c7</guid>
      <pubDate>Tue, 30 Sep 2008 12:49:00 +0000</pubDate>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=22d9ad9a-e57b-4214-b772-b9f0b9d789c7</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=22d9ad9a-e57b-4214-b772-b9f0b9d789c7</trackback:ping>
      <wfw:comment>http://ingig.net/post/I-want-to-thank-everybody-for-the-support.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=22d9ad9a-e57b-4214-b772-b9f0b9d789c7</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=22d9ad9a-e57b-4214-b772-b9f0b9d789c7</feedburner:origLink></item>
    <item>
      <title>This is amazing, who needs airplanes?</title>
      <description>&lt;p&gt;
I guess Star Trek experience is closer then you think. Simply said, Wow!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.musionmedia.co.uk/cisco_day.html"&gt;http://www.musionmedia.co.uk/cisco_day.html &lt;/a&gt;
&lt;/p&gt;
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/Jlqb4IezuZU/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/This-is-amazing2c-who-needs-airplanes.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=d488c3a5-3050-4ee1-ac5c-bd783f992f6e</guid>
      <pubDate>Sat, 31 May 2008 19:02:00 +0000</pubDate>
      <category>English</category>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=d488c3a5-3050-4ee1-ac5c-bd783f992f6e</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=d488c3a5-3050-4ee1-ac5c-bd783f992f6e</trackback:ping>
      <wfw:comment>http://ingig.net/post/This-is-amazing2c-who-needs-airplanes.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=d488c3a5-3050-4ee1-ac5c-bd783f992f6e</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=d488c3a5-3050-4ee1-ac5c-bd783f992f6e</feedburner:origLink></item>
    <item>
      <title>Capitalize each word</title>
      <description>&lt;p&gt;
Just for bookmarking, I have thought about this every few months
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.aspdotnetfaq.com/Faq/How-to-Capitalize-the-First-Letter-of-All-Words-in-a-string-in-C-sharp.aspx"&gt;http://www.aspdotnetfaq.com/Faq/How-to-Capitalize-the-First-Letter-of-All-Words-in-a-string-in-C-sharp.aspx&lt;/a&gt; 
&lt;/p&gt;
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/KjKmbuP0woA/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/Capitalize-each-word.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=12297e59-0551-4e60-a97f-6a7ac4e8db89</guid>
      <pubDate>Fri, 09 May 2008 18:47:00 +0000</pubDate>
      <category>ASP.NET</category>
      <category>English</category>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=12297e59-0551-4e60-a97f-6a7ac4e8db89</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=12297e59-0551-4e60-a97f-6a7ac4e8db89</trackback:ping>
      <wfw:comment>http://ingig.net/post/Capitalize-each-word.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=12297e59-0551-4e60-a97f-6a7ac4e8db89</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=12297e59-0551-4e60-a97f-6a7ac4e8db89</feedburner:origLink></item>
    <item>
      <title>Prevent xss in Asp.Net</title>
      <description>We just did a big update on our system, where we try to prevent possible xss attacks. For those who don&amp;#39;t know, xss attacks can happend when you allow user to send text to your server and then display it. From v. 1.1 Asp.Net provided some protection from xss but it&amp;#39;s very limited and I disabled it immediately when it came out since it just throws an ugly error message to the user who is trying to put something as small as &amp;lt;b&amp;gt; in his text.&lt;br /&gt;
&lt;br /&gt;
The framework from Microsoft, using viewstate and postback, provides some protection as well since it&amp;#39;s harder to change variables, but I never liked that framework, I instead did it the old fashion way, a edit.aspx page that submited it&amp;#39;s forms to save.aspx using post. So this is how I get the variables.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
string name = Request.Form[&amp;quot;name&amp;quot;];&lt;br /&gt;
int id&amp;nbsp;&amp;nbsp; &amp;nbsp;= int.Parse(Request.Form[&amp;quot;id&amp;quot;]);&lt;br /&gt;
bool isTrue = (Request.Form[&amp;quot;isTrue&amp;quot;] == &amp;quot;1&amp;quot;);&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
The problem with this is that I had to clean the variables every time to prevent xss with something like my method &lt;a href="http://ingig.net/post/Clear-html.aspx"&gt;Util.ClearHtml(string)&lt;/a&gt;, the code is something like this&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
string name = Util.ClearHtml(Request.Form[&amp;quot;name&amp;quot;]);&lt;br /&gt;
int id&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= int.Parse(Clear.Html(Request.Form[&amp;quot;id&amp;quot;]));&lt;br /&gt;
bool isTrue = (Clear.Html(Request.Form[&amp;quot;isTrue&amp;quot;]) == &amp;quot;1&amp;quot;);&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
This is a bit to much code for me and since I&amp;#39;m lazy I almost never did this. Then if somebody sends id=abc the page would crash. This didn&amp;#39;t bother me so much, since it only happend when something spooky was going on. But it&amp;#39;s ugly. Also the ClearHtml method didn&amp;#39;t really do very good job in cleaning the text from possible xss attacks.&lt;br /&gt;
&lt;br /&gt;
So my solution is this. I created the XssClear class with the following methods&lt;br /&gt;
&lt;br /&gt;
This is for getting value from a submitted form using POST&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
public string F(name); //returns null if string is null else string.Empty if fails to convert, string is Trim()-ed&lt;br /&gt;
public int FInt(name); //returns 0 if fails to convert&lt;br /&gt;
public double FDouble(name); //returns 0 if fails to convert&lt;br /&gt;
public decimal FDecimal(name); //returns 0 if fails to convert&lt;br /&gt;
public bool FBool(name); //returns false if fails to convert&lt;br /&gt;
public DateTime FDateTime(name); //returns DateTime.MinValue if fails to convert&lt;br /&gt;
public string[] FArray(name); //returns null if fails to convert or if value is == &amp;quot;&amp;quot; and &amp;quot;,&amp;quot; is the default seperator&lt;br /&gt;
public string[] FIntArray(name); //returns null if fails to convert or if value is == &amp;quot;&amp;quot; and &amp;quot;,&amp;quot; is the default seperator&lt;br /&gt;
public XssClearResult FHtml(name); //this is used when the user can insert html&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
This is for getting variable using GET (or QueryString)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
public string QS(name);&lt;br /&gt;
public int QSInt(name);&lt;br /&gt;
public double QSDouble(name);&lt;br /&gt;
public decimal QSDecimal(name);&lt;br /&gt;
public bool QSBool(name);&lt;br /&gt;
public DateTime QSDateTime(name);&lt;br /&gt;
public string[] QSArray(name);&lt;br /&gt;
public string[] QSIntArray(name);&lt;br /&gt;
public XssClearResult QSHtml(name);&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
All my pages inherits from the page BarnalandPage (old name), there I have these methods. So when I want to get a varible from QueryString this is how it&amp;#39;s done&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
string name = QS(&amp;quot;name&amp;quot;);&lt;br /&gt;
int id = QSInt(&amp;quot;id&amp;quot;);&lt;br /&gt;
bool isTrue = QSBool(&amp;quot;isTrue&amp;quot;);&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
This saves alot of pain, errors in our system has gone down extremly in the first hours of having it running like this.&lt;br /&gt;
&lt;br /&gt;
So to clean the text for xss attacks I do few things. I don&amp;#39;t have think about the basic variables, int, bool, datetime, double, decimal. If the class can&amp;#39;t convert it, the default value is returned. Allowing text and html (FHtml and QSHtml) is the big trouble.&lt;br /&gt;
&lt;br /&gt;
This is the method to clean a text and not allowing html&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
private string Get(string key, string value, string def) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if (value == null) return def;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;//Let&amp;#39;s check if we have already retrieved this key before&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if (content.ContainsKey(key)) return (string) content[key];&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;//AntiXss is a library from Microsoft, seems to work fine&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;string s = AntiXss.HtmlEncode(Ingig.Util.ClearHTML(value)).Trim();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;content.Add(key, s);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;return s;&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
The AntiXss library seem to do it&amp;#39;s job fine, prevents every attack that is on the &lt;a href="http://ha.ckers.org/xss.html"&gt;xss cheat sheet&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Next job is to remove any possible xss attack in a html text. This is more complicated, since the possiblities are many as you can see on the cheat sheet.&lt;br /&gt;
&lt;br /&gt;
We use the method GetHtml(string key, string value); and it looks like this&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
public class XssClear {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;....&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;....&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;....&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;XssClearResult result;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;string pattern;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public XssClearResult GetHtml(string key, string value) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (value == null) return null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (content.ContainsKey(key)) return (XssClearResult) content[key];&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;result = new XssClearResult();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// change every hexadecimal to ascii&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// change every hex value to ascii&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// remove &amp;amp;#x09; | &amp;amp;#9; | &amp;amp;#x0A; | &amp;amp;#10; | &amp;amp;#x0D; | &amp;amp;#16;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// remove tab | \n | \r&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// remove /\*\s*\S*\s*\*/&amp;nbsp; &amp;#39;This is comments in code&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;value = Regex.Replace(value, @&amp;quot;(&amp;amp;\#[0-9]{1,20};?)&amp;quot;, new MatchEvaluator(XssClear.DecimalToString), RegexOptions.IgnoreCase);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;value = Regex.Replace(value, @&amp;quot;(&amp;amp;\#x[0-9][0-9a-f];?)|(%[0-9a-f]{2};?)&amp;quot;, new MatchEvaluator(XssClear.HexToString), RegexOptions.IgnoreCase);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;value = Regex.Replace(value, @&amp;quot;&amp;frac14;(/?script)&amp;frac34;&amp;quot;, &amp;quot;&amp;lt;$1&amp;gt;&amp;quot;, RegexOptions.IgnoreCase);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;value = Regex.Replace(value, @&amp;quot;/\*[^*]*\*/&amp;quot;, &amp;quot;&amp;quot;, RegexOptions.IgnoreCase);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// value = Regex.Replace(value, @&amp;quot;(\n)*&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;value = Regex.Replace(value, @&amp;quot;(\t|\r|\f)*&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DataTable dt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//I have the database table XssRegex, which contains list of regex that prevent xss attacks, let&amp;#39;s load it from db if not cached&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (HttpContext.Current.Cache[&amp;quot;XssRegexList&amp;quot;] == null) {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//This uses my DbConnection class which connects to the database and saves alot of pain&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DbConnection db = new DbConnection();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;db.Sql = &amp;quot;SELECT regex FROM XssRegex&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;dt = db.Query().Table;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;HttpContext.Current.Cache.Insert(&amp;quot;XssRegexList&amp;quot;, dt);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} else {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;dt = (DataTable) HttpContext.Current.Cache[&amp;quot;XssRegexList&amp;quot;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Now we run through the regex and remove any thing that is a possible xss attack&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//If we find a possible attack we remove it and add it into our error list&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//and report what pattern it was that caused the error&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Regex regex;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MatchCollection matches;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;foreach (DataRow dr in dt.Rows) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;regex = new Regex(dr[&amp;quot;regex&amp;quot;].ToString(), RegexOptions.IgnoreCase);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;matches = regex.Matches(value);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (matches.Count &amp;gt; 0) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i=0;i&amp;lt;matches.Count;i++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;result.Errors.Add(AntiXss.HtmlEncode(matches[i].Value.Replace(matches[i].Value, &amp;quot;[[[span class[]red]]]&amp;quot; + matches[i].Value + &amp;quot;[[[///span]]]&amp;quot;)).Replace(&amp;quot;&amp;amp;#91;&amp;amp;#93;&amp;quot;, &amp;quot;=&amp;quot;).Replace(&amp;quot;&amp;amp;#47;&amp;amp;#47;&amp;amp;#47;&amp;quot;, &amp;quot;/&amp;quot;).Replace(&amp;quot;&amp;amp;#91;&amp;amp;#91;&amp;amp;#91;&amp;quot;, &amp;quot;&amp;lt;&amp;quot;).Replace(&amp;quot;&amp;amp;#93;&amp;amp;#93;&amp;amp;#93;&amp;quot;, &amp;quot;&amp;gt;&amp;quot;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;result.Patterns.Add(AntiXss.HtmlEncode(dr[&amp;quot;regex&amp;quot;].ToString()));&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;value = regex.Replace(value, &amp;quot;&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pattern = &amp;quot;&amp;lt;[a-z*^on]*\\s*([a-z^on]*=\&amp;quot;?[a-z]*\&amp;quot;?)|(?&amp;lt;Event&amp;gt;on[a-z]*[^=]*=[^ &amp;gt;]*)|&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pattern +=&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;&amp;lt;[a-z*^on]*\\s*([a-z^on]*=\&amp;quot;?[a-z]*\&amp;quot;?)|(?&amp;lt;Event&amp;gt;seeksegmenttime[^=]*=[^ &amp;gt;]*)|&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pattern +=&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;&amp;lt;[a-z*^on]*\\s*([a-z^on]*=\&amp;quot;?[a-z]*\&amp;quot;?)|(?&amp;lt;Event&amp;gt;fscommand[^=]*=[^ &amp;gt;]*)|&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pattern +=&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;&amp;lt;[a-z]*\\s*[a-z]*=\&amp;quot;?([a-z^on]*=\&amp;quot;?[a-z]*\&amp;quot;?)|(?&amp;lt;Event&amp;gt;(mocha|livescript)[^:]*:[^ \&amp;quot;&amp;gt;]*)\&amp;quot;?&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pattern = &amp;quot;&amp;lt;[a-z*^on]*\\s*((?&amp;lt;Attributes&amp;gt;[a-z]*=?\&amp;quot;?[^\&amp;quot;&amp;gt;]*\&amp;quot;?)\\s*)*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;regex = new Regex(pattern, RegexOptions.IgnoreCase);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;matches = regex.Matches(value);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i=0;i&amp;lt;matches.Count;i++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;value = regex.Replace(value, new MatchEvaluator(RemoveOnEvent));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pattern = &amp;quot;&amp;lt;embed(\\s*\\w*\\s+|(\\w*=\&amp;quot;((?&amp;lt;Always&amp;gt;always)|[^\&amp;quot; ]*)\&amp;quot;))*&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;regex = new Regex(pattern, RegexOptions.IgnoreCase);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;matches = regex.Matches(value);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i=0;i&amp;lt;matches.Count;i++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;value = regex.Replace(value, new MatchEvaluator(RemoveAlwaysInScriptAccess));&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;result.Text = value.Trim();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;string s = (value);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;content.Add(key, result);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return result;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;//This is for removing AllowScriptAccess in embed tags&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public string RemoveAlwaysInScriptAccess(Match m) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (m.Groups[&amp;quot;Always&amp;quot;].Value.Trim() == &amp;quot;&amp;quot;) return m.Groups[&amp;quot;Always&amp;quot;].Value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;result.Errors.Add(AntiXss.HtmlEncode(m.Value.Replace(m.Groups[&amp;quot;Always&amp;quot;].Value, &amp;quot;[[[span class[]red]]]&amp;quot; + m.Groups[&amp;quot;Always&amp;quot;].Value + &amp;quot;[[[///span]]]&amp;quot;)).Replace(&amp;quot;&amp;amp;#91;&amp;amp;#93;&amp;quot;, &amp;quot;=&amp;quot;).Replace(&amp;quot;&amp;amp;#47;&amp;amp;#47;&amp;amp;#47;&amp;quot;, &amp;quot;/&amp;quot;).Replace(&amp;quot;&amp;amp;#91;&amp;amp;#91;&amp;amp;#91;&amp;quot;, &amp;quot;&amp;lt;&amp;quot;).Replace(&amp;quot;&amp;amp;#93;&amp;amp;#93;&amp;amp;#93;&amp;quot;, &amp;quot;&amp;gt;&amp;quot;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;result.Patterns.Add(AntiXss.HtmlEncode(pattern));&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return m.Value.Replace(m.Groups[&amp;quot;Always&amp;quot;].Value, &amp;quot;no&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public string RemoveOnEvent(Match m) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;string txt = m.Value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i=0;i&amp;lt;m.Groups[&amp;quot;Attributes&amp;quot;].Captures.Count;i++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;string temp = m.Groups[&amp;quot;Attributes&amp;quot;].Captures[i].Value.ToLower();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (temp.StartsWith(&amp;quot;on&amp;quot;) || temp.StartsWith(&amp;quot;seeksegmenttime&amp;quot;) || temp.StartsWith(&amp;quot;fscommand&amp;quot;) || temp.StartsWith(&amp;quot;mocha&amp;quot;) || temp.StartsWith(&amp;quot;livescript&amp;quot;)) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;result.Errors.Add(AntiXss.HtmlEncode(m.Value.Replace(m.Groups[&amp;quot;Attributes&amp;quot;].Captures[i].Value, &amp;quot;[[[span class[]red]]]&amp;quot; + m.Groups[&amp;quot;Attributes&amp;quot;].Captures[i].Value + &amp;quot;[[[///span]]]&amp;quot;)).Replace(&amp;quot;&amp;amp;#91;&amp;amp;#93;&amp;quot;, &amp;quot;=&amp;quot;).Replace(&amp;quot;&amp;amp;#47;&amp;amp;#47;&amp;amp;#47;&amp;quot;, &amp;quot;/&amp;quot;).Replace(&amp;quot;&amp;amp;#91;&amp;amp;#91;&amp;amp;#91;&amp;quot;, &amp;quot;&amp;lt;&amp;quot;).Replace(&amp;quot;&amp;amp;#93;&amp;amp;#93;&amp;amp;#93;&amp;quot;, &amp;quot;&amp;gt;&amp;quot;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;result.Patterns.Add(AntiXss.HtmlEncode(pattern));&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;txt = txt.Replace(m.Groups[&amp;quot;Attributes&amp;quot;].Captures[i].Value, &amp;quot;&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return txt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;/* One trick for xss is to type everything in Decimal or Hex, these two methods (DecimalToString and HexToString)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;changes all decimal and hex into regular text */&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public static string DecimalToString(Match m) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return char.ConvertFromUtf32(System.Convert.ToInt32(m.Value.Replace(&amp;quot;&amp;amp;#&amp;quot;, &amp;quot;&amp;quot;).Replace(&amp;quot;;&amp;quot;, &amp;quot;&amp;quot;)));&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public static string HexToString(Match m) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return char.ConvertFromUtf32(Convert.ToInt32(Convert.ToUInt32(m.Value.Replace(&amp;quot;&amp;amp;#x&amp;quot;, &amp;quot;&amp;quot;).Replace(&amp;quot;%&amp;quot;, &amp;quot;&amp;quot;).Replace(&amp;quot;;&amp;quot;, &amp;quot;&amp;quot;), 16)));&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
The result is then loaded into XssClearResult&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
public class XssClearResult {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;private ArrayList errors;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;private ArrayList pattern;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;private string text;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public XssClearResult() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.errors&amp;nbsp; = new ArrayList();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.pattern = new ArrayList();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public ArrayList Errors {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;get {return errors;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public ArrayList Patterns {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;get {return pattern;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;set {pattern = value;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public string Text {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;get {return text;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;set {text = value;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
So when I want to allow user to send html over the wire I simply do&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
string text = FHtml(&amp;quot;text&amp;quot;).Text;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
If I want to list all the possible xss attack that the user inserted I simply do&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
ArrayList al = FHtml(&amp;quot;text&amp;quot;).Errors;&lt;br /&gt;
for (int i=0;i&amp;lt;al.Count;i++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(al[i]);&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
As far a I can see this prevents &amp;quot;any&amp;quot; known xss attacks which is nice because they used to be everywhere in our system. Why did I use &amp;quot;any&amp;quot;? Well I don&amp;#39;t do checks for old Netscape 4 browsers.&lt;br /&gt;
&lt;br /&gt;
The are some assumptions that I make,&lt;br /&gt;
&lt;ul&gt;
	&lt;li&gt;string is always trimmed, &lt;/li&gt;
	&lt;li&gt;number variables(int,double,decimal) returns 0 if it fails to convert,&lt;/li&gt;
	&lt;li&gt;boolean variable returns false if it fails to convert, &lt;/li&gt;
	&lt;li&gt;DateTime returns DateTime.MinValue if it fails to convert, &lt;/li&gt;
	&lt;li&gt;if the value that is going to be converted to an array is empty it returns null. &lt;/li&gt;
&lt;/ul&gt;
You can still change the default value, in one case I needed FInt(&amp;quot;id&amp;quot;) to return -1 as default value, so the method FInt(&amp;quot;id&amp;quot;, -1) came to be available.&lt;br /&gt;
&lt;br /&gt;
You &lt;a href="http://ingig.net/file.axd?file=XssClear.rar"&gt;can download the XssClear class here&lt;/a&gt;, it includes XssClear, XssClearResult and a txt file with the regex&amp;#39;s in the database, hope you like it and can use it.&lt;br /&gt;
&lt;img src="http://ingig.net/image.axd?picture=XssClear.rar" alt="" /&gt;
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/zEDMnNv4OBY/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/Prevent-xss-in-AspNet.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=2ed29576-e034-478c-90c0-2d93291e6c19</guid>
      <pubDate>Thu, 08 May 2008 15:58:00 +0000</pubDate>
      <category>ASP.NET</category>
      <category>Client-side</category>
      <category>English</category>
      <category>Security</category>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=2ed29576-e034-478c-90c0-2d93291e6c19</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=2ed29576-e034-478c-90c0-2d93291e6c19</trackback:ping>
      <wfw:comment>http://ingig.net/post/Prevent-xss-in-AspNet.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=2ed29576-e034-478c-90c0-2d93291e6c19</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=2ed29576-e034-478c-90c0-2d93291e6c19</feedburner:origLink></item>
    <item>
      <title>Google search results</title>
      <description>Does anyone else feel like the google search results aren&amp;#39;t the same quality as it used to be. Just a feeling, it&amp;#39;s been really difficult to find stuff lately.
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/yE3wWJLw2Dw/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/Google-search-results.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=e209d6d2-af97-4a92-a0b7-3f09c0bec2db</guid>
      <pubDate>Tue, 22 Apr 2008 21:18:00 +0000</pubDate>
      <category>English</category>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=e209d6d2-af97-4a92-a0b7-3f09c0bec2db</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=e209d6d2-af97-4a92-a0b7-3f09c0bec2db</trackback:ping>
      <wfw:comment>http://ingig.net/post/Google-search-results.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=e209d6d2-af97-4a92-a0b7-3f09c0bec2db</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=e209d6d2-af97-4a92-a0b7-3f09c0bec2db</feedburner:origLink></item>
    <item>
      <title>List of usefull asp.net stuff</title>
      <description>&lt;br /&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.aspdotnetfaq.com/Faq/How-to-access-Session-values-from-my-custom-HttpHandler-in-ASP-NET.aspx"&gt;How to access Session values from my custom HttpHandler in ASP.NET?
	&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.aspdotnetfaq.com/Faq/how-to-disable-web-config-inheritance-for-child-applications-in-subfolders-in-asp-net.aspx"&gt;How to disable web.config Inheritance for Child Applications in Subfolders in ASP.NET?&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.timezoneinfo.aspx"&gt;TimeZoneInfo class&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://blog.nerdbank.net/2008/04/dotnetopenid-20-released.html"&gt;DotNetOpenId 2.0 released&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.duncanhalley.co.uk/blog/post/ASPNET-health-monitoring.aspx"&gt;Asp.Net health monitor&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.codingthewheel.com/archives/custom-asp-net-404-error-page-manifesto"&gt;Nice 404 page&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.aspdotnetfaq.com/Faq/Put-your-ASP-NET-_-application-Offline-the-user-friendly-way.aspx"&gt;Asp.Net application is offline&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
I have to say that &lt;a href="http://www.aspdotnetfaq.com/"&gt;aspdotnetfaq.com&lt;/a&gt; is pretty cool page, reminds of &lt;a href="http://javascript.faqts.com"&gt;javascript.faqts.com&lt;/a&gt; which is also a great page&lt;br /&gt;
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/0B1Oym2pJ-o/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/List-of-usefull-aspnet-stuff.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=23924e37-81bd-445d-8756-8cdaf7a50078</guid>
      <pubDate>Fri, 18 Apr 2008 12:04:00 +0000</pubDate>
      <category>ASP.NET</category>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=23924e37-81bd-445d-8756-8cdaf7a50078</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=23924e37-81bd-445d-8756-8cdaf7a50078</trackback:ping>
      <wfw:comment>http://ingig.net/post/List-of-usefull-aspnet-stuff.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=23924e37-81bd-445d-8756-8cdaf7a50078</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=23924e37-81bd-445d-8756-8cdaf7a50078</feedburner:origLink></item>
    <item>
      <title>Remove item from Response Header</title>
      <description>&lt;p&gt;
Every time somebody requests a item from our webserver it inserts a litle info about itself into the response header
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Server:Microsoft-IIS/6.0 &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
I&amp;#39;ve been wondering how to remove this since I think it pretty pointless
&lt;/p&gt;
&lt;p&gt;
You need to create a httpmodule,&amp;nbsp; 
&lt;/p&gt;
&lt;div class="code"&gt;
public class WebsiteDomainModule : IHttpModule {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;// IHttpModule members&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public void Init(HttpApplication httpApp) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; httpApp.PreSendRequestHeaders += new EventHandler(this.OnPreSendRequestHeaders);&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public void Dispose() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Usually, nothing has to happen here...&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;public void OnPreSendRequestHeaders(object sender, EventArgs e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpContext.Current.Response.Headers.Remove(&amp;quot;Server&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;} &lt;br /&gt;
} 
&lt;/div&gt;
&lt;p&gt;
Just add a reference into you web.config file and that line is gone.
&lt;/p&gt;
&lt;p&gt;
By removing that line we save about 25 MB of traffic data every day, about 3GB a month. Not bad. 
&lt;/p&gt;
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/cHBuhm0th-c/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/Remove-item-from-Response-Header.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=357aa426-2e75-4812-9b55-bec2c53d67e0</guid>
      <pubDate>Thu, 17 Apr 2008 12:16:00 +0000</pubDate>
      <category>ASP.NET</category>
      <category>English</category>
      <category>Server-side</category>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=357aa426-2e75-4812-9b55-bec2c53d67e0</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=357aa426-2e75-4812-9b55-bec2c53d67e0</trackback:ping>
      <wfw:comment>http://ingig.net/post/Remove-item-from-Response-Header.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=357aa426-2e75-4812-9b55-bec2c53d67e0</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=357aa426-2e75-4812-9b55-bec2c53d67e0</feedburner:origLink></item>
    <item>
      <title>IHttpModule bara fyrir .net kóða</title>
      <description>&lt;p&gt;
&amp;Eacute;g var a&amp;eth; vinna &amp;iacute; HttpModule sem vi&amp;eth; erum me&amp;eth; og var a&amp;eth; logga ni&amp;eth;ur hva&amp;eth;a s&amp;iacute;&amp;eth;ur voru a&amp;eth; keyra hann. &amp;THORN;egar &amp;eacute;g sko&amp;eth;a&amp;eth;i listann &amp;thorn;&amp;aacute; s&amp;aacute; &amp;eacute;g &amp;thorn;etta venjulega 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;/default.aspx&lt;/li&gt;
	&lt;li&gt;/js/default.js.aspx&lt;/li&gt;
	&lt;li&gt;/images/logo.jpg&lt;/li&gt;
	&lt;li&gt;/css/design.css&lt;/li&gt;
	&lt;li&gt;.... fleiri static skr&amp;aacute;r&lt;br /&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&amp;THORN;a&amp;eth; sem er verra vi&amp;eth; &amp;thorn;etta er a&amp;eth; &amp;thorn;arna er static skr&amp;aacute;r a&amp;eth; keyra &amp;iacute; gegnum module-inn og &amp;thorn;ar &amp;thorn;arf ekki &amp;iacute; &amp;thorn;essum module. &amp;Iacute; IIS 7 er h&amp;aelig;gt a&amp;eth; segja a&amp;eth; &amp;thorn;a&amp;eth; eigi bara managed s&amp;iacute;&amp;eth;ur a&amp;eth; keyra module-inn. &amp;THORN;a&amp;eth; er &amp;oacute;sk&amp;ouml;p einfallt, b&amp;aelig;tir einfaldlega&amp;nbsp; preCondition=&amp;quot;managedHandler&amp;quot; vi&amp;eth; &amp;thorn;ar sem &amp;thorn;&amp;uacute; setur module-inn inn&amp;iacute; web.config hj&amp;aacute; &amp;thorn;&amp;eacute;r. 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;system.webServer&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;modules&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name=&amp;quot;WebsiteDomainModule&amp;quot; type=&amp;quot;Frontur.WebsiteDomainModule,&amp;nbsp; frontur&amp;quot;&lt;strong&gt; preCondition=&amp;quot;managedHandler&amp;quot; &lt;/strong&gt;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/modules&amp;gt;&lt;br /&gt;
&amp;lt;/system.webServer&amp;gt; 
&lt;/p&gt;
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/jMANx_M_dCk/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/IHttpModule-bara-fyrir-net-koc3b0a.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=8e2c54a5-0253-4d90-b115-77c5d4a3a7c7</guid>
      <pubDate>Wed, 16 Apr 2008 12:31:00 +0000</pubDate>
      <category>Íslenskt</category>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=8e2c54a5-0253-4d90-b115-77c5d4a3a7c7</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=8e2c54a5-0253-4d90-b115-77c5d4a3a7c7</trackback:ping>
      <wfw:comment>http://ingig.net/post/IHttpModule-bara-fyrir-net-koc3b0a.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=8e2c54a5-0253-4d90-b115-77c5d4a3a7c7</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=8e2c54a5-0253-4d90-b115-77c5d4a3a7c7</feedburner:origLink></item>
    <item>
      <title>Eve Online clientin orðin open source</title>
      <description>&lt;p&gt;
Slashdot var a&amp;eth; segja &lt;a href="http://games.slashdot.org/article.pl?sid=08/04/14/2046246"&gt;fr&amp;aacute; &amp;thorn;essu&lt;/a&gt;. Clientinn er ekki alveg or&amp;eth;in open source en honum var leki&amp;eth; inn&amp;aacute; &lt;a href="http://thepiratebay.org/tor/4128183/Eve_Online_Source(client_side)_Code"&gt;thepiratebay.org&lt;/a&gt;. Nokku&amp;eth; magna&amp;eth;. V&amp;aelig;ri ekki bara tilvali&amp;eth; a&amp;eth; gera clientinn &amp;thorn;&amp;aacute; bara a&amp;eth; open source, hann er hvorti&amp;eth; er &amp;thorn;arna &amp;uacute;ti n&amp;uacute;na og &amp;thorn;a&amp;eth; kannski au&amp;eth;veldar vinnuna. Bara hugdetta.
&lt;/p&gt;
&lt;p&gt;
Ef &amp;thorn;&amp;uacute; ert Eve-Online notandi, &amp;thorn;&amp;aacute; er best a&amp;eth; halda sig fr&amp;aacute; torrentinum. CCP menn eru v&amp;iacute;st a&amp;eth; monitora allar ipt&amp;ouml;lur sem tengjast honum og loka &amp;aacute; &amp;thorn;&amp;aacute; accounta sem iptalan tengist. Kannski komin t&amp;iacute;mi a&amp;eth; heims&amp;aelig;kja foreldrana :) 
&lt;/p&gt;
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/EWfSj_lUzAk/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/Eve-Online-clientin-orc3b0in-open-source.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=b2596844-5bea-45fe-a03a-f6c6b04354ec</guid>
      <pubDate>Mon, 14 Apr 2008 23:26:00 +0000</pubDate>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=b2596844-5bea-45fe-a03a-f6c6b04354ec</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=b2596844-5bea-45fe-a03a-f6c6b04354ec</trackback:ping>
      <wfw:comment>http://ingig.net/post/Eve-Online-clientin-orc3b0in-open-source.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=b2596844-5bea-45fe-a03a-f6c6b04354ec</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=b2596844-5bea-45fe-a03a-f6c6b04354ec</feedburner:origLink></item>
    <item>
      <title>Næsta skref í vefþjónustukerfinu hjá okkur</title>
      <description>&lt;p&gt;
&amp;Eacute;g hef veri&amp;eth; a&amp;eth; sko&amp;eth;a WCF undanfari&amp;eth; &amp;thorn;ar sem &amp;thorn;a&amp;eth; er v&amp;iacute;st &amp;thorn;a&amp;eth; sem t&amp;oacute;k vi&amp;eth; af WSE. &amp;THORN;etta er nokku&amp;eth; sni&amp;eth;ugt og mj&amp;ouml;g sveigjanlegt en &amp;thorn;a&amp;eth; tekur slatta t&amp;iacute;ma a&amp;eth; komast inn&amp;iacute; &amp;thorn;etta. &amp;THORN;a&amp;eth; eru m&amp;ouml;rg vandam&amp;aacute;l sem koma upp sem &amp;eacute;g fer &amp;iacute; seinna en n&amp;uacute;na er &amp;eacute;g a&amp;eth; vinna &amp;iacute; &amp;thorn;v&amp;iacute; a&amp;eth; endursm&amp;iacute;&amp;eth;a API kerfi&amp;eth; hj&amp;aacute; okkur. &amp;THORN;a&amp;eth; ver&amp;eth;ur &amp;iacute; SOAP, REST og JSON formi.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&amp;Aacute; n&amp;aelig;stu d&amp;ouml;gum &amp;aelig;tlum vi&amp;eth; (hj&amp;aacute; Fronti) a&amp;eth; setju upp sm&amp;aacute; samkeppni &amp;thorn;ar sem viljum f&amp;aacute; eins marga til a&amp;eth; b&amp;uacute;a til forrit sem notar vef&amp;thorn;j&amp;oacute;nusturnar okkar, hvort sem er me&amp;eth; vefs&amp;iacute;&amp;eth;u, s&amp;iacute;ma e&amp;eth;a gluggaforrit. Vi&amp;eth; munum bj&amp;oacute;&amp;eth;a upp&amp;aacute; flotta vinninga fyrir bestu forritin og v&amp;aelig;ntanlega augl&amp;yacute;sa &amp;thorn;etta &amp;iacute; einhverjum sk&amp;oacute;lanum, jafnvel &amp;iacute; m&amp;iacute;num gamla sk&amp;oacute;la HR.
&lt;/p&gt;
&lt;p&gt;
&amp;Eacute;g skelli svo inn sl&amp;oacute;&amp;eth;inni h&amp;eacute;rna inn &amp;thorn;ar sem ver&amp;eth;ur h&amp;aelig;gt a&amp;eth; f&amp;aacute; uppl&amp;yacute;singar hvernig h&amp;aelig;gt er a&amp;eth; taka &amp;thorn;&amp;aacute;tt og skr&amp;aacute; sig. 
&lt;/p&gt;
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/Jtvw7LNdV7c/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/Nc3a6sta-skref-i-vefc3bejonustukerfinu-hja-okkur.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=934360fe-1a33-404c-b6e4-ae0ca47aa5fe</guid>
      <pubDate>Mon, 14 Apr 2008 18:14:00 +0000</pubDate>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=934360fe-1a33-404c-b6e4-ae0ca47aa5fe</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=934360fe-1a33-404c-b6e4-ae0ca47aa5fe</trackback:ping>
      <wfw:comment>http://ingig.net/post/Nc3a6sta-skref-i-vefc3bejonustukerfinu-hja-okkur.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=934360fe-1a33-404c-b6e4-ae0ca47aa5fe</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=934360fe-1a33-404c-b6e4-ae0ca47aa5fe</feedburner:origLink></item>
    <item>
      <title>Augnaleikur og Binary klukkua</title>
      <description>&lt;p&gt;
Undarlegt hvernig augun &amp;aacute; manni virkar &amp;thorn;egar ma&amp;eth;ur horfir &amp;aacute; punktinn &amp;iacute; &amp;thorn;essari mynd &amp;iacute; 30 sek&amp;uacute;ndur og f&amp;aelig;rir svo m&amp;uacute;sina yfir hana
&lt;/p&gt;
&lt;p&gt;
&lt;img src="/pics/me/manzana1.jpg" onmouseover="this.src='/pics/me/manzana2.jpg';" onmouseout="this.src='/pics/me/manzana1.jpg';" alt="" width="556" height="382" /&gt;
&lt;/p&gt;
&lt;p&gt;
Svo er eitthva&amp;eth; fyrir n&amp;ouml;rdinn &amp;iacute; manni, Binary klukka
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.scottklarr.com/topic/30/binary-clock---free-javascript/"&gt;http://www.scottklarr.com/topic/30/binary-clock---free-javascript/ &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;THORN;a&amp;eth; er h&amp;aelig;gt a&amp;eth; f&amp;aacute; svona &lt;a href="http://www.gadgets.dk/nerd-stuff.html"&gt;armbands&amp;uacute;r&lt;/a&gt; &amp;aacute; &lt;a href="http://www.gadgets.dk/?language=en"&gt;gadgets.dk&lt;/a&gt;. &amp;THORN;etta er b&amp;uacute;&amp;eth; &amp;iacute; &amp;Aring;rhus, svona 40 fm&lt;sup&gt;2&lt;/sup&gt; en einhvernvegin n&amp;aacute;&amp;eth;i &amp;eacute;g a&amp;eth; ey&amp;eth;a r&amp;uacute;mri klukkustund af &amp;aelig;vi minni &amp;thorn;ar og hvert skipti sem &amp;eacute;g f&amp;oacute;r hring um hana fann &amp;eacute;g eitthva&amp;eth; n&amp;yacute;tt. 
&lt;/p&gt;
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/7iatqrF0g5I/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/Augnaleikur-og-Binary-klukkua.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=2fe55605-5c81-4c6c-aee8-3c70b70e8698</guid>
      <pubDate>Fri, 11 Apr 2008 13:17:00 +0000</pubDate>
      <category>Íslenskt</category>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=2fe55605-5c81-4c6c-aee8-3c70b70e8698</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=2fe55605-5c81-4c6c-aee8-3c70b70e8698</trackback:ping>
      <wfw:comment>http://ingig.net/post/Augnaleikur-og-Binary-klukkua.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=2fe55605-5c81-4c6c-aee8-3c70b70e8698</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=2fe55605-5c81-4c6c-aee8-3c70b70e8698</feedburner:origLink></item>
    <item>
      <title>Upper the first letter - Util</title>
      <description>&lt;p&gt;
Another simple one. This makes sure that the first letter in a text is uppercase
&lt;/p&gt;
&lt;div class="code"&gt;
public static string UpperFirstLetter(string str) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return str.Substring(0, 1).ToUpper() + str.Substring(1, str.Length-1);&lt;br /&gt;
} 
&lt;/div&gt;
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/PAgteshuEL0/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/Upper-the-first-letter---Util.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=873cd1b0-fd74-4ebc-b756-2508bf0f78be</guid>
      <pubDate>Thu, 10 Apr 2008 16:36:00 +0000</pubDate>
      <category>English</category>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=873cd1b0-fd74-4ebc-b756-2508bf0f78be</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=873cd1b0-fd74-4ebc-b756-2508bf0f78be</trackback:ping>
      <wfw:comment>http://ingig.net/post/Upper-the-first-letter---Util.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=873cd1b0-fd74-4ebc-b756-2508bf0f78be</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=873cd1b0-fd74-4ebc-b756-2508bf0f78be</feedburner:origLink></item>
    <item>
      <title>Mario in Javascript</title>
      <description>&lt;p&gt;
It&amp;#39;s amazing what they can do with javascript today. &lt;a href="http://blog.nihilogic.dk/2008/04/super-mario-in-14kb-javascript.html"&gt;Check out Mario written in javascript&lt;/a&gt;. In one 14kb file 
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://bp3.blogger.com/_OjchJpvqFiw/R_usewJzl3I/AAAAAAAAADE/_Z2bHuZlwyU/s200/mario.png" alt="" align="right" /&gt;
&lt;/p&gt;
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/BJ-1pPPegIc/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/Mario-in-Javascript.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=9bdad482-169b-4579-95aa-b5d25bbe0445</guid>
      <pubDate>Wed, 09 Apr 2008 12:53:00 +0000</pubDate>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=9bdad482-169b-4579-95aa-b5d25bbe0445</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=9bdad482-169b-4579-95aa-b5d25bbe0445</trackback:ping>
      <wfw:comment>http://ingig.net/post/Mario-in-Javascript.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=9bdad482-169b-4579-95aa-b5d25bbe0445</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=9bdad482-169b-4579-95aa-b5d25bbe0445</feedburner:origLink></item>
    <item>
      <title>When session expires - Util</title>
      <description>&lt;p&gt;
I use this code to insert into form when there is the possibility that a session will expires, e.g. when users are writing a weblog. When the session expires the user is logged out and there is the possiblity that he&amp;#39;ll lose all the text he has written.
&lt;/p&gt;
&lt;p&gt;
So in the form where the user is writing his text I add this this the form
&lt;/p&gt;
&lt;p&gt;
&amp;lt;%= Util.GetIdentityInput(pid) %&amp;gt;
&lt;/p&gt;
&lt;p&gt;
This will give me a hidden input box, with his identity encrypted(pid == person Id), so if the session has expired I can retrieve what user id he was using and log him back in. 
&lt;/p&gt;
&lt;p&gt;
The code is pretty simple, after the encryption I need to replace any &amp;quot; with &amp;amp;quote; since this is an input box and &amp;quot; are not allowed. The UrlEncode is simply for browser compatability. 
&lt;/p&gt;
&lt;div class="code"&gt;
public static string GetIdentityInput(int pid) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return &amp;quot;&amp;lt;input name=\&amp;quot;EventAccess\&amp;quot; value=\&amp;quot;&amp;quot; + HttpContext.Current.Server.UrlEncode(Encrypt.EncryptPassword(pid.ToString())).Replace(&amp;quot;\&amp;quot;&amp;quot;, &amp;quot;&amp;amp;quote;&amp;quot;) + &amp;quot;\&amp;quot; type=\&amp;quot;hidden\&amp;quot; /&amp;gt;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;nbsp;
&lt;/div&gt;
By doing this users never loses their text because of logout. 
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/W_OgzvGFyfo/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/When-session-expires---Util.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=75f1f212-4195-4ef5-8e37-27d02a89b851</guid>
      <pubDate>Tue, 08 Apr 2008 16:02:00 +0000</pubDate>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=75f1f212-4195-4ef5-8e37-27d02a89b851</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=75f1f212-4195-4ef5-8e37-27d02a89b851</trackback:ping>
      <wfw:comment>http://ingig.net/post/When-session-expires---Util.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=75f1f212-4195-4ef5-8e37-27d02a89b851</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=75f1f212-4195-4ef5-8e37-27d02a89b851</feedburner:origLink></item>
    <item>
      <title>Just in case someone is using type for locking</title>
      <description>Check out this article about locking, &lt;a href="http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/02/07/don-t-use-types-for-locking.aspx"&gt;http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2008/02/07/don-t-use-types-for-locking.aspx&lt;/a&gt;
</description>
      <link>http://feedproxy.google.com/~r/Ingignet/~3/1z6YJgR3acE/post.aspx</link>
      <author>ingig</author>
      <comments>http://ingig.net/post/Just-in-case-someone-is-using-type-for-locking.aspx#comment</comments>
      <guid isPermaLink="false">http://ingig.net/post.aspx?id=6974ea1b-9580-49f9-a14c-e3081bd97179</guid>
      <pubDate>Mon, 07 Apr 2008 18:38:00 +0000</pubDate>
      <category>English</category>
      <dc:publisher>ingig</dc:publisher>
      <pingback:server>http://ingig.net/pingback.axd</pingback:server>
      <pingback:target>http://ingig.net/post.aspx?id=6974ea1b-9580-49f9-a14c-e3081bd97179</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://ingig.net/trackback.axd?id=6974ea1b-9580-49f9-a14c-e3081bd97179</trackback:ping>
      <wfw:comment>http://ingig.net/post/Just-in-case-someone-is-using-type-for-locking.aspx#comment</wfw:comment>
      <wfw:commentRss>http://ingig.net/syndication.axd?post=6974ea1b-9580-49f9-a14c-e3081bd97179</wfw:commentRss>
    <feedburner:origLink>http://ingig.net/post.aspx?id=6974ea1b-9580-49f9-a14c-e3081bd97179</feedburner:origLink></item>
  </channel>
</rss>
