<?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>Sun, 12 Feb 2012 20:55:40 -0600</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[PHPClasses.org: Another Serious Security Bug on PHP 5.3.9]]></title>
      <guid>http://www.phpdeveloper.org/news/17504</guid>
      <link>http://www.phpdeveloper.org/news/17504</link>
      <description><![CDATA[On the PHPClasses.org blog there's <a href="http://www.phpclasses.org/blog/post/175-Another-Serious-Security-Bug-on-PHP-539.html">a new post</a> detailing an issue that came up in the PHP 5.3.9 release that caused a large security issue (PHP 5.3.10 has, however, <a href="http://php.net/downloads">already been released</a> to correct the issue).
</p>
<blockquote>
PHP 5.3.9 release was mostly meant to fix a security bug, but it introduced a new more serious bug. PHP 5.3.10 was just released to fix this issue. [...] This time it is a bug that allows arbitrary remote code execution. This means that it allows to run arbitrary code on the server, injected by an eventual attacker, so it can be used to cause many types of damage inside a server.
</blockquote>
<p>
The upgrade to <a href="http://php.net/downloads">PHP 5.3.10</a> is highly recommended to prevent this issue from effecting your applications. The <a href="http://www.phpclasses.org/blog/post/175-Another-Serious-Security-Bug-on-PHP-539.html">post</a> also mentions the dropping of Suhosin support (a security plugin for PHP) on the Debian linux distribution's default installation and how the PHP community has reacted to the decision.
</p>]]></description>
      <pubDate>Mon, 06 Feb 2012 14:16:22 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHP.net: PHP 5.3.10 Released (Security Fix - Recommended Upgrade)]]></title>
      <guid>http://www.phpdeveloper.org/news/17492</guid>
      <link>http://www.phpdeveloper.org/news/17492</link>
      <description><![CDATA[<p>
The PHP development team has <a href="http://www.php.net/index.php#id2012-02-02-1">officially announced</a> the release of the latest version of PHP in the 5.3.x series - <a href="http://www.php.net/downloads.php">PHP 5.3.10</a>:
</p>
<blockquote>
The PHP development team would like to announce the immediate availability of PHP 5.3.10. This release delivers a critical security fix. [...] Fixed arbitrary remote code execution vulnerability reported by Stefan Esser, CVE-2012-0830.
</blockquote>
<p>
It is highly recommended that users upgrade to this latest version to avoid falling victim to <a href="http://thexploit.com/sec/critical-php-remote-vulnerability-introduced-in-fix-for-php-hashtable-collision-dos/">this recently introduced bug</a> relating to the new "max_input_vars" setting added to protect from the overflow issue <a href="http://phpdeveloper.org/news/17322">recently brought up</a> in the PHP community.
</p>]]></description>
      <pubDate>Fri, 03 Feb 2012 08:01:29 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Anson Cheung's Blog: Top 10 PHP Best Security Practices for Sys Admins]]></title>
      <guid>http://www.phpdeveloper.org/news/17467</guid>
      <link>http://www.phpdeveloper.org/news/17467</link>
      <description><![CDATA[<p>
In <a href="http://www.ansoncheung.tk/articles/top-10-php-best-security-practices-sys-admins">this recent post</a> to his blog <i>Anson Cheung</i> provides a set of helpful hints for sysadmins to follow when installing (or just securing) the PHP installations on their systems.
</p>
<blockquote>
PHP is widely used for various of web development. However, misconfigured server-side scripting would create all sorts of problem. And here are php security best practices that you should aware when configuring PHP securely. Nowadays most of the web servers are operated under Linux environment (like: Ubuntu, Debian...etc). Hence, in the following article, I am going to use list top 10 ways to enhance PHP Security Best Practices under Linux environment.
</blockquote>
<p>His tips include:</p>
<ul>
<li>Reducing the built-in PHP modules
<li>Logging all PHP errors
<li>Disabling remote code execution
<li>Disabling dangerous PHP functions 
<li>Write protection on Apache, PHP & MySQL configuration files
</ul>]]></description>
      <pubDate>Mon, 30 Jan 2012 14:52:26 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Paul Reinheimer's Blog: Cookies don't replace Sessions]]></title>
      <guid>http://www.phpdeveloper.org/news/17438</guid>
      <link>http://www.phpdeveloper.org/news/17438</link>
      <description><![CDATA[<p>
In a new post to his blog <i>Paul Reinheimer</i> talks about <a href="http://blog.preinheimer.com/index.php?/archives/373-Cookies-dont-replace-Sessions.html">replacing sessions with cookies</a> and some of the (security) pitfalls that can come with it.
</p>
<blockquote>
I've seen several instances where people have demonstrated the ease with which encrypted cookies can replace sessions within PHP. Michael Nitschinger <a href="http://nitschinger.at/Session-Encryption-with-Lithium">wrote a piece</a> recently demonstrating the switch with Lithium, while CodeIgniter does this <a href="http://codeigniter.com/user_guide/libraries/sessions.html">by default</a> (optionally encrypting). The problem is that while replacing sessions with cookies works, it introduces a few risks not present with native session support, and these risks tend to be under documented.
</blockquote>
<p>
He gives an illustration of an attacker who sits between Amazon and one of their warehouses. Despite encrypting their order details, all it would take is the attacker to grab an order and copy it and resend (a "replay attack"). He's created <a href="http://betting-example.orchestra.io/">an example application</a> to illustrate the point (<a href="https://github.com/preinheimer/Betting-Example">source on github</a>). The attacker doesn't even have to know what the encrypted information contains - they only have to replicate it.
</p>]]></description>
      <pubDate>Tue, 24 Jan 2012 09:26:20 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Henrik Bj&oslash;rnskov's Blog: Symfony2: Add Cross Site Request Forgery protection to login forms]]></title>
      <guid>http://www.phpdeveloper.org/news/17326</guid>
      <link>http://www.phpdeveloper.org/news/17326</link>
      <description><![CDATA[<p>
In a new post to his blog <i>Henrik Bj&oslash;rnskov</i> has a tip on <a href="http://henrik.bjrnskov.dk/symfony2-cross-site-request-forgery/">preventing cross-site request forgeries</a> in your Symfony2 forms with the help of a simple Symfony2 configuration setting.
</p>
<blockquote>
When talking with <a href="http://twitter.com/jmikola">@jmikola</a> on #Symfony-dev this afternoon we got into the subject of cross site request forgery and symfony2 login forms. And it seems that form-login already supports this but neither of us knew how it worked. So here is another quick tip. This time about securing you login form from cross site attacks.
</blockquote>
<p>
The key is to define a "csrf_provider" in your security.yml config file and point it to the "form.csrf_provider" provider. He also includes the controller and view code/templating you'll need to get the token included in the form (and validated).
</p>]]></description>
      <pubDate>Fri, 30 Dec 2011 10:28:42 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Henrik Bj&oslash;rnskov' Blog: Symfony2: Quick tip for your security configuration]]></title>
      <guid>http://www.phpdeveloper.org/news/17307</guid>
      <link>http://www.phpdeveloper.org/news/17307</link>
      <description><![CDATA[<p>
<i>Henrik Bj&oslash;rnskov</i> has a <a href="http://henrik.bjrnskov.dk/symfony2-security-configuration-tip/">quick new post</a> with a security tip for those using the Symfony2 framework in its configuration.
</p>
<blockquote>
Earlier when playing around with the Security component and SecurityBundle i found that for all paths you can specify a route name and the component will match it when check for the request paths. 
</blockquote>
<p>
Setting this up in your configuration gives you more control over the paths that are matched as well as more flexibility in defining them. He includes a note about a change you might have to make to the SecurityBundle's code to get the "check_path" part working correctly. You can find out more about the SecurityBundle's integration in <a href="http://tracehello.wordpress.com/2011/07/25/symfony2-securitybundle/">this blog post</a> from <i>Pablo Bandin</i>.
</p>]]></description>
      <pubDate>Tue, 27 Dec 2011 08:40:45 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Reddit.com: What everyone should know about strip_tags()]]></title>
      <guid>http://www.phpdeveloper.org/news/17282</guid>
      <link>http://www.phpdeveloper.org/news/17282</link>
      <description><![CDATA[<p>
In <a href="http://www.reddit.com/r/PHP/comments/nj5t0/what_everyone_should_know_about_strip_tags/">this new post to Reddit</a>, the author shares a bit of their knowledge on what they think everyone should know about <a href="http://php.net/strip_tags">strip_tags</a> and some of the issues that can come with it (including security problems).
</p>
<blockquote>
<a href="http://www.php.net/manual/en/function.strip-tags.php">strip_tags</a> is one of the common go-to functions used for making user input on web pages safe for display. But contrary to what it sounds like it's for, strip_tags is never, ever, ever the right function to use for this and it has a lot of problems.
</blockquote>
<p>
Specific problems mentioned include "eating" of valid text, not preventing typed HTML entities, the whitelist of tags opening holes and character set issues that could have security implications. Other tools are recommended in both the article and the comments like <a href="http://htmlpurifier.org/">HTML Purifier</a>, the option of <a href="https://secure.wikimedia.org/wikipedia/en/wiki/BBCode">BBCode</a> and <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Markdown">Markdown</a>.
</p>]]></description>
      <pubDate>Tue, 20 Dec 2011 10:58:00 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[DevShed: File Security and Resources with PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/17165</guid>
      <link>http://www.phpdeveloper.org/news/17165</link>
      <description><![CDATA[<p>
In the fourth part of their series looking at working with the filesystem in PHP, DevShed has posted a new tutorial focusing on <a href="http://www.devshed.com/c/a/PHP/File-Security-and-Resources-with-PHP/">security and permission handling</a> for files/resources.
</p>
<blockquote>
These days, security is paramount to any server installation, large or small. Most modern operating systems have embraced the concept of the separation of file rights via a user/group ownership paradigm, which, when properly configured, offers a wonderfully convenient and powerful means for securing data. In this section, you'll learn how to use PHP's built-in functionality to review and manage these permissions.
</blockquote>
<p>They introduce functions like:</p>
<ul>
<li><a href="http://php.net/chown">chown</a>
<li><a href="http://php.net/chgrp">chgrp</a>
<li><a href="http://php.net/fileperms">fileperms</a>
<li><a href="http://php.net/isexecutable">isexecutable</a>
<li><a href="http://php.net/umask">umask</a>
</ul>
<p>
Sample code is also included to show how to <a href="http://www.devshed.com/c/a/PHP/File-Security-and-Resources-with-PHP/2/">open and close a file</a>.
</p>]]></description>
      <pubDate>Wed, 23 Nov 2011 16:23:27 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: PHP Sessions]]></title>
      <guid>http://www.phpdeveloper.org/news/17141</guid>
      <link>http://www.phpdeveloper.org/news/17141</link>
      <description><![CDATA[<p>
On PHPMaster.com today there's a <a href="http://phpmaster.com/php-sessions/">new introductory tutorial</a> for those trying to figure out sessions in PHP. Sessions can be one of the most powerful tools at your disposal and handling them correctly can sometimes be a little tricky.
</p>
<blockquote>
$_SESSION is a special array used to store information across the page requests a user makes during his visit to your website or web application. The most fundamental way to explain what a sessions is like is to imagine the following scenario: You are working with an application. You open it, make some changes, and then you close it. That is a session in it's simplest form.
</blockquote>
<p>
They start with a basic "how to use them" example of setting a username value to the current session and pulling the value back out. They also show the use of the <a href="http://php.net/session_unset">session_unset</a> and <a href="http://php.net/session_destroy">session_destroy</a> methods for ending the session. Some security tips are mentioned too - timeouts, regenerating the session ID, destroying them correctly and using a more permanent storage option (by default, they store on the local disk).
</p>]]></description>
      <pubDate>Thu, 17 Nov 2011 10:19:08 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Johannes Schmitt's Blog: A New Killer Feature for Symfony2 Security]]></title>
      <guid>http://www.phpdeveloper.org/news/17065</guid>
      <link>http://www.phpdeveloper.org/news/17065</link>
      <description><![CDATA[<p>
<i>Johannes Schmitt</i> has <a href="http://blog.jmsyst.com/2011/10/new-killer-feature-for-symfony2.html">a new post</a> about his "killer feature" he's added to the security for <a href="http://symfony.com">Symfony2</a> framework (as a bundle) - a new customized expression-based query language that's compiled down to native PHP to make permissions checking simpler and faster.
</p>
<blockquote>
If you have used the Symfony2 Security Component to any modest degree, you will know that we have a quite heavy voting system which uses attributes like "IS_AUTHENTICATED_FULLY" to make authorization decisions. [...] If you are concerned about performance, then you should not be all too generous with the isGranted() calls. The second option would work as well, but writing a new voter each time you need to make a new check does not really seem ideal either. Fortunately, we can do better.
</blockquote>
<p>
He includes an example of this expression language in a direct isGranted() call, a string that checks to see if a user has three different roles, and a snippet showing the same thing in the docblock comment of a controller method. The second is a bit more complex, checking for an admin role or if the user is the one that should be deleted. You can <a href="https://github.com/schmittjoh/JMSSecurityExtraBundle/blob/master/Resources/doc/index.rst">find more doucmentation here</a>.
</p>]]></description>
      <pubDate>Mon, 31 Oct 2011 14:26:08 -0500</pubDate>
    </item>
  </channel>
</rss>

