|
1 NEWS ( CHANGELOG and HISTORY ) HTMLPurifier |
|
2 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
|
3 |
|
4 = KEY ==================== |
|
5 # Breaks back-compat |
|
6 ! Feature |
|
7 - Bugfix |
|
8 + Sub-comment |
|
9 . Internal change |
|
10 ========================== |
|
11 |
|
12 4.7.0, released 2015-08-04 |
|
13 # opacity is now considered a "tricky" CSS property rather than a |
|
14 proprietary one. |
|
15 ! %AutoFormat.RemoveEmpty.Predicate for specifying exactly when |
|
16 an element should be considered "empty" (maybe preserve if it |
|
17 has attributes), and modify iframe support so that the iframe |
|
18 is removed if it is missing a src attribute. Thanks meeva for |
|
19 reporting. |
|
20 - Don't truncate upon encountering </div> when using DOMLex. Thanks |
|
21 Myrto Christina for finally convincing me to fix this. |
|
22 - Update YouTube filter for new code. |
|
23 - Fix parsing of rgb() values with spaces in them for 'border' |
|
24 attribute. |
|
25 - Don't remove foo="" attributes if foo is a boolean attribute. Thanks |
|
26 valME for reporting. |
|
27 |
|
28 4.6.0, released 2013-11-30 |
|
29 # Secure URI munge hashing algorithm has changed to hash_hmac("sha256", $url, $secret). |
|
30 Please update any verification scripts you may have. |
|
31 # URI parsing algorithm was made more strict, so only prefixes which |
|
32 looks like schemes will actually be schemes. Thanks |
|
33 Michael Gusev <mgusev@sugarcrm.com> for fixing. |
|
34 # %Core.EscapeInvalidChildren is no longer supported, and no longer does |
|
35 anything. |
|
36 ! New directive %Core.AllowHostnameUnderscore which allows underscores |
|
37 in hostnames. |
|
38 - Eliminate quadratic behavior in DOMLex by using a proper queue. |
|
39 Thanks Ole Laursen for noticing this. |
|
40 - Rewritten MakeWellFormed/FixNesting implementation eliminates quadratic |
|
41 behavior in the rest of the purificaiton pipeline. Thanks Chedburn |
|
42 Networks for sponsoring this work. |
|
43 - Made Linkify URL parser a bit less permissive, so that non-breaking |
|
44 spaces and commas are not included as part of URL. Thanks nAS for fixing. |
|
45 - Fix some bad interactions with %HTML.Allowed and injectors. Thanks |
|
46 David Hirtz for reporting. |
|
47 - Fix infinite loop in DirectLex. Thanks Ashar Javed (@soaj1664ashar) |
|
48 for reporting. |
|
49 |
|
50 4.5.0, released 2013-02-17 |
|
51 # Fix bug where stacked attribute transforms clobber each other; |
|
52 this also means it's no longer possible to override attribute |
|
53 transforms in later modules. No internal code was using this |
|
54 but this may break some clients. |
|
55 # We now use SHA-1 to identify cached definitions, instead of MD5. |
|
56 ! Support display:inline-block |
|
57 ! Support for more white-space CSS values. |
|
58 ! Permit underscores in font families |
|
59 ! Support for page-break-* CSS3 properties when proprietary properties |
|
60 are enabled. |
|
61 ! New directive %Core.DisableExcludes; can be set to 'true' to turn off |
|
62 SGML excludes checking. If HTML Purifier is removing too much text |
|
63 and you don't care about full standards compliance, try setting this to |
|
64 'true'. |
|
65 - Use prepend for SPL autoloading on PHP 5.3 and later. |
|
66 - Fix bug with nofollow transform when pre-existing rel exists. |
|
67 - Fix bug where background:url() always gets lower-cased |
|
68 (but not background-image:url()) |
|
69 - Fix bug with non lower-case color names in HTML |
|
70 - Fix bug where data URI validation doesn't remove temporary files. |
|
71 Thanks Javier Marín Ros <javiermarinros@gmail.com> for reporting. |
|
72 - Don't remove certain empty tags on RemoveEmpty. |
|
73 |
|
74 4.4.0, released 2012-01-18 |
|
75 # Removed PEARSax3 handler. |
|
76 # URI.Munge now munges URIs inside the same host that go from https |
|
77 to http. Reported by Neike Taika-Tessaro. |
|
78 # Core.EscapeNonASCIICharacters now always transforms entities to |
|
79 entities, even if target encoding is UTF-8. |
|
80 # Tighten up selector validation in ExtractStyleBlocks. |
|
81 Non-syntactically valid selectors are now rejected, along with |
|
82 some of the more obscure ones such as attribute selectors, the |
|
83 :lang pseudoselector, and anything not in CSS2.1. Furthermore, |
|
84 ID and class selectors now work properly with the relevant |
|
85 configuration attributes. Also, mute errors when parsing CSS |
|
86 with CSS Tidy. Reported by Mario Heiderich and Norman Hippert. |
|
87 ! Added support for 'scope' attribute on tables. |
|
88 ! Added %HTML.TargetBlank, which adds target="blank" to all outgoing links. |
|
89 ! Properly handle sub-lists directly nested inside of lists in |
|
90 a standards compliant way, by moving them into the preceding <li> |
|
91 ! Added %HTML.AllowedComments and %HTML.AllowedCommentsRegexp for |
|
92 limited allowed comments in untrusted situations. |
|
93 ! Implement iframes, and allow them to be used in untrusted mode with |
|
94 %HTML.SafeIframe and %URI.SafeIframeRegexp. Thanks Bradley M. Froehle |
|
95 <brad.froehle@gmail.com> for submitting an initial version of the patch. |
|
96 ! The Forms module now works properly for transitional doctypes. |
|
97 ! Added support for internationalized domain names. You need the PEAR |
|
98 Net_IDNA2 module to be in your path; if it is installed, ensure the |
|
99 class can be loaded and then set %Core.EnableIDNA to true. |
|
100 - Color keywords are now case insensitive. Thanks Yzmir Ramirez |
|
101 <yramirez-htmlpurifier@adicio.com> for reporting. |
|
102 - Explicitly initialize anonModule variable to null. |
|
103 - Do not duplicate nofollow if already present. Thanks 178 |
|
104 for reporting. |
|
105 - Do not add nofollow if hostname matches our current host. Thanks 178 |
|
106 for reporting, and Neike Taika-Tessaro for helping diagnose. |
|
107 - Do not unset parser variable; this fixes intermittent serialization |
|
108 problems. Thanks Neike Taika-Tessaro for reporting, bill |
|
109 <10010tiger@gmail.com> for diagnosing. |
|
110 - Fix iconv truncation bug, where non-UTF-8 target encodings see |
|
111 output truncated after around 8000 characters. Thanks Jörg Ludwig |
|
112 <joerg.ludwig@iserv.eu> for reporting. |
|
113 - Fix broken table content model for XHTML1.1 (and also earlier |
|
114 versions, although the W3C validator doesn't catch those violations). |
|
115 Thanks GlitchMr <glitch.mr@gmail.com> for reporting. |
|
116 |
|
117 4.3.0, released 2011-03-27 |
|
118 # Fixed broken caching of customized raw definitions, but requires an |
|
119 API change. The old API still works but will emit a warning, |
|
120 see http://htmlpurifier.org/docs/enduser-customize.html#optimized |
|
121 for how to upgrade your code. |
|
122 # Protect against Internet Explorer innerHTML behavior by specially |
|
123 treating attributes with backticks but no angled brackets, quotes or |
|
124 spaces. This constitutes a slight semantic change, which can be |
|
125 reverted using %Output.FixInnerHTML. Reported by Neike Taika-Tessaro |
|
126 and Mario Heiderich. |
|
127 # Protect against cssText/innerHTML by restricting allowed characters |
|
128 used in fonts further than mandated by the specification and encoding |
|
129 some extra special characters in URLs. Reported by Neike |
|
130 Taika-Tessaro and Mario Heiderich. |
|
131 ! Added %HTML.Nofollow to add rel="nofollow" to external links. |
|
132 ! More types of SPL autoloaders allowed on later versions of PHP. |
|
133 ! Implementations for position, top, left, right, bottom, z-index |
|
134 when %CSS.Trusted is on. |
|
135 ! Add %Cache.SerializerPermissions option for custom serializer |
|
136 directory/file permissions |
|
137 ! Fix longstanding bug in Flash support for non-IE browsers, and |
|
138 allow more wmode attributes. |
|
139 ! Add %CSS.AllowedFonts to restrict permissible font names. |
|
140 - Switch to an iterative traversal of the DOM, which prevents us |
|
141 from running out of stack space for deeply nested documents. |
|
142 Thanks Maxim Krizhanovsky for contributing a patch. |
|
143 - Make removal of conditional IE comments ungreedy; thanks Bernd |
|
144 for reporting. |
|
145 - Escape CDATA before removing Internet Explorer comments. |
|
146 - Fix removal of id attributes under certain conditions by ensuring |
|
147 armor attributes are preserved when recreating tags. |
|
148 - Check if schema.ser was corrupted. |
|
149 - Check if zend.ze1_compatibility_mode is on, and error out if it is. |
|
150 This safety check is only done for HTMLPurifier.auto.php; if you |
|
151 are using standalone or the specialized includes files, you're |
|
152 expected to know what you're doing. |
|
153 - Stop repeatedly writing the cache file after I'm done customizing a |
|
154 raw definition. Reported by ajh. |
|
155 - Switch to using require_once in the Bootstrap to work around bad |
|
156 interaction with Zend Debugger and APC. Reported by Antonio Parraga. |
|
157 - Fix URI handling when hostname is missing but scheme is present. |
|
158 Reported by Neike Taika-Tessaro. |
|
159 - Fix missing numeric entities on DirectLex; thanks Neike Taika-Tessaro |
|
160 for reporting. |
|
161 - Fix harmless notice from indexing into empty string. Thanks Matthijs |
|
162 Kooijman <matthijs@stdin.nl> for reporting. |
|
163 - Don't autoclose no parent elements are able to support the element |
|
164 that triggered the autoclose. In particular fixes strange behavior |
|
165 of stray <li> tags. Thanks pkuliga@gmail.com for reporting and |
|
166 Neike Taika-Tessaro <pinkgothic@gmail.com> for debugging assistance. |
|
167 |
|
168 4.2.0, released 2010-09-15 |
|
169 ! Added %Core.RemoveProcessingInstructions, which lets you remove |
|
170 <? ... ?> statements. |
|
171 ! Added %URI.DisableResources functionality; the directive originally |
|
172 did nothing. Thanks David Rothstein for reporting. |
|
173 ! Add documentation about configuration directive types. |
|
174 ! Add %CSS.ForbiddenProperties configuration directive. |
|
175 ! Add %HTML.FlashAllowFullScreen to permit embedded Flash objects |
|
176 to utilize full-screen mode. |
|
177 ! Add optional support for the <code>file</code> URI scheme, enable |
|
178 by explicitly setting %URI.AllowedSchemes. |
|
179 ! Add %Core.NormalizeNewlines options to allow turning off newline |
|
180 normalization. |
|
181 - Fix improper handling of Internet Explorer conditional comments |
|
182 by parser. Thanks zmonteca for reporting. |
|
183 - Fix missing attributes bug when running on Mac Snow Leopard and APC. |
|
184 Thanks sidepodcast for the fix. |
|
185 - Warn if an element is allowed, but an attribute it requires is |
|
186 not allowed. |
|
187 |
|
188 4.1.1, released 2010-05-31 |
|
189 - Fix undefined index warnings in maintenance scripts. |
|
190 - Fix bug in DirectLex for parsing elements with a single attribute |
|
191 with entities. |
|
192 - Rewrite CSS output logic for font-family and url(). Thanks Mario |
|
193 Heiderich <mario.heiderich@googlemail.com> for reporting and Takeshi |
|
194 Terada <t-terada@violet.plala.or.jp> for suggesting the fix. |
|
195 - Emit an error for CollectErrors if a body is extracted |
|
196 - Fix bug where in background-position for center keyword handling. |
|
197 - Fix infinite loop when a wrapper element is inserted in a context |
|
198 where it's not allowed. Thanks Lars <lars@renoz.dk> for reporting. |
|
199 - Remove +x bit and shebang from index.php; only supported mode is to |
|
200 explicitly call it with php. |
|
201 - Make test script less chatty when log_errors is on. |
|
202 |
|
203 4.1.0, released 2010-04-26 |
|
204 ! Support proprietary height attribute on table element |
|
205 ! Support YouTube slideshows that contain /cp/ in their URL. |
|
206 ! Support for data: URI scheme; not enabled by default, add it using |
|
207 %URI.AllowedSchemes |
|
208 ! Support flashvars when using %HTML.SafeObject and %HTML.SafeEmbed. |
|
209 ! Support for Internet Explorer compatibility with %HTML.SafeObject |
|
210 using %Output.FlashCompat. |
|
211 ! Handle <ol><ol> properly, by inserting the necessary <li> tag. |
|
212 - Always quote the insides of url(...) in CSS. |
|
213 |
|
214 4.0.0, released 2009-07-07 |
|
215 # APIs for ConfigSchema subsystem have substantially changed. See |
|
216 docs/dev-config-bcbreaks.txt for details; in essence, anything that |
|
217 had both namespace and directive now have a single unified key. |
|
218 # Some configuration directives were renamed, specifically: |
|
219 %AutoFormatParam.PurifierLinkifyDocURL -> %AutoFormat.PurifierLinkify.DocURL |
|
220 %FilterParam.ExtractStyleBlocksEscaping -> %Filter.ExtractStyleBlocks.Escaping |
|
221 %FilterParam.ExtractStyleBlocksScope -> %Filter.ExtractStyleBlocks.Scope |
|
222 %FilterParam.ExtractStyleBlocksTidyImpl -> %Filter.ExtractStyleBlocks.TidyImpl |
|
223 As usual, the old directive names will still work, but will throw E_NOTICE |
|
224 errors. |
|
225 # The allowed values for class have been relaxed to allow all of CDATA for |
|
226 doctypes that are not XHTML 1.1 or XHTML 2.0. For old behavior, set |
|
227 %Attr.ClassUseCDATA to false. |
|
228 # Instead of appending the content model to an old content model, a blank |
|
229 element will replace the old content model. You can use #SUPER to get |
|
230 the old content model. |
|
231 ! More robust support for name="" and id="" |
|
232 ! HTMLPurifier_Config::inherit($config) allows you to inherit one |
|
233 configuration, and have changes to that configuration be propagated |
|
234 to all of its children. |
|
235 ! Implement %HTML.Attr.Name.UseCDATA, which relaxes validation rules on |
|
236 the name attribute when set. Use with care. Thanks Ian Cook for |
|
237 sponsoring. |
|
238 ! Implement %AutoFormat.RemoveEmpty.RemoveNbsp, which removes empty |
|
239 tags that contain non-breaking spaces as well other whitespace. You |
|
240 can also modify which tags should have maintained with |
|
241 %AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions. |
|
242 ! Implement %Attr.AllowedClasses, which allows administrators to restrict |
|
243 classes users can use to a specified finite set of classes, and |
|
244 %Attr.ForbiddenClasses, which is the logical inverse. |
|
245 ! You can now maintain your own configuration schema directories by |
|
246 creating a config-schema.php file or passing an extra argument. Check |
|
247 docs/dev-config-schema.html for more details. |
|
248 ! Added HTMLPurifier_Config->serialize() method, which lets you save away |
|
249 your configuration in a compact serial file, which you can unserialize |
|
250 and use directly without having to go through the overhead of setup. |
|
251 - Fix bug where URIDefinition would not get cleared if it's directives got |
|
252 changed. |
|
253 - Fix fatal error in HTMLPurifier_Encoder on certain platforms (probably NetBSD 5.0) |
|
254 - Fix bug in Linkify autoformatter involving <a><span>http://foo</span></a> |
|
255 - Make %URI.Munge not apply to links that have the same host as your host. |
|
256 - Prevent stray </body> tag from truncating output, if a second </body> |
|
257 is present. |
|
258 . Created script maintenance/rename-config.php for renaming a configuration |
|
259 directive while maintaining its alias. This script does not change source code. |
|
260 . Implement namespace locking for definition construction, to prevent |
|
261 bugs where a directive is used for definition construction but is not |
|
262 used to construct the cache hash. |
|
263 |
|
264 3.3.0, released 2009-02-16 |
|
265 ! Implement CSS property 'overflow' when %CSS.AllowTricky is true. |
|
266 ! Implement generic property list classess |
|
267 - Fix bug with testEncodingSupportsASCII() algorithm when iconv() implementation |
|
268 does not do the "right thing" with characters not supported in the output |
|
269 set. |
|
270 - Spellcheck UTF-8: The Secret To Character Encoding |
|
271 - Fix improper removal of the contents of elements with only whitespace. Thanks |
|
272 Eric Wald for reporting. |
|
273 - Fix broken test suite in versions of PHP without spl_autoload_register() |
|
274 - Fix degenerate case with YouTube filter involving double hyphens. |
|
275 Thanks Pierre Attar for reporting. |
|
276 - Fix YouTube rendering problem on certain versions of Firefox. |
|
277 - Fix CSSDefinition Printer problems with decorators |
|
278 - Add text parameter to unit tests, forces text output |
|
279 . Add verbose mode to command line test runner, use (--verbose) |
|
280 . Turn on unit tests for UnitConverter |
|
281 . Fix missing version number in configuration %Attr.DefaultImageAlt (added 3.2.0) |
|
282 . Fix newline errors that caused spurious failures when CRLF HTML Purifier was |
|
283 tested on Linux. |
|
284 . Removed trailing whitespace from all text files, see |
|
285 remote-trailing-whitespace.php maintenance script. |
|
286 . Convert configuration to use property list backend. |
|
287 |
|
288 3.2.0, released 2008-10-31 |
|
289 # Using %Core.CollectErrors forces line number/column tracking on, whereas |
|
290 previously you could theoretically turn it off. |
|
291 # HTMLPurifier_Injector->notifyEnd() is formally deprecated. Please |
|
292 use handleEnd() instead. |
|
293 ! %Output.AttrSort for when you need your attributes in alphabetical order to |
|
294 deal with a bug in FCKEditor. Requested by frank farmer. |
|
295 ! Enable HTML comments when %HTML.Trusted is on. Requested by Waldo Jaquith. |
|
296 ! Proper support for name attribute. It is now allowed and equivalent to the id |
|
297 attribute in a and img tags, and is only converted to id when %HTML.TidyLevel |
|
298 is heavy (for all doctypes). |
|
299 ! %AutoFormat.RemoveEmpty to remove some empty tags from documents. Please don't |
|
300 use on hand-written HTML. |
|
301 ! Add error-cases for unsupported elements in MakeWellFormed. This enables |
|
302 the strategy to be used, standalone, on untrusted input. |
|
303 ! %Core.AggressivelyFixLt is on by default. This causes more sensible |
|
304 processing of left angled brackets in smileys and other whatnot. |
|
305 ! Test scripts now have a 'type' parameter, which lets you say 'htmlpurifier', |
|
306 'phpt', 'vtest', etc. in order to only execute those tests. This supercedes |
|
307 the --only-phpt parameter, although for backwards-compatibility the flag |
|
308 will still work. |
|
309 ! AutoParagraph auto-formatter will now preserve double-newlines upon output. |
|
310 Users who are not performing inbound filtering, this may seem a little |
|
311 useless, but as a bonus, the test suite and handling of edge cases is also |
|
312 improved. |
|
313 ! Experimental implementation of forms for %HTML.Trusted |
|
314 ! Track column numbers when maintain line numbers is on |
|
315 ! Proprietary 'background' attribute on table-related elements converted into |
|
316 corresponding CSS. Thanks Fusemail for sponsoring this feature! |
|
317 ! Add forward(), forwardUntilEndToken(), backward() and current() to Injector |
|
318 supertype. |
|
319 ! HTMLPurifier_Injector->handleEnd() permits modification to end tokens. The |
|
320 time of operation varies slightly from notifyEnd() as *all* end tokens are |
|
321 processed by the injector before they are subject to the well-formedness rules. |
|
322 ! %Attr.DefaultImageAlt allows overriding default behavior of setting alt to |
|
323 basename of image when not present. |
|
324 ! %AutoFormat.DisplayLinkURI neuters <a> tags into plain text URLs. |
|
325 - Fix two bugs in %URI.MakeAbsolute; one involving empty paths in base URLs, |
|
326 the other involving an undefined $is_folder error. |
|
327 - Throw error when %Core.Encoding is set to a spurious value. Previously, |
|
328 this errored silently and returned false. |
|
329 - Redirected stderr to stdout for flush error output. |
|
330 - %URI.DisableExternal will now use the host in %URI.Base if %URI.Host is not |
|
331 available. |
|
332 - Do not re-munge URL if the output URL has the same host as the input URL. |
|
333 Requested by Chris. |
|
334 - Fix error in documentation regarding %Filter.ExtractStyleBlocks |
|
335 - Prevent <![CDATA[<body></body>]]> from triggering %Core.ConvertDocumentToFragment |
|
336 - Fix bug with inline elements in blockquotes conflicting with strict doctype |
|
337 - Detect if HTML support is disabled for DOM by checking for loadHTML() method. |
|
338 - Fix bug where dots and double-dots in absolute URLs without hostname were |
|
339 not collapsed by URIFilter_MakeAbsolute. |
|
340 - Fix bug with anonymous modules operating on SafeEmbed or SafeObject elements |
|
341 by reordering their addition. |
|
342 - Will now throw exception on many error conditions during lexer creation; also |
|
343 throw an exception when MaintainLineNumbers is true, but a non-tracksLineNumbers |
|
344 is being used. |
|
345 - Detect if domxml extension is loaded, and use DirectLEx accordingly. |
|
346 - Improve handling of big numbers with floating point arithmetic in UnitConverter. |
|
347 Reported by David Morton. |
|
348 . Strategy_MakeWellFormed now operates in-place, saving memory and allowing |
|
349 for more interesting filter-backtracking |
|
350 . New HTMLPurifier_Injector->rewind() functionality, allows injectors to rewind |
|
351 index to reprocess tokens. |
|
352 . StringHashParser now allows for multiline sections with "empty" content; |
|
353 previously the section would remain undefined. |
|
354 . Added --quick option to multitest.php, which tests only the most recent |
|
355 release for each series. |
|
356 . Added --distro option to multitest.php, which accepts either 'normal' or |
|
357 'standalone'. This supercedes --exclude-normal and --exclude-standalone |
|
358 |
|
359 3.1.1, released 2008-06-19 |
|
360 # %URI.Munge now, by default, does not munge resources (for example, <img src="">) |
|
361 In order to enable this again, please set %URI.MungeResources to true. |
|
362 ! More robust imagecrash protection with height/width CSS with %CSS.MaxImgLength, |
|
363 and height/width HTML with %HTML.MaxImgLength. |
|
364 ! %URI.MungeSecretKey for secure URI munging. Thanks Chris |
|
365 for sponsoring this feature. Check out the corresponding documentation |
|
366 for details. (Att Nightly testers: The API for this feature changed before |
|
367 the general release. Namely, rename your directives %URI.SecureMungeSecretKey => |
|
368 %URI.MungeSecretKey and and %URI.SecureMunge => %URI.Munge) |
|
369 ! Implemented post URI filtering. Set member variable $post to true to set |
|
370 a URIFilter as such. |
|
371 ! Allow modules to define injectors via $info_injector. Injectors are |
|
372 automatically disabled if injector's needed elements are not found. |
|
373 ! Support for "safe" objects added, use %HTML.SafeObject and %HTML.SafeEmbed. |
|
374 Thanks Chris for sponsoring. If you've been using ad hoc code from the |
|
375 forums, PLEASE use this instead. |
|
376 ! Added substitutions for %e, %n, %a and %p in %URI.Munge (in order, |
|
377 embedded, tag name, attribute name, CSS property name). See %URI.Munge |
|
378 for more details. Requested by Jochem Blok. |
|
379 - Disable percent height/width attributes for img. |
|
380 - AttrValidator operations are now atomic; updates to attributes are not |
|
381 manifest in token until end of operations. This prevents naughty internal |
|
382 code from directly modifying CurrentToken when they're not supposed to. |
|
383 This semantics change was requested by frank farmer. |
|
384 - Percent encoding checks enabled for URI query and fragment |
|
385 - Fix stray backslashes in font-family; CSS Unicode character escapes are |
|
386 now properly resolved (although *only* in font-family). Thanks Takeshi Terada |
|
387 for reporting. |
|
388 - Improve parseCDATA algorithm to take into account newline normalization |
|
389 - Account for browser confusion between Yen character and backslash in |
|
390 Shift_JIS encoding. This fix generalizes to any other encoding which is not |
|
391 a strict superset of printable ASCII. Thanks Takeshi Terada for reporting. |
|
392 - Fix missing configuration parameter in Generator calls. Thanks vs for the |
|
393 partial patch. |
|
394 - Improved adherence to Unicode by checking for non-character codepoints. |
|
395 Thanks Geoffrey Sneddon for reporting. This may result in degraded |
|
396 performance for extremely large inputs. |
|
397 - Allow CSS property-value pair ''text-decoration: none''. Thanks Jochem Blok |
|
398 for reporting. |
|
399 . Added HTMLPurifier_UnitConverter and HTMLPurifier_Length for convenient |
|
400 handling of CSS-style lengths. HTMLPurifier_AttrDef_CSS_Length now uses |
|
401 this class. |
|
402 . API of HTMLPurifier_AttrDef_CSS_Length changed from __construct($disable_negative) |
|
403 to __construct($min, $max). __construct(true) is equivalent to |
|
404 __construct('0'). |
|
405 . Added HTMLPurifier_AttrDef_Switch class |
|
406 . Rename HTMLPurifier_HTMLModule_Tidy->construct() to setup() and bubble method |
|
407 up inheritance hierarchy to HTMLPurifier_HTMLModule. All HTMLModules |
|
408 get this called with the configuration object. All modules now |
|
409 use this rather than __construct(), although legacy code using constructors |
|
410 will still work--the new format, however, lets modules access the |
|
411 configuration object for HTML namespace dependant tweaks. |
|
412 . AttrDef_HTML_Pixels now takes a single construction parameter, pixels. |
|
413 . ConfigSchema data-structure heavily optimized; on average it uses a third |
|
414 the memory it did previously. The interface has changed accordingly, |
|
415 consult changes to HTMLPurifier_Config for details. |
|
416 . Variable parsing types now are magic integers instead of strings |
|
417 . Added benchmark for ConfigSchema |
|
418 . HTMLPurifier_Generator requires $config and $context parameters. If you |
|
419 don't know what they should be, use HTMLPurifier_Config::createDefault() |
|
420 and new HTMLPurifier_Context(). |
|
421 . Printers now properly distinguish between output configuration, and |
|
422 target configuration. This is not applicable to scripts using |
|
423 the Printers for HTML Purifier related tasks. |
|
424 . HTML/CSS Printers must be primed with prepareGenerator($gen_config), otherwise |
|
425 fatal errors will ensue. |
|
426 . URIFilter->prepare can return false in order to abort loading of the filter |
|
427 . Factory for AttrDef_URI implemented, URI#embedded to indicate URI that embeds |
|
428 an external resource. |
|
429 . %URI.Munge functionality factored out into a post-filter class. |
|
430 . Added CurrentCSSProperty context variable during CSS validation |
|
431 |
|
432 3.1.0, released 2008-05-18 |
|
433 # Unnecessary references to objects (vestiges of PHP4) removed from method |
|
434 signatures. The following methods do not need references when assigning from |
|
435 them and will result in E_STRICT errors if you try: |
|
436 + HTMLPurifier_Config->get*Definition() [* = HTML, CSS] |
|
437 + HTMLPurifier_ConfigSchema::instance() |
|
438 + HTMLPurifier_DefinitionCacheFactory::instance() |
|
439 + HTMLPurifier_DefinitionCacheFactory->create() |
|
440 + HTMLPurifier_DoctypeRegistry->register() |
|
441 + HTMLPurifier_DoctypeRegistry->get() |
|
442 + HTMLPurifier_HTMLModule->addElement() |
|
443 + HTMLPurifier_HTMLModule->addBlankElement() |
|
444 + HTMLPurifier_LanguageFactory::instance() |
|
445 # Printer_ConfigForm's get*() functions were static-ified |
|
446 # %HTML.ForbiddenAttributes requires attribute declarations to be in the |
|
447 form of tag@attr, NOT tag.attr (which will throw an error and won't do |
|
448 anything). This is for forwards compatibility with XML; you'd do best |
|
449 to migrate an %HTML.AllowedAttributes directives to this syntax too. |
|
450 ! Allow index to be false for config from form creation |
|
451 ! Added HTMLPurifier::VERSION constant |
|
452 ! Commas, not dashes, used for serializer IDs. This change is forwards-compatible |
|
453 and allows for version numbers like "3.1.0-dev". |
|
454 ! %HTML.Allowed deals gracefully with whitespace anywhere, anytime! |
|
455 ! HTML Purifier's URI handling is a lot more robust, with much stricter |
|
456 validation checks and better percent encoding handling. Thanks Gareth Heyes |
|
457 for indicating security vulnerabilities from lax percent encoding. |
|
458 ! Bootstrap autoloader deals more robustly with classes that don't exist, |
|
459 preventing class_exists($class, true) from barfing. |
|
460 - InterchangeBuilder now alphabetizes its lists |
|
461 - Validation error in configdoc output fixed |
|
462 - Iconv and other encoding errors muted even with custom error handlers that |
|
463 do not honor error_reporting |
|
464 - Add protection against imagecrash attack with CSS height/width |
|
465 - HTMLPurifier::instance() created for consistency, is equivalent to getInstance() |
|
466 - Fixed and revamped broken ConfigForm smoketest |
|
467 - Bug with bool/null fields in Printer_ConfigForm fixed |
|
468 - Bug with global forbidden attributes fixed |
|
469 - Improved error messages for allowed and forbidden HTML elements and attributes |
|
470 - Missing (or null) in configdoc documentation restored |
|
471 - If DOM throws and exception during parsing with PH5P (occurs in newer versions |
|
472 of DOM), HTML Purifier punts to DirectLex |
|
473 - Fatal error with unserialization of ScriptRequired |
|
474 - Created directories are now chmod'ed properly |
|
475 - Fixed bug with fallback languages in LanguageFactory |
|
476 - Standalone testing setup properly with autoload |
|
477 . Out-of-date documentation revised |
|
478 . UTF-8 encoding check optimization as suggested by Diego |
|
479 . HTMLPurifier_Error removed in favor of exceptions |
|
480 . More copy() function removed; should use clone instead |
|
481 . More extensive unit tests for HTMLDefinition |
|
482 . assertPurification moved to central harness |
|
483 . HTMLPurifier_Generator accepts $config and $context parameters during |
|
484 instantiation, not runtime |
|
485 . Double-quotes outside of attribute values are now unescaped |
|
486 |
|
487 3.1.0rc1, released 2008-04-22 |
|
488 # Autoload support added. Internal require_once's removed in favor of an |
|
489 explicit require list or autoloading. To use HTML Purifier, |
|
490 you must now either use HTMLPurifier.auto.php |
|
491 or HTMLPurifier.includes.php; setting the include path and including |
|
492 HTMLPurifier.php is insufficient--in such cases include HTMLPurifier.autoload.php |
|
493 as well to register our autoload handler (or modify your autoload function |
|
494 to check HTMLPurifier_Bootstrap::getPath($class)). You can also use |
|
495 HTMLPurifier.safe-includes.php for a less performance friendly but more |
|
496 user-friendly library load. |
|
497 # HTMLPurifier_ConfigSchema static functions are officially deprecated. Schema |
|
498 information is stored in the ConfigSchema directory, and the |
|
499 maintenance/generate-schema-cache.php generates the schema.ser file, which |
|
500 is now instantiated. Support for userland schema changes coming soon! |
|
501 # HTMLPurifier_Config will now throw E_USER_NOTICE when you use a directive |
|
502 alias; to get rid of these errors just modify your configuration to use |
|
503 the new directive name. |
|
504 # HTMLPurifier->addFilter is deprecated; built-in filters can now be |
|
505 enabled using %Filter.$filter_name or by setting your own filters using |
|
506 %Filter.Custom |
|
507 # Directive-level safety properties superceded in favor of module-level |
|
508 safety. Internal method HTMLModule->addElement() has changed, although |
|
509 the externally visible HTMLDefinition->addElement has *not* changed. |
|
510 ! Extra utility classes for testing and non-library operations can |
|
511 be found in extras/. Specifically, these are FSTools and ConfigDoc. |
|
512 You may find a use for these in your own project, but right now they |
|
513 are highly experimental and volatile. |
|
514 ! Integration with PHPT allows for automated smoketests |
|
515 ! Limited support for proprietary HTML elements, namely <marquee>, sponsored |
|
516 by Chris. You can enable them with %HTML.Proprietary if your client |
|
517 demands them. |
|
518 ! Support for !important CSS cascade modifier. By default, this will be stripped |
|
519 from CSS, but you can enable it using %CSS.AllowImportant |
|
520 ! Support for display and visibility CSS properties added, set %CSS.AllowTricky |
|
521 to true to use them. |
|
522 ! HTML Purifier now has its own Exception hierarchy under HTMLPurifier_Exception. |
|
523 Developer error (not enduser error) can cause these to be triggered. |
|
524 ! Experimental kses() wrapper introduced with HTMLPurifier.kses.php |
|
525 ! Finally %CSS.AllowedProperties for tweaking allowed CSS properties without |
|
526 mucking around with HTMLPurifier_CSSDefinition |
|
527 ! ConfigDoc output has been enhanced with version and deprecation info. |
|
528 ! %HTML.ForbiddenAttributes and %HTML.ForbiddenElements implemented. |
|
529 - Autoclose now operates iteratively, i.e. <span><span><div> now has |
|
530 both span tags closed. |
|
531 - Various HTMLPurifier_Config convenience functions now accept another parameter |
|
532 $schema which defines what HTMLPurifier_ConfigSchema to use besides the |
|
533 global default. |
|
534 - Fix bug with trusted script handling in libxml versions later than 2.6.28. |
|
535 - Fix bug in ExtractStyleBlocks with comments in style tags |
|
536 - Fix bug in comment parsing for DirectLex |
|
537 - Flush output now displayed when in command line mode for unit tester |
|
538 - Fix bug with rgb(0, 1, 2) color syntax with spaces inside shorthand syntax |
|
539 - HTMLPurifier_HTMLDefinition->addAttribute can now be called multiple times |
|
540 on the same element without emitting errors. |
|
541 - Fixed fatal error in PH5P lexer with invalid tag names |
|
542 . Plugins now get their own changelogs according to project conventions. |
|
543 . Convert tokens to use instanceof, reducing memory footprint and |
|
544 improving comparison speed. |
|
545 . Dry runs now supported in SimpleTest; testing facilities improved |
|
546 . Bootstrap class added for handling autoloading functionality |
|
547 . Implemented recursive glob at FSTools->globr |
|
548 . ConfigSchema now has instance methods for all corresponding define* |
|
549 static methods. |
|
550 . A couple of new historical maintenance scripts were added. |
|
551 . HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php split into two files |
|
552 . tests/index.php can now be run from any directory. |
|
553 . HTMLPurifier_Token subclasses split into seperate files |
|
554 . HTMLPURIFIER_PREFIX now is defined in Bootstrap.php, NOT HTMLPurifier.php |
|
555 . HTMLPURIFIER_PREFIX can now be defined outside of HTML Purifier |
|
556 . New --php=php flag added, allows PHP executable to be specified (command |
|
557 line only!) |
|
558 . htmlpurifier_add_test() preferred method to translate test files in to |
|
559 classes, because it handles PHPT files too. |
|
560 . Debugger class is deprecated and will be removed soon. |
|
561 . Command line argument parsing for testing scripts revamped, now --opt value |
|
562 format is supported. |
|
563 . Smoketests now cleanup after magic quotes |
|
564 . Generator now can output comments (however, comments are still stripped |
|
565 from HTML Purifier output) |
|
566 . HTMLPurifier_ConfigSchema->validate() deprecated in favor of |
|
567 HTMLPurifier_VarParser->parse() |
|
568 . Integers auto-cast into float type by VarParser. |
|
569 . HTMLPURIFIER_STRICT removed; no validation is performed on runtime, only |
|
570 during cache generation |
|
571 . Reordered script calls in maintenance/flush.php |
|
572 . Command line scripts now honor exit codes |
|
573 . When --flush fails in unit testers, abort tests and print message |
|
574 . Improved documentation in docs/dev-flush.html about the maintenance scripts |
|
575 . copy() methods removed in favor of clone keyword |
|
576 |
|
577 3.0.0, released 2008-01-06 |
|
578 # HTML Purifier is PHP 5 only! The 2.1.x branch will be maintained |
|
579 until PHP 4 is completely deprecated, but no new features will be added |
|
580 to it. |
|
581 + Visibility declarations added |
|
582 + Constructor methods renamed to __construct() |
|
583 + PHP4 reference cruft removed (in progress) |
|
584 ! CSS properties are now case-insensitive |
|
585 ! DefinitionCacheFactory now can register new implementations |
|
586 ! New HTMLPurifier_Filter_ExtractStyleBlocks for extracting <style> from |
|
587 documents and cleaning their contents up. Requires the CSSTidy library |
|
588 <http://csstidy.sourceforge.net/>. You can access the blocks with the |
|
589 'StyleBlocks' Context variable ($purifier->context->get('StyleBlocks')). |
|
590 The output CSS can also be "scoped" for a specific element, use: |
|
591 %Filter.ExtractStyleBlocksScope |
|
592 ! Experimental support for some proprietary CSS attributes allowed: |
|
593 opacity (and all of the browser-specific equivalents) and scrollbar colors. |
|
594 Enable by setting %CSS.Proprietary to true. |
|
595 - Colors missing # but in hex form will be corrected |
|
596 - CSS Number algorithm improved |
|
597 - Unit testing and multi-testing now on steroids: command lines, |
|
598 XML output, and other goodies now added. |
|
599 . Unit tests for Injector improved |
|
600 . New classes: |
|
601 + HTMLPurifier_AttrDef_CSS_AlphaValue |
|
602 + HTMLPurifier_AttrDef_CSS_Filter |
|
603 . Multitest now has a file docblock |
|
604 |
|
605 2.1.3, released 2007-11-05 |
|
606 ! tests/multitest.php allows you to test multiple versions by running |
|
607 tests/index.php through multiple interpreters using `phpv` shell |
|
608 script (you must provide this script!) |
|
609 - Fixed poor include ordering for Email URI AttrDefs, causes fatal errors |
|
610 on some systems. |
|
611 - Injector algorithm further refined: off-by-one error regarding skip |
|
612 counts for dormant injectors fixed |
|
613 - Corrective blockquote definition now enabled for HTML 4.01 Strict |
|
614 - Fatal error when <img> tag (or any other element with required attributes) |
|
615 has 'id' attribute fixed, thanks NykO18 for reporting |
|
616 - Fix warning emitted when a non-supported URI scheme is passed to the |
|
617 MakeAbsolute URIFilter, thanks NykO18 (again) |
|
618 - Further refine AutoParagraph injector. Behavior inside of elements |
|
619 allowing paragraph tags clarified: only inline content delimeted by |
|
620 double newlines (not block elements) are paragraphed. |
|
621 - Buggy treatment of end tags of elements that have required attributes |
|
622 fixed (does not manifest on default tag-set) |
|
623 - Spurious internal content reorganization error suppressed |
|
624 - HTMLDefinition->addElement now returns a reference to the created |
|
625 element object, as implied by the documentation |
|
626 - Phorum mod's HTML Purifier help message expanded (unreleased elsewhere) |
|
627 - Fix a theoretical class of infinite loops from DirectLex reported |
|
628 by Nate Abele |
|
629 - Work around unnecessary DOMElement type-cast in PH5P that caused errors |
|
630 in PHP 5.1 |
|
631 - Work around PHP 4 SimpleTest lack-of-error complaining for one-time-only |
|
632 HTMLDefinition errors, this may indicate problems with error-collecting |
|
633 facilities in PHP 5 |
|
634 - Make ErrorCollectorEMock work in both PHP 4 and PHP 5 |
|
635 - Make PH5P work with PHP 5.0 by removing unnecessary array parameter typedef |
|
636 . %Core.AcceptFullDocuments renamed to %Core.ConvertDocumentToFragment |
|
637 to better communicate its purpose |
|
638 . Error unit tests can now specify the expectation of no errors. Future |
|
639 iterations of the harness will be extremely strict about what errors |
|
640 are allowed |
|
641 . Extend Injector hooks to allow for more powerful injector routines |
|
642 . HTMLDefinition->addBlankElement created, as according to the HTMLModule |
|
643 method |
|
644 . Doxygen configuration file updated, with minor improvements |
|
645 . Test runner now checks for similarly named files in conf/ directory too. |
|
646 . Minor cosmetic change to flush-definition-cache.php: trailing newline is |
|
647 outputted |
|
648 . Maintenance script for generating PH5P patch added, original PH5P source |
|
649 file also added under version control |
|
650 . Full unit test runner script title made more descriptive with PHP version |
|
651 . Updated INSTALL file to state that 4.3.7 is the earliest version we |
|
652 are actively testing |
|
653 |
|
654 2.1.2, released 2007-09-03 |
|
655 ! Implemented Object module for trusted users |
|
656 ! Implemented experimental HTML5 parsing mode using PH5P. To use, add |
|
657 this to your code: |
|
658 require_once 'HTMLPurifier/Lexer/PH5P.php'; |
|
659 $config->set('Core', 'LexerImpl', 'PH5P'); |
|
660 Note that this Lexer introduces some classes not in the HTMLPurifier |
|
661 namespace. Also, this is PHP5 only. |
|
662 ! CSS property border-spacing implemented |
|
663 - Fix non-visible parsing error in DirectLex with empty tags that have |
|
664 slashes inside attribute values. |
|
665 - Fix typo in CSS definition: border-collapse:seperate; was incorrectly |
|
666 accepted as valid CSS. Usually non-visible, because this styling is the |
|
667 default for tables in most browsers. Thanks Brett Zamir for pointing |
|
668 this out. |
|
669 - Fix validation errors in configuration form |
|
670 - Hammer out a bunch of edge-case bugs in the standalone distribution |
|
671 - Inclusion reflection removed from URISchemeRegistry; you must manually |
|
672 include any new schema files you wish to use |
|
673 - Numerous typo fixes in documentation thanks to Brett Zamir |
|
674 . Unit test refactoring for one logical test per test function |
|
675 . Config and context parameters in ComplexHarness deprecated: instead, edit |
|
676 the $config and $context member variables |
|
677 . HTML wrapper in DOMLex now takes DTD identifiers into account; doesn't |
|
678 really make a difference, but is good for completeness sake |
|
679 . merge-library.php script refactored for greater code reusability and |
|
680 PHP4 compatibility |
|
681 |
|
682 2.1.1, released 2007-08-04 |
|
683 - Fix show-stopper bug in %URI.MakeAbsolute functionality |
|
684 - Fix PHP4 syntax error in standalone version |
|
685 . Add prefix directory to include path for standalone, this prevents |
|
686 other installations from clobbering the standalone's URI schemes |
|
687 . Single test methods can be invoked by prefixing with __only |
|
688 |
|
689 2.1.0, released 2007-08-02 |
|
690 # flush-htmldefinition-cache.php superseded in favor of a generic |
|
691 flush-definition-cache.php script, you can clear a specific cache |
|
692 by passing its name as a parameter to the script |
|
693 ! Phorum mod implemented for HTML Purifier |
|
694 ! With %Core.AggressivelyFixLt, <3 and similar emoticons no longer |
|
695 trigger HTML removal in PHP5 (DOMLex). This directive is not necessary |
|
696 for PHP4 (DirectLex). |
|
697 ! Standalone file now available, which greatly reduces the amount of |
|
698 includes (although there are still a few files that reside in the |
|
699 standalone folder) |
|
700 ! Relative URIs can now be transformed into their absolute equivalents |
|
701 using %URI.Base and %URI.MakeAbsolute |
|
702 ! Ruby implemented for XHTML 1.1 |
|
703 ! You can now define custom URI filtering behavior, see enduser-uri-filter.html |
|
704 for more details |
|
705 ! UTF-8 font names now supported in CSS |
|
706 - AutoFormatters emit friendly error messages if tags or attributes they |
|
707 need are not allowed |
|
708 - ConfigForm's compactification of directive names is now configurable |
|
709 - AutoParagraph autoformatter algorithm refined after field-testing |
|
710 - XHTML 1.1 now applies XHTML 1.0 Strict cleanup routines, namely |
|
711 blockquote wrapping |
|
712 - Contents of <style> tags removed by default when tags are removed |
|
713 . HTMLPurifier_Config->getSerial() implemented, this is extremely useful |
|
714 for output cache invalidation |
|
715 . ConfigForm printer now can retrieve CSS and JS files as strings, in |
|
716 case HTML Purifier's directory is not publically accessible |
|
717 . Introduce new text/itext configuration directive values: these represent |
|
718 longer strings that would be more appropriately edited with a textarea |
|
719 . Allow newlines to act as separators for lists, hashes, lookups and |
|
720 %HTML.Allowed |
|
721 . ConfigForm generates textareas instead of text inputs for lists, hashes, |
|
722 lookups, text and itext fields |
|
723 . Hidden element content removal genericized: %Core.HiddenElements can |
|
724 be used to customize this behavior, by default <script> and <style> are |
|
725 hidden |
|
726 . Added HTMLPURIFIER_PREFIX constant, should be used instead of dirname(__FILE__) |
|
727 . Custom ChildDef added to default include list |
|
728 . URIScheme reflection improved: will not attempt to include file if class |
|
729 already exists. May clobber autoload, so I need to keep an eye on it |
|
730 . ConfigSchema heavily optimized, will only collect information and validate |
|
731 definitions when HTMLPURIFIER_SCHEMA_STRICT is true. |
|
732 . AttrDef_URI unit tests and implementation refactored |
|
733 . benchmarks/ directory now protected from public view with .htaccess file; |
|
734 run the tests via command line |
|
735 . URI scheme is munged off if there is no authority and the scheme is the |
|
736 default one |
|
737 . All unit tests inherit from HTMLPurifier_Harness, not UnitTestCase |
|
738 . Interface for URIScheme changed |
|
739 . Generic URI object to hold components of URI added, most systems involved |
|
740 in URI validation have been migrated to use it |
|
741 . Custom filtering for URIs factored out to URIDefinition interface for |
|
742 maximum extensibility |
|
743 |
|
744 2.0.1, released 2007-06-27 |
|
745 ! Tag auto-closing now based on a ChildDef heuristic rather than a |
|
746 manually set auto_close array; some behavior may change |
|
747 ! Experimental AutoFormat functionality added: auto-paragraph and |
|
748 linkify your HTML input by setting %AutoFormat.AutoParagraph and |
|
749 %AutoFormat.Linkify to true |
|
750 ! Newlines normalized internally, and then converted back to the |
|
751 value of PHP_EOL. If this is not desired, set your newline format |
|
752 using %Output.Newline. |
|
753 ! Beta error collection, messages are implemented for the most generic |
|
754 cases involving Lexing or Strategies |
|
755 - Clean up special case code for <script> tags |
|
756 - Reorder includes for DefinitionCache decorators, fixes a possible |
|
757 missing class error |
|
758 - Fixed bug where manually modified definitions were not saved via cache |
|
759 (mostly harmless, except for the fact that it would be a little slower) |
|
760 - Configuration objects with different serials do not clobber each |
|
761 others when revision numbers are unequal |
|
762 - Improve Serializer DefinitionCache directory permissions checks |
|
763 - DefinitionCache no longer throws errors when it encounters old |
|
764 serial files that do not conform to the current style |
|
765 - Stray xmlns attributes removed from configuration documentation |
|
766 - configForm.php smoketest no longer has XSS vulnerability due to |
|
767 unescaped print_r output |
|
768 - Printer adheres to configuration's directives on output format |
|
769 - Fix improperly named form field in ConfigForm printer |
|
770 . Rewire some test-cases to swallow errors rather than expect them |
|
771 . HTMLDefinition printer updated with some of the new attributes |
|
772 . DefinitionCache keys reordered to reflect precedence: version number, |
|
773 hash, then revision number |
|
774 . %Core.DefinitionCache renamed to %Cache.DefinitionImpl |
|
775 . Interlinking in configuration documentation added using |
|
776 Injector_PurifierLinkify |
|
777 . Directives now keep track of aliases to themselves |
|
778 . Error collector now requires a severity to be passed, use PHP's internal |
|
779 error constants for this |
|
780 . HTMLPurifier_Config::getAllowedDirectivesForForm implemented, allows |
|
781 much easier selective embedding of configuration values |
|
782 . Doctype objects now accept public and system DTD identifiers |
|
783 . %HTML.Doctype is now constrained by specific values, to specify a custom |
|
784 doctype use new %HTML.CustomDoctype |
|
785 . ConfigForm truncates long directives to keep the form small, and does |
|
786 not re-output namespaces |
|
787 |
|
788 2.0.0, released 2007-06-20 |
|
789 # Completely refactored HTMLModuleManager, decentralizing safety |
|
790 information |
|
791 # Transform modules changed to Tidy modules, which offer more flexibility |
|
792 and better modularization |
|
793 # Configuration object now finalizes itself when a read operation is |
|
794 performed on it, ensuring that its internal state stays consistent. |
|
795 To revert this behavior, you can set the $autoFinalize member variable |
|
796 off, but it's not recommended. |
|
797 # New compact syntax for AttrDef objects that can be used to instantiate |
|
798 new objects via make() |
|
799 # Definitions (esp. HTMLDefinition) are now cached for a significant |
|
800 performance boost. You can disable caching by setting %Core.DefinitionCache |
|
801 to null. You CANNOT edit raw definitions without setting the corresponding |
|
802 DefinitionID directive (%HTML.DefinitionID for HTMLDefinition). |
|
803 # Contents between <script> tags are now completely removed if <script> |
|
804 is not allowed |
|
805 # Prototype-declarations for Lexer removed in favor of configuration |
|
806 determination of Lexer implementations. |
|
807 ! HTML Purifier now works in PHP 4.3.2. |
|
808 ! Configuration form-editing API makes tweaking HTMLPurifier_Config a |
|
809 breeze! |
|
810 ! Configuration directives that accept hashes now allow new string |
|
811 format: key1:value1,key2:value2 |
|
812 ! ConfigDoc now factored into OOP design |
|
813 ! All deprecated elements now natively supported |
|
814 ! Implement TinyMCE styled whitelist specification format in |
|
815 %HTML.Allowed |
|
816 ! Config object gives more friendly error messages when things go wrong |
|
817 ! Advanced API implemented: easy functions for creating elements (addElement) |
|
818 and attributes (addAttribute) on HTMLDefinition |
|
819 ! Add native support for required attributes |
|
820 - Deprecated and removed EnableRedundantUTF8Cleaning. It didn't even work! |
|
821 - DOMLex will not emit errors when a custom error handler that does not |
|
822 honor error_reporting is used |
|
823 - StrictBlockquote child definition refrains from wrapping whitespace |
|
824 in tags now. |
|
825 - Bug resulting from tag transforms to non-allowed elements fixed |
|
826 - ChildDef_Custom's regex generation has been improved, removing several |
|
827 false positives |
|
828 . Unit test for ElementDef created, ElementDef behavior modified to |
|
829 be more flexible |
|
830 . Added convenience functions for HTMLModule constructors |
|
831 . AttrTypes now has accessor functions that should be used instead |
|
832 of directly manipulating info |
|
833 . TagTransform_Center deprecated in favor of generic TagTransform_Simple |
|
834 . Add extra protection in AttrDef_URI against phantom Schemes |
|
835 . Doctype object added to HTMLDefinition which describes certain aspects |
|
836 of the operational document type |
|
837 . Lexer is now pre-emptively included, with a conditional include for the |
|
838 PHP5 only version. |
|
839 . HTMLDefinition and CSSDefinition have a common parent class: Definition. |
|
840 . DirectLex can now track line-numbers |
|
841 . Preliminary error collector is in place, although no code actually reports |
|
842 errors yet |
|
843 . Factor out most of ValidateAttributes to new AttrValidator class |
|
844 |
|
845 1.6.1, released 2007-05-05 |
|
846 ! Support for more deprecated attributes via transformations: |
|
847 + hspace and vspace in img |
|
848 + size and noshade in hr |
|
849 + nowrap in td |
|
850 + clear in br |
|
851 + align in caption, table, img and hr |
|
852 + type in ul, ol and li |
|
853 ! DirectLex now preserves text in which a < bracket is followed by |
|
854 a non-alphanumeric character. This means that certain emoticons |
|
855 are now preserved. |
|
856 ! %Core.RemoveInvalidImg is now operational, when set to false invalid |
|
857 images will hang around with an empty src |
|
858 ! target attribute in a tag supported, use %Attr.AllowedFrameTargets |
|
859 to enable |
|
860 ! CSS property white-space now allows nowrap (supported in all modern |
|
861 browsers) but not others (which have spotty browser implementations) |
|
862 ! XHTML 1.1 mode now sort-of works without any fatal errors, and |
|
863 lang is now moved over to xml:lang. |
|
864 ! Attribute transformation smoketest available at smoketests/attrTransform.php |
|
865 ! Transformation of font's size attribute now handles super-large numbers |
|
866 - Possibly fatal bug with __autoload() fixed in module manager |
|
867 - Invert HTMLModuleManager->addModule() processing order to check |
|
868 prefixes first and then the literal module |
|
869 - Empty strings get converted to empty arrays instead of arrays with |
|
870 an empty string in them. |
|
871 - Merging in attribute lists now works. |
|
872 . Demo script removed: it has been added to the website's repository |
|
873 . Basic.php script modified to work out of the box |
|
874 . Refactor AttrTransform classes to reduce duplication |
|
875 . AttrTransform_TextAlign axed in favor of a more general |
|
876 AttrTransform_EnumToCSS, refer to HTMLModule/TransformToStrict.php to |
|
877 see how the new equivalent is implemented |
|
878 . Unit tests now use exclusively assertIdentical |
|
879 |
|
880 1.6.0, released 2007-04-01 |
|
881 ! Support for most common deprecated attributes via transformations: |
|
882 + bgcolor in td, th, tr and table |
|
883 + border in img |
|
884 + name in a and img |
|
885 + width in td, th and hr |
|
886 + height in td, th |
|
887 ! Support for CSS attribute 'height' added |
|
888 ! Support for rel and rev attributes in a tags added, use %Attr.AllowedRel |
|
889 and %Attr.AllowedRev to activate |
|
890 - You can define ID blacklists using regular expressions via |
|
891 %Attr.IDBlacklistRegexp |
|
892 - Error messages are emitted when you attempt to "allow" elements or |
|
893 attributes that HTML Purifier does not support |
|
894 - Fix segfault in unit test. The problem is not very reproduceable and |
|
895 I don't know what causes it, but a six line patch fixed it. |
|
896 |
|
897 1.5.0, released 2007-03-23 |
|
898 ! Added a rudimentary I18N and L10N system modeled off MediaWiki. It |
|
899 doesn't actually do anything yet, but keep your eyes peeled. |
|
900 ! docs/enduser-utf8.html explains how to use UTF-8 and HTML Purifier |
|
901 ! Newly structured HTMLDefinition modeled off of XHTML 1.1 modules. |
|
902 I am loathe to release beta quality APIs, but this is exactly that; |
|
903 don't use the internal interfaces if you're not willing to do migration |
|
904 later on. |
|
905 - Allow 'x' subtag in language codes |
|
906 - Fixed buggy chameleon-support for ins and del |
|
907 . Added support for IDREF attributes (i.e. for) |
|
908 . Renamed HTMLPurifier_AttrDef_Class to HTMLPurifier_AttrDef_Nmtokens |
|
909 . Removed context variable ParentType, replaced with IsInline, which |
|
910 is false when you're not inline and an integer of the parent that |
|
911 caused you to become inline when you are (so possibly zero) |
|
912 . Removed ElementDef->type in favor of ElementDef->descendants_are_inline |
|
913 and HTMLDefinition->content_sets |
|
914 . StrictBlockquote now reports what elements its supposed to allow, |
|
915 rather than what it does allow |
|
916 . Removed HTMLDefinition->info_flow_elements in favor of |
|
917 HTMLDefinition->content_sets['Flow'] |
|
918 . Removed redundant "exclusionary" definitions from DTD roster |
|
919 . StrictBlockquote now requires a construction parameter as if it |
|
920 were an Required ChildDef, this is the "real" set of allowed elements |
|
921 . AttrDef partitioned into HTML, CSS and URI segments |
|
922 . Modify Youtube filter regexp to be multiline |
|
923 . Require both PHP5 and DOM extension in order to use DOMLex, fixes |
|
924 some edge cases where a DOMDocument class exists in a PHP4 environment |
|
925 due to DOM XML extension. |
|
926 |
|
927 1.4.1, released 2007-01-21 |
|
928 ! docs/enduser-youtube.html updated according to new functionality |
|
929 - YouTube IDs can have underscores and dashes |
|
930 |
|
931 1.4.0, released 2007-01-21 |
|
932 ! Implemented list-style-image, URIs now allowed in list-style |
|
933 ! Implemented background-image, background-repeat, background-attachment |
|
934 and background-position CSS properties. Shorthand property background |
|
935 supports all of these properties. |
|
936 ! Configuration documentation looks nicer |
|
937 ! Added %Core.EscapeNonASCIICharacters to workaround loss of Unicode |
|
938 characters while %Core.Encoding is set to a non-UTF-8 encoding. |
|
939 ! Support for configuration directive aliases added |
|
940 ! Config object can now be instantiated from ini files |
|
941 ! YouTube preservation code added to the core, with two lines of code |
|
942 you can add it as a filter to your code. See smoketests/preserveYouTube.php |
|
943 for sample code. |
|
944 ! Moved SLOW to docs/enduser-slow.html and added code examples |
|
945 - Replaced version check with functionality check for DOM (thanks Stephen |
|
946 Khoo) |
|
947 . Added smoketest 'all.php', which loads all other smoketests via frames |
|
948 . Implemented AttrDef_CSSURI for url(http://google.com) style declarations |
|
949 . Added convenient single test selector form on test runner |
|
950 |
|
951 1.3.2, released 2006-12-25 |
|
952 ! HTMLPurifier object now accepts configuration arrays, no need to manually |
|
953 instantiate a configuration object |
|
954 ! Context object now accessible to outside |
|
955 ! Added enduser-youtube.html, explains how to embed YouTube videos. See |
|
956 also corresponding smoketest preserveYouTube.php. |
|
957 ! Added purifyArray(), which takes a list of HTML and purifies it all |
|
958 ! Added static member variable $version to HTML Purifier with PHP-compatible |
|
959 version number string. |
|
960 - Fixed fatal error thrown by upper-cased language attributes |
|
961 - printDefinition.php: added labels, added better clarification |
|
962 . HTMLPurifier_Config::create() added, takes mixed variable and converts into |
|
963 a HTMLPurifier_Config object. |
|
964 |
|
965 1.3.1, released 2006-12-06 |
|
966 ! Added HTMLPurifier.func.php stub for a convenient function to call the library |
|
967 - Fixed bug in RemoveInvalidImg code that caused all images to be dropped |
|
968 (thanks to .mario for reporting this) |
|
969 . Standardized all attribute handling variables to attr, made it plural |
|
970 |
|
971 1.3.0, released 2006-11-26 |
|
972 # Invalid images are now removed, rather than replaced with a dud |
|
973 <img src="" alt="Invalid image" />. Previous behavior can be restored |
|
974 with new directive %Core.RemoveInvalidImg set to false. |
|
975 ! (X)HTML Strict now supported |
|
976 + Transparently handles inline elements in block context (blockquote) |
|
977 ! Added GET method to demo for easier validation, added 50kb max input size |
|
978 ! New directive %HTML.BlockWrapper, for block-ifying inline elements |
|
979 ! New directive %HTML.Parent, allows you to only allow inline content |
|
980 ! New directives %HTML.AllowedElements and %HTML.AllowedAttributes to let |
|
981 users narrow the set of allowed tags |
|
982 ! <li value="4"> and <ul start="2"> now allowed in loose mode |
|
983 ! New directives %URI.DisableExternalResources and %URI.DisableResources |
|
984 ! New directive %Attr.DisableURI, which eliminates all hyperlinking |
|
985 ! New directive %URI.Munge, munges URI so you can use some sort of redirector |
|
986 service to avoid PageRank leaks or warn users that they are exiting your site. |
|
987 ! Added spiffy new smoketest printDefinition.php, which lets you twiddle with |
|
988 the configuration settings and see how the internal rules are affected. |
|
989 ! New directive %URI.HostBlacklist for blocking links to bad hosts. |
|
990 xssAttacks.php smoketest updated accordingly. |
|
991 - Added missing type to ChildDef_Chameleon |
|
992 - Remove Tidy option from demo if there is not Tidy available |
|
993 . ChildDef_Required guards against empty tags |
|
994 . Lookup table HTMLDefinition->info_flow_elements added |
|
995 . Added peace-of-mind variable initialization to Strategy_FixNesting |
|
996 . Added HTMLPurifier->info_parent_def, parent child processing made special |
|
997 . Added internal documents briefly summarizing future progression of HTML |
|
998 . HTMLPurifier_Config->getBatch($namespace) added |
|
999 . More lenient casting to bool from string in HTMLPurifier_ConfigSchema |
|
1000 . Refactored ChildDef classes into their own files |
|
1001 |
|
1002 1.2.0, released 2006-11-19 |
|
1003 # ID attributes now disabled by default. New directives: |
|
1004 + %HTML.EnableAttrID - restores old behavior by allowing IDs |
|
1005 + %Attr.IDPrefix - %Attr.IDBlacklist alternative that munges all user IDs |
|
1006 so that they don't collide with your IDs |
|
1007 + %Attr.IDPrefixLocal - Same as above, but for when there are multiple |
|
1008 instances of user content on the page |
|
1009 + Profuse documentation on how to use these available in docs/enduser-id.txt |
|
1010 ! Added MODx plugin <http://modxcms.com/forums/index.php/topic,6604.0.html> |
|
1011 ! Added percent encoding normalization |
|
1012 ! XSS attacks smoketest given facelift |
|
1013 ! Configuration documentation now has table of contents |
|
1014 ! Added %URI.DisableExternal, which prevents links to external websites. You |
|
1015 can also use %URI.Host to permit absolute linking to subdomains |
|
1016 ! Non-accessible resources (ex. mailto) blocked from embedded URIs (img src) |
|
1017 - Type variable in HTMLDefinition was not being set properly, fixed |
|
1018 - Documentation updated |
|
1019 + TODO added request Phalanger |
|
1020 + TODO added request Native compression |
|
1021 + TODO added request Remove redundant tags |
|
1022 + TODO added possible plaintext formatter for HTML Purifier documentation |
|
1023 + Updated ConfigDoc TODO |
|
1024 + Improved inline comments in AttrDef/Class.php, AttrDef/CSS.php |
|
1025 and AttrDef/Host.php |
|
1026 + Revamped documentation into HTML, along with misc updates |
|
1027 - HTMLPurifier_Context doesn't throw a variable reference error if you attempt |
|
1028 to retrieve a non-existent variable |
|
1029 . Switched to purify()-wide Context object registry |
|
1030 . Refactored unit tests to minimize duplication |
|
1031 . XSS attack sheet updated |
|
1032 . configdoc.xml now has xml:space attached to default value nodes |
|
1033 . Allow configuration directives to permit null values |
|
1034 . Cleaned up test-cases to remove unnecessary swallowErrors() |
|
1035 |
|
1036 1.1.2, released 2006-09-30 |
|
1037 ! Add HTMLPurifier.auto.php stub file that configures include_path |
|
1038 - Documentation updated |
|
1039 + INSTALL document rewritten |
|
1040 + TODO added semi-lossy conversion |
|
1041 + API Doxygen docs' file exclusions updated |
|
1042 + Added notes on HTML versus XML attribute whitespace handling |
|
1043 + Noted that HTMLPurifier_ChildDef_Custom isn't being used |
|
1044 + Noted that config object's definitions are cached versions |
|
1045 - Fixed lack of attribute parsing in HTMLPurifier_Lexer_PEARSax3 |
|
1046 - ftp:// URIs now have their typecodes checked |
|
1047 - Hooked up HTMLPurifier_ChildDef_Custom's unit tests (they weren't being run) |
|
1048 . Line endings standardized throughout project (svn:eol-style standardized) |
|
1049 . Refactored parseData() to general Lexer class |
|
1050 . Tester named "HTML Purifier" not "HTMLPurifier" |
|
1051 |
|
1052 1.1.1, released 2006-09-24 |
|
1053 ! Configuration option to optionally Tidy up output for indentation to make up |
|
1054 for dropped whitespace by DOMLex (pretty-printing for the entire application |
|
1055 should be done by a page-wide Tidy) |
|
1056 - Various documentation updates |
|
1057 - Fixed parse error in configuration documentation script |
|
1058 - Fixed fatal error in benchmark scripts, slightly augmented |
|
1059 - As far as possible, whitespace is preserved in-between table children |
|
1060 - Sample test-settings.php file included |
|
1061 |
|
1062 1.1.0, released 2006-09-16 |
|
1063 ! Directive documentation generation using XSLT |
|
1064 ! XHTML can now be turned off, output becomes <br> |
|
1065 - Made URI validator more forgiving: will ignore leading and trailing |
|
1066 quotes, apostrophes and less than or greater than signs. |
|
1067 - Enforce alphanumeric namespace and directive names for configuration. |
|
1068 - Table child definition made more flexible, will fix up poorly ordered elements |
|
1069 . Renamed ConfigDef to ConfigSchema |
|
1070 |
|
1071 1.0.1, released 2006-09-04 |
|
1072 - Fixed slight bug in DOMLex attribute parsing |
|
1073 - Fixed rejection of case-insensitive configuration values when there is a |
|
1074 set of allowed values. This manifested in %Core.Encoding. |
|
1075 - Fixed rejection of inline style declarations that had lots of extra |
|
1076 space in them. This manifested in TinyMCE. |
|
1077 |
|
1078 1.0.0, released 2006-09-01 |
|
1079 ! Shorthand CSS properties implemented: font, border, background, list-style |
|
1080 ! Basic color keywords translated into hexadecimal values |
|
1081 ! Table CSS properties implemented |
|
1082 ! Support for charsets other than UTF-8 (defined by iconv) |
|
1083 ! Malformed UTF-8 and non-SGML character detection and cleaning implemented |
|
1084 - Fixed broken numeric entity conversion |
|
1085 - API documentation completed |
|
1086 . (HTML|CSS)Definition de-singleton-ized |
|
1087 |
|
1088 1.0.0beta, released 2006-08-16 |
|
1089 ! First public release, most functionality implemented. Notable omissions are: |
|
1090 + Shorthand CSS properties |
|
1091 + Table CSS properties |
|
1092 + Deprecated attribute transformations |
|
1093 |
|
1094 vim: et sw=4 sts=4 |