<?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>Thu, 24 May 2012 10:53:20 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Anthony Ferrara's Blog: Properly Salting Passwords, The Case Against Pepper ]]></title>
      <guid>http://www.phpdeveloper.org/news/17832</guid>
      <link>http://www.phpdeveloper.org/news/17832</link>
      <description><![CDATA[<p>
In <a href="http://blog.ircmaxell.com/2012/04/properly-salting-passwords-case-against.html">this new post</a> to his blog <i>Anthony Ferrara</i> looks at a common idea that comes up when the discussion of encryption of passwords in PHP - the global salt (or "pepper").
</p>
<blockquote>
The other day I <a href="http://blog.ircmaxell.com/2012/04/introducing-passwordlib.html">announced the release</a> of my new password hashing library, <a href="https://github.com/ircmaxell/PHP-PasswordLib">PasswordLib</a>. As I've come to expect, <a href="http://www.reddit.com/r/PHP/comments/s9r6f/introducing_passwordlib_a_library_for_hashing/">Reddit</a> was full of interesting commentary on the topic. Some was good, some was bad and some surprised me. What surprised me was the insistence on a global salt (otherwise known as a "<a href="http://barkingiguana.com/2009/08/03/securing-passwords-with-salt-pepper-and-rainbows/">pepper</a>"). So, I started thinking about it some more, and I figured I'd write a post on why I don't use peppers in my hashing algorithms (and why you may want to rethink it too).
</blockquote>
<p>
He starts with an explanation of what a salt is (and isn't) to lead naturally into the idea of a "pepper", a single unique value that's used across an entire site/application for password encryption. He covers four flaws inherent with this method:
</p>
<ul>
<li>There's no proof that using them increases your security.
<li>There are no publicly vetted hashing algorithms that accept a pepper as an argument. 
<li>Using a block cipher instead of a pepper provides a stronger level of encryption and protection.
<li>The entire concept of a pepper is based around a flawed premise. [...] The flaw in that premise is that it's often not just your database that's leaked.
</ul>]]></description>
      <pubDate>Wed, 18 Apr 2012 09:23:31 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHP.net: 5.3.7 upgrade warning]]></title>
      <guid>http://www.phpdeveloper.org/news/16752</guid>
      <link>http://www.phpdeveloper.org/news/16752</link>
      <description><![CDATA[<p>
In a quick note from the PHP.net site, they have a warning for those running PHP 5.3.7 (the most recent release) - there's a bug that's serious enough (with <a href="http://php.net/crypt">crypt</a>) to where upgrades should probably wait until 5.3.8.
</p>
<blockquote>
Due to unfortunate issues with 5.3.7 (see <a href="https://bugs.php.net/bug.php?id=55439">bug#55439</a>) users should wait with upgrading until 5.3.8 will be released (expected in few days).
</blockquote>
<p>
<a href="https://bugs.php.net/bug.php?id=55439">The issue</a> causes the crypt() function to only return the (MD5-only) salt it was given instead of the correctly hashed string. If you need to replace this immediately, you can pull the latest from <a href="http://snaps.php.net/">the snaps site</a> (or <a href="http://windows.php.net/snapshots/">binaries for Windows</a>). Keep an eye out for PHP 5.3.8 in the near future.
</p>]]></description>
      <pubDate>Mon, 22 Aug 2011 12:32:48 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[NetTuts.com: Understanding Hash Functions and Keeping Passwords Safe]]></title>
      <guid>http://www.phpdeveloper.org/news/15756</guid>
      <link>http://www.phpdeveloper.org/news/15756</link>
      <description><![CDATA[<p>
On NetTuts.com today there's a new tutorial from <i>Burak Guzel</i> about keeping your passwords (and web applications) safer by <a href="http://net.tutsplus.com/tutorials/php/understanding-hash-functions-and-keeping-passwords-safe">using hashing with passwords</a> and understanding which of the PHP functions is right for you.
</p>
<blockquote>
From time to time, servers and databases are stolen or compromised. With this in mind, it is important to ensure that some crucial user data, such as passwords, can not be recovered. Today, we are going to learn the basics behind hashing and what it takes to protect passwords in your web applications.
</blockquote>
<p>
The article is a simple introduction to the topic and doesn't claim that it will protect you 100% but it's good to get the ball rolling. They talk about <a href="http://php.net/md5">md5</a> hashing and the <a href="http://php.net/crypt">crypt</a> method. He also outlines a few problems that surround hashing - hash collisions, attackers using "rainbow tables" and how quickly the average computer can run through hashes (an average 8 character password could be broken in around 60 hours). For each, he includes a few things you can do in your code to help prevent them from happening.
</p>]]></description>
      <pubDate>Tue, 18 Jan 2011 08:05:29 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Kavoir.com: Just Hashing is Far from Enough for Storing Passwords (Dictionary & Rainbow Attacks)]]></title>
      <guid>http://www.phpdeveloper.org/news/14156</guid>
      <link>http://www.phpdeveloper.org/news/14156</link>
      <description><![CDATA[<p>
On Kavoir.com there's a new post that reminds you that <a href="http://www.kavoir.com/2010/03/just-hashing-is-far-from-enough-how-to-position-against-dictionary-and-rainbow-attacks.html">hashing isn't enough anymore</a> to protect your users and their passwords. They offer a suggestion or two of what you can do to help lock things down a bit more.
</p>
<blockquote>
The common practice is to hash the user password and store the hash string of the password in the database. When the user tries to log in and supplies his password, it is used to generate a hash string to be compared to the one stored in the database. [...] This approach may be secure in the 70s of the last century, but barely any more. 
</blockquote>
<p>
Computing has evolved enough to where hashed can be matched, sometimes in less than two or three minutes. Their answer to the problem? Generate a random salt each time you create the hash with a constant being used as a base. A code snippet calling a user-defined function and the <a href="http://php.net/sha1">sha1</a> function are included.
</p>]]></description>
      <pubDate>Tue, 09 Mar 2010 13:11:01 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[NETTUTS.com: Simple Techniques to Lock Down your Website]]></title>
      <guid>http://www.phpdeveloper.org/news/13330</guid>
      <link>http://www.phpdeveloper.org/news/13330</link>
      <description><![CDATA[<p>
On NETTUTS.com today there's <a href="http://net.tutsplus.com/tutorials/php/simple-techniques-to-lock-down-your-website/">a new post</a> by <i>Dustin Blake</i> with a few simple tips and helpful techniques to locking down and protecting your website with some simple PHP scripts.
</p>
<blockquote>
One crucial part of PHP development practice is always keeping in mind that security is not something you can simply buy off the shelf at your local convenient store. Ensuring the security of your web applications is a process, which over time, needs to be constantly evaluated, monitored, and hardened.
</blockquote>
<p>
He shows a few methods you can use to secure things - generating random values, making random passwords to give to your users, creating salted passwords, obfuscation and an overview of cryptography in PHP. <a href="http://nettuts.s3.amazonaws.com/453_php/examples.zip">Complete source code</a> is included.  
</p>
]]></description>
      <pubDate>Mon, 05 Oct 2009 07:54:53 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPBuilder.com: Securing Data Sent Via GET Requests]]></title>
      <guid>http://www.phpdeveloper.org/news/9243</guid>
      <link>http://www.phpdeveloper.org/news/9243</link>
      <description><![CDATA[<p>
PHPBuilder.com has a <a href="http://www.phpbuilder.com/columns/hillel_aftel20070510.php3">new article</a> by <i>Hillel Aftel</i> about his method of choice for securing the data that you send over the GET string when moving things around on your site.
</p>
<blockquote>
In this article I'm going to show you how you can use PHP to encode your data for transit. Most importantly, it will be done in a way that makes the data decodable, and therefore much more usable, by the receiving page.
</blockquote>
<p>
His encryption method - sending everything in a single string and modifying the scheme each time - uses static pairs of values (of your choosing) to "encode" the outgoing string. It actually consists of three different files: the script itself, a single-use script that makes the third file, an include file to handle the conversion back from the encoded results.
</p>]]></description>
      <pubDate>Fri, 14 Dec 2007 08:49:00 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Richard Lord's Blog: PHP Password Security]]></title>
      <guid>http://www.phpdeveloper.org/news/8817</guid>
      <link>http://www.phpdeveloper.org/news/8817</link>
      <description><![CDATA[<p>
<i>Richard Lord</i> has <a href="http://www.bigroom.co.uk/blog/php-password-security">posted a new entry</a> today talking about working with passwords and keeping them secure:
</p>
<blockquote>
If you build websites that require users to register it's your responsibility to keep their passwords safe. And if you're storing the passwords in plain text then you're not doing your job properly. [...] There's always a chance your database could be stolen. So, the simple rule is to hash your passwords.
</blockquote>
<p>
<a href="http://www.bigroom.co.uk/blog/php-password-security">His post</a> talks about hashing with simple examples and a mention of an additional method of protection against the database of hashed passwords being stolen - salting the stored values.
</p>]]></description>
      <pubDate>Wed, 10 Oct 2007 10:42:32 -0500</pubDate>
    </item>
  </channel>
</rss>

