<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>PHPDeveloper.org</title>
    <link>http://www.phpdeveloper.org</link>
    <description>Up-to-the Minute PHP News, views and community</description>
    <language>en-us</language>
    <pubDate>Sat, 25 May 2013 20:47:54 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[PHPMaster.com: 8 Practices to Secure Your Web App]]></title>
      <guid>http://www.phpdeveloper.org/news/19131</guid>
      <link>http://www.phpdeveloper.org/news/19131</link>
      <description><![CDATA[<p>
PHPMaster.com has posted a new article with some <a href="http://phpmaster.com/8-practices-to-secure-your-web-app/">high level security tips</a> and reminders for PHP developers when wanting to help prevent issues with their applications. The article provides eight tips, each with a brief description.
</p>
<blockquote>
When it comes to application security, in addition to securing your hardware and platform, you also need to write your code securely. This article will explain how to keep your application secure and less vulnerable to hacking.
</blockquote>
<p>
The good practices they recommend include input data validation, protecting against XSS attacks, preventing SQL injections, protecting session data, proper error handling and protecting included files. There's some good reminders here, but it barely scratches the surface of effectively protecting your application. These tips are the "low hanging fruit" for securing your app, so be aware that there's more things to worry about than just these eight.
</p>]]></description>
      <pubDate>Mon, 04 Feb 2013 12:56:40 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPClasses.org: Lately in PHP Podcast Episode 21 - Is PHP Source Quality Really Good?]]></title>
      <guid>http://www.phpdeveloper.org/news/17610</guid>
      <link>http://www.phpdeveloper.org/news/17610</link>
      <description><![CDATA[<p>
On PHPClasses.org today they've posted their latest "Lately in PHP" podcast - episode 21, "<a href="http://www.phpclasses.org/blog/post/177-Is-PHP-Source-Quality-really-Good-or-is-it-still-Insecure--Lately-in-PHP-podcast-episode-21.html">Is PHP Source Quality really Good or is it still Insecure?</a>".
</p>
<blockquote>
A study from Coverity claims that the source code of Open Source projects such as PHP has a low defect rate. Meanwhile, a few weeks ago, the security expert Stefan Esser claims that PHP source security bug prevention has a lot to be desired because PHP core developers do not have the habit of using source code auditing tools to prevent security bugs. The matter of the PHP source code quality and security bug prevention was one of the main topics discussed by Manuel Lemos and Ernani Joppert in episode 21 of the Lately in PHP podcast.
</blockquote>
<p>
You can listen to this latest episode either via <a href="http://www.phpclasses.org/blog/post/177-Is-PHP-Source-Quality-really-Good-or-is-it-still-Insecure--Lately-in-PHP-podcast-episode-21.html">the in-page player</a> or by <a href="http://www.phpclasses.org/blog/post/177/file/109/name/Lately-In-PHP-21.mp3">downloading the mp3</a> directly. You can also <a href="http://www.phpclasses.org/blog/category/podcast/post/latest.rss">subscribe to their feed</a> to get this episode automatically (and past/future ones too).
</p>]]></description>
      <pubDate>Thu, 01 Mar 2012 10:17:08 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Ulf Wendel's Blog: Using MySQL stored procedures with PHP mysqli]]></title>
      <guid>http://www.phpdeveloper.org/news/17088</guid>
      <link>http://www.phpdeveloper.org/news/17088</link>
      <description><![CDATA[<p>
<i>Ulf Wendel</i> has a new post today with details on <a href="http://blog.ulf-wendel.de/2011/using-mysql-stored-procedures-with-php-mysqli/">using stored procedures with mysqli</a> - not overly difficult if you know how to handle the IN, OUT and INOUT parameters. He includes a few code examples showing how to use them.
</p>
<blockquote>
Out of curiosity I asked another friend, a team lead, how things where going with their PHP MySQL project, for which they had planned to have most of their business logic in stored procedures. I got an email in reply stating something along the lines: "Our developers found that mysqli does not support stored procedures correctly. We use PDO.". Well, the existing documentation from PHP 5.0 times is not stellar, I confess. But still, that's a bit too much... it ain't that difficult. And, it works.
</blockquote>
<p>
He describes the three parameters (IN, OUT and INOUT) and gives some examples of setting/getting them from your SQL statements. They're all still set up using the <a href="http://us2.php.net/manual/en/mysqli.query.php">query method</a> on your connection as well as handling the result sets that come back and working with prepared statements.
</p>]]></description>
      <pubDate>Fri, 04 Nov 2011 11:39:18 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Anthony Ferrara's Blog: Security Review: Creating a Secure PHP Login Script]]></title>
      <guid>http://www.phpdeveloper.org/news/16670</guid>
      <link>http://www.phpdeveloper.org/news/16670</link>
      <description><![CDATA[<p>
In response to <a href="http://phpdeveloper.org/news/16645">this article from DevShed</a> about creating a "simple and secure login script", <i>Anthony Ferrara</i> has <a href="http://blog.ircmaxell.com/2011/08/security-review-creating-secure-php.html">written up this post</a> to help dispel some of the inaccuracies, bad practices and security issues that could result from DevShed's code.
</p>
<blockquote>
I decided to click the link [in my feed reader] and give the article a read. Not overly shocking was the fact that I didn't find the content of the article to be, how shall I say this..., overly factual. It's not really a "tutorial", but more of a "here's some code that's secure". A quick review of the code found more than one vulnerability, and some significant things that I would change about it (as well as a few "really bad practices").
</blockquote>
<p>
He walks through each of the files included in the original tutorial - Authenticate.php, Register.php and Logout.php - and talks about things like brute force detection, password verification, registration handling and session serialization. He finishes it off with a list of twelve overall issues he noticed during his work along with solutions for each (usually very simple ones too).
</p>]]></description>
      <pubDate>Wed, 03 Aug 2011 12:02:19 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Devshed: Simple and Secure PHP Login Script]]></title>
      <guid>http://www.phpdeveloper.org/news/16645</guid>
      <link>http://www.phpdeveloper.org/news/16645</link>
      <description><![CDATA[<p>
In <a href="http://www.devshed.com/c/a/PHP/Creating-a-Secure-PHP-Login-Script-59941/">this new tutorial</a> on DevShed, they walk you through the creation of a secure login script that uses sha256 encryption, a captcha to prevent automated signups, XSS attack protection and several other features.
</p>
<blockquote>
Recent advancements in PHP offer the developer a variety of tools to improve the security of login systems. [...] This programming tutorial will teach you how to create a simple, yet secure login script utilizing PHP using MySQL and bracing for XSS attack prevention.
</blockquote>
<p>
Other features include no persistent logins, preventing direct file access, an idle timeout on the user session, protection against session fixation and anti-brute force measures. Full (procedural) code is provided as well as screenshots from phpMyAdmin showing the database table structure. You can grab the code for the project <a href="http://www.php-developer.org/php-secure-authentication-of-user-logins/">here</a>.
</p>]]></description>
      <pubDate>Thu, 28 Jul 2011 09:57:39 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Anthony Ferrara's Blog: In Response To: Building Secured Web Applications Using PHP - The Basics]]></title>
      <guid>http://www.phpdeveloper.org/news/16529</guid>
      <link>http://www.phpdeveloper.org/news/16529</link>
      <description><![CDATA[<p>
In a response to <a href="http://phpdeveloper.org/news/16517">this post</a> that introduced some basic security methods for your applications, <i>Anthony Ferrara</i> has <a href="http://blog.ircmaxell.com/2011/06/in-response-to-building-secured-web.html">posted some corrections</a> and updates to the suggested methods, even pointing out where some of them are completely wrong.
</p>
<blockquote>
Today an article popped into my feed reader that raise my eyebrows.  The article's title is "<a href="http://noobcode.blogspot.com/2011/05/building-secured-web-applications-using.html">Building Secured Web Applications Using PHP - The Basics</a>".  The summary of the item looked interesting, so I decided to open it up...What I found blew me away.  It was filled with loads of bad information including some down-right wrong suggestions.  Let me go through point by point and shed some light on the subject...
</blockquote>
<p>
<a href="http://blog.ircmaxell.com/2011/06/in-response-to-building-secured-web.html">His response</a> goes back through the original article by section header and explains either why the advice was bad and/or the more correct way to do things.
</p>
<blockquote>
Security is not something you can learn in a page.  It's not something that you can learn in a single book.  It takes a lot of time and effort.  It should not be trivialized into a simple "Do this and you'll be secure" style post.  It sends the wrong message...
</blockquote>]]></description>
      <pubDate>Tue, 28 Jun 2011 11:15:10 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Michael Nitschinger's Blog: Securing Lithium Forms]]></title>
      <guid>http://www.phpdeveloper.org/news/16443</guid>
      <link>http://www.phpdeveloper.org/news/16443</link>
      <description><![CDATA[<p>
<i>Michael Nitschinger</i> has a new post to his blog today showing how you can <a href="http://nitschinger.at/Securing-Lithium-Forms">secure the forms in Lithium</a> using the handy CSRF token implemented directly in the framework.
</p>
<blockquote>
CSRF (Cross-Site-Request-Forgery) attacks work by sending arbitary (form) requests from a victim. Normally, the receiving site (in our case the Controller who processes the form data) doesn't know where the data comes from. The CSRF protection in Lithium aims to solve this problem in an elegant and secure way. You can read more about those attacks <a href="http://shiflett.org/articles/cross-site-request-forgeries">here</a>. Note that you'll need to clone the latest master branch of Lithium if you want to try it out now.
</blockquote>
<p>
There's two parts to the protection, one on either side of things - a field in the form output and a check in the controller to see if the submitted value is correct. He includes code for a simple form (a title field and submit button) that lazy loads the Security helper and generates the token for you. He walks through the controller side of things a line at a time and includes a sample logging/forwarding bit in the second example to redirect users when the CSRF check doesn't pass.
</p>]]></description>
      <pubDate>Wed, 08 Jun 2011 12:03:23 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Till Klampaeckel's Blog: Zend Framework: Writing an IN-Clause with Zend_Db]]></title>
      <guid>http://www.phpdeveloper.org/news/15612</guid>
      <link>http://www.phpdeveloper.org/news/15612</link>
      <description><![CDATA[<p>
In <a href="http://till.klampaeckel.de/blog/archives/129-Zend-Framework-Writing-an-IN-Clause-with-Zend_Db.html">a new post</a> to his blog <i>Till Klampaeckel</i> looks at something the Zend Framework's Zend_Db component dosen't seem to support - an "IN" on a fetchAll - and how he worked around it.
</p>
<blockquote>
The IN-clause is only supported when I wrap my statement with Zend_Db_Select, which is something I rarely do. Part of the reason is that I still don't feel comfortable writing my SQL in a DSL which doesn't really do anything besides wrapping a string into an object and IMHO it doesn't add to readability either. And the other reason is that I don't plan to run this import against any other database than MySQL. Which is why I don't see the need for abstraction either.
</blockquote>
<p>
He shows some failing code where the IN isn't populated correctly when an array is passed in and the warnings that come with it. He solution's pretty simple, though - rewrite the query string before sending it with the correct number of bind locations ("?") for the number of parameters. In the comments, other approaches are suggested including using a simple select() call or tricking the bindings with a special kind of array. 
</p>]]></description>
      <pubDate>Tue, 21 Dec 2010 13:16:07 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPBuilder.com: Write an Ajax-driven Login Application in PHP Using SSL/TLS]]></title>
      <guid>http://www.phpdeveloper.org/news/15102</guid>
      <link>http://www.phpdeveloper.org/news/15102</link>
      <description><![CDATA[<p>
On the PHPBuilder.com site today there's <a href="http://www.phpbuilder.com/columns/Login-Ajax-SSL/Octavia_Anghel090810.php3">a new tutorial posted</a> from <i>Octavia Anghel</i> about creating a login for your site that's powered by Ajax and uses a bit more security than normal. It includes hooks to use the Ajax Server Secure Layer or an OpenSSL connection.
</p>
<blockquote>
In this article you will learn how to write a login application in PHP using Ajax and SSL/TLS in two ways either using aSSL (Ajax Server Secure Layer), a library that implements a technology similar to SSL without HTTPS or a simple Ajax and OpenSSL, an open source implementation of the SSL and TLS protocols.
</blockquote>
<p>
They start with the aSSL method and link you to <a href="http://assl.sullof.com/assl/download.asp?file=assl1.2.1PHP4.zip">a download</a> of the tool as well as some sample code to help you get started passing data to it via the session. The second example shows the OpenSSL method, mostly consisting of checking on the server side of the certificate that's passed along with the request.
</p>]]></description>
      <pubDate>Thu, 09 Sep 2010 10:29:03 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[NETTUTS.com: 20 Steps to a Flexible and Secure WordPress Installation]]></title>
      <guid>http://www.phpdeveloper.org/news/14860</guid>
      <link>http://www.phpdeveloper.org/news/14860</link>
      <description><![CDATA[<p>
On NETTUTS.com today there's a <a href="http://net.tutsplus.com/tutorials/wordpress/20-steps-to-a-flexible-and-secure-wordpress-installation/">new tutorial</a> about installing and configuring a secure WordPress installation for your site.
</p>
<blockquote>
A comprehensive WordPress installation, albeit simple to produce, often requires multiple steps '" many of which can easily be omitted accidentally. How many times have you forgotten to customize your permalink structure? How about adding in a sitemap plugin? What about changing your timezone? If you've installed WordPress more than once, chances are you've missed something. Take the following steps and you'll never miss anything again.
</blockquote>
<p>
Some of the steps are larger - "Get WordPress from SVN", "Add .htaccess Rules", "Apply the 4G Blacklist" - and some are smaller changes like setting up profiles, changing read/write/discussion settings and generating a sitemap. This is a great guide even if you already have WordPress installed.
</p>]]></description>
      <pubDate>Tue, 27 Jul 2010 13:18:43 -0500</pubDate>
    </item>
  </channel>
</rss>
