1 <?xml version=
"1.0" encoding=
"UTF-8"?>
2 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 <html xmlns=
"http://www.w3.org/1999/xhtml"
5 xmlns:
xi=
"http://www.w3.org/2001/XInclude"
6 xmlns:
xc=
"urn:xhtml-compiler"
9 <title>HTML Purifier Sucks - HTML Purifier
</title>
10 <xi:include href=
"common-meta.xml" xpointer=
"xpointer(/*/node())" />
11 <meta name=
"keywords" content=
"HTMLPurifier, HTML Purifier, HTML, filter, sucks, devils advocate, evil, bad" />
15 <xi:include href=
"common-header.xml" xpointer=
"xpointer(/*/node())" />
18 <h1 id=
"title">HTML Purifier Sucks
</h1>
22 <blockquote class=
"fancy">
24 ...needless to say, I don't think I'll bother investigating further!
27 — Stormrider on
<a href=
"http://www.sitepoint.com/forums/showpost.php?p=3621314&postcount=119">SitePoint Forums
</a>
32 Contrary to what
<a href=
"comparison.html">this comparison page
</a>
33 suggests, HTML Purifier sucks. It swallows oceans, it drinks blood,
34 and it is more effective than your dust-busting Hoover
3000. Why does it
35 suck? How can we make it un-sucky?
39 This document is currently under construction.
47 As of version
2.1.3, HTML Purifier's library folder contains
48 <strong>164 files
</strong> in
<strong>30 folders
</strong>, weighing
49 at about
696 kilobytes. For comparison, the CodeIgniter
50 web application framework contains
147 files,
29 folders and weighs
55 These back-of-a-napkin statistics are very telling about HTML Purifier's
56 internal architecture: object-oriented, one class per file and small
57 components, to the extreme. It also works against HTML Purifier when
58 it comes to the performance department. For most input strings, the
59 memory footprint from this library's source code is higher than the
60 memory used actually processing the HTML (four megabytes,
61 <a href=
"http://forums.devnetwork.net/viewtopic.php?p=405175#405175">last I checked
</a>.)
67 HTML Purifier is extremely slow. Various benchmarks have shown HTML
68 Purifier to be an order of a magnitude slower than comparable solutions.
74 The
<a href=
"http://www.sitepoint.com/forums/showpost.php?p=3621314&postcount=119">Stormrider
75 quote
</a> at the very beginning of this document is for one very
76 specific problem: whitespace.
82 It is trivially easy to nuke the contents of a document by inserting
83 a
<code></div
></code> tag near the beginning, when DOMLex