<?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/"
	>

<channel>
	<title>Net Data Design, LLC Blog &#187; Best Practices</title>
	<atom:link href="http://blog.nddllc.com/category/best-practices/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.nddllc.com</link>
	<description>Software and Database Development Blog</description>
	<lastBuildDate>Wed, 28 Jul 2010 21:23:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>Is it Facebook, our the users?</title>
		<link>http://blog.nddllc.com/2010/07/28/is-it-facebook-our-the-users/</link>
		<comments>http://blog.nddllc.com/2010/07/28/is-it-facebook-our-the-users/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 17:28:42 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[social networking]]></category>

		<guid isPermaLink="false">http://blog.nddllc.com/?p=266</guid>
		<description><![CDATA[A directory containing personal details about more than 100 million Facebook users has surfaced on an Internet file-sharing site. The 2.8GB torrent was compiled by hacker Ron Bowes of Skull Security, who created a web crawler program that harvested data on users contained in Facebook&#8217;s open access directory, which lists all users who couldn&#8217;t be [...]]]></description>
			<content:encoded><![CDATA[<div>
<p><strong>A directory containing personal details about  more than 100 million Facebook users has surfaced on an Internet  file-sharing site.</strong></p>
<p>The 2.8GB torrent was compiled by hacker Ron Bowes of <a title="Skull Security" href="http://www.skullsecurity.org/" target="_blank">Skull Security</a>, who created a web crawler program that harvested data on users contained in Facebook&#8217;s <a title="Facebook open access directory" href="https://www.facebook.com/directory" target="_blank">open access directory</a>, which lists all users who couldn&#8217;t be troubled to change their privacy settings to make their pages unavailable to search engines.</p>
<p>What Bowes did is completely legal as the information is public. Maybe when a stalker comes to call on you folks who don&#8217;t protect you information (or your &#8220;friends&#8221;, you&#8217;ll realize the importance of securing your profile.</p>
<p>Bowes&#8217; directory contains 171 million entries, relating to more than  100 million individual users &#8211; that&#8217;s 1/5 of all Facebook&#8217;s  <a title="Facebook reaches 500 million" href="http://www.thinq.co.uk/2010/7/22/facebook-reaches-500-million-milestone/" target="_blank">half billion</a> user base.</p>
<p>The file contains user account names and a URL for each user&#8217;s  profile page, from which details such as addresses, dates of birth or  phone numbers can be accessed. Accessing a user&#8217;s page from the list  will also enable you to click through to friends&#8217; profiles &#8211; even if  those friends have made themselves unsearchable.</p>
<p>Facebook (FB) should be ashamed of themselves for not being more vigilante by either setting the user profiles to secure by default, or by forcing users to make wise choices about their information setting not to mention the information of their friends.</p>
<p>What are you thoughts, is it an issue that FB should deal with directly? Or perhaps, FB should be more diligent in educating it&#8217;s users?</p>
</div>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.nddllc.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.nddllc.com/2010/07/28/is-it-facebook-our-the-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DotNetNuke&#8217;s Quaility control still needs work</title>
		<link>http://blog.nddllc.com/2010/06/21/dotnetnukes-quaility-control-still-needs-work/</link>
		<comments>http://blog.nddllc.com/2010/06/21/dotnetnukes-quaility-control-still-needs-work/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 12:49:30 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[DotNetNuke]]></category>
		<category><![CDATA[DNN]]></category>

		<guid isPermaLink="false">http://blog.nddllc.com/?p=238</guid>
		<description><![CDATA[Perhaps I was a little quick in singing praises about the way DotNetNuke (DNN) is handling releases. I posted a blog not long ago about this subject, and at the time it seemed true, but not so fast my friend. In the last two or three releases there have been some major issues, one that [...]]]></description>
			<content:encoded><![CDATA[<p>Perhaps I was a little quick in singing praises about the way <a href="http://www.dotnetnuke.com/" target="_blank">DotNetNuke</a> (DNN) is handling releases. I posted a <a href="http://blog.nddllc.com/2010/03/14/the-new-look-dotnetnuke-2/" target="_blank">blog</a> not long ago about this subject, and at the time it seemed true, but not so fast my friend.</p>
<p>In the last two or three releases there have been some major issues, one that directly effects me is a <a href="http://support.dotnetnuke.com/issue/ViewIssue.aspx?id=12791&amp;PROJID=2" target="_blank">missing method</a> from the DataProvider in 5.4.3. What&#8217;s makes it slightly more strange is a very similar<a href="http://support.dotnetnuke.com/issue/ViewIssue.aspx?id=12554&amp;PROJID=2" target="_blank"> issue </a>was found in the previous release (5.4.2). Two other &#8220;showstopper&#8221; issues that also appeared in recent builds are <a href="http://support.dotnetnuke.com/issue/ViewIssue.aspx?id=12501&amp;PROJID=2" target="_blank">DNN -12501</a> and <a href="http://support.dotnetnuke.com/issue/ViewIssue.aspx?id=12412&amp;PROJID=2" target="_blank">DNN-12412</a>.</p>
<p>In DNN 5.4.0 a change to the PageBase class in DNN has caused aspx pages to break in 3rd party modules. Meaning scripts wouldn&#8217;t run, RSS and some AJAX callbacks where broken. The problem was fixed, but a game of <a href="http://en.wikipedia.org/wiki/Jenga" target="_blank">Jenga</a> has begun.</p>
<p>When it was first announced the rigid release times sounded like a good idea. Every quarter there is a minor release, every Month a bugfix release. The dates for these releases cannot be missed. And to the Core Teams credit, they haven&#8217;t missed a date yet. That said, perhaps DNN needs to find a way to detect breaking issues before RTM, beta has always been an expensive way to do so, but one that DNN seems to avoid.</p>
<p>Of course, you&#8217;re going to get the people who press a beta into production, but the beta releases would certain produce a better production build to the DNN community.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.nddllc.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.nddllc.com/2010/06/21/dotnetnukes-quaility-control-still-needs-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What do Clients Expect from Us Anyway?</title>
		<link>http://blog.nddllc.com/2010/05/20/what-do-clients-expect-from-us-anyway/</link>
		<comments>http://blog.nddllc.com/2010/05/20/what-do-clients-expect-from-us-anyway/#comments</comments>
		<pubDate>Thu, 20 May 2010 18:47:17 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[micro-manage]]></category>
		<category><![CDATA[overbearing]]></category>

		<guid isPermaLink="false">http://blog.nddllc.com/?p=208</guid>
		<description><![CDATA[Over the last nine years we’ve built a reputation for creating websites that are top-shelf  both aesthetically and functionally. In addition to being  very good at what we do, we also like having fun when the time and place are right. So when a client says yes, what is it that they’re buying from us? [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last nine years we’ve built a reputation for creating websites that are top-shelf  both aesthetically and functionally. In addition to being  very good at what we do, we also like having fun when the time and place are right. So when a client says yes, what is it that they’re buying from us?</p>
<ul>
<li> A website? That may be why they came to us and what the end goal is, but that’s not why they choose us. A lot of companies create great websites.</li>
</ul>
<ul>
<li>A good time? Fun is a big part of it, who wants to deal with up-tight people all day. But even we know that there are better ways to spend money and have fun than hire us.</li>
</ul>
<ul>
<li> Our methodology? They definitely want to know we have one, but the details aren’t as important to most clients as they are to us.</li>
</ul>
<ul>
<li> Experience? Again, this is part of the reason but not what makes them say yes.</li>
</ul>
<p>See, they don’t decide to hire us for the website they’ll get or the promise of  a cold beer, cocktail or even because we’ve got hundreds of web projects in our portfolio.</p>
<p>So why do they hire us?  Because we put them at easy about their project.</p>
<p>When most clients set out to select a web firm they are probably apprehensive at best. But somewhere along the project, some clients turn overbearing and feel they need to micro-manage. Most clients like to be in the front seat, but they prefer the shotgun position, not behind the wheel. So, what do you do with the client who insists on driving?</p>
<p>In my eyes, there are several ways to approach this issue.</p>
<ul>
<li>First, you could  resign from the project and request the client find someone else to  finish it (or recommend a company you don&#8217;t care for).</li>
<li>Second, you could tactfully push back on the client and tell them who  is in charge of the project and ask that they allow us to do our job.</li>
<li>Third, you  could take what the client says, give them what they want, and finish  the project as quick as humanly possible so you can move on.</li>
</ul>
<p>So which do  you choose?</p>
<p>In my mind, the best thing to do is to finish the project as soon as  you can (without jeopardizing the integrity and quality) and put the  whole thing behind you. When it’s done you can always elect not to work  with the client again. It may be difficult to handle it that way, as some dialogue will be needed in the future. However you always want to make sure you remain professional in all  business situations regardless of whether or not the client is right or  wrong. This will ensure that your reputation will always be positive and  no bridges will be burned. At the end of the day, your responsibility  is to make sure the client is happy.   Stick with that principle and you’ll be in a good position.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.nddllc.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.nddllc.com/2010/05/20/what-do-clients-expect-from-us-anyway/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing DotNetNuke on IIS 7.5 &#8211; Semi-Automated</title>
		<link>http://blog.nddllc.com/2010/03/29/installing-dotnetnuke-on-iis-7-5-semi-automated/</link>
		<comments>http://blog.nddllc.com/2010/03/29/installing-dotnetnuke-on-iis-7-5-semi-automated/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 18:52:37 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[DotNetNuke]]></category>
		<category><![CDATA[IIS 7.5]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.nddllc.com/?p=195</guid>
		<description><![CDATA[An alternative method of installing DotNetNuke on IIS 7.5 9or IIS 7) is using the free helper application by Mike van der Meulen. MakeDNNSite is a nice little package that will give you a new DNN install without a lot of hassle. There is no manual web.config editing, Application Pool creating or setting of permissions [...]]]></description>
			<content:encoded><![CDATA[<p>An alternative method of installing <a href="http://www.dotnetnuke.com/" target="_blank">DotNetNuke</a> on IIS 7.5 9or IIS 7) is using the free helper application by <a href="http://http://www.mikevandermeulen.com/home" target="_blank">Mike van der Meulen</a>. <a href="http://www.mikevandermeulen.com/DotNetNuke/tabid/62/Default.aspx" target="_blank">MakeDNNSite</a> is a nice little package that will give you a new DNN install without a lot of hassle. There is no manual web.config editing, Application Pool creating or setting of permissions (see note below). It will even download the latest build for you or use a package that you already have downloaded.</p>
<p>I have used this method several time in testing and found it to be flawless (2008 R2, 64-bit). It does come with a few restriction, such as you can&#8217;t install using a sub-domain. It said to work on IIS 7 and 7.5 both 32-bit and 64-bit and SQL Server 2005 and 2008 both full and Express editions.</p>
<p>Because <a href="http://www.mikevandermeulen.com/DotNetNuke/tabid/62/Default.aspx" target="_blank">MakeDNNSite</a> works on both IIS 7 and 7.5, the Application Pool created uses the NetworkService account. While this is fine for IIS 7, however it is not the preferred account for IIS 7.5, rather the IIS AppPool Idently account should be used. This can be simply changed by right-clicking the newly created AppPool and selecting &#8216;Advanced Setting&#8217;. There, under Process Model, change the identity to &#8216;ApplicationPoolIdentity&#8217;.</p>
<p>If you opt to use the ApplicationPoolIdentity you will need to update you permissions on the website directory as well. I have blogged about this in detail (IIS 7.5 AppPool Identities).</p>
<p>In short, it&#8217;s a really nice tool at a great price (Free.) I highly recommend it for all DNN users, regardless of your environment or skill level.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.nddllc.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.nddllc.com/2010/03/29/installing-dotnetnuke-on-iis-7-5-semi-automated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing DotNetNuke on IIS 7.5</title>
		<link>http://blog.nddllc.com/2010/03/24/installing-dotnetnuke-on-iis-7-5/</link>
		<comments>http://blog.nddllc.com/2010/03/24/installing-dotnetnuke-on-iis-7-5/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 17:41:59 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[DotNetNuke]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[IIS 7.5]]></category>

		<guid isPermaLink="false">http://blog.nddllc.com/?p=176</guid>
		<description><![CDATA[There have been many questions on how to install and configure DotNetNuke on IIS 7.5 which ships in Windows 7 and Windows 2008 R2. I will outline the procedure I use to do so. For this example I will be using Windows 2008 R2 64-bit. When you first login to 2008 R2 you will be [...]]]></description>
			<content:encoded><![CDATA[<p>There have been many questions on how to install and configure DotNetNuke on IIS 7.5 which ships in Windows 7 and Windows 2008 R2. I will outline the procedure I use to do so. For this example I will be using Windows 2008 R2 64-bit.</p>
<p>When you first login to 2008 R2 you will be greeted with the Server Manager.</p>
<p style="text-align: left;">
<div id="attachment_178" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.nddllc.com/wp-content/uploads/2010/03/DNN-R2-001.png"><img class="size-full wp-image-178 " title="DNN-R2-001_" src="http://blog.nddllc.com/wp-content/uploads/2010/03/DNN-R2-001_.png" alt="Server Manager" width="300" height="225" /></a><p class="wp-caption-text">Server Manager</p></div>
<p style="text-align: left;">After you expand the Roles node and the Web Server node in the left pane you will be in the main IIS Manager.</p>
<p style="text-align: left;">
<div id="attachment_180" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.nddllc.com/wp-content/uploads/2010/03/DNN-R2-002.png"><img class="size-full wp-image-180" title="DNN-R2-002_" src="http://blog.nddllc.com/wp-content/uploads/2010/03/DNN-R2-002_.png" alt="IIS Manager 7.5" width="300" height="212" /></a><p class="wp-caption-text">IIS Manager 7.5 </p></div>
<p style="text-align: left;">Right Click on the &#8220;Sites&#8221; folder and select &#8220;Add Web Site.&#8221;</p>
<p style="text-align: left;">
<div id="attachment_182" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.nddllc.com/wp-content/uploads/2010/03/DNN-R2-003.png"><img class="size-full wp-image-182" title="DNN-R2-003_" src="http://blog.nddllc.com/wp-content/uploads/2010/03/DNN-R2-003_.png" alt="Add Web Site" width="300" height="225" /></a><p class="wp-caption-text">Add Web Site</p></div>
<p style="text-align: left;">In the next screen we enter the web sites specifics. Fill in the highlighted areas with your information. Note that as you enter your site name an new Application Pool is created.</p>
<p style="text-align: center;">
<div id="attachment_184" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.nddllc.com/wp-content/uploads/2010/03/DNN-R2-004.png"><img class="size-full wp-image-184" title="DNN-R2-004_" src="http://blog.nddllc.com/wp-content/uploads/2010/03/DNN-R2-004_.png" alt="Web Site Details" width="300" height="225" /></a><p class="wp-caption-text">Web Site Details</p></div>
<p>During the above process you will create a new directory to which you will deploy your DNN code.</p>
<p style="text-align: left;">
<div id="attachment_186" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.nddllc.com/wp-content/uploads/2010/03/DNN-R2-005.png"><img class="size-full wp-image-186" title="DNN-R2-005_" src="http://blog.nddllc.com/wp-content/uploads/2010/03/DNN-R2-005_.png" alt="Create Directory" width="300" height="225" /></a><p class="wp-caption-text">Create Website Directory</p></div>
<p>After this is complete, select Application Pools from the IIS Manager node. The detailed view should indicate that the AppPool is in Integrated Pipeline mode.</p>
<p style="text-align: left;">
<div id="attachment_188" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.nddllc.com/wp-content/uploads/2010/03/DNN-R2-006.png"><img class="size-full wp-image-188" title="DNN-R2-006_" src="http://blog.nddllc.com/wp-content/uploads/2010/03/DNN-R2-006_.png" alt="AppPool View" width="300" height="225" /></a><p class="wp-caption-text">AppPool View</p></div>
<p style="text-align: left;">If you have not already done so, copy your DNN files to your website directory. In IIS Manager right click your new website and:</p>
<ol>
<li>Select &#8220;Edit Permissions.&#8221;</li>
<li>Select the “Security” tab.</li>
<li>Click the “Edit” and then “Add” button</li>
<li>Click the “Locations” button and make sure you select your machine.</li>
<li>Enter “IIS AppPool\&lt;YourAppPoolName&gt;” in the “Enter the object names to select:” text box.</li>
<li>Click the “Check Names” button and click “OK”.</li>
<li>Grant &lt;YourAppPoolName&gt; modify permissions on the directory.</li>
</ol>
<p style="text-align: left;">
<div id="attachment_149" class="wp-caption aligncenter" style="width: 380px"><a href="http://blog.nddllc.com/wp-content/uploads/2010/03/AppPool04.png"><img class="size-full wp-image-149 " title="AppPool04" src="http://blog.nddllc.com/wp-content/uploads/2010/03/AppPool04.png" alt="Securing Resources" width="370" height="197" /></a><p class="wp-caption-text">Securing Resources for your Process  Identity</p></div>
<p style="text-align: left;">At this point you are ready to edit your web.config for your database connection., and get started.</p>
<p style="text-align: left;">If you have any questions on the Application pool details, I have covered this in an earlier Blog, you can <a href="http://blog.nddllc.com/2010/03/04/iis-7-5-apppool-identities/">read that here.</a></p>
<p style="text-align: left;">
<p style="text-align: center;">
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.nddllc.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.nddllc.com/2010/03/24/installing-dotnetnuke-on-iis-7-5/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>IIS 7.5 AppPool Identities</title>
		<link>http://blog.nddllc.com/2010/03/04/iis-7-5-apppool-identities/</link>
		<comments>http://blog.nddllc.com/2010/03/04/iis-7-5-apppool-identities/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 12:03:27 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[AppPool Identity]]></category>
		<category><![CDATA[IIS 7.5]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://blog.nddllc.com/?p=145</guid>
		<description><![CDATA[Windows 7 and Windows Server 2008 R2 ship with IIS 7.5. It&#8217;s called Application Pool Identities. Application Pool Identities allows you to run Application Pools under an unique account without having to create and manage domain or local accounts. The name of the Application Pool account corresponds to the name of the Application Pool. The [...]]]></description>
			<content:encoded><![CDATA[<p>Windows 7 and Windows Server 2008 R2 ship with IIS 7.5. It&#8217;s called Application Pool Identities. Application Pool Identities allows you to run Application Pools under an unique account without having to create and manage domain or local accounts. The name of the Application Pool account corresponds to the name of the Application Pool. The image below shows an IIS worker process (w3wp.exe) running as the DefaultAppPool identity.</p>
<div id="attachment_146" class="wp-caption aligncenter" style="width: 408px"><a href="http://blog.nddllc.com/wp-content/uploads/2010/03/AppPool01.png"><img class="size-full wp-image-146" title="AppPool01" src="http://blog.nddllc.com/wp-content/uploads/2010/03/AppPool01.png" alt="AppPool Identity Worker Process" width="398" height="185" /></a><p class="wp-caption-text">Task Manager - Worker Process</p></div>
<h3>Application Pool Identity Accounts</h3>
<p>Worker processes in IIS 6 and 7 run as NETWORKSERVICE by default. NETWORKSERVICE is a built-in Windows identity. It doesn&#8217;t require a password and it has only user privileges, i.e. it is relatively low-privileged. Running as a low-privileged account is a good security practice because then a software bug can&#8217;t be used by a malicious user to take over the whole system.</p>
<p>The problem is however that over time more and more Windows system services started to run as NETWORKSERVICE and services running as NETWORKSERVICE can tamper with other services running under the same identity. Because IIS worker processes run third-party code by default (Classic ASP, ASP.NET, PHP code) it was time to isolate IIS worker processes from other Windows system services and run IIS worker processes under unique identities. The Windows operating system provides a feature called &#8220;Virtual Accounts&#8221; that allows IIS to create unique identities for each of its Application Pools. Click here for more information about Virtual Accounts.</p>
<h3>Configuring IIS Application Pool Identities</h3>
<p>If you are running IIS 7.5 on Windows Server 2008 R2 you don&#8217;t have to do anything. For every Application Pool you create the IIS Admin Process (WAS) will create a virtual account with the name of the new Application Pool and run the Application Pool&#8217;s worker processes under this account.</p>
<p>If you are running Windows Server 2008 you have to change the IdentityType property of the Application Pool you created to &#8220;AppPoolIdentity&#8221;. Here is how:</p>
<ul>
<li>Open the IIS Management Console (INETMGR.MSC).</li>
<li>Open the Application Pools node underneath the machine node. Select the Application Pool you want to change to run under an automatically generated Application Pool Identity.</li>
<li>Right click the Application Pool and select &#8220;Advanced Settings&#8230;&#8221;</li>
</ul>
<div id="attachment_147" class="wp-caption aligncenter" style="width: 453px"><a href="http://blog.nddllc.com/wp-content/uploads/2010/03/AppPool02.png"><img class="size-full wp-image-147" style="width: 443px; height: 528px;" title="AppPool02" src="http://blog.nddllc.com/wp-content/uploads/2010/03/AppPool02.png" alt="Configure AppPool Identity" width="443" height="528" /></a><p class="wp-caption-text">Configuring AppPool Identity</p></div>
<ul>
<li>Select the &#8220;Identity&#8221; list item and click the button with the three dots.</li>
<li>The following dialog appears.</li>
</ul>
<div id="attachment_148" class="wp-caption aligncenter" style="width: 382px"><img class="size-full wp-image-148" title="AppPool03" src="http://blog.nddllc.com/wp-content/uploads/2010/03/AppPool03.png" alt="Selecting AppPool Identity" width="372" height="213" /><p class="wp-caption-text">Selecting AppPool Identity</p></div>
<ul>
<li>Select the Identity Type &#8220;ApplicationPoolIdentity&#8221; from the combo box</li>
</ul>
<p>To do the same step via command-line you can simply call the appcmd command-line tool the following way:</p>
<address>%windir%\system32\inetsrv\appcmd.exe set AppPool &lt;your AppPool&gt; -processModel.identityType:ApplicationPoolIdentity</address>
<h3>Securing Resources</h3>
<p>Whenever a new Application Pool is created the IIS management process  creates a security identifier (SID) representing the name of the  Application Pool itself, i.e. if you create an Application Pool with the  name &#8220;MyNewAppPool&#8221; a security identifier with the name &#8220;MyNewAppPool&#8221;  is created in the Windows Security system. From this point on resources  can be secured using this identity. The identity is not a real user  account however, i.e. it will not show up as a user in the Windows User  Management Console.</p>
<p>You can try this by selecting a file in Windows Explorer and adding  the &#8220;DefaultAppPool&#8221; identity to its Access Control List (ACL).</p>
<ol>
<li>Open Windows Explorer</li>
<li>Select a file or directory.</li>
<li>Right click the file and select &#8220;Properties&#8221;</li>
<li>Select the &#8220;Security&#8221; tab</li>
<li>Click the &#8220;Edit&#8221; and then &#8220;Add&#8221; button</li>
<li>Click the &#8220;Locations&#8221; button and make sure you select your machine.</li>
<li>Enter &#8220;IIS AppPool\DefaultAppPool&#8221; in the &#8220;Enter the object names to  select:&#8221; text box.</li>
<li>Click the &#8220;Check Names&#8221; button and click &#8220;OK&#8221;.</li>
</ol>
<p>By doing this the file or directory you selected will now also allow  the &#8220;DefaultAppPool&#8221; identity access.</p>
<div id="attachment_149" class="wp-caption aligncenter" style="width: 472px"><img class="size-full wp-image-149" title="AppPool04" src="http://blog.nddllc.com/wp-content/uploads/2010/03/AppPool04.png" alt="Securing Resources" width="462" height="246" /><p class="wp-caption-text">Securing Resources for your Process  Identity</p></div>
<p>You can do this via the command-line using the ICACLS tool. The following example gives full access to the DefaultAppPool identity.</p>
<address>ICACLS test.txt /grant &#8220;IIS AppPool\DefaultAppPool&#8221;:F </address>
<p>On Windows 7 and Windows Server 2008 R2 the default is to run Application Pools as this security identifier, i.e. as the Application Pool Identity. To make this happen a new identity type with the name &#8220;AppPoolIdentity&#8221; was introduced. If the &#8220;AppPoolIdentity&#8221; identity type is selected (default on Windows 7 and Windows Server 2008 R2) IIS will run worker processes as the Application Pool identity. With every other identity type the security identifier will only be injected into the access token of the process. If the identifier is injected content can still be ACLed for the AppPool identity but the owner of the token is probably not unique. Here  is an article that explains this concept.</p>
<h3>Accessing the Network</h3>
<p>Using the NETWORKSERVICE account in a domain environment has a great benefit. Worker process running as NETWORKSERVICE access the network as the machine account. Machine accounts are generated when a machine is joined to a domain. They look like this:</p>
<p><strong>&lt;domainname&gt;\&lt;machinename&gt;$,</strong></p>
<p>for example:</p>
<p><strong>mydomain\machine1$</strong></p>
<p>The nice thing about this is that network resources like file shares or SQL Server databases can be ACLed to allow access for this machine account.</p>
<h3>What about AppPool identities?</h3>
<p>The good news is that Application Pool identities also use the machine account to access network resources. No changes are required.</p>
<h2>Note:</h2>
<p>This article <a href="http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/" target="_blank">http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/</a> walks you through the process. This article was written for IIS 7, but will apply to IIS 7.5 as well.</p>
<p>In addition, if your server is 64 bit, you should set &#8216;<strong>enable 32 bit applications</strong>&#8216; to true in your application pools settings.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.nddllc.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.nddllc.com/2010/03/04/iis-7-5-apppool-identities/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Amazon S3 and the SMB</title>
		<link>http://blog.nddllc.com/2010/01/07/amazon-s3-and-the-smb/</link>
		<comments>http://blog.nddllc.com/2010/01/07/amazon-s3-and-the-smb/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 12:53:00 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[back-up]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[off-site]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[SMB]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.nddllc.com/?p=100</guid>
		<description><![CDATA[We, as an SMB (small and medium business), have been using Amazon&#8217;s S3 for sometime now. We are a small software development company that specializes in web applications. We also host web applications and sites. The benefit of S3 is it gives us the ability to keep complete off-site back-ups as well as share certain [...]]]></description>
			<content:encoded><![CDATA[<p>We, as an SMB (small and medium business), have been using Amazon&#8217;s S3 for sometime now. We are a small software development company that specializes in web applications. We also host web applications and sites. The benefit of S3 is it gives us the ability to keep complete off-site back-ups as well as share certain files with outside contractors and clients.</p>
<p>This probably isn&#8217;t anything earth shattering to most, but it certainly beats our old system of taking back-up tapes and DVD off-site every night. That method had too many short-comings to say the least.</p>
<p>Recently, for one of our secure document storage web applications, we started incorporating a data provider that utilizes the S3 API. Setting a search provider for S3 proved to be a bit of a challenge, but so far it has worked out fairly well.</p>
<p>So lets get back to the topic at hand. For the SMB looking for a cost effective way to keep file storage organized and highly available, I&#8217;m hard pressed to come up with another viable solution. If you&#8217;re the owner of a SMB or work for one, what options have you explored? What method of [off-site] back-up are you using? I&#8217;d really like to hear from you&#8230;</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.nddllc.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.nddllc.com/2010/01/07/amazon-s3-and-the-smb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The lastest SQL injection attack</title>
		<link>http://blog.nddllc.com/2009/12/10/the-lastest-sql-injection-attack/</link>
		<comments>http://blog.nddllc.com/2009/12/10/the-lastest-sql-injection-attack/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 22:29:32 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[sql injection]]></category>
		<category><![CDATA[sql server]]></category>

		<guid isPermaLink="false">http://blog.nddllc.com/?p=46</guid>
		<description><![CDATA[A serious SQL injection attack has injected a malicious iframe on more than 100,000 susceptible websites. ScanSafe reports that the injected iframe loads malicious content from 318x.com, which eventually leads to the installation of a rootkit-enabled variant of the Buzus backdoor trojan. A Google search on the iframe resulted in over 132,000 hits as of [...]]]></description>
			<content:encoded><![CDATA[<p>A serious SQL injection attack has injected a malicious iframe on more than 100,000 susceptible websites. ScanSafe reports that the injected iframe loads malicious content from 318x.com, which eventually leads to the installation of a rootkit-enabled variant of the Buzus backdoor trojan. A Google search on the iframe resulted in over 132,000 hits as of December 10, 2009.</p>
<p>Keep in mind that 99.9% of these attacks stem from poor coding. It very important to implore beginners (and some more experienced programmers) to code against them. In brief:</p>
<ul>
<li>Constrain Data, Check for known good data by validating for type, length, format, and range.</li>
<li>Use type-safe SQL parameters for data access. Use parameters with stored procedures or dynamically constructed SQL command strings.</li>
<li>Use a low-permission database account for data access.</li>
<li>Hide data errors, don&#8217;t give clues at to what maybe acceptable to the database.</li>
</ul>
<p>Now, there is a reason the items above look simple. <strong>They Are!</strong></p>
<p>All we need are programmers that will listen and not take short cuts.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.nddllc.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.nddllc.com/2009/12/10/the-lastest-sql-injection-attack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Releases 2.8.6 Security Patch</title>
		<link>http://blog.nddllc.com/2009/11/12/wordpress-releases-2-8-6-security-patch/</link>
		<comments>http://blog.nddllc.com/2009/11/12/wordpress-releases-2-8-6-security-patch/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 22:25:50 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[NDD Websites]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[trackback]]></category>

		<guid isPermaLink="false">http://blog.nddllc.com/?p=33</guid>
		<description><![CDATA[2.8.6 fixes two security problems that can be exploited by registered, logged in users who have posting privileges.  If you have untrusted authors on your blog, upgrading to 2.8.6 is recommended. The first problem is an XSS vulnerability in Press This discovered by Benjamin Flesch.  The second problem, discovered by Dawid Golunski, is an issue [...]]]></description>
			<content:encoded><![CDATA[<p>2.8.6 fixes two security problems that can be exploited by registered, logged in users who have posting privileges.  If you have untrusted authors on your blog, upgrading to 2.8.6 is recommended.</p>
<p>The first problem is an XSS vulnerability in Press This discovered by Benjamin Flesch.  The second problem, discovered by Dawid Golunski, is an issue with sanitizing uploaded file names that can be exploited in certain Apache configurations. Thanks to Benjamin and Dawid for finding and reporting these.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.nddllc.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.nddllc.com/2009/11/12/wordpress-releases-2-8-6-security-patch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What part of Beta isn’t clear, reply</title>
		<link>http://blog.nddllc.com/2009/10/29/what-part-of-beta-isn%e2%80%99t-clear-reply/</link>
		<comments>http://blog.nddllc.com/2009/10/29/what-part-of-beta-isn%e2%80%99t-clear-reply/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 12:24:19 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://blog.nddllc.com/?p=19</guid>
		<description><![CDATA[There is a blog entry here that &#8220;rants&#8221; about how beta software is treated and perceived by end-users. What wasn&#8217;t mentioned was the upgrade cycle. Never, never assume that a beta piece of software is going to be upgradable. And when I say upgradable, I mean the next beta build release. This would especially hold [...]]]></description>
			<content:encoded><![CDATA[<p>There is a <a href="http://www.cismith.com/2009/10/14/what-part-of-beta-isnt-clear/" target="_blank">blog entry here</a> that &#8220;rants&#8221; about how beta software is treated and perceived by end-users. What wasn&#8217;t mentioned was the upgrade cycle.</p>
<p>Never, never assume that a beta piece of software is going to be upgradable. And when I say upgradable, I mean the next beta build release. This would especially hold true  with an RTM. Almost never would you want tot upgrade a beta to a production code, unless the manufacturer has explicitly said this is acceptable.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.nddllc.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.nddllc.com/2009/10/29/what-part-of-beta-isn%e2%80%99t-clear-reply/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
