<?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>Geek Files &#187; Research</title>
	<atom:link href="http://www.sunilb.com/category/research/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sunilb.com</link>
	<description>Question Everything - that&#039;s the only way to learn</description>
	<lastBuildDate>Mon, 30 Jan 2012 04:59:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Tips to get article ideas for your blog</title>
		<link>http://www.sunilb.com/blogs/tips-to-get-article-ideas-for-your-blog</link>
		<comments>http://www.sunilb.com/blogs/tips-to-get-article-ideas-for-your-blog#comments</comments>
		<pubDate>Sat, 27 Oct 2007 17:42:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://www.sunilb.com/research/tips-to-get-article-ideas-for-your-blog</guid>
		<description><![CDATA[If you wish to start a blog or already have a blog and have this issue that you keep running out of ideas, I recommend that you consider the tips mentioned below to help you generate ideas for your blog posts. 1. Discuss issues with other people When you discuss issues in your area of [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.sunilb.com%2Fblogs%2Ftips-to-get-article-ideas-for-your-blog"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.sunilb.com%2Fblogs%2Ftips-to-get-article-ideas-for-your-blog&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>If you wish to start a <strong>blog</strong> or already have a <strong>blog</strong> and have this issue that you keep running out of ideas, I recommend that you consider the tips mentioned below to help you generate ideas for your <strong>blog posts</strong>.</p>
<p><code><br />
<script type="text/javascript"><!--
google_ad_client = "pub-9205249129147978";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-10-26: Sunilb.com 468x60
google_ad_channel = "7135663694";
google_color_border = "FFFFFF";
google_color_bg = "E6E6E6";
google_color_link = "0000FF";
google_color_text = "0F0F0F";
google_color_url = "CCCCCC";
//-->
</script><br />
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
</code></p>
<p><strong>1. Discuss issues with other people</strong><br />
When you discuss issues in your area of specialization, you get to know problems faced by other people. The moment a discussion starts; you should make mental notes. Once out of that discussion; jot the notes on text editor or a piece of paper. Using these notes you can create a new <strong>blog post</strong> based on the problems/issues discussed.</p>
<p><strong>2. Research on a common pain point</strong><br />
Identify a pain point in your field of specialization. There could be many such pain points or problems for which people need help or solutions. To give you an example, I belong to the technical field and the pain points that I have identified are code optimization, query optimization, response times, server loads, etc.. So, identify such pain points in your field of specialization as well. Give it a thought or use Google to research. A good source is to visit forums where problems are discussed.</p>
<p><strong>3. Publish solutions to problems that you faced</strong><br />
Build blog post ideas on the basis of the problems that you face in your day to day professional or personal life. I see no harm in publishing solutions to the problems that you dealt with. Creating a post on the basis of your solutions also serves as a repository that you could refer to later when faced with a similar problem. Beware, that you don&#8217;t expose information that is a trade secret of your company.</p>
<p><code><br />
<script type="text/javascript"><!--
google_ad_client = "pub-9205249129147978";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-10-26: Sunilb.com 468x60
google_ad_channel = "7135663694";
google_color_border = "FFFFFF";
google_color_bg = "E6E6E6";
google_color_link = "0000FF";
google_color_text = "0F0F0F";
google_color_url = "CCCCCC";
//-->
</script><br />
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
</code></p>
<p><strong>4. Publish analysis on news articles</strong><br />
Analyze news articles in general or in the area of your specialization. Don&#8217;t just copy paste articles on your site. This won&#8217;t do good to you. Analyze the article and post your understanding, concerns and reviews. A lot of <strong>blog</strong> authors <strong>publish blog articles</strong> based on their analysis of news article published on <strong>news site</strong>.</p>
<p>Please leave behind a comment below if you have more <strong>blog post ideas</strong> that you wish to share or disagree with some.</p>
<p align="center"> <!--subscribe2--></p>
<p>Getting a proper <a href="http://www.envisionwebhosting.com">web hosting</a> package with your required <a href="http://www.envisionwebhosting.com/domain-registration.htm">domain names</a> is little difficult task. You will find a lot of <a href="http://www.envisionwebhosting.com/dedicated-servers.htm">dedicated server</a> hosting companies offer <a href="http://www.envisionwebhosting.com/web-design.php">web site design</a> cheap domain names. You need to select the reasonable one.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.sunilb.com/blogs/tips-to-get-article-ideas-for-your-blog/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>5 practical tips to secure your web applications</title>
		<link>http://www.sunilb.com/php/5-practical-tips-to-secure-your-web-applications</link>
		<comments>http://www.sunilb.com/php/5-practical-tips-to-secure-your-web-applications#comments</comments>
		<pubDate>Thu, 25 Oct 2007 17:20:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.sunilb.com/php/5-practical-tips-to-secure-your-web-applications</guid>
		<description><![CDATA[Keep these practical tips in mind when developing code for your web applications. Examples shown are written in PHP and can be implemented in any language. Prevent SQL Injection attacks Provide additional security with backend validations Validate Combo Box and List Box data Convert HTML code into its entity form Capture errors and show custom [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.sunilb.com%2Fphp%2F5-practical-tips-to-secure-your-web-applications"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.sunilb.com%2Fphp%2F5-practical-tips-to-secure-your-web-applications&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><img src="http://www.sunilb.com/wp-content/uploads/2007/10/security.jpg" title="security.jpg" alt="security.jpg" align="right" hspace="5" vspace="5" />Keep these practical tips in mind when developing code for your web applications. Examples shown are written in PHP and can be implemented in any language.</p>
<ol>
<li>Prevent SQL Injection attacks</li>
<li>Provide additional security with backend validations</li>
<li>Validate Combo Box and List Box data</li>
<li>Convert HTML code into its entity form</li>
<li>Capture errors and show custom error page</li>
</ol>
<p><span id="more-32"></span></p>
<p><code><br />
<script type="text/javascript">
<!--
google_ad_client = "pub-9205249129147978"; google_ad_width = 300; google_ad_height = 250; google_ad_format = "300x250_as"; google_ad_type = "text_image";
//2007-10-18: SB - Square - Text/Image
google_ad_channel = "3552230476"; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_text = "0F0F0F"; google_color_url = "CCCCCC";
//-->
</script><br />
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script><br />
</code></p>
<p><strong>1. Prevent SQL Injection attacks</strong><br />
SQL injection is a technique used to take advantage of non-validated input vulnerabilities to pass SQL commands through a Web application for execution by a backend database. Attackers take advantage of the fact that programmers often chain together SQL commands with user-provided parameters, and can therefore embed SQL commands inside these parameters. The result is that the attacker can execute arbitrary SQL queries and/or commands on the backend database server through the Web applications.</p>
<p><strong>Login Example:</strong></p>
<p>This example assumes that the two fields to accept username and password are &#8216;usr&#8217; and &#8216;pwd&#8217; respectively. You would then use these variables inside a SQL query to validate if the user exists or not. Lets look how. Following is a PHP code (this example can be converted to any web scripting language)</p>
<blockquote><p>&lt;?php</p>
<p>$usr = $_POST['usr']; // getting the usr variable from $_POST array<br />
$pwd = $_POST['pwd']; // getting the pwd variable from $_POST array</p>
<p>$sql = &#8220;SELECT id FROM users WHERE username = &#8216;&#8221; . $usr . &#8220;&#8216; AND password = &#8216;&#8221; . $pwd . &#8220;&#8216;&#8221;;</p>
<p>$result = mysql_query($sql);</p>
<p>if(mysql_num_rows($result) == 0) {<br />
//we did not find any records, redirecting user to login page<br />
header(&#8220;Location: login.php&#8221;);<br />
}</p>
<p>//if we reach here, this means that all is ok</p>
<p>&#8230; rest of the script</p>
<p>?&gt;</p></blockquote>
<p>The above example can be hacked if the user enters the password as nothing&#8217; OR 1 = 1</p>
<p><strong>The SQL query thus formed will be:</strong></p>
<blockquote><p><em>SELECT id FROM users WHERE usr = &#8216;anything&#8217; AND password = &#8216;nothing&#8217; OR 1 = 1</em></p></blockquote>
<p>When this query executes, it will fetch all records from the user table.</p>
<p><strong>Solution:</strong></p>
<p>You should escape each variable before you feed it into the SQL query using , like below:</p>
<blockquote><p>$sql = &#8220;SELECT id FROM users WHERE username = &#8216;&#8221; . addslashes($usr) . &#8220;&#8216; AND password = &#8216;&#8221; . addslashes($pwd) . &#8220;&#8216;&#8221;;</p></blockquote>
<p>addslashes() &#8211; adds escapes special characters including a single quote and double quote. Therefore the query above after using addslashes() will look like this:</p>
<blockquote><p>SELECT id FROM users WHERE usr = &#8216;anything&#8217; AND password = &#8216;nothing\&#8217; OR 1 = 1</p></blockquote>
<p>In the above example, look at the single quote that has been escaped i.e. &#8216;nothing\&#8217;. This happened because the additional single quote was passed by the user as data and hence got escaped before being sent to SQL. If you observe, this causes a SQL error.</p>
<p><strong>2. Provide additional security with backend validations</strong></p>
<p>Using JS validation is good as it saves user time and a round trip to the server if the data that user has entered is wrong. In addition to providing the front end JS validation, you should also provide for validations at your script level. For all you know the user disabled JS on his/her page and entered bad data.</p>
<p>The rule is, always validate data at the backend.</p>
<p><strong>3. Validate Combo Box and List Box data</strong><br />
Are you asking why is this needed? Sounds stupid right? Why would you want to validate data that is coming off a combo box or a list box? Reason is very simple&#8230; you could receive bad data.</p>
<p>Lets take an example of a form with list of countries in a drop box. I could easily crack that script by writing a program that will post data to the form posing as a browser. If I could post data programmatically, I can also pass bad data for a drop box which is not part of the initial list.</p>
<p><code><br />
<script type="text/javascript">
<!--
google_ad_client = "pub-9205249129147978"; google_ad_width = 300; google_ad_height = 250; google_ad_format = "300x250_as"; google_ad_type = "text_image";
//2007-10-18: SB - Square - Text/Image
google_ad_channel = "3552230476"; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_text = "0F0F0F"; google_color_url = "CCCCCC";
//-->
</script><br />
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script><br />
</code></p>
<p><strong>4. Convert HTML code into its entity form</strong><br />
You should always encode content provided by users before display. A hacker could easily provide a JavaScript as content and allow other users to display it. If you have not converted HTML code to its entity form before you display it on the browser.</p>
<p><strong>PHP Code:</strong></p>
<blockquote><p>&lt;?php</p>
<p>echo htmlentities($data); //this will convert &lt; to &lt; and &gt; to $gt, etc.</p>
<p>?&gt;</p></blockquote>
<p><strong>5. Capture errors and show custom error page</strong><br />
The reason why you should do this is because of two reasons:</p>
<p>a. It looks professional and the user is not lost with the dirty error string on screen.</p>
<p>b. Users don&#8217;t get to see sensitive data that could otherwise be exposed to the users. Just imagine if your database connection fails to connect, you would probably get a message stating that could not connect to the database with username and password. This one single error could give a lot of information to an attacker.</p>
<p align="center"><!--subscribe2--></p>

]]></content:encoded>
			<wfw:commentRss>http://www.sunilb.com/php/5-practical-tips-to-secure-your-web-applications/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>dotProject and Mantis Integration and Configuration</title>
		<link>http://www.sunilb.com/research/dotproject-and-mantis-integration-and-configuration</link>
		<comments>http://www.sunilb.com/research/dotproject-and-mantis-integration-and-configuration#comments</comments>
		<pubDate>Wed, 17 Oct 2007 17:39:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://www.sunilb.com/uncategorized/dotproject-and-mantis-integration-and-configuration</guid>
		<description><![CDATA[I have lately been researching on implementing dotProject for my organization. My evaluation shows that dotProject is a good Project Management tool for consulting and can also help you implement Agile development methodologies. However, I don&#8217;t find it suitable for an Internet Company with a release cycle of 2 &#8211; 3 days from development to [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.sunilb.com%2Fresearch%2Fdotproject-and-mantis-integration-and-configuration"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.sunilb.com%2Fresearch%2Fdotproject-and-mantis-integration-and-configuration&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I have lately been researching on implementing dotProject for my organization. My evaluation shows that dotProject is a good Project Management tool for consulting and can also help you implement Agile development methodologies. However, I don&#8217;t find it suitable for an Internet Company with a release cycle of 2 &#8211; 3 days from development to QA to Live (this is because at various stages tasks will have to be created  &#8211; which as of now is not automated &#8211; you will manually have to create them).</p>
<p>The requirement from my company was to use Mantis and provide integration with dotProject. I googled around and found various links leading nowhere and finally got something substantial. However, I did a bit of playing around with the code to get it working perfectly well.</p>
<p><span id="more-23"></span></p>
<p><strong>Following are the steps that you will have to follow for integration:</strong></p>
<p>1. You will need the Mantis integration module for DotProject. This is available at the following location<br />
<a href="http://www.nuy.info/downloads/index.php?dir=Developments%20by%20Application/DotProject/" title="http://www.nuy.info/downloads/index.php?dir=Developments%20by%20Application/DotProject/" target="_blank">http://www.nuy.info/downloads/index.php?dir=Developments%20by%20Application/DotProject/</a></p>
<p>Download the latest version; which at the time of this writing is dp-mantis04b.zip</p>
<p>2. Extract the DP_Mantis.X.zip package into your dotProject Installation folder.</p>
<p>3. Open the dotProject_installation_folder/modules/mantis/addissue.php file for editing and follow the steps mentioned below:</p>
<p>3.1 Goto Line 40 (this is the line number for the dp-mantis04.zip file, yours could change as per latest release)</p>
<p>3.2 <em><u>Edit these lines from:</u></em></p>
<p>$prefix = dPgetConfig( &#8216;mantis_dp_pref&#8217;) ;<br />
$mantisprefix = dPgetConfig( &#8216;mantis_prefix&#8217;) ;<br />
$mantis_bug_table = $mantisprefix ;</p>
<p><em><u>To</u></em></p>
<p>$prefix = dPgetConfig( &#8216;mantis_dp_pref&#8217;) ;<br />
$mantisprefix = dPgetConfig( &#8216;mantis_prefix&#8217;) ;<br />
$mantislink = dPgetConfig( &#8216;mantis_link&#8217;) ;<br />
$mantis_bug_table = $mantisprefix ;</p>
<p>4. Copy dotProject_installation_folder/modules/mantis/docs/mantis/index_dp.php into the document root of your mantis installation</p>
<p>5. Add the contents of dotProject_installation_folder/modules/mantis/docs/mantis/config.txt to dotProject_installation_folder/includes/config.php (inside your Dotproject installation)</p>
<p>6. Activate/enable and show the module using the admin interface.</p>
<p><code><br />
<script type="text/javascript">
<!--
google_ad_client = "pub-9205249129147978"; google_ad_width = 336; google_ad_height = 280; google_ad_format = "336x280_as"; google_ad_type = "text";
//2007-10-02: SB - Square Banner
google_ad_channel = "2698078322"; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_text = "0F0F0F"; google_color_url = "CCCCCC";
//-->
</script><br />
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script><br />
</code></p>
<p>7. You will now see a Menu option on the top of the screen labeled &#8216;Mantis&#8217; and a new tab in the Project View labeled &#8216;Mantis&#8217;</p>
<p>8. The next step is to create the userbase on the Mantis system having the same username as that of the dotProject.</p>
<p>9. To raise a bug, go to the Project View and click on tab &#8216;Mantis&#8217; and click on Add Issue.</p>
<p>10. This will give you a screen to type in the title and description of issue. Once you add an issue the same will be made available through the Mantis Interface.</p>
<p>11. Any change that you make to the status of the issue through Mantis will get reflected to dotProject Project View as well.</p>
<p>Please feel free to post any comments that you might have or ask any question.</p>
<p align="center"> <!--subscribe2--></p>

]]></content:encoded>
			<wfw:commentRss>http://www.sunilb.com/research/dotproject-and-mantis-integration-and-configuration/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

