From a8fa52080d8ba1df29543df5c6180b620cae59f6 Mon Sep 17 00:00:00 2001 From: joey Date: Wed, 11 Jul 2007 16:50:59 +0000 Subject: [PATCH] * Allow simple alphanumeric style attribute values in the htmlscrubber. This should be safe from javascript attacks. --- IkiWiki/Plugin/htmlscrubber.pm | 35 +++++++++++++++++++--------------- debian/changelog | 4 +++- doc/plugins/htmlscrubber.mdwn | 8 +++++++- po/ikiwiki.pot | 2 +- 4 files changed, 31 insertions(+), 18 deletions(-) diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm index c5b08f604..489827167 100644 --- a/IkiWiki/Plugin/htmlscrubber.pm +++ b/IkiWiki/Plugin/htmlscrubber.pm @@ -31,21 +31,26 @@ sub scrubber { #{{{ span strike strong sub sup table tbody td textarea tfoot th thead tr tt u ul var }], - default => [undef, { map { $_ => 1 } qw{ - abbr accept accept-charset accesskey action - align alt axis border cellpadding cellspacing - char charoff charset checked cite class - clear cols colspan color compact coords - datetime dir disabled enctype for frame - headers height href hreflang hspace id ismap - label lang longdesc maxlength media method - multiple name nohref noshade nowrap prompt - readonly rel rev rows rowspan rules scope - selected shape size span src start summary - tabindex target title type usemap valign - value vspace width - }, "/" => 1, # emit proper
XHTML - }], + default => [undef, { ( + map { $_ => 1 } qw{ + abbr accept accept-charset accesskey action + align alt axis border cellpadding cellspacing + char charoff charset checked cite class + clear cols colspan color compact coords + datetime dir disabled enctype for frame + headers height href hreflang hspace id ismap + label lang longdesc maxlength media method + multiple name nohref noshade nowrap prompt + readonly rel rev rows rowspan rules scope + selected shape size span src start summary + tabindex target title type usemap valign + value vspace width + } ), + "/" => 1, # emit proper
XHTML + "style" => qr{^[-a-zA-Z0-9]+$}, # only very simple + # references allowed, + # to avoid javascript + }], ); return $_scrubber; } # }}} diff --git a/debian/changelog b/debian/changelog index 7c1625a41..e1bcc3185 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,8 +7,10 @@ ikiwiki (2.4) UNRELEASED; urgency=low * Support building on systems that lack asprintf. * mercurial getctime is currently broken, apparently by some change in mercurial version 0.9.4. Turn the failing test case into a TODO test case. + * Allow simple alphanumeric style attribute values in the htmlscrubber. This + should be safe from javascript attacks. - -- Joey Hess Sun, 08 Jul 2007 20:25:00 -0400 + -- Joey Hess Wed, 11 Jul 2007 12:23:41 -0400 ikiwiki (2.3) unstable; urgency=low diff --git a/doc/plugins/htmlscrubber.mdwn b/doc/plugins/htmlscrubber.mdwn index 7962b3b52..cc749e2dc 100644 --- a/doc/plugins/htmlscrubber.mdwn +++ b/doc/plugins/htmlscrubber.mdwn @@ -7,7 +7,12 @@ to avoid XSS attacks and the like. It excludes all html tags and attributes except for those that are whitelisted using the same lists as used by Mark Pilgrim's Universal Feed Parser, documented at . -Notably it strips `style`, `link`, and the `style` attribute. +Notably it strips `style` and `link`. + +For the `style` attribute, it varys slightly from the Universal Feed +Parser, accepting simple alphanumeric style attributes (style="foo"), but +stripping anything more complex to avoid any of the ways to insert +JavaScript via style attributes. It uses the [[cpan HTML::Scrubber]] perl module to perform its html sanitisation, and this perl module also deals with various entity encoding @@ -36,3 +41,4 @@ plugin is active: * CSS script test * entity-encoded CSS script test * entity-encoded CSS script test +* OTOH, this is ok, and will be accepted diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index 1b86f0708..d70864ed2 100644 --- a/po/ikiwiki.pot +++ b/po/ikiwiki.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-07-08 20:26-0400\n" +"POT-Creation-Date: 2007-07-11 12:49-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" -- 2.39.5