<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Software and web application security</title>
	<atom:link href="http://chrisweber.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://chrisweber.wordpress.com</link>
	<description>Chris Weber's software security braindump</description>
	<lastBuildDate>Sat, 24 Sep 2011 10:54:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='chrisweber.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Software and web application security</title>
		<link>http://chrisweber.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://chrisweber.wordpress.com/osd.xml" title="Software and web application security" />
	<atom:link rel='hub' href='http://chrisweber.wordpress.com/?pushpress=hub'/>
		<item>
		<title>moved to lookout.net</title>
		<link>http://chrisweber.wordpress.com/2008/05/20/moved-to-lookoutnet/</link>
		<comments>http://chrisweber.wordpress.com/2008/05/20/moved-to-lookoutnet/#comments</comments>
		<pubDate>Wed, 21 May 2008 05:17:06 +0000</pubDate>
		<dc:creator>chrisweber</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://chrisweber.wordpress.com/?p=70</guid>
		<description><![CDATA[I&#8217;ve moved this blog to my old domain, check it out: www.Lookout.net<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=70&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve moved this blog to my old domain, check it out:</p>
<h1><a title="chris weber blog" href="http://www.lookout.net">www.Lookout.net</a></h1>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chrisweber.wordpress.com/70/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chrisweber.wordpress.com/70/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisweber.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisweber.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisweber.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisweber.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisweber.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisweber.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisweber.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisweber.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisweber.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisweber.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisweber.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisweber.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisweber.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisweber.wordpress.com/70/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=70&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisweber.wordpress.com/2008/05/20/moved-to-lookoutnet/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efdc17a20b45044cdace86572a4885b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisweber</media:title>
		</media:content>
	</item>
		<item>
		<title>IIS7 short Security Guide</title>
		<link>http://chrisweber.wordpress.com/2007/09/19/iis7-security-guide-for-application-reviews/</link>
		<comments>http://chrisweber.wordpress.com/2007/09/19/iis7-security-guide-for-application-reviews/#comments</comments>
		<pubDate>Wed, 19 Sep 2007 21:23:46 +0000</pubDate>
		<dc:creator>chrisweber</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[IIS7]]></category>

		<guid isPermaLink="false">http://chrisweber.wordpress.com/2007/09/19/63/</guid>
		<description><![CDATA[Abstract Here&#8217;s a short guide for those who want to know some of the relevant security technology in the new IIS7 and ASP.NET. Attack Surface Reduction &#8211; even more locked down than IIS6 (default disabled) No more metabase – it&#8217;s all about applicationHost.config which can be stored centrally on a UNC share and shared among [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=63&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1>Abstract</h1>
<p>Here&#8217;s a short guide for those who want to know some of the relevant security technology in the new IIS7 and ASP.NET.</p>
<ul>
<li>Attack Surface Reduction &#8211; even more locked down than IIS6 (default disabled)</li>
<li>No more metabase – it&#8217;s all about <span style="font-family:Courier New;font-size:10pt;">applicationHost.config</span> which can be stored centrally on a UNC share and shared among a web farm.</li>
<li>Supports compatibility mode for IIS6 and &#8220;classic mode&#8221; ASP.NET</li>
<li>Support for PHP and Perl via FastCGI</li>
<li>Delegated Admin to application owners.</li>
</ul>
<p>Enough about those areas, let&#8217;s focus on these new things:</p>
<ul>
<li><strong>Integrated Request Processing Pipeline<br />
</strong></li>
<li><strong>ASP.NET integration</strong> right smack in the pipeline</li>
<li><strong>REQUEST FILTERING</strong> (REPLACES URLSCAN)</li>
<li>IIS7 <strong>URL AUTHORIZATION</strong></li>
<li>USING <strong>ENCRYPTION</strong> TO PROTECT PASSWORDS</li>
<li>THE <strong>STAGES OF A REQUEST/RESPONSE</strong> &#8211; SERVER PIPELINE</li>
</ul>
<h1><span style="color:red;">NEW</span> Integrated request processing pipeline and WCF</h1>
<p>The integrated request processing pipeline architecture is a huge improvement.  It used to be effectively two separate server pipelines, making it near impossible for ASP.NET developers to interact with the HTTP pipeline as they&#8217;d like to do.</p>
<p>Windows process Activation Service (WAS) now handles communication between listener adapters and application pools.  WCF (Windows Communication Foundation) everywhere – WCF services can be hosted anywhere, in a console app, a forms app, a WPF UI, and:</p>
<ul>
<li>IIS can <strong>host non-HTTP</strong> services, utilizing WCF through
<ul>
<li>Net.pipe</li>
<li>Net.tcp</li>
<li>Net.msmq</li>
</ul>
</li>
<li>Look forward to a lot of web services over <strong>net.tcp (think Silverlight and .Net 3.5)</strong></li>
</ul>
<p><span style="text-decoration:underline;"><strong><em>The IIS6 Model:<br />
</em></strong></span></p>
<p style="margin-left:36pt;">&nbsp;</p>
<p> <a href="http://chrisweber.files.wordpress.com/2007/09/fig01.gif" title="iis6"><img src="http://chrisweber.files.wordpress.com/2007/09/fig01.gif" alt="iis6" /></a></p>
<p><strong>The IIS7 Model &#8211; </strong>WAS starts up w3wp.exe and handles messaging.   The following diagram illustrates the changes.</p>
<p><a href="http://chrisweber.files.wordpress.com/2007/09/image002.gif" title="iis7"><img src="http://chrisweber.files.wordpress.com/2007/09/image002.gif" alt="iis7" /></a></p>
<p style="margin-left:36pt;">&nbsp;</p>
<p><strong>Custom Modules can extend or replace IIS</strong> functionality (replaces old ISAPI model) &#8211; such as replacing the Basic auth module with a custom authentication provider.  These dll&#8217;s get stored in <span style="font-family:Courier New;font-size:10pt;">%WinDir%\System32\Inetsrv</span>.</p>
<p>In IIS 6, HTTP modules could only be written in managed code and could only process ASP.NET requests.  In <strong>IIS7</strong>, <strong>modules can be written in native code</strong>, and process any Web requests.</p>
<h1><span style="color:red;">NEW</span> ASP.NET Integration</h1>
<p>ASP.NET now plugged right into the server pipeline, no more hanging off the ISAPI engine.  Basically developers now have tons of power to extend request/response processing that wasn&#8217;t possible before.  ASP.NET has been set free.</p>
<p><a href="http://chrisweber.files.wordpress.com/2007/09/image004.jpg" title="iis7 server pipeline"><img src="http://chrisweber.files.wordpress.com/2007/09/image004.jpg" alt="iis7 server pipeline" /></a></p>
<p>New collections ASP.NET now has access to:</p>
<ul>
<li><strong>HttpResponse.Headers</strong></li>
<li><strong>HttpRequest.Headers</strong></li>
<li><strong>HttpRequest.ServerVariables</strong></li>
</ul>
<p>Leveraging Integrated ASP.NET mode:</p>
<ul>
<li>Forms-auth, Membership and Role-mapping</li>
<li> ASP.NET modules and <strong>functionality now available to all content</strong>, used to be only aspx pages and other ASP.NET content-types.</li>
</ul>
<p>Check for &#8220;preconditions&#8221; that <strong>limit</strong> ASP.NET functionality to only managed handlers.</p>
<p style="margin-left:36pt;">&nbsp;</p>
<pre><code><span style="color:blue;">&lt;</span><span style="color:maroon;">modules</span><span style="color:blue;">&gt;</span>     <span style="color:blue;">&lt;</span><span style="color:maroon;">add</span>
				<span style="color:red;">name</span>=<span style="color:blue;">"FormsAuthentication"</span>
				<span style="color:red;">type</span>=<span style="color:blue;">"System.Web.Security.FormsAuthenticationModule"</span>
				            preCondition="managedHandler" /&gt;     <span style="color:blue;">&lt;</span><span style="color:maroon;">add</span>
				<span style="color:red;">name</span>=<span style="color:blue;">"UrlAuthorization"</span>
				<span style="color:red;">type</span>=<span style="color:blue;">"System.Web.Security.UrlAuthorizationModule"</span>
				             preCondition="managedHandler" /&gt;
</code></pre>
<p style="margin-left:36pt;">&nbsp;</p>
<pre><code><span style="color:blue;">&lt;/</span><span style="color:maroon;">modules</span><span style="color:blue;">&gt;</span>
			</code></pre>
<p><span style="color:red;"><strong>Now if you remove the &#8220;precondition&#8221; (set by default) you can ensure AuthN and AuthZ is enforced for all content in the application.  Otherwise only managed modules are handled.<br />
</strong></span></p>
<h1><span style="color:red;">NEW</span> Request filtering (replaces URLScan)</h1>
<p>Here&#8217;s a config to 1) normalize URL&#8217;s by disallowing double escaping, 2) disallow high bit characters, and 3) set a deny all file extension list.</p>
<p>These are set in the global <span style="font-family:Courier New;font-size:10pt;">applicationHost.config</span> and can be overridden per application.</p>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:10pt;">&lt;configuration&gt;<br />
&lt;system.webServer&gt;<br />
&lt;security&gt;<br />
<em>   <span style="color:blue;">&lt;</span><span style="color:maroon;">requestFiltering</span><br />
</em></span></p>
<p style="margin-left:36pt;">&nbsp;</p>
<pre><code><em>                    allowDoubleEscaping="false"
</em></code></pre>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:10pt;"><em>            allowHighBitCharacters=&#8221;false&#8221;<br />
&gt;<br />
</em></span></p>
<p style="margin-left:36pt;">&nbsp;</p>
<pre><code><em>    <span style="color:blue;">&lt;</span><span style="color:maroon;">fileExtensions</span>
					<span style="color:red;">allowUnlisted</span>=<span style="color:blue;">"true"</span>
					<span style="color:blue;">&gt;</span>                 <span style="color:blue;">&lt;</span><span style="color:maroon;">add</span>
					<span style="color:red;">fileExtension</span>=<span style="color:blue;">".asp"</span>
					<span style="color:red;">allowed</span>=<span style="color:blue;">"false"/&gt;</span>        <span style="color:blue;">&lt;/</span><span style="color:maroon;">fileExtensions</span><span style="color:blue;">&gt;</span>   <span style="color:blue;">&lt;/</span><span style="color:maroon;">requestFiltering</span><span style="color:blue;">&gt;</span></em>  &lt;/security&gt; &lt;/system.webServer&gt;&lt;/configuration&gt;
</code></pre>
<p>Control things like:</p>
<ul>
<li>Which VERBs are allowed</li>
<li>If double encoding allowed</li>
<li>High-bit ASCII allowed or not</li>
<li>File extensions allowed</li>
<li>URL sequences (e.g. &#8220;..&#8221;) or use to set a default &#8220;deny all&#8221; policy and include explicit directories</li>
</ul>
<h2>Microsoft Ops story from dogfooding Microsoft.com the other week:</h2>
<p style="margin-left:54pt;"><span style="font-family:Symbol;font-size:10pt;"></span><span style="font-family:Times New Roman;font-size:7pt;">         </span><span style="font-family:Arial;font-size:10pt;"><strong>Gotcha for Microsoft.com: If filename includes &#8220;+&#8221; then allowDoubleEscaping must be set to &#8220;true</strong>&#8220;</span><span style="font-family:Times New Roman;"><br />
</span></p>
<p style="margin-left:90pt;"><span style="font-family:Wingdings;font-size:10pt;"></span><span style="font-family:Times New Roman;font-size:7pt;">  </span><span style="font-family:Arial;font-size:10pt;">&lt;requestFiltering allowDoubleEscaping=&#8221;true&#8221;&gt;</span><span style="font-family:Times New Roman;"><br />
</span></p>
<p style="margin-left:54pt;"><span style="font-family:Symbol;font-size:10pt;"></span><span style="font-family:Times New Roman;font-size:7pt;">         </span><span style="font-family:Arial;font-size:10pt;"><strong>Allow or disallow specific file extensions and verbs</strong></span><span style="font-family:Times New Roman;"><br />
</span></p>
<p style="margin-left:90pt;"><span style="font-family:Wingdings;font-size:10pt;"></span><span style="font-family:Times New Roman;font-size:7pt;">  </span><span style="font-family:Arial;font-size:10pt;">&lt;add fileExtension=&#8221;.exe&#8221; allowed=&#8221;false&#8221; /&gt;</span><span style="font-family:Times New Roman;"><br />
</span></p>
<p style="margin-left:54pt;"><span style="font-family:Symbol;font-size:10pt;"></span><span style="font-family:Times New Roman;font-size:7pt;">         </span><span style="font-family:Arial;font-size:10pt;"><strong>DenyURLSequences </strong></span><span style="font-family:Times New Roman;"><br />
</span></p>
<p style="margin-left:90pt;"><span style="font-family:Wingdings;font-size:10pt;"></span><span style="font-family:Times New Roman;font-size:7pt;">  </span><span style="font-family:Arial;font-size:10pt;">&lt;add sequence=&#8221;./&#8221; /&gt; </span><span style="font-family:Times New Roman;"><br />
</span></p>
<p style="margin-left:90pt;"><span style="font-family:Wingdings;font-size:10pt;"></span><span style="font-family:Times New Roman;font-size:7pt;">  </span><span style="font-family:Arial;font-size:10pt;">&lt;add sequence=&#8221;/.&#8221; /&gt; </span><span style="font-family:Times New Roman;"><br />
</span></p>
<p style="margin-left:54pt;"><span style="font-family:Symbol;font-size:10pt;"></span><span style="font-family:Times New Roman;font-size:7pt;">         </span><span style="font-family:Arial;font-size:10pt;"><strong>RequestLimits </strong></span><span style="font-family:Times New Roman;"><br />
</span></p>
<p style="margin-left:90pt;"><span style="font-family:Wingdings;font-size:10pt;"></span><span style="font-family:Times New Roman;font-size:7pt;">  </span><span style="font-family:Arial;font-size:10pt;">maxAllowedContentLength=&#8221;1000000&#8243;</span><span style="font-family:Times New Roman;"><br />
</span></p>
<p style="margin-left:90pt;"><span style="font-family:Wingdings;font-size:10pt;"></span><span style="font-family:Times New Roman;font-size:7pt;">  </span><span style="font-family:Arial;font-size:10pt;">maxUrl=&#8221;260&#8243;</span><span style="font-family:Times New Roman;"><br />
</span></p>
<p style="margin-left:90pt;"><span style="font-family:Wingdings;font-size:10pt;"></span><span style="font-family:Times New Roman;font-size:7pt;">  </span><span style="font-family:Arial;font-size:10pt;">maxQueryString=&#8221;2048&#8243;</span><span style="font-family:Times New Roman;"><br />
</span></p>
<h1><span style="color:red;">NEW</span> IIS7 URL Authorization</h1>
<p>Provides declarative access controls for the entire application – no code needed.</p>
<ul>
<li>Can be used with <strong>machine accounts</strong> or <strong>domain accounts</strong></li>
<li>Can be used with <strong>ASP.NET Membership and Roles</strong> and also for <strong>custom identities</strong></li>
<li>Stored in <span style="font-family:Courier New;font-size:10pt;">web.config</span> files for easy distribution</li>
<li>Can be configured through UI (not in ASP.NET UrlAuthorization)</li>
<li>Implemented in assembly <span style="color:blue;">%windir%\System32\inetsrv\urlauthz.dll</span><span style="color:blue;">&lt;</span><span style="color:maroon;">add</span><br />
<span style="color:red;">name</span>=<span style="color:blue;">&#8220;UrlAuthorizationModule&#8221;</span><br />
<span style="color:red;">image</span>=<span style="color:blue;">&#8220;%windir%\System32\inetsrv\urlauthz.dll&#8221;</span><br />
<span style="color:blue;">/&gt;</span></li>
</ul>
<ul>
<li>Applies to <strong>all content</strong>, not just <span style="font-family:Courier New;font-size:10pt;">.aspx</span> or <span style="font-family:Courier New;font-size:10pt;">.asmx</span> pages like the old ASP.NET UrlAuthorization</li>
<li>ASP.NET UrlAuthorization was very developer focused, new IIS7 UrlAuthorization is more <strong>Administrator focused</strong></li>
</ul>
<p>Configuration section <span style="font-family:Courier New;font-size:10pt;">system.webServer/security/authorization</span> &#8211; looks like:</p>
<p style="margin-left:36pt;">&nbsp;</p>
<pre><code><span style="color:blue;">&lt;</span><span style="color:maroon;">authorization</span>
				<span style="color:red;">lockElements</span>=<span style="color:blue;">"clear"&gt;</span>               <span style="color:blue;">&lt;</span><span style="color:maroon;">add</span>
				<span style="color:red;">accessType</span>=<span style="color:blue;">"Deny"</span>
				<span style="color:red;">users</span>=<span style="color:blue;">"*"</span>
				<span style="color:blue;">/&gt;</span><span style="color:blue;">&lt;/</span><span style="color:maroon;">authorization</span><span style="color:blue;">&gt;</span>
			</code></pre>
<ul>
<li>* = anonymous users                ? = authenticated users</li>
<li>Rules evaluated from <strong>Parent-level</strong> first, <strong>Deny rules first</strong>.  With the <span style="font-family:Courier New;font-size:10pt;">lockElements=&#8221;clear&#8221;</span> setting you force inheritance to lower levels so nobody can override the setting.  * ASP.NET UrlAuthorization would evaluate from the bottom up, so this wouldn&#8217;t work.</li>
</ul>
<h1><span style="color:red;">NEW</span> Using Encryption to Protect Passwords</h1>
<p>WAS service runs as LOCALSYSTEM and needs access to identity passwords to launch Application Pools under.  Still appears similar to IIS6 but there&#8217;s now a GUI and a different way of doing it.  Basic steps:</p>
<ul>
<li>Create a new <strong>RSA key</strong> that only LOCALSYSTEM and Administrators have access to.  This key will be used to encrypt passwords for every application pool.  From the command line:<span style="font-family:Courier New;font-size:10pt;">createProvider.exe iisWasKey RsaKeyForWAS Rsa_WAS<br />
</span></li>
<li>Create the application pools and encrypt their passwords.  First set the default provider:<span style="font-family:Courier New;font-size:10pt;">setProvider.exe Rsa_WAS<br />
</span><br />
Then configure the application pools to run with those accounts.  Take a look at <span style="font-family:Courier New;font-size:10pt;">applicationHost.config</span> and you&#8217;ll see the encrypted passwords.</li>
<li><span style="color:red;"><strong>Lock down the encryption providers!!!  By default IIS_IUSRS has read access to the keys when they are created.</strong></span>  Remove that access so only LOCALSYSTEM and Administrators have access.<span style="font-family:Courier New;font-size:10pt;">cd /d %systemroot%<br />
cd Microsoft.NET\Framework\v2.0.50727<br />
aspnet_regiis.exe -pr iisWasKey IIS_IUSRS</span></li>
</ul>
<h1>The stages of a request/response &#8211; Server Pipeline</h1>
<p>The stages of the server pipeline, exposed as HttpApplication events in ASP.NET:</p>
<ol>
<li><strong>BeginRequest</strong>. The request processing is starting.</li>
<li><strong>AuthenticateRequest</strong>. The request is being authenticated. IIS and ASP.NET authentication modules subscribe to this stage to perform authentication.</li>
<li>PostAuthenticateRequest</li>
<li><strong>AuthorizeRequest</strong>. The request is being authorized. IIS and ASP.NET authorization modules check whether the authenticated user has access to the resource being requested.</li>
<li>PostAuthorizeRequest</li>
<li><strong>ResolveRequestCache</strong>. Cache modules can check whether the response to this request exists in the cache, and return it instead of proceeding with the rest of the execution path. Both ASP.NET Output Cache and the new IIS Output Cache features execute here.</li>
<li>PostResolveRequestCache</li>
<li><strong>MapRequestHandler</strong>. This stage is internal in ASP.NET, and is used to determine the request handler.</li>
<li>PostMapRequestHandler</li>
<li><strong>AcquireRequestState</strong>. The state necessary for the request execution is being fetched. ASP.NET Session State, and Profile modules obtain their data here.</li>
<li>PostAcquireRequestState</li>
<li><strong>PreExecuteRequestHandler</strong>. Any tasks before the execution of the handler can be performed here.</li>
<li><strong>ExecuteRequestHandler</strong>. The request handler executes here. ASPX pages, ASP pages, CGI programs, and static files are served here.</li>
<li>PostExecuteRequestHandler</li>
<li><strong>ReleaseRequestState</strong>. The request state changes are saved, and the state is cleaned up here. ASP.NET Session State and Profile modules use this stage for cleanup.</li>
<li>PostReleaseRequestState</li>
<li><strong>UpdateRequestCache</strong>. The response can be stored in the cache for future use here. The ASP.NET Output Cache and IIS Output Cache modules execute here to save the response to their caches.</li>
<li>PostUpdateRequestCache</li>
<li><strong>LogRequest</strong>. This stage is used to log the results of the request, and is guaranteed to execute even if errors occur.</li>
<li>PostLogRequest</li>
<li><strong>EndRequest</strong>. This stage is used to perform any final request cleanup, and is guaranteed to execute even if errors occur.</li>
</ol>
<h1>Checklist and Questions for Security Review</h1>
<ol>
<li>Did you remove access to decryption keys so that only LOCALSYSTEM and Administrators have access?</li>
<li>Did you remove the &#8220;precondition&#8221; so that ASP.NET AuthN and AuthZ applies to all content?</li>
<li>Are you creating native code HTTP modules?<br />
* is it Global or request-level<br />
Are you creating a Hosted Web Core application?<br />
* gets its own ApplicationHost.config separate from IIS<br />
* it won&#8217;t inherit IIS process monitoring, health and recycling features</li>
<li>Are you using the Runtime State and Control API (RSCA) for monitoring/management?</li>
<li>Are you running a legacy application on IIS7?</li>
<li>Dynamic Configuration – are you modifying system or application pool configurations in the code? (AppHostAdminLibrary)</li>
</ol>
<h1>References</h1>
<p>IIS 7.0 Extend Your WCF Services Beyond HTTP With WAS</p>
<p><a href="http://msdn.microsoft.com/msdnmag/issues/07/09/WAS/default.aspx">http://msdn.microsoft.com/msdnmag/issues/07/09/WAS/default.aspx</a></p>
<p>IIS homepage</p>
<p><a href="http://www.iis.net/">http://www.iis.net/</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chrisweber.wordpress.com/63/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chrisweber.wordpress.com/63/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisweber.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisweber.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisweber.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisweber.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisweber.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisweber.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisweber.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisweber.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisweber.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisweber.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisweber.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisweber.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisweber.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisweber.wordpress.com/63/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=63&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisweber.wordpress.com/2007/09/19/iis7-security-guide-for-application-reviews/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efdc17a20b45044cdace86572a4885b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisweber</media:title>
		</media:content>

		<media:content url="http://chrisweber.files.wordpress.com/2007/09/fig01.gif" medium="image">
			<media:title type="html">iis6</media:title>
		</media:content>

		<media:content url="http://chrisweber.files.wordpress.com/2007/09/image002.gif" medium="image">
			<media:title type="html">iis7</media:title>
		</media:content>

		<media:content url="http://chrisweber.files.wordpress.com/2007/09/image004.jpg" medium="image">
			<media:title type="html">iis7 server pipeline</media:title>
		</media:content>
	</item>
		<item>
		<title>IIS7 security guide</title>
		<link>http://chrisweber.wordpress.com/2007/09/16/iis7-security-guide/</link>
		<comments>http://chrisweber.wordpress.com/2007/09/16/iis7-security-guide/#comments</comments>
		<pubDate>Sun, 16 Sep 2007 20:26:47 +0000</pubDate>
		<dc:creator>chrisweber</dc:creator>
				<category><![CDATA[IIS7]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://chrisweber.wordpress.com/2007/09/16/iis7-security-guide/</guid>
		<description><![CDATA[To understand the main concepts that will affect host and application security in IIS 7.0, I&#8217;ve done some research and compiled a small paper.  This should help break the ice and give security consultants like myself, developers and architects a quick view into some of the important security concepts around configuration and development in IIS7. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=52&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>To understand the main concepts that will affect host and application security in IIS 7.0, I&#8217;ve done some research and compiled a small paper.  This should help break the ice and give security consultants like myself, developers and architects a quick view into some of the important security concepts around configuration and development in IIS7.</p>
<p>ETA 1 day.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chrisweber.wordpress.com/52/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chrisweber.wordpress.com/52/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisweber.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisweber.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisweber.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisweber.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisweber.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisweber.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisweber.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisweber.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisweber.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisweber.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisweber.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisweber.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisweber.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisweber.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=52&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisweber.wordpress.com/2007/09/16/iis7-security-guide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efdc17a20b45044cdace86572a4885b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisweber</media:title>
		</media:content>
	</item>
		<item>
		<title>Bitlocker setup process almost complete</title>
		<link>http://chrisweber.wordpress.com/2007/09/14/bitlocker-setup-process/</link>
		<comments>http://chrisweber.wordpress.com/2007/09/14/bitlocker-setup-process/#comments</comments>
		<pubDate>Fri, 14 Sep 2007 23:04:19 +0000</pubDate>
		<dc:creator>chrisweber</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://chrisweber.wordpress.com/2007/09/14/bitlocker-setup-process/</guid>
		<description><![CDATA[Okay it&#8217;s on, I ran the preparation tool fine, rebooted, turned Bitlocker on (the TPM was already on via the BIOS).  The TPM ownership password was set during TPM initialization, which I might change later, but there&#8217;s not much point now.  I set the PIN I&#8217;ll use to boot up the computer, and copied the Recovery Key [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=51&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Okay it&#8217;s on, I ran the preparation tool fine, rebooted, turned Bitlocker on (the TPM was already on via the BIOS).  The TPM ownership password was set during TPM initialization, which I might change later, but there&#8217;s not much point now.  I set the PIN I&#8217;ll use to boot up the computer, and copied the Recovery Key to a USB drive.  The Recovery Key is useful if the computer has problems and I need to move the drive to a new machine.</p>
<p>All in all, so far it&#8217;s smooth.  The drive is currently encrypting which takes a while &#8211; at about 11% one hour later.  I have a 7200 rpm 200 GB drive.  Even unallocated space gets encrypted but they&#8217;ve optimized performance in that area &#8211; <a href="http://blogs.technet.com/bitlocker/">http://blogs.technet.com/bitlocker/</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chrisweber.wordpress.com/51/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chrisweber.wordpress.com/51/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisweber.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisweber.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisweber.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisweber.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisweber.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisweber.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisweber.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisweber.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisweber.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisweber.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisweber.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisweber.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisweber.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisweber.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=51&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisweber.wordpress.com/2007/09/14/bitlocker-setup-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efdc17a20b45044cdace86572a4885b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisweber</media:title>
		</media:content>
	</item>
		<item>
		<title>Bitlocker on Vista &#8211; speed, performance, review</title>
		<link>http://chrisweber.wordpress.com/2007/09/14/bitlocker-on-vista-speed-performance-review/</link>
		<comments>http://chrisweber.wordpress.com/2007/09/14/bitlocker-on-vista-speed-performance-review/#comments</comments>
		<pubDate>Fri, 14 Sep 2007 20:51:44 +0000</pubDate>
		<dc:creator>chrisweber</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://chrisweber.wordpress.com/2007/09/14/bitlocker-on-vista-speed-performance-review/</guid>
		<description><![CDATA[Been running 64 bit Vista for a few weeks now, my reliability score&#8217;s pretty low (lots of red-balls and app crashes).  But things overall seem pretty normal and fast.  Running on a Thinkpad T61. I didn&#8217;t prepare for Bitlocker though, only creating a single huge partition.  Luckily the Bitlocker Drive Preparatin Tool handles this.  As [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=50&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Been running 64 bit Vista for a few weeks now, my reliability score&#8217;s pretty low (lots of red-balls and app crashes).  But things overall seem pretty normal and fast.  Running on a Thinkpad T61.</p>
<p>I didn&#8217;t prepare for Bitlocker though, only creating a single huge partition.  Luckily the <a href="http://windowsconnected.com/blogs/joshs_blog/archive/2007/02/22/bitlocker-drive-preparation-tool.aspx">Bitlocker Drive Preparatin Tool </a>handles this.  As I&#8217;m writing it just finished preparation &#8211; it took some free space from C: and created an S: partition of 1.5gb which will be the active partition.  Hopefully I&#8217;ll reboot and things will work.</p>
<p>I&#8217;m interested in Bitlocker&#8217;s affect on speed and performance.  So I&#8217;ve created a few informal tests to time things, though I expect the difference to be low &#8211; as the product team says, it&#8217;s in the single digit percentages.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chrisweber.wordpress.com/50/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chrisweber.wordpress.com/50/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisweber.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisweber.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisweber.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisweber.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisweber.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisweber.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisweber.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisweber.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisweber.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisweber.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisweber.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisweber.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisweber.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisweber.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=50&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisweber.wordpress.com/2007/09/14/bitlocker-on-vista-speed-performance-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efdc17a20b45044cdace86572a4885b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisweber</media:title>
		</media:content>
	</item>
		<item>
		<title>Reflection only assembly loading</title>
		<link>http://chrisweber.wordpress.com/2007/09/08/reflection-only-assembly-loading/</link>
		<comments>http://chrisweber.wordpress.com/2007/09/08/reflection-only-assembly-loading/#comments</comments>
		<pubDate>Sat, 08 Sep 2007 23:56:27 +0000</pubDate>
		<dc:creator>chrisweber</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://chrisweber.wordpress.com/2007/09/08/reflection-only-assembly-loading/</guid>
		<description><![CDATA[Good article on using the System.Reflection Assembly classes ReflectionOnlyLoad* methods to specify an assembly should be load, well, for reflection only! As in, not to execute anything in the assembly. This helps overcome some issues with reflection, and lets 32 bit code investigate a 64 bit assembly. http://blogs.msdn.com/junfeng/archive/2004/08/24/219691.aspx<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=49&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Good article on using the System.Reflection Assembly classes ReflectionOnlyLoad* methods to specify an assembly should be load, well, for reflection only!  As in, not to execute anything in the assembly.  This helps overcome some issues with reflection, and lets 32 bit code investigate a 64 bit assembly.</p>
<p>http://blogs.msdn.com/junfeng/archive/2004/08/24/219691.aspx</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chrisweber.wordpress.com/49/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chrisweber.wordpress.com/49/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisweber.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisweber.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisweber.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisweber.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisweber.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisweber.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisweber.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisweber.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisweber.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisweber.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisweber.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisweber.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisweber.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisweber.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=49&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisweber.wordpress.com/2007/09/08/reflection-only-assembly-loading/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efdc17a20b45044cdace86572a4885b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisweber</media:title>
		</media:content>
	</item>
		<item>
		<title>Turning the Pages</title>
		<link>http://chrisweber.wordpress.com/2007/09/07/turning-the-pages/</link>
		<comments>http://chrisweber.wordpress.com/2007/09/07/turning-the-pages/#comments</comments>
		<pubDate>Sat, 08 Sep 2007 00:08:05 +0000</pubDate>
		<dc:creator>chrisweber</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://chrisweber.wordpress.com/2007/09/07/turning-the-pages/</guid>
		<description><![CDATA[Historians and classicists check it, the British Library has a unique collection of rare and ancient books, available online not in your buttoned-up PDF but in a purely digital-lifelike form.   One of the coolest applications of .Net 3.0, or only for that matter… but if you’re not there yet you can still view the Flash [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=48&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">Historians and classicists check it, the British Library has a unique collection of rare and ancient books, available online not in your buttoned-up PDF but in a purely digital-lifelike form.   One of the coolest applications of .Net 3.0, or only for that matter… but if you’re not there yet you can still view the Flash version (not as cool).  Mozart’s notebook, Da Vinci’s diaries, Medieval works, the 15<sup>th</sup> century Libson Hebrew Bible… what could you possibly do with this?   I dunno but turning the pages was pretty damn cool for a few minutes.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><a href="http://www.bl.uk/onlinegallery/ttp/ttpbooks.html">http://www.bl.uk/onlinegallery/ttp/ttpbooks.html</a></p>
<p class="MsoNormal">
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chrisweber.wordpress.com/48/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chrisweber.wordpress.com/48/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisweber.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisweber.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisweber.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisweber.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisweber.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisweber.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisweber.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisweber.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisweber.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisweber.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisweber.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisweber.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisweber.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisweber.wordpress.com/48/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=48&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisweber.wordpress.com/2007/09/07/turning-the-pages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efdc17a20b45044cdace86572a4885b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisweber</media:title>
		</media:content>
	</item>
		<item>
		<title>I18N input validation whitelist filter with System.Globalization and GetUnicodeCategory</title>
		<link>http://chrisweber.wordpress.com/2007/04/23/i18n-input-validation-whitelist-filter-with-systemglobalization-and-getunicodecategory/</link>
		<comments>http://chrisweber.wordpress.com/2007/04/23/i18n-input-validation-whitelist-filter-with-systemglobalization-and-getunicodecategory/#comments</comments>
		<pubDate>Tue, 24 Apr 2007 06:48:20 +0000</pubDate>
		<dc:creator>chrisweber</dc:creator>
				<category><![CDATA[software security]]></category>

		<guid isPermaLink="false">http://chrisweber.wordpress.com/2007/04/23/i18n-input-validation-whitelist-filter-with-systemglobalization-and-getunicodecategory/</guid>
		<description><![CDATA[Maybe you&#8217;re building internationalized code and wondering how to build a whitelist filter that will support all the different character sets your planning to support. If you support more than ten, especially some of the larger east Asian sets, this might seem like an unwieldy or tricky process. Well luckily it&#8217;s easier than most people [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=46&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Maybe you&#8217;re building internationalized code and wondering how to build a whitelist filter that will support all the different character sets your planning to support.  If you support more than ten, especially some of the larger east Asian sets, this might seem like an unwieldy or tricky process.<br />
Well luckily it&#8217;s easier than most people would think.  Building a good input validation filter can be simplified with .Net&#8217;s <a href="http://msdn2.microsoft.com/en-us/library/system.globalization.charunicodeinfo.getunicodecategory.aspx">GetUnicodeCategory</a>.  But use the method from the <strong>System.Globalization</strong> namespace as the other one in System.Char looks like it may become the subordinate.</p>
<p>With <strong>GetUnicodeCategory </strong>you can simply build a <strong>whitelist </strong>supporting the character <em><strong>categories </strong></em>you want to allow.  So get away from thinking you have to write a regEx filter and list out all the character ranges you want to allow in each character set, it&#8217;s much simpler than that!</p>
<p>The Unicode standard assigns ever character to one of about <strong>31 categories</strong>.   They make sense too, for example Other Control charactes (Cc) , Lowercase Letter (Ll), Uppercase Letter (Lu), Math Symbol (Sm).   So for example you might want to only allow letters, numbers, and punctuation in your whitelist.  This could be achieved with the following snippet:</p>
<p><code><br />
char cUntrustedInput; // the untrusted user-input<br />
UnicodeCategory cInputTest = CharUnicodeInfo.GetUnicodeCategory(cUntrustedInput);<br />
if (cTestCategory == UnicodeCategory.LowercaseLetter ||<br />
cTestCategory == UnicodeCategory.UppercaseLetter ||<br />
cTestCategory == UnicodeCategory.DecimalDigitNumber ||<br />
cTestCategory == UnicodeCategory.TitlecaseLetter ||<br />
cTestCategory == UnicodeCategory.OtherLetter ||<br />
cTestCategory == UnicodeCategory.NonSpacingMark ||<br />
cTestCategory == UnicodeCategory.DashPunctuation ||<br />
cTestCategory == UnicodeCategory.ConnectorPunctuation)<br />
{<br />
// character looks safe, continue<br />
}<br />
else<br />
{<br />
// character is not allowed, fail<br />
}<br />
</code></p>
<p>Not too bad eh.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chrisweber.wordpress.com/46/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chrisweber.wordpress.com/46/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisweber.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisweber.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisweber.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisweber.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisweber.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisweber.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisweber.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisweber.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisweber.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisweber.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisweber.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisweber.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisweber.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisweber.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=46&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisweber.wordpress.com/2007/04/23/i18n-input-validation-whitelist-filter-with-systemglobalization-and-getunicodecategory/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efdc17a20b45044cdace86572a4885b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisweber</media:title>
		</media:content>
	</item>
		<item>
		<title>Fortify JavaScript Hijacking Vulnerability Detected</title>
		<link>http://chrisweber.wordpress.com/2007/04/04/fortify-javascript-hijacking-vulnerability-detected/</link>
		<comments>http://chrisweber.wordpress.com/2007/04/04/fortify-javascript-hijacking-vulnerability-detected/#comments</comments>
		<pubDate>Wed, 04 Apr 2007 22:47:49 +0000</pubDate>
		<dc:creator>chrisweber</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[web apps]]></category>

		<guid isPermaLink="false">http://chrisweber.wordpress.com/2007/04/04/fortify-javascript-hijacking-vulnerability-detected/</guid>
		<description><![CDATA[Rather scary issue regarding evil.com&#8217;s ability to rewrite javascript constructs such as the fundamental Object.  This means that evil.com can change the AJAX/JSON behavior of scripts run through good.com. http://www.fortifysoftware.com/advisory.jsp ScottGu from Microsoft responds as to why ASP.NET AJAX is not so vulnerable to this issue.  Doesn&#8217;t look like the best solution (basically the server [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=45&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Rather scary issue regarding evil.com&#8217;s ability to rewrite javascript constructs such as the fundamental Object.  This means that evil.com can change the AJAX/JSON behavior of scripts run through good.com.</p>
<p><a href="http://www.fortifysoftware.com/advisory.jsp">http://www.fortifysoftware.com/advisory.jsp</a></p>
<p>ScottGu from Microsoft responds as to why ASP.NET AJAX is not so vulnerable to this issue.  Doesn&#8217;t look like the best solution (basically the server requires an HTTP header Content-Type: application/json or it ignores the request).</p>
<p><a href="http://weblogs.asp.net/scottgu/archive/2007/04/04/json-hijacking-and-how-asp-net-ajax-1-0-mitigates-these-attacks.aspx">http://weblogs.asp.net/scottgu/archive/2007/04/04/json-hijacking-and-how-asp-net-ajax-1-0-mitigates-these-attacks.aspx</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chrisweber.wordpress.com/45/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chrisweber.wordpress.com/45/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisweber.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisweber.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisweber.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisweber.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisweber.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisweber.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisweber.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisweber.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisweber.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisweber.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisweber.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisweber.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisweber.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisweber.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=45&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisweber.wordpress.com/2007/04/04/fortify-javascript-hijacking-vulnerability-detected/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efdc17a20b45044cdace86572a4885b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisweber</media:title>
		</media:content>
	</item>
		<item>
		<title>Hardening Stack-based Buffer Overrun Detection in VC++ 2005 SP1</title>
		<link>http://chrisweber.wordpress.com/2007/04/04/hardening-stack-based-buffer-overrun-detection-in-vc-2005-sp1/</link>
		<comments>http://chrisweber.wordpress.com/2007/04/04/hardening-stack-based-buffer-overrun-detection-in-vc-2005-sp1/#comments</comments>
		<pubDate>Wed, 04 Apr 2007 17:33:18 +0000</pubDate>
		<dc:creator>chrisweber</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://chrisweber.wordpress.com/2007/04/04/hardening-stack-based-buffer-overrun-detection-in-vc-2005-sp1/</guid>
		<description><![CDATA[The recent Windows .Ani file stack overflow has a lot of people asking the same question.  How did Microsoft&#8217;s SDL process miss or punt this bug?  Why did the compiler&#8217;s /GS not protect the function? Michael Howard gives explanation as to why /GS did not protect this type of function, and how it can actually [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=44&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The recent <a href="http://seclists.org/bugtraq/2007/Mar/0479.html">Windows .Ani file stack overflow</a> has a lot of people asking the same question.  How did Microsoft&#8217;s SDL process miss or punt this bug?  Why did the compiler&#8217;s /GS not protect the function?</p>
<p>Michael Howard gives explanation as to why /GS did not protect this type of function, and how it can actually be made to.</p>
<p><a href="http://blogs.msdn.com/michael_howard/archive/2007/04/03/hardening-stack-based-buffer-overrun-detection-in-vc-2005-sp1.aspx">http://blogs.msdn.com/michael_howard/archive/2007/04/03/hardening-stack-based-buffer-overrun-detection-in-vc-2005-sp1.aspx</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chrisweber.wordpress.com/44/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chrisweber.wordpress.com/44/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisweber.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisweber.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisweber.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisweber.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisweber.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisweber.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisweber.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisweber.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisweber.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisweber.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisweber.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisweber.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisweber.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisweber.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisweber.wordpress.com&amp;blog=673290&amp;post=44&amp;subd=chrisweber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisweber.wordpress.com/2007/04/04/hardening-stack-based-buffer-overrun-detection-in-vc-2005-sp1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/efdc17a20b45044cdace86572a4885b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisweber</media:title>
		</media:content>
	</item>
	</channel>
</rss>
