<?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, 08 Jan 2009 03:17:41 -0600</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[PHP Security Blog: Holes in most preg_match() filters]]></title>
      <guid>http://www.phpdeveloper.org/news/7558</guid>
      <link>http://www.phpdeveloper.org/news/7558</link>
      <description><![CDATA[<p>
On the PHP Security Log today, <i>Stefan Esser</i> points out <a href="http://blog.php-security.org/archives/76-Holes-in-most-preg_match-filters.html">some holes</a> in most of the filters using preg_match that he's seen in examples and the like all around the web. Some of these things could cause issues that could breach the security of your application.
</p>
<blockquote>
<p>
During the last week I was performing some audits and like so often it contained preg_match() filters that were not correct. Most PHP developers use ^ and $ within their regular expressions without actually reading the documentation about what they really achieve.
</p>
<p>
However the problem is, that the author of such a regular expression did not correctly read the documentation and mistakes the $ character for the definitive end of the subject.
</p>
</blockquote>
<p>
According to <i>Stefan</i>, the actual documentation for the $ character in a regular expression isn't quite used that way. It does mean "the end" of the match but it can also match against a newline as well. His suggestions? Use the /D modifier on the end of the expression to match the real "the end" and not how it might match otherwise.
<p>]]></description>
      <pubDate>Wed, 04 Apr 2007 07:15:50 -0500</pubDate>
    </item>
  </channel>
</rss>
