<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Evaluating PHP Applications</title>
	<atom:link href="http://www.sitepoint.com/blogs/2006/03/24/evaluating-php-applications/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sitepoint.com/blogs/2006/03/24/evaluating-php-applications/</link>
	<description>News, opinion, and fresh thinking for web developers and designers. The official podcast of sitepoint.com.</description>
	<lastBuildDate>Sun, 22 Nov 2009 11:54:05 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: macosbrain</title>
		<link>http://www.sitepoint.com/blogs/2006/03/24/evaluating-php-applications/comment-page-1/#comment-104085</link>
		<dc:creator>macosbrain</dc:creator>
		<pubDate>Thu, 23 Nov 2006 19:31:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1489#comment-104085</guid>
		<description>&lt;a href=&quot;http://www.acunetix.de/&quot; rel=&quot;nofollow&quot;&gt;this&lt;/a&gt; is a very nice tool to find exploits by black-box-testing your php applications. just give it a try and you will love it(even if it is commercial).</description>
		<content:encoded><![CDATA[<p><a href="http://www.acunetix.de/" rel="nofollow">this</a> is a very nice tool to find exploits by black-box-testing your php applications. just give it a try and you will love it(even if it is commercial).</p>]]></content:encoded>
	</item>
	<item>
		<title>By: SitePoint Blogs &#187; Tomcat sucks&#8230; Is Apache flawed?</title>
		<link>http://www.sitepoint.com/blogs/2006/03/24/evaluating-php-applications/comment-page-1/#comment-18789</link>
		<dc:creator>SitePoint Blogs &#187; Tomcat sucks&#8230; Is Apache flawed?</dc:creator>
		<pubDate>Fri, 21 Apr 2006 05:31:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1489#comment-18789</guid>
		<description>[...] I know for a fact that there is plenty of good quality open source Java code in the wild. I&#8217;ve probed into the code of Jetty a number of times, for instance, and have been pleasantly surprised by what I found there. I also know that poor open source code isn&#8217;t just a problem that faced by Java. But Apache is supposed to be a leader in the field. [...]</description>
		<content:encoded><![CDATA[<p>[...] I know for a fact that there is plenty of good quality open source Java code in the wild. I&#8217;ve probed into the code of Jetty a number of times, for instance, and have been pleasantly surprised by what I found there. I also know that poor open source code isn&#8217;t just a problem that faced by Java. But Apache is supposed to be a leader in the field. [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: lartexpert</title>
		<link>http://www.sitepoint.com/blogs/2006/03/24/evaluating-php-applications/comment-page-1/#comment-17850</link>
		<dc:creator>lartexpert</dc:creator>
		<pubDate>Fri, 14 Apr 2006 22:51:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1489#comment-17850</guid>
		<description>Manipulating the values of superglobals isn&#039;t in and of itself a bad thing, but it tends to indicate that data isn&#039;t being validated or having sanity checks applied to it before being used.

If you&#039;re accessing and using $_POST[&#039;somevar&#039;] without checking and cleaning the value first, then you are asking for trouble.  It is perfectly possible to write code without modifying the superglobals themselves - e.g.

&lt;code&gt;$cleanvars[&#039;sortorder&#039;] = addslashes($_POST[&#039;sortorder&#039;]);&lt;/code&gt;

You do all further evaluation using your value in $cleanvar - code that pumps superglobal values directly into databases, etc, is what gives rise to all the nasty SQL injection vulnerabilities that come up in popular forum apps all the time.

Have a look at how Perl handles taint checking - it&#039;s a good way to do things.</description>
		<content:encoded><![CDATA[<p>Manipulating the values of superglobals isn&#8217;t in and of itself a bad thing, but it tends to indicate that data isn&#8217;t being validated or having sanity checks applied to it before being used.</p>
<p>If you&#8217;re accessing and using $_POST['somevar'] without checking and cleaning the value first, then you are asking for trouble.  It is perfectly possible to write code without modifying the superglobals themselves &#8211; e.g.</p>
<code>$cleanvars['sortorder'] = addslashes($_POST['sortorder']);</code>
<p>You do all further evaluation using your value in $cleanvar &#8211; code that pumps superglobal values directly into databases, etc, is what gives rise to all the nasty SQL injection vulnerabilities that come up in popular forum apps all the time.</p>
<p>Have a look at how Perl handles taint checking &#8211; it&#8217;s a good way to do things.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Jaza</title>
		<link>http://www.sitepoint.com/blogs/2006/03/24/evaluating-php-applications/comment-page-1/#comment-17597</link>
		<dc:creator>Jaza</dc:creator>
		<pubDate>Wed, 12 Apr 2006 01:20:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1489#comment-17597</guid>
		<description>@zonked: I&#039;m sorry to hear that your experience with Drupal was a &quot;nightmare&quot;. I&#039;ve been developing with Drupal for over a year now, and have found it to be an extremely well-built and extensible system.

&lt;blockquote&gt;1. Assigning values to superglobals. If you see something like $_POST[&#039;foo&#039;] = &#039;bar&#039; run for your life. It makes absolutely no sense to ADD anything to the list of POST variables (which PHP packages for you in $_POST), therefore the whole program is probably horribly designed.&lt;/blockquote&gt;

Many users have already commented on how this technique is sometimes necessary and justified. Also, the latest version of Drupal (4.7 - currently in RC) has a new forms API, meaning that you very seldom need to access $_POST et al directly anymore.

&lt;blockquote&gt;2. ‘Magically’ assigned variables. Savant templates or whatnot, if you are working in a template and have no idea where certain variables are assigned….that’s really not a good thing for extenibility.&lt;/blockquote&gt;

Template variables are all clearly defined in one function, using Drupal&#039;s PHPTemplate theme system (other supported theme systems work similarly). I don&#039;t see what&#039;s so magical or mysterious about that.

&lt;blockquote&gt;3. No easy way to configure error handling. Does the software you want to use allow you to determine how errors are logged and where they’re logged to? It’s not that fun trying to track down a bug when the program uses output buffering so nothing is sent to STDOUT but also doesn’t leave a trace in syslog, error_log, …&lt;/blockquote&gt;

Drupal does not use output buffering (under most circumstances). It also has a fairly good error handling system, called the &#039;watchdog&#039;, which logs all errors to a database table, and allows error messages to be browsed through an admin interface. So I don&#039;t know what you&#039;re getting at here.

All up, I think your criticism of Drupal is unjustified. It has an &lt;a href=&quot;http://marc.theaimsgroup.com/?l=bugtraq&amp;w=2&amp;r=1&amp;s=drupal&amp;q=b&quot; rel=&quot;nofollow&quot;&gt;excellent security record&lt;/a&gt;. It uses recommended validation techniques consistently. It is modular and stable. The code is well managed. It scales very well. And a number of large and high-profile sites are using it. It is generally considered a much more developer-friendly app than its competitors in the open-source PHP CMS market, such as Mambo, PHP-Nuke, and Xoops.

I don&#039;t mean to start a flame war, but I think people should hear both sides of the story.</description>
		<content:encoded><![CDATA[<p>@zonked: I&#8217;m sorry to hear that your experience with Drupal was a &#8220;nightmare&#8221;. I&#8217;ve been developing with Drupal for over a year now, and have found it to be an extremely well-built and extensible system.</p>
<blockquote><p>1. Assigning values to superglobals. If you see something like $_POST['foo'] = &#8216;bar&#8217; run for your life. It makes absolutely no sense to ADD anything to the list of POST variables (which PHP packages for you in $_POST), therefore the whole program is probably horribly designed.</p></blockquote>
<p>Many users have already commented on how this technique is sometimes necessary and justified. Also, the latest version of Drupal (4.7 &#8211; currently in RC) has a new forms API, meaning that you very seldom need to access $_POST et al directly anymore.</p>
<blockquote><p>2. ‘Magically’ assigned variables. Savant templates or whatnot, if you are working in a template and have no idea where certain variables are assigned….that’s really not a good thing for extenibility.</p></blockquote>
<p>Template variables are all clearly defined in one function, using Drupal&#8217;s PHPTemplate theme system (other supported theme systems work similarly). I don&#8217;t see what&#8217;s so magical or mysterious about that.</p>
<blockquote><p>3. No easy way to configure error handling. Does the software you want to use allow you to determine how errors are logged and where they’re logged to? It’s not that fun trying to track down a bug when the program uses output buffering so nothing is sent to STDOUT but also doesn’t leave a trace in syslog, error_log, …</p></blockquote>
<p>Drupal does not use output buffering (under most circumstances). It also has a fairly good error handling system, called the &#8216;watchdog&#8217;, which logs all errors to a database table, and allows error messages to be browsed through an admin interface. So I don&#8217;t know what you&#8217;re getting at here.</p>
<p>All up, I think your criticism of Drupal is unjustified. It has an <a href="http://marc.theaimsgroup.com/?l=bugtraq&amp;w=2&amp;r=1&amp;s=drupal&amp;q=b" rel="nofollow">excellent security record</a>. It uses recommended validation techniques consistently. It is modular and stable. The code is well managed. It scales very well. And a number of large and high-profile sites are using it. It is generally considered a much more developer-friendly app than its competitors in the open-source PHP CMS market, such as Mambo, PHP-Nuke, and Xoops.</p>
<p>I don&#8217;t mean to start a flame war, but I think people should hear both sides of the story.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: malikyte</title>
		<link>http://www.sitepoint.com/blogs/2006/03/24/evaluating-php-applications/comment-page-1/#comment-16610</link>
		<dc:creator>malikyte</dc:creator>
		<pubDate>Tue, 28 Mar 2006 19:02:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1489#comment-16610</guid>
		<description>Since Xdebug is probably one of the best profilers out there right now (with APD and DGB coming close), it&#039;s a shame there are no tutorials on getting it to work on a Windows&#039; system within a PHP environment (i.e.: without using Wincachegrind).  I can&#039;t, for the life of me, figure out why my installation of it will not output any information when calling the internal PHP functions of the script...and there are no tutorials.

Anyone for creating a simple tutorial on any profiler/debugger?  :(</description>
		<content:encoded><![CDATA[<p>Since Xdebug is probably one of the best profilers out there right now (with APD and DGB coming close), it&#8217;s a shame there are no tutorials on getting it to work on a Windows&#8217; system within a PHP environment (i.e.: without using Wincachegrind).  I can&#8217;t, for the life of me, figure out why my installation of it will not output any information when calling the internal PHP functions of the script&#8230;and there are no tutorials.</p>
<p>Anyone for creating a simple tutorial on any profiler/debugger?  :(</p>]]></content:encoded>
	</item>
	<item>
		<title>By: PHPHound &#187; Blog Archive &#187; Evaluating PHP Applications and Scripts</title>
		<link>http://www.sitepoint.com/blogs/2006/03/24/evaluating-php-applications/comment-page-1/#comment-16604</link>
		<dc:creator>PHPHound &#187; Blog Archive &#187; Evaluating PHP Applications and Scripts</dc:creator>
		<pubDate>Tue, 28 Mar 2006 16:14:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1489#comment-16604</guid>
		<description>[...] Fortunately, we&#8217;ve got good people like Harry Fuecks to help us look atevaluating PHP applications. He covers some of the questions (and Google searches) you should be asking when thinking about basing your site on a given script. [...]</description>
		<content:encoded><![CDATA[<p>[...] Fortunately, we&#8217;ve got good people like Harry Fuecks to help us look atevaluating PHP applications. He covers some of the questions (and Google searches) you should be asking when thinking about basing your site on a given script. [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Jeewhizz</title>
		<link>http://www.sitepoint.com/blogs/2006/03/24/evaluating-php-applications/comment-page-1/#comment-16552</link>
		<dc:creator>Jeewhizz</dc:creator>
		<pubDate>Mon, 27 Mar 2006 15:49:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1489#comment-16552</guid>
		<description>&lt;blockquote&gt;As a side note there, I’d recommend registering on this mailing list—pretty much all security issues with well known (and less well known) PHP Open Source code bases get announced here.&lt;/blockquote&gt;

Shame really...

  phpsec-subscribe@phparch.com
    Delay reason: SMTP error from remote mail server after RCPT TO::
    host mail2.tabini.ca [72.51.34.155]: 450 :
    Recipient address rejected: User unknown in local recipient table</description>
		<content:encoded><![CDATA[<blockquote><p>As a side note there, I’d recommend registering on this mailing list—pretty much all security issues with well known (and less well known) PHP Open Source code bases get announced here.</p></blockquote>
<p>Shame really&#8230;</p>
<p>  <a href="mailto:phpsec-subscribe@phparch.com">phpsec-subscribe@phparch.com</a><br />
    Delay reason: SMTP error from remote mail server after RCPT TO::<br />
    host mail2.tabini.ca [72.51.34.155]: 450 :<br />
    Recipient address rejected: User unknown in local recipient table</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Wisiwip &#187; Blog Archive &#187; Evaluating PHP Application</title>
		<link>http://www.sitepoint.com/blogs/2006/03/24/evaluating-php-applications/comment-page-1/#comment-16497</link>
		<dc:creator>Wisiwip &#187; Blog Archive &#187; Evaluating PHP Application</dc:creator>
		<pubDate>Sun, 26 Mar 2006 15:55:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1489#comment-16497</guid>
		<description>[...] Từ đó tới giờ đã nghe ra khá là nhiều tiêu chuẩn đánh giá một ứng dụng PHP , nay may mắn được đọc thêm một bài của SitePoint về nó . [...]</description>
		<content:encoded><![CDATA[<p>[...] Từ đó tới giờ đã nghe ra khá là nhiều tiêu chuẩn đánh giá một ứng dụng PHP , nay may mắn được đọc thêm một bài của SitePoint về nó . [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Ren</title>
		<link>http://www.sitepoint.com/blogs/2006/03/24/evaluating-php-applications/comment-page-1/#comment-16469</link>
		<dc:creator>Ren</dc:creator>
		<pubDate>Sat, 25 Mar 2006 23:59:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1489#comment-16469</guid>
		<description>@NeverMind,
phpBB2 is GPL, so therefore all Gaia&#039;s modifications should be available.</description>
		<content:encoded><![CDATA[<p>@NeverMind,<br />
phpBB2 is GPL, so therefore all Gaia&#8217;s modifications should be available.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: sectic</title>
		<link>http://www.sitepoint.com/blogs/2006/03/24/evaluating-php-applications/comment-page-1/#comment-16467</link>
		<dc:creator>sectic</dc:creator>
		<pubDate>Sat, 25 Mar 2006 22:18:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1489#comment-16467</guid>
		<description>Nice article.
But I have one question regarding PHPXref and its interpretation. Do you think that it is enough for a first impression of the code to just check out if there where calls to function that generally sanitize user input to e.g. mysql-databases?
I asked because I don&#039;t see a way to get a greater impression of the code using PHPXref and this may - within evalution purposes where I can&#039;t have a look at all parameters but only a few - be wrong as there are a number of parameters which might affect database calls.

Relying on sanitizing functions only works if you really know, that every single parameter goes through these functions. And I think PHPXref (or any other automated software) doesn&#039;t give you this possibility. So maybe its not that much worth in application&#039;s evaluating that one may first think.</description>
		<content:encoded><![CDATA[<p>Nice article.<br />
But I have one question regarding PHPXref and its interpretation. Do you think that it is enough for a first impression of the code to just check out if there where calls to function that generally sanitize user input to e.g. mysql-databases?<br />
I asked because I don&#8217;t see a way to get a greater impression of the code using PHPXref and this may &#8211; within evalution purposes where I can&#8217;t have a look at all parameters but only a few &#8211; be wrong as there are a number of parameters which might affect database calls.</p>
<p>Relying on sanitizing functions only works if you really know, that every single parameter goes through these functions. And I think PHPXref (or any other automated software) doesn&#8217;t give you this possibility. So maybe its not that much worth in application&#8217;s evaluating that one may first think.</p>]]></content:encoded>
	</item>
</channel>
</rss>
