<?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>Dan Nicholson</title>
	<atom:link href="http://www.dannicholson.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dannicholson.co.uk</link>
	<description>Web Applications &#38; Software Development</description>
	<lastBuildDate>Thu, 03 May 2012 14:49:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Web Application Security Considerations</title>
		<link>http://www.dannicholson.co.uk/2012/05/03/web-application-security-considerations/</link>
		<comments>http://www.dannicholson.co.uk/2012/05/03/web-application-security-considerations/#comments</comments>
		<pubDate>Thu, 03 May 2012 14:49:10 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.dannicholson.co.uk/?p=225</guid>
		<description><![CDATA[Securing a web application can sometimes feel like an endless task, so here is a list of considerations that should help you cover the basics. Note that not all will apply to every application. Server Security Firewall restrict IP access to FTP, SSH, database and control panel. Passwords are string, non-dictionary based. Version information hidden [...]]]></description>
			<content:encoded><![CDATA[<p>Securing a web application can sometimes feel like an endless task, so here is a list of considerations that should help you cover the basics. Note that not all will apply to every application.</p>
<h2>Server Security</h2>
<ul>
<li>Firewall restrict IP access to FTP, SSH, database and control panel.</li>
<li>Passwords are string, non-dictionary based.</li>
<li>Version information hidden in request headers (PHP, Apache etc.)</li>
</ul>
<h2>Web Application Security</h2>
<ul>
<li>SQL injection prevention.</li>
<li>XSS filtering.</li>
<li>Cookies sent via secure connection.</li>
<li>Cookies encrypted.</li>
<li>Session IP matching.</li>
<li>Session user agent matching.</li>
<li>SSL enabled on all areas handling user or login data.</li>
<li>Code injection in input forms prevented (malicious strings removed).</li>
<li>CSRF protection.</li>
<li>User &amp; admin passwords encrypted in database.</li>
<li>Admin accounts in separate table from user accounts.</li>
<li>No folder permissions set to 777.</li>
<li>Folder browsing forbidden.</li>
</ul>
<h2>User Authentication</h2>
<ul>
<li>Bespoke authentication and password hashing models, using crypt.</li>
<li>Separate salts for user and admin logins.</li>
<li>Session destroyed and recreated on permission level change.</li>
<li>Session destroyed on browser close.</li>
<li>DOS / Brute force attack prevention. Maximum 5 login attempts before ‘cool down period’.</li>
<li>IP logging.</li>
</ul>
<h2>User File Uploading</h2>
<ul>
<li>Allowed file types restricted.</li>
<li>Stored outside of root directory, cannot be accessed directly.</li>
<li>Virus scanned on upload.</li>
<li>Accessible via authentication only, if user does not have permission to access that specific file, file not found is displayed.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dannicholson.co.uk/2012/05/03/web-application-security-considerations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redirect aspx pages to new site in .htaccess</title>
		<link>http://www.dannicholson.co.uk/2012/04/27/redirect-aspx-pages-to-new-site-in-htaccess/</link>
		<comments>http://www.dannicholson.co.uk/2012/04/27/redirect-aspx-pages-to-new-site-in-htaccess/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 09:40:14 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Quick Guides]]></category>
		<category><![CDATA[Server Management]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.dannicholson.co.uk/?p=223</guid>
		<description><![CDATA[If you are looking to redirect search engine results from an old aspx site to a new, more search engine friendly site, the following code added to your .htaccess file should help: RewriteRule ^(.+)\.aspx$ http://www.example.org/$1/ [QSA,NC,R=301,L] This will redirect http://www.example.org/here.aspx to http://www.example.com/here/. For a direct redirect from aspx to php, use the following: RewriteRule ^(.+)\.aspx$ [...]]]></description>
			<content:encoded><![CDATA[<p>If you are looking to redirect search engine results from an old aspx site to a new, more search engine friendly site, the following code added to your .htaccess file should help:</p>
<p><code>RewriteRule ^(.+)\.aspx$ http://www.example.org/$1/ [QSA,NC,R=301,L]</code></p>
<p>This will redirect <em>http://www.example.org/here.aspx</em> to <em>http://www.example.com/here/</em>.</p>
<p>For a direct redirect from aspx to php, use the following:</p>
<p><code>RewriteRule ^(.+)\.aspx$ http://www.example.org/$1\.php [QSA,NC,R=301,L]</code></p>
<p>This will redirect <em>http://www.example.org/here.aspx</em> to <em>http://www.example.com/here.php</em></p>
<p>Note that both of these rules also apply to longer urls:</p>
<p><em>http://www.example.org/home/something/this/here.aspx</em> will become <em>http://www.example.com/home/something/this/here.php</em></p>
<p>Don&#8217;t forget to enable redirects:<br />
<code>RewriteEngine On<br />
RewriteBase /</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannicholson.co.uk/2012/04/27/redirect-aspx-pages-to-new-site-in-htaccess/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Codeigniter &#8211; Configuring htaccess to force SSL / non-SSL</title>
		<link>http://www.dannicholson.co.uk/2012/04/26/codeigniter-configuring-htaccess-to-force-ssl-non-ssl/</link>
		<comments>http://www.dannicholson.co.uk/2012/04/26/codeigniter-configuring-htaccess-to-force-ssl-non-ssl/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 12:56:17 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Quick Guides]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://www.dannicholson.co.uk/?p=220</guid>
		<description><![CDATA[I spent a considerable amount of time looking for the correct configuration that would allow me to force SSL for certain controllers in Codeigniter and force non-SSL for the others. The solution for those interested is included below: #Force SSL for controllers admin, account &#038; application RewriteCond %{SERVER_PORT} 80 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d [...]]]></description>
			<content:encoded><![CDATA[<p>I spent a considerable amount of time looking for the correct configuration that would allow me to force SSL for certain controllers in Codeigniter and force non-SSL for the others. The solution for those interested is included below:</p>
<p><code>#Force SSL for controllers admin, account &#038; application<br />
RewriteCond %{SERVER_PORT} 80<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteCond %{REQUEST_URI} ^/(admin|account|application)<br />
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [L]</p>
<p>#Force non-SSL for folders not admin, account or application<br />
RewriteCond %{SERVER_PORT} 443<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteCond %{REQUEST_URI} !^/(admin|account|application)<br />
RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [L]  </p>
<p># If not in list, run URL through Codeigniter<br />
RewriteCond $1 !^(index\.php|assets|robots\.txt)<br />
RewriteRule ^(.*)$ /index.php/$1 [L]</code></p>
<p>You will need to replace the REQUEST_URI controller names with your own, and also add any files or folders that need direct access to the last RewriteCond</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannicholson.co.uk/2012/04/26/codeigniter-configuring-htaccess-to-force-ssl-non-ssl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing a Self-Signed SSL Certificate on Apache</title>
		<link>http://www.dannicholson.co.uk/2012/04/25/installing-a-self-signed-ssl-certificate-on-apache/</link>
		<comments>http://www.dannicholson.co.uk/2012/04/25/installing-a-self-signed-ssl-certificate-on-apache/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 14:59:26 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Quick Guides]]></category>
		<category><![CDATA[Server Management]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://www.dannicholson.co.uk/?p=214</guid>
		<description><![CDATA[Execute the following command (substitute ‘mysitename’ for the domain) $ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mysitename.key -out mysitename.crt Find the key and certificate file on the server (if you don’t know where it has been stored) $ find /folder -type f -name mysitename.key Open /etc/httpd/httpd.conf or vhosts file (depending on configuration) [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>Execute the following command (substitute ‘mysitename’ for the domain)<br />
<code>$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mysitename.key -out mysitename.crt</code></li>
<li>Find the key and certificate file on the server (if you don’t know where it has been stored)<br />
<code>$ find /folder -type f -name mysitename.key</code></li>
<li>Open /etc/httpd/httpd.conf or vhosts file (depending on configuration)<br />
<code>$ nano /etc/httpd/httpd.conf</code></li>
<li>Add:<br />
<code>&lt;VirtualHost 192.168.0.1:443&gt;<br />
DocumentRoot /var/www/website<br />
ServerName <a href="http://www.domain.com/">www.domain.com<br />
</a>SSLEngine on<br />
SSLCertificateFile /etc/ssl/crt/ mysitename.crt<br />
SSLCertificateKeyFile /etc/ssl/crt/ mysitename.key<br />
&lt;/VirtualHost&gt;</code></li>
<li>Save. Close</li>
<li>Restart apache<br />
<code>$ service httpd restart</code></li>
</ol>
<p><strong>Possible Error</strong><br />
<code>[warn] _default_ VirtualHost overlap on port 443, the first has precedence.</code></p>
<p><strong>Fix</strong><br />
Add <code>NameVirtualHost *:443</code> to httpd.conf</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannicholson.co.uk/2012/04/25/installing-a-self-signed-ssl-certificate-on-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Managing Expectations</title>
		<link>http://www.dannicholson.co.uk/2012/04/23/managing-expectations/</link>
		<comments>http://www.dannicholson.co.uk/2012/04/23/managing-expectations/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 19:47:38 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.dannicholson.co.uk/?p=207</guid>
		<description><![CDATA[Whether you develop for external or internal clients, managing their expectations can often be one of the most difficult aspects of project management. The problem we developers face is that, although a client will have a general idea of what they would like the project to include, it will rarely be specific enough to write [...]]]></description>
			<content:encoded><![CDATA[<p>Whether you develop for external or internal clients, managing their expectations can often be one of the most difficult aspects of project management.</p>
<p>The problem we developers face is that, although a client will have a general idea of what they would like the project to include, it will rarely be specific enough to write a brief at the beginning of the project.</p>
<p>This in itself would not be an issue except for the fact that we need to be able to assess the time required to complete any project and without a formal and structured list of features and functionality it is often difficult to estimate completion times. So what is the solution?</p>
<p><span id="more-207"></span></p>
<h2>Get it in writing</h2>
<p>One of the most effective methods of managing your client&#8217;s expectations is to spend a significant amount of time at the beginning of the project in discussions, this is necessary for the project but is also key to creating a comprehensive deliverables document. An agreement needs to be reached between the developer and client about what the project will deliver and in what format.</p>
<p>I often find that deliverables documents evolve through several versions before a final specification is agreed upon, and this is often once the compromise has been reached that although more features are required, the deadline the client has for the project will not allow for the addition of these. In cases such as this we would usually split the project into different phases, where the main launch would be considered &#8216;phase one&#8217; and any additional features could be added into phase two, including revisions of functionality and design.</p>
<p>This approach keeps mid-development changes to a minimum as it allows the client to create a list of &#8216;phase two&#8217; features, rather than them expecting every last-minute thought and addition to be incorporated into the original project specification.</p>
<h2>Get it in detail</h2>
<p>The problem that often occurs with this approach is that assumptions are made on both sides about features that are added to the deliverables document. This can often lead to complications as the client may expect that &#8220;Search Page for X&#8221; will include the ability to search for A, B and C, when being able to search for C alone will add several weeks worth of work to the project. This is a fault on both sides as clarifications were not made at the beginning about this.</p>
<p>Some obscurity is useful from the developer&#8217;s point of view as it can often afford them the freedom to change how a certain area is scripted in response to other factors, but as the project manager it is your role to ensure that all of the important details are included in the deliverables document to avoid any issues down the line.</p>
<p>This sounds simple but it will often involve planning the project to a very detailed degree before development even begins, although this in itself will usually be a benefit.</p>
<h2>Communicate</h2>
<p>Finally, the most important aspect of managing the client&#8217;s expectation is to communicate with them throughout the course of the project&#8217;s development. It may be easy to shy away from keeping the client involved to avoid them requesting additions that will not be possible, but managed correctly the client will be more comfortable with the progress of the project if they are kept involved as much as possible and are allowed to query if simple revisions can be made.<br />
You will find that your relationship with the client will suffer more from lack of communication than from telling them &#8216;no&#8217; but explaining why.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannicholson.co.uk/2012/04/23/managing-expectations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing WordPress&#8217;s White Screen of Death</title>
		<link>http://www.dannicholson.co.uk/2012/04/19/fixing-wordpress-white-screen-of-death/</link>
		<comments>http://www.dannicholson.co.uk/2012/04/19/fixing-wordpress-white-screen-of-death/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 11:34:05 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.dannicholson.co.uk/?p=181</guid>
		<description><![CDATA[I had an issue recently where one of my WordPress sites returned a blank page when I tried to access it. As far as I was aware nothing had changed, I hadn&#8217;t even been on the site for a few weeks. It turned out it  was an issue caused by one of the the plugins. [...]]]></description>
			<content:encoded><![CDATA[<p>I had an issue recently where one of my WordPress sites returned a blank page when I tried to access it. As far as I was aware nothing had changed, I hadn&#8217;t even been on the site for a few weeks.</p>
<p>It turned out it  was an issue caused by one of the the plugins.  To disable the plugins in order to access WordPress&#8217;s back-end, follow these steps:</p>
<ol>
<li>Log into your database.</li>
<li>&#8220;SELECT option_value FROM wp_options WHERE option_name = &#8217;active_plugins&#8217; LIMIT 1&#8243;</li>
<li>Remove all data from the field &#8216;option_value&#8217;. That will disable all plugins.</li>
<li>Log in to the wp-admin.</li>
<li>Update all plugins, and reactive.</li>
<li>Cross fingers</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.dannicholson.co.uk/2012/04/19/fixing-wordpress-white-screen-of-death/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML displaying Â£ instead of £</title>
		<link>http://www.dannicholson.co.uk/2011/10/31/html-displaying-apound-instead-of-pound/</link>
		<comments>http://www.dannicholson.co.uk/2011/10/31/html-displaying-apound-instead-of-pound/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 13:42:55 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Quick Guides]]></category>

		<guid isPermaLink="false">http://www.dannicholson.co.uk/?p=178</guid>
		<description><![CDATA[Another quick fix &#8211; if you are finding that your html page is outputting Â£ instead of £ it is more than likely because you need to specify the content type meta tag: &#60;meta http-equiv="content-type" content="text/html; charset=UTF-8" /&#62;]]></description>
			<content:encoded><![CDATA[<p>Another quick fix &#8211; if you are finding that your html page is outputting Â£ instead of £ it is more than likely because you need to specify the content type meta tag:</p>
<p><code>&lt;meta http-equiv="content-type" content="text/html; charset=UTF-8" /&gt;</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannicholson.co.uk/2011/10/31/html-displaying-apound-instead-of-pound/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HeidiSQL query results hidden</title>
		<link>http://www.dannicholson.co.uk/2011/10/27/heidisql-query-results-hidden/</link>
		<comments>http://www.dannicholson.co.uk/2011/10/27/heidisql-query-results-hidden/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 09:26:22 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.dannicholson.co.uk/?p=171</guid>
		<description><![CDATA[If you are trying to run a query in HeidiSQL and find that the results are not displaying, it is probably because the box has been pushed off the bottom by the query editor window. This can be caused by resizing of the various windows. To fix this issues: Close all instances of HeidiSQL Open [...]]]></description>
			<content:encoded><![CDATA[<p>If you are trying to run a query in HeidiSQL and find that the results are not displaying, it is probably because the box has been pushed off the bottom by the query editor window. This can be caused by resizing of the various windows.</p>
<p>To fix this issues:</p>
<ol>
<li>Close all instances of HeidiSQL</li>
<li>Open regedit.exe</li>
<li>Delete the entry \\HKEY_CURRENT_USER\Software\HeidiSQL\querymemoheight</li>
<li>Restart HeidiSQL</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.dannicholson.co.uk/2011/10/27/heidisql-query-results-hidden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding CSS3 Support to IE 9</title>
		<link>http://www.dannicholson.co.uk/2011/10/21/adding-css3-support-to-ie-9/</link>
		<comments>http://www.dannicholson.co.uk/2011/10/21/adding-css3-support-to-ie-9/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 10:16:24 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[HTML5 & CSS3]]></category>

		<guid isPermaLink="false">http://www.dannicholson.co.uk/?p=165</guid>
		<description><![CDATA[If you have been developing your first CSS3 theme in a non-IE browser such as Google Chrome, you might find that when you preview your new design in IE 9 there is still no support. Luckily the solution is simple, all you need to do is add the following tag to yoursection and you should [...]]]></description>
			<content:encoded><![CDATA[<p>If you have been developing your first CSS3 theme in a non-IE browser such as Google Chrome, you might find that when you preview your new design in IE 9 there is still no support.</p>
<p>Luckily the solution is simple, all you need to do is add the following tag to yoursection and you should be good to go:</p>
<p>&lt;meta http-equiv=&#8221;X-UA-Compatible&#8221; content=&#8221;IE=Edge&#8221; /&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannicholson.co.uk/2011/10/21/adding-css3-support-to-ie-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Install subversion on Oracle Enterprise Linux 5.7</title>
		<link>http://www.dannicholson.co.uk/2011/10/10/install-subversion-on-oracle-enterprise-linux-5-7/</link>
		<comments>http://www.dannicholson.co.uk/2011/10/10/install-subversion-on-oracle-enterprise-linux-5-7/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 11:26:21 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Server Management]]></category>

		<guid isPermaLink="false">http://www.dannicholson.co.uk/?p=154</guid>
		<description><![CDATA[INSTALL SUBVERSION $ yum -y install subversion CHECK INSTALLATION $ svn &#8211;version $ svnadmin –version CHECKOUT REPOSITORY $ svn checkout file:///tmp/repos/test folder UPDATE FROM REPOSITORY (navigate to folder) $ svn update COMMIT TO REPOSITORY (navigate to folder) $ svn commit -m &#8220;your commit message here&#8221;]]></description>
			<content:encoded><![CDATA[<p>INSTALL SUBVERSION</p>
<p>$ yum -y install subversion</p>
<p>CHECK INSTALLATION</p>
<p>$ svn &#8211;version</p>
<p>$ svnadmin –version</p>
<p>CHECKOUT REPOSITORY</p>
<p>$ svn checkout file:///tmp/repos/test folder</p>
<p>UPDATE FROM REPOSITORY (navigate to folder)</p>
<p>$ svn update</p>
<p>COMMIT TO REPOSITORY (navigate to folder)</p>
<p>$ svn commit -m &#8220;your commit message here&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannicholson.co.uk/2011/10/10/install-subversion-on-oracle-enterprise-linux-5-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

