<?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>Steven R. Wamsley &#187; ne0phyte</title>
	<atom:link href="http://ne0phyte.com/blog/author/ne0phyte/feed/" rel="self" type="application/rss+xml" />
	<link>http://ne0phyte.com</link>
	<description>Musician, developer, and software architect... aka ne0phyte</description>
	<lastBuildDate>Thu, 11 Aug 2011 14:23:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PHP Quiz: Passing Objects By Value vs. Reference</title>
		<link>http://ne0phyte.com/blog/2010/04/06/php-quiz-passing-objects-by-value-vs-reference/</link>
		<comments>http://ne0phyte.com/blog/2010/04/06/php-quiz-passing-objects-by-value-vs-reference/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 23:50:36 +0000</pubDate>
		<dc:creator>ne0phyte</dc:creator>
				<category><![CDATA[Computer Technology]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ne0phyte.com/?p=176</guid>
		<description><![CDATA[Here is something to test your knowledge of how PHP handles passing objects by value vs. reference. Try to figure this out without using a PHP interpreter. What is the output of the following code: class Foo { private $bar; public function Foo($x) { $this-&#62;bar = $x; } public function getBar() { return $this-&#62;bar; } [...]]]></description>
			<content:encoded><![CDATA[<p>Here is something to test your knowledge of how PHP handles passing objects by value vs. reference. Try to figure this out without using a PHP interpreter.</p>
<p>What is the output of the following code:</p>
<pre>class Foo {
  private $bar;
  public function Foo($x) {
    $this-&gt;bar = $x;
  }
  public function getBar() {
    return $this-&gt;bar;
  }
  public function setBar($x) {
    $this-&gt;bar = $x;
  }
}

function changeFooByValue($foo) {
 $foo-&gt;setBar('high');
 $foo = new Foo('too low');
}

function changeFooByRef(&amp;$foo) {
  $foo-&gt;setBar('just high enough');
  $foo = new Foo('too high');
}

$foo = new Foo('low');
echo "Bar: " . $foo-&gt;getBar() . "\n";

changeFooByValue($foo);
echo "Bar: " . $foo-&gt;getBar() . "\n";

changeFooByRef($foo);
echo "Bar: " . $foo-&gt;getBar() . "\n";
</pre>
<p>Is it:</p>
<p>A:</p>
<pre>Bar: low
Bar: too low
Bar: too high</pre>
<p>B:</p>
<pre>Bar: low
Bar: too low
Bar: too high</pre>
<p>C:</p>
<pre>Bar: low
Bar: too low
Bar: too high</pre>
<p>D:</p>
<p>Parse/syntax error</p>
<p>E:</p>
<p>None of the above</p>
]]></content:encoded>
			<wfw:commentRss>http://ne0phyte.com/blog/2010/04/06/php-quiz-passing-objects-by-value-vs-reference/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using PHP/cURL to grok your public IP address</title>
		<link>http://ne0phyte.com/blog/2009/07/23/using-phpcurl-to-grok-your-public-ip-address/</link>
		<comments>http://ne0phyte.com/blog/2009/07/23/using-phpcurl-to-grok-your-public-ip-address/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 21:10:33 +0000</pubDate>
		<dc:creator>ne0phyte</dc:creator>
				<category><![CDATA[Computer Technology]]></category>

		<guid isPermaLink="false">http://ne0phyte.com/?p=159</guid>
		<description><![CDATA[I had the occasion to create a PHP page that displays the server&#8217;s current public IP address. Not necessarily a good thing to display. But, I have several internal web sites on a development server where the host names are not available on a public DNS server. Displaying the server&#8217;s current public IP address is [...]]]></description>
			<content:encoded><![CDATA[<p>I had the occasion to create a PHP page that displays the server&#8217;s current public IP address. Not necessarily a good thing to display. But, I have several internal web sites on a development server where the host names are not available on a public DNS server. Displaying the server&#8217;s current public IP address is handy to prevent needing to nslookup my dyndns host name when altering my host file.</p>
<p>So, here is how I did it:</p>
<pre>$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "www.checkip.org");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);

$pattern = '/Your IP:  ([\d]{1,3}.[\d]{1,3}.[\d]{1,3}.[\d]{1,3})&lt;\/span&gt;/';
$matches = array();
preg_match($pattern, $output, $matches);

$yourIP = 'N/A';
if (count($matches) &gt; 1) {
  $yourIP = $matches[1];
}
curl_close($ch);</pre>
<p>What I&#8217;m doing here is using cURL to get the page at checkip.org and then using a regular expressing to get the IP address returned in that page.</p>
<p>Albeit not completely fault-tolerant, as the web site can change it&#8217;s structure, but this type of quick&#8217;n'dirty screen scraping was what I needed at the time.</p>
]]></content:encoded>
			<wfw:commentRss>http://ne0phyte.com/blog/2009/07/23/using-phpcurl-to-grok-your-public-ip-address/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How much weight do I need to lose?</title>
		<link>http://ne0phyte.com/blog/2009/02/06/how-much-weight-do-i-need-to-lose/</link>
		<comments>http://ne0phyte.com/blog/2009/02/06/how-much-weight-do-i-need-to-lose/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 16:56:02 +0000</pubDate>
		<dc:creator>ne0phyte</dc:creator>
				<category><![CDATA[Home Page]]></category>

		<guid isPermaLink="false">http://ne0phyte.com/?p=89</guid>
		<description><![CDATA[How much weight do I need to lose to attain a healthy body mass? The standard weight charts tell that due to my height (5&#8217;10&#8243;), frame size (medium), and gender (male), I should weigh from 151 to 163 lbs. Really? I mean I currently weight 213 lbs. Do I really need to lose 50 lbs? [...]]]></description>
			<content:encoded><![CDATA[<p>How much weight do I need to lose to attain a healthy body mass? The <a title="Standard Weight Charts" href="http://dietbites.com/article1023.html">standard weight charts</a> tell that due to my height (5&#8217;10&#8243;), <a title="How to determine your frame size" href="http://www.dietbites.com/diet-advice-34.html">frame size</a> (medium), and gender (male), I should weigh from 151 to 163 lbs. Really? I mean I currently weight 213 lbs. Do I really need to lose 50 lbs?</p>
<p>The weight charts do not take into account lean body mass (and no, I&#8217;m not saying that I&#8217;m 200+ lbs. of muscle). So, given my body fat percentage and a realistic goal of attaining a weight consisting of 20% body fat, how much do I really need to lose?</p>
<p>The answer requires a means for measuring body fat and some math. I have a scale at home that measures my weight and body fat and currently I am 213.2 lbs., 33% of which is fat. Here is a formula to find <em>my</em> ideal body weight:</p>
<p style="text-align: center;"><a href="http://www.codecogs.com/eqnedit.php?latex=\bg_black W_{g}=\frac{W_{c}-W_{c}F{c}}{1-F_{g}}" target="_blank"><img title="\bg_black W_{g}=\frac{W_{c}-W_{c}F{c}}{1-F_{g}}" src="http://latex.codecogs.com/png.latex?\bg_black W_{g}=\frac{W_{c}-W_{c}F{c}}{1-F_{g}}" alt="" /></a></p>
<p>Where <em>W<sub>c</sub></em> is my current weight, <em>F<sub>c</sub></em> is my current body fat percentage, <em>W<sub>g</sub></em> is my goal weight, and <em>F<sub>g</sub></em> is my goal body fat percentage. My ideal <a title="Ideal fat percentage for men and women" href="http://www.weightlossforall.com/fat-percentage-ideal.htm">body fat percentage</a> for my gender (again, male) and age (38) is between 8 and 19 percent.</p>
<p>Plugging in the numbers for my current weight and body fat and a goal body fat of 19% gives me:</p>
<p style="text-align: center;"><a href="http://www.codecogs.com/eqnedit.php?latex=\bg_black W_{g}=\frac{213.2-213.2\times0.33}{1-0.19}" target="_blank"><img title="\bg_black W_{g}=\frac{213.2-213.2\times0.33}{1-0.19}" src="http://latex.codecogs.com/png.latex?\bg_black W_{g}=\frac{213.2-213.2\times0.33}{1-0.19}" alt="" /></a></p>
<p>The result is an ideal weight of 176.4. Slightly more than what the body fat charts recommend. Perhaps I do have some extra muscle? Maybe?</p>
<p>So, I need to lose about 37 lbs. Or, two Katos. My cat Kato currently weighs 17 lbs. I&#8217;m not going to go into whether or not he is at his ideal weight. He&#8217;s a big cat &#8211; not fat, just big. But, and more importantly, he&#8217;s heavy. If I lost the weight amounting to two Katos, think about the stress that would take off my medium frame? And that is the real goal.</p>
]]></content:encoded>
			<wfw:commentRss>http://ne0phyte.com/blog/2009/02/06/how-much-weight-do-i-need-to-lose/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New app, coming soon to an App Store near you: Cheapest</title>
		<link>http://ne0phyte.com/blog/2008/12/25/new-app-coming-soon-to-an-app-store-near-you-cheapest/</link>
		<comments>http://ne0phyte.com/blog/2008/12/25/new-app-coming-soon-to-an-app-store-near-you-cheapest/#comments</comments>
		<pubDate>Thu, 25 Dec 2008 20:40:26 +0000</pubDate>
		<dc:creator>ne0phyte</dc:creator>
				<category><![CDATA[Computer Technology]]></category>
		<category><![CDATA[iPhone App]]></category>

		<guid isPermaLink="false">http://ne0phyte.com/?p=88</guid>
		<description><![CDATA[What is cheapest? Two 12 oz. cans for $4.99 or one pint for $3.99? Find out with the newest iPhone App from Katanaa: Cheapest. We submitted the app to the store last Friday. It will be a day or two before it&#8217;s available. Stay tuned. Update: Cheapest is now available in the App Store: Get [...]]]></description>
			<content:encoded><![CDATA[<p>What is cheapest? Two 12 oz. cans for $4.99 or one pint for $3.99? Find out with the newest iPhone App from Katanaa: Cheapest. We submitted the app to the store last Friday. It will be a day or two before it&#8217;s available. Stay tuned.</p>
<p>Update: Cheapest is now available in the App Store: <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300770393&amp;mt=8">Get the Cheapest application from iTunes</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ne0phyte.com/blog/2008/12/25/new-app-coming-soon-to-an-app-store-near-you-cheapest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone Electronic Formula Calculator</title>
		<link>http://ne0phyte.com/blog/2008/11/13/iphone-electronic-formula-calculator/</link>
		<comments>http://ne0phyte.com/blog/2008/11/13/iphone-electronic-formula-calculator/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 01:29:11 +0000</pubDate>
		<dc:creator>ne0phyte</dc:creator>
				<category><![CDATA[Computer Technology]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[iPhone App]]></category>

		<guid isPermaLink="false">http://ne0phyte.com/?p=87</guid>
		<description><![CDATA[My latest adventure has been in the iPhone/iTouch application development world. The first application to hit the iTunes Store is Formula Sensei, a formula database and calculator. Formula Sensei will encompass a suite of formula calculators, the first of which is the Electronic Formula Calculator. This app has been developed and uploaded for review/approval to [...]]]></description>
			<content:encoded><![CDATA[<p>My latest adventure has been in the iPhone/iTouch application development world. The first application to hit the iTunes Store is Formula Sensei, a formula database and calculator. Formula Sensei will encompass a suite of formula calculators, the first of which is the Electronic Formula Calculator. This app has been developed and uploaded for review/approval to the iTunes store. Future editions of Formula Sensei will include financial, real estate, physics, etc. A web site has been set up to provide more information about the product:</p>
<p><a title="Formula Sensei" href="http://formulasensei.com">formulasensei.com</a></p>
<p>Update: the E-Formulas app has now been approved for sale! See it at the iTunes Store: <a title="E-Formulas at the iTunes Store" href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=296288975&amp;mt=8">E-Formulas</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ne0phyte.com/blog/2008/11/13/iphone-electronic-formula-calculator/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Apache Performance: Rotate your logs (duh)</title>
		<link>http://ne0phyte.com/blog/2008/10/07/apache-performance-rotate-your-logs/</link>
		<comments>http://ne0phyte.com/blog/2008/10/07/apache-performance-rotate-your-logs/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 02:21:38 +0000</pubDate>
		<dc:creator>ne0phyte</dc:creator>
				<category><![CDATA[Computer Technology]]></category>

		<guid isPermaLink="false">http://ne0phyte.com/?p=51</guid>
		<description><![CDATA[Seems kinda silly, doesn&#8217;t it? After following all the Apache performance tips found on Google, I noticed that the site I was tuning (rss2.com) had access logs exceeding 2GB in size. Now if you imagine each httpd process having to load a file that size, you can imagine why it took so long for new [...]]]></description>
			<content:encoded><![CDATA[<p>Seems kinda silly, doesn&#8217;t it? After following all the Apache performance tips found on Google, I noticed that the site I was tuning (rss2.com) had access logs exceeding 2GB in size. Now if you imagine each httpd process having to load a file that size, you can imagine why it took so long for new httpd processes to load.</p>
<p>I configured logrotate to rotate logs each hour when the logs exceeded 100K. What a difference! Of course, restarting Apache every hour helps, too. But the change made a significant difference.</p>
]]></content:encoded>
			<wfw:commentRss>http://ne0phyte.com/blog/2008/10/07/apache-performance-rotate-your-logs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript Keypress Event &#8211; the right way</title>
		<link>http://ne0phyte.com/blog/2008/09/02/javascript-keypress-event/</link>
		<comments>http://ne0phyte.com/blog/2008/09/02/javascript-keypress-event/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 19:35:15 +0000</pubDate>
		<dc:creator>ne0phyte</dc:creator>
				<category><![CDATA[Computer Technology]]></category>

		<guid isPermaLink="false">http://ne0phyte.com/?p=41</guid>
		<description><![CDATA[I had an occassion where I had to capture the &#8220;enter&#8221; key press in a text box and couldn&#8217;t quite remember how to do that. So, like the well-adjusted web developer I am, I Google&#8217;d for the answer. I was suprised to find how many different solutions there were and how some of them just [...]]]></description>
			<content:encoded><![CDATA[<p>I had an occassion where I had to capture the &#8220;enter&#8221; key press in a text box and couldn&#8217;t quite remember how to do that. So, like the well-adjusted web developer I am, I Google&#8217;d for the answer. I was suprised to find how many different solutions there were and how some of them just plain didn&#8217;t work.</p>
<p>I turned to the tried-and-true Prototype library (because that&#8217;s how I remembered doing it in the first place). The bonus with using Prototype is that it will actually be browser compatible.</p>
<p>Here is the penultimate solution to capturing an &#8220;enter&#8221; keypress in an HTML input text box.</p>
<p>The HTML:</p>
<p><code>&lt;input type="text" name="my_text" id="my_text" value="" /&gt;</code></p>
<p>The JavaScript:</p>
<p><code>&lt;script type="text/javascript"&gt;&lt;!--<br />
function onMyTextKeypress(event)<br />
{<br />
if (Event.KEY_RETURN == event.keyCode) {<br />
// do something usefull<br />
alert('Enter key was pressed.');<br />
}<br />
return;<br />
}</code></p>
<p><code>Event.observe('my_text', 'keypress', onMyTextKeypress);</code><br />
<code> //--&gt;<br />
&lt;/script&gt;</code></p>
<p>Now, don&#8217;t forget to include the prototype.js script in the HTML page!</p>
<p><code>&lt;script type="text/javascript" src="/js/prototype.js"&gt;&lt;/script&gt;</code></p>
<p>The JavaScript must execute <em>after</em> the DOM elements are rendered. One way to do it is to put the JavaScript code in a SCRIPT element after the INPUT element. However, another way would be to put the following code in the SCRIPT element in the HEAD element:</p>
<p><code>Event.observe(window, 'load', function() {<br />
Event.observe(Event.observe('my_text', 'keypress', onMyTextKeypress);<br />
});<br />
</code></p>
<p>I like this method because all the JavaScript can be kept in the HEAD, or in a JS library file, instead of splattering the code throughout the document body.</p>
<p>References:</p>
<p><a href="http://prototypejs.org/api/event/observe">Prototype Event.observe API</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ne0phyte.com/blog/2008/09/02/javascript-keypress-event/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>PHPKeyStore Update</title>
		<link>http://ne0phyte.com/blog/2008/07/01/phpkeystore-update/</link>
		<comments>http://ne0phyte.com/blog/2008/07/01/phpkeystore-update/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 21:18:22 +0000</pubDate>
		<dc:creator>ne0phyte</dc:creator>
				<category><![CDATA[Computer Technology]]></category>
		<category><![CDATA[KeyStore]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://ne0phyte.com/?p=35</guid>
		<description><![CDATA[The KeyStore API is code complete. Check it out at phpkeystore.org. The current development release can always be installed with PEAR using: pear install http://phpkeystore.org/download/KeyStore-current.tgz All that really remains right now is internal tweaking for best practices and performance. To summarize the functionality, the key management functionality consists of: Loading and storing the key store [...]]]></description>
			<content:encoded><![CDATA[<p>The KeyStore API is code complete. Check it out at <a href="http://phpkeystore.org">phpkeystore.org</a>. The current development release can always be installed with PEAR using:</p>
<p><code>pear install http://phpkeystore.org/download/KeyStore-current.tgz</code></p>
<p>All that really remains right now is internal tweaking for best practices and performance.</p>
<p>To summarize the functionality, the key management functionality consists of:</p>
<ul>
<li>Loading and storing the key store</li>
<li>Creating secret keys, certificate signing requests, importing signed certificates, and deleting key store entries</li>
<li>Querying the key store for the existence of an entry and what type of entry it is</li>
</ul>
<p>And the key usage functionality consists of:</p>
<ul>
<li>Loading the key store</li>
<li>Using a public/private key pair to encrypt, decrypt, sign, and verify</li>
<li>Using a secret symmetric key to encrypt and decrypt</li>
</ul>
<p>The current to-do list:</p>
<ul>
<li>Add configuration file for system default values</li>
<li>Support file-based passwords</li>
<li>Support user-supplied options on the interface methods in order to support cryptographic functionality other than the default, baked-in settings</li>
<li>Add failure-case unit tests</li>
<li>Code review</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ne0phyte.com/blog/2008/07/01/phpkeystore-update/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHPKeyStore Web Site &amp; Development Release</title>
		<link>http://ne0phyte.com/blog/2008/06/28/phpkeystore-web-site-development-release/</link>
		<comments>http://ne0phyte.com/blog/2008/06/28/phpkeystore-web-site-development-release/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 17:10:51 +0000</pubDate>
		<dc:creator>ne0phyte</dc:creator>
				<category><![CDATA[KeyStore]]></category>
		<category><![CDATA[PHP KeyStore]]></category>

		<guid isPermaLink="false">http://ne0phyte.com/?p=27</guid>
		<description><![CDATA[The PHPKeyStore web site, wiki, and trac are now up. Here are the links: Web Site Wiki Source Project Downloads The web site, wiki, and source are browsable by anyone. Also, a PEAR package proposal has been submitted. We&#8217;re waiting to hear back from the PEAR community.]]></description>
			<content:encoded><![CDATA[<p>The PHPKeyStore web site, wiki, and trac are now up. Here are the links:</p>
<ul>
<li><a href="http://phpkeystore.org">Web Site</a></li>
<li><a href="http://projects.serafinistudios.com/wiki/phpkeystore">Wiki</a></li>
<li><a href="http://projects.serafinistudios.com/projects/show/phpkeystore">Source</a></li>
<li><a href="http://projects.serafinistudios.com/projects/show/phpkeystore">Project</a></li>
<li><a href="http://phpkeystore.org/download">Downloads</a></li>
</ul>
<p>The web site, wiki, and source are browsable by anyone. Also, a PEAR package proposal has been submitted. We&#8217;re waiting to hear back from the PEAR community.</p>
]]></content:encoded>
			<wfw:commentRss>http://ne0phyte.com/blog/2008/06/28/phpkeystore-web-site-development-release/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Internet/Network Gotchas</title>
		<link>http://ne0phyte.com/blog/2008/05/16/internet-network-gotchas/</link>
		<comments>http://ne0phyte.com/blog/2008/05/16/internet-network-gotchas/#comments</comments>
		<pubDate>Fri, 16 May 2008 16:46:29 +0000</pubDate>
		<dc:creator>ne0phyte</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://ne0phyte.com/?p=24</guid>
		<description><![CDATA[The following forty five (45) Internet/network security gotchas are taken from Firewalls and Internet Security &#8211; Repelling the Wily Hacker, Second Edition (ISBN: 0-201-63344-X) by William R. Cheswick, et. al. IP source addresses aren&#8217;t trustable. Fragmented packets have been abused to avoid security checks. ARP-spoofing can lead to session-hijacking. Sequence number attacks can be used [...]]]></description>
			<content:encoded><![CDATA[<p>The following forty five (45) Internet/network security gotchas are taken from <a title="Preview Book" href="http://books.google.com/books?id=_ZqIh0IbcrgC&amp;printsec=frontcover&amp;source=gbs_summary_r&amp;cad=0" target="_blank">Firewalls and Internet Security &#8211; Repelling the Wily Hacker, Second Edition</a> (ISBN: 0-201-63344-X) by William R. Cheswick, et. al.</p>
<ol>
<li><abbr title="Internet Protocol">IP</abbr> source addresses aren&#8217;t trustable.</li>
<li>Fragmented packets have been abused to avoid security checks.</li>
<li><abbr title="Address Resolution Protocol">ARP</abbr>-spoofing can lead to session-hijacking.</li>
<li>Sequence number attacks can be used to subvert address-based authentication.</li>
<li>It is easy to spoof <abbr title="User Datagram Packet">UDP</abbr> packets.</li>
<li><abbr title="Internet Control Message Protocol">ICMP</abbr> <code>Redirect</code> messages can subvert routing tables.</li>
<li><abbr title="Internet Protocol">IP</abbr> source routing can address-based authentication.</li>
<li>It is easy to generate bogus <abbr title="Routing Information Protocol">RIP</abbr> messages.</li>
<li>The inverse <abbr title="Domain Name Server">DNS</abbr> tree can be used for name-spoofing.</li>
<li>The <abbr title="Domain Name Server">DNS</abbr> cache can be contaminated to foil cross-checks.</li>
<li><abbr title="Internet Protocol version 6">IPv6</abbr> network numbers may change frequently.</li>
<li><abbr title="Internet Protocol version 6">IPv6</abbr> host addresses change frequently, too.</li>
<li><abbr title="Wired Equivalent Privacy">WEP</abbr> is useless.</li>
<li>Attackers have the luxury of using nonstandard equipment.</li>
<li>Return addresses in mail aren&#8217;t reliable, and this fact is easily forgotten.</li>
<li>Don&#8217;t blindly execute <abbr title="Multipurpose Internet Mail Extension">MIME</abbr> messages.</li>
<li>Don&#8217;t trust <abbr title="Remote Procedure Call">RPC</abbr>&#8216;s machine name field.</li>
<li><em>Rpcbind</em> can call <abbr title="Remote Procedure Call">RPC</abbr> services for its caller.</li>
<li><abbr title="Network Information Service">NIS</abbr> can often be persuaded to give out password files.</li>
<li>It is sometimes possible to direct machines to phony <abbr title="Network Information Service">NIS</abbr> servers.</li>
<li>If misconfigured, <abbr title="Trivial File Transfer Protocol">TFTP</abbr> will had over sensitive files.</li>
<li>Don&#8217;t make <em>ftp</em>&#8216;s home directory writable by <em>ftp</em>.</li>
<li>Don&#8217;t put a real password file in the anonymous <em>ftp</em> area.</li>
<li>It is easy to wiretap <em>telnet</em> sessions.</li>
<li>The <em>r</em> commands rely on address-based authentication.</li>
<li>Be careful about interpreting <abbr title="World Wide Web">WWW</abbr> format information.</li>
<li><abbr title="World Wide Web">WWW</abbr> servers should be careful about <abbr title="Uniform Resource Locator">URL</abbr>s.</li>
<li>Poorly written query scripts pose a danger to <abbr title="World Wide Web">WWW</abbr> servers.</li>
<li>The <abbr title="Multicast Backbone">MBone</abbr> can be used to route through some firewalls.</li>
<li>Scalable security administration of peer-to-peer nodes is difficult.</li>
<li>An attacker anywhere on the Internet can probe for X11 servers.</li>
<li><abbr title="User Datagram Packet">UDP</abbr>-based services can be abused to create broadcast storms.</li>
<li>Web servers shouldn&#8217;t believe uploaded state variables.</li>
<li>Signed code is not necessarily safe code.</li>
<li>[Client-side script] is dangerous.</li>
<li>Users are ill-equipped to make correct security choices.</li>
<li>Humans choose lousy passwords.</li>
<li>There are lots of ways to grab <code>/etc/passwd</code>.</li>
<li>There is no absolute remedy for a denial-of-service attack.</li>
<li>Hackers plant sniffers.</li>
<li>Network monitoring tools can be very dangerous on an exposed machine.</li>
<li>Don&#8217;t believe port numbers supplied by outside machines.</li>
<li>It is all but impossible to permit most <abbr title="User Datagram Packet">UDP</abbr> traffic through a packet filter safely.</li>
<li>A tunnel can be built on top of almost any transport mechanism.</li>
<li>If the connection is vital, don&#8217;t use a public network.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ne0phyte.com/blog/2008/05/16/internet-network-gotchas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

