ChangeLog 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. kses ChangeLog
  2. ==============
  3. * 0.2.2 and 0.2.2-rc1
  4. 0.2.2 was released on the 7th of February 2005. We also had a release
  5. candidate, 0.2.2-rc1, that was released on the 30th of January 2005.
  6. I (Ulf) am sorry for this long delay, but I lost interest in kses for a
  7. while and worked on auditing C/C++ code for buffer overflows and format
  8. string bugs in the Debian Security Audit Project instead
  9. ( http://www.debian.org/security/audit/ ).
  10. This version has the following changes:
  11. - Richard contributed an additional object-oriented kses version for
  12. PHP 5, which takes advantage of that PHP version's improved object
  13. orientation. You can find it in the oop/ directory.
  14. - Richard added RemoveProtocol(), RemoveProtocols() and SetProtocols()
  15. methods to both object-oriented kses versions. This closes SourceForge
  16. bug #892477.
  17. - Richard also did other smaller changes to the object-oriented kses
  18. versions. See oop/oop.kses.changelog.txt for the gory details.
  19. - The code that checks whether used elements and attributes are allowed
  20. now uses isset() to avoid notices under certain configurations. This
  21. hopefully closes SourceForge bug #918493.
  22. - The check for the Opera extra whitespace character #173 was moved so
  23. it only affects attribute values and nothing else. This is helpful for
  24. Asian kses users, who use that character in writing. (This is just a
  25. temporary solution. A better one will show up in the next version, when
  26. the parser is rewritten.) This closes SourceForge bug #834645, kind of.
  27. - Now the program will not even look at attributes and closing XHTML
  28. slashes for closing HTML elements. This will make kses execute faster
  29. and it won't accept atrocities like </br /> anymore.
  30. - Moved references in examples/test.php from function calls to the function
  31. definition, making it better PHP.
  32. - The output of examples/test.php and examples/filter.php now conform fully
  33. to W3C's HTML specification.
  34. - From now on, kses releases will be distributed both as .tar.gz and .zip
  35. archives to please our Wintendo users. This closes SourceForge feature
  36. request #900380.
  37. - Changed to new copyright year and paper mail address.
  38. * 0.2.1
  39. 0.2.1 was released on the 29th of September 2003.
  40. It has the following changes:
  41. - There is now an additional version of kses, using the object-oriented
  42. paradigm. Thanks a lot to Richard R. Vasquez, Jr., who created it! Anyone
  43. who wants to make functional programming, logical programming or spaghetti
  44. programming versions of kses as well (or any other programming paradigm that
  45. you like), go ahead! All the people who like old procedural programming for
  46. web applications shouldn't despair, though, as both versions will be
  47. maintained with each release.
  48. - kses now has some new attribute value checks: minlen, minval and valueless.
  49. See docs/attribute-value-checks for an explanation.
  50. - For some reason, the Opera developers decided to make chr(173) a whitespace
  51. character in URL protocols, both when it occurs raw and in an entity. kses
  52. now handles this.
  53. - The URL protocol whitelisting system now decodes entities before removing
  54. NULLs and whitespaces.
  55. * 0.2.0
  56. 0.2.0 was released on the 25th of July 2003.
  57. It has the following changes:
  58. - kses now supports checking of attribute values, and not just element names
  59. and attribute names. The attribute value checks that exist so far are
  60. 'maxlen' (checks how long attribute values are, to avoid Buffer Overflows)
  61. and 'maxval' (checks how big an integer value is, to avoid Denial of Service
  62. attacks).
  63. Buffer Overflows could both be a problem for WWW clients and different
  64. servers on the Internet that an HTML document links to. One example is
  65. <frame src="ftp://ftp.v1ct1m.com/AAAAAA..thousands_of_A's...">.
  66. Denial of Service attacks can take the form of too big sizes of iframes or
  67. other things. One example is <iframe src="http://some.web.server/"
  68. width="20000" height="2000">, which makes some client machines completely
  69. overloaded.
  70. - kses' old feature of removing "javascript:" from attribute values has been
  71. improved. It now has a whole system for white listing of URL protocols, so
  72. you can specify that it's acceptable with http:, https:, ftp: and gopher:,
  73. but no other protocols in attribute values. The system tries pretty hard to
  74. do the right thing with whitespace, upper/lower case, HTML entities
  75. ("jav&#97;script:") and repeated entries ("javascript:javascript:alert(57)").
  76. - kses now supports both HTML and XHTML code, by allowing " /" at the end of
  77. tags.
  78. - kses now removes Netscape 4's JavaScript entities, having the form
  79. "&{alert(57)};". They don't even seem to work on all versions of Netscape 4,
  80. but for completeness' sake it seemed like a good feature to add.
  81. - A bug with NULLs in javascript: URLs was fixed.
  82. (Reported by Simon Cornelius P. Umacob - thanks!)
  83. - As a nice side effect of the white listing of URL protocols, kses now also
  84. normalizes all HTML entities in documents. It will change HTML code with bad
  85. entities to the right form, for example "AT&T" will be converted to
  86. "AT&amp;T" and "<a href='lyrics.php?band=ladytron&lyrics=playgirl'>" will be
  87. converted to "<a href='lyrics.php?band=ladytron&amp;lyrics=playgirl'>".
  88. "&#000058;" will be converted to "&#58;", "&#XYZZY;" will be converted to
  89. "&amp;#XYZZY;", "&auml!;" will be converted to "&amp;auml!;" and so on.
  90. As shown above, it will process HTML entities that it doesn't understand.
  91. It will also deal with too big numbers in numeric HTML entities, which is
  92. helpful as many browsers seem to wrap them around at 2 ** 32, so the
  93. characters 58, 58 + (2 ** 32), 58 + (2 ** 64) etcetera are all colons to the
  94. web browser.
  95. - You can now use upper case letters in your $allowed_html array, in element
  96. names, attribute names and attribute value check names. Version 0.1.0
  97. required everything in that array to be in lower case, but that's not
  98. necessary any more. You can also use upper case letters in
  99. $allowed_protocols.
  100. - The "Really malformed thing" bug from the TODO file was fixed.
  101. It used to convert this string:
  102. x > 5 <a href="blah">
  103. to:
  104. x &gt; 5 &lt;a href=&quot;blah&quot;&gt;
  105. and now it converts it to:
  106. x &gt; 5 <a href="blah">
  107. - The "Weird malformed thing" bug from the TODO file was fixed.
  108. It used to convert this string:
  109. <a href="5 href=6>
  110. to:
  111. <a href="6">
  112. because of the way kses restarts after a parse error in kses_hair(). Now it
  113. converts it to:
  114. <a>
  115. - A problem with slashes in HTML tags was fixed.
  116. - examples/filter.php used to use $SCRIPT_NAME, which doesn't work on
  117. Windows.
  118. (Reported by Simon Cornelius P. Umacob - thanks!)
  119. - kses now allows dashes in attribute names, for things like
  120. <meta http-equiv=..>.
  121. * 0.1.0, first public version
  122. 0.1.0 was released on the 9th of June 2003.
  123. It was announced on three security related mailing lists on Friday the 13th
  124. of June (nothing bad happened to it though).