[cvs] commit: framework/Text_Filter/Filter xss.php
Michael M Slusarz
slusarz at horde.org
Fri Mar 21 05:13:27 UTC 2008
slusarz 2008-03-21 01:13:27 EDT
Modified files:
Text_Filter/Filter xss.php
Log:
As of PHP 5.2 PHP established a backtrack limit on PCRE expressions. This
backtrack limit is fairly small (100,000 characters by default), so long
matching strings could potentnially fail. The worst part is, instead of
returning the original string, preg_* funcs return null and output no
error messages - you must use the preg_last_error() func (new as of PHP 5.2)
to determine the issue.
This is a long way of describing the issue seen here with certain HTML
messages when viewed inline. The check for a body/html tag in the XSS
filter was doing excessive backtrack if no body/html was found in the
message. These messages occurred more often in tidy-cleaned messages since
tidy is configured in IMP to remove body/html tags already. The solution
(I think): use a once-only subpattern to indicate that the entire tag string
must be matched and don't do backtracking if not (see the PHP PCRE Pattern
Syntax page for more information).
This is a useful note for all devs in the future when dealing with a PCRE
expression that isn't matching anything but returns null. It only took me
2 hours to figure this out :(
Revision Changes Path
1.13 +2 -2 framework/Text_Filter/Filter/xss.php
Chora Links:
http://cvs.horde.org/diff.php/framework/Text_Filter/Filter/xss.php?r1=1.12&r2=1.13&ty=u
More information about the cvs
mailing list