forked from extern/egroupware
119 lines
4.7 KiB
Plaintext
119 lines
4.7 KiB
Plaintext
kses ChangeLog
|
|
==============
|
|
|
|
* 0.2.1
|
|
|
|
0.2.1 was released on the 29th of September 2003.
|
|
It has the following changes:
|
|
|
|
|
|
- There is now an additional version of kses, using the object-oriented
|
|
paradigm. Thanks a lot to Richard R. Vasquez, Jr., who created it! Anyone
|
|
who wants to make functional programming, logical programming or spaghetti
|
|
programming versions of kses as well (or any other programming paradigm that
|
|
you like), go ahead! All the people who like old procedural programming for
|
|
web applications shouldn't despair, though, as both versions will be
|
|
maintained with each release.
|
|
|
|
- kses now has some new attribute value checks: minlen, minval and valueless.
|
|
See docs/attribute-value-checks for an explanation.
|
|
|
|
- For some reason, the Opera developers decided to make chr(173) a whitespace
|
|
character in URL protocols, both when it occurs raw and in an entity. kses
|
|
now handles this.
|
|
|
|
- The URL protocol whitelisting system now decodes entities before removing
|
|
NULLs and whitespaces.
|
|
|
|
|
|
* 0.2.0
|
|
|
|
0.2.0 was released on the 25th of July 2003.
|
|
It has the following changes:
|
|
|
|
|
|
- kses now supports checking of attribute values, and not just element names
|
|
and attribute names. The attribute value checks that exist so far are
|
|
'maxlen' (checks how long attribute values are, to avoid Buffer Overflows)
|
|
and 'maxval' (checks how big an integer value is, to avoid Denial of Service
|
|
attacks).
|
|
|
|
Buffer Overflows could both be a problem for WWW clients and different
|
|
servers on the Internet that an HTML document links to. One example is
|
|
<frame src="ftp://ftp.v1ct1m.com/AAAAAA..thousands_of_A's...">.
|
|
|
|
Denial of Service attacks can take the form of too big sizes of iframes or
|
|
other things. One example is <iframe src="http://some.web.server/"
|
|
width="20000" height="2000">, which makes some client machines completely
|
|
overloaded.
|
|
|
|
- kses' old feature of removing "javascript:" from attribute values has been
|
|
improved. It now has a whole system for white listing of URL protocols, so
|
|
you can specify that it's acceptable with http:, https:, ftp: and gopher:,
|
|
but no other protocols in attribute values. The system tries pretty hard to
|
|
do the right thing with whitespace, upper/lower case, HTML entities
|
|
("javascript:") and repeated entries ("javascript:javascript:alert(57)").
|
|
|
|
- kses now supports both HTML and XHTML code, by allowing " /" at the end of
|
|
tags.
|
|
|
|
- kses now removes Netscape 4's JavaScript entities, having the form
|
|
"&{alert(57)};". They don't even seem to work on all versions of Netscape 4,
|
|
but for completeness' sake it seemed like a good feature to add.
|
|
|
|
- A bug with NULLs in javascript: URLs was fixed.
|
|
(Reported by Simon Cornelius P. Umacob - thanks!)
|
|
|
|
- As a nice side effect of the white listing of URL protocols, kses now also
|
|
normalizes all HTML entities in documents. It will change HTML code with bad
|
|
entities to the right form, for example "AT&T" will be converted to
|
|
"AT&T" and "<a href='lyrics.php?band=ladytron&lyrics=playgirl'>" will be
|
|
converted to "<a href='lyrics.php?band=ladytron&lyrics=playgirl'>".
|
|
":" will be converted to ":", "&#XYZZY;" will be converted to
|
|
"&#XYZZY;", "ä!;" will be converted to "&auml!;" and so on.
|
|
|
|
As shown above, it will process HTML entities that it doesn't understand.
|
|
It will also deal with too big numbers in numeric HTML entities, which is
|
|
helpful as many browsers seem to wrap them around at 2 ** 32, so the
|
|
characters 58, 58 + (2 ** 32), 58 + (2 ** 64) etcetera are all colons to the
|
|
web browser.
|
|
|
|
- You can now use upper case letters in your $allowed_html array, in element
|
|
names, attribute names and attribute value check names. Version 0.1.0
|
|
required everything in that array to be in lower case, but that's not
|
|
necessary any more. You can also use upper case letters in
|
|
$allowed_protocols.
|
|
|
|
- The "Really malformed thing" bug from the TODO file was fixed.
|
|
It used to convert this string:
|
|
x > 5 <a href="blah">
|
|
to:
|
|
x > 5 <a href="blah">
|
|
and now it converts it to:
|
|
x > 5 <a href="blah">
|
|
|
|
- The "Weird malformed thing" bug from the TODO file was fixed.
|
|
It used to convert this string:
|
|
<a href="5 href=6>
|
|
to:
|
|
<a href="6">
|
|
because of the way kses restarts after a parse error in kses_hair(). Now it
|
|
converts it to:
|
|
<a>
|
|
|
|
- A problem with slashes in HTML tags was fixed.
|
|
|
|
- examples/filter.php used to use $SCRIPT_NAME, which doesn't work on
|
|
Windows.
|
|
(Reported by Simon Cornelius P. Umacob - thanks!)
|
|
|
|
- kses now allows dashes in attribute names, for things like
|
|
<meta http-equiv=..>.
|
|
|
|
|
|
* 0.1.0, first public version
|
|
|
|
0.1.0 was released on the 9th of June 2003.
|
|
It was announced on three security related mailing lists on Friday the 13th
|
|
of June (nothing bad happened to it though).
|