-[[template id=plugin name=htmlscrubber core=1 included=1
-author="""[[Joey]]"""]]
-[[tag type/html type/core]]
+[[template id=plugin name=htmlscrubber core=1 author="[[Joey]]"]]
+[[tag type/html]]
This plugin is enabled by default. It sanitizes the html on pages it renders
to avoid XSS attacks and the like.
Parser, documented at <http://feedparser.org/docs/html-sanitization.html>.
Notably it strips `style`, `link`, and the `style` attribute.
-It uses the HTML::Scrubber perl module to perform its html
+It uses the [[cpan HTML::Scrubber]] perl module to perform its html
sanitisation, and this perl module also deals with various entity encoding
tricks.
content as anything else on the web, I cannot guarantee that it will
actually protect every user of every browser from every browser security
hole, badly designed feature, etc. I can provide NO WARRANTY, like it says
-in ikiwiki's [GPL](GPL) license.
+in ikiwiki's [[GPL]] license.
The web's security model is *fundamentally broken*; ikiwiki's html
sanitisation is only a patch on the underlying gaping hole that is your web
browser.
+Note that enabling or disabling the htmlscrubber plugin also affects some other
+HTML-related functionality, such as whether [[meta]] allows potentially unsafe
+HTML tags.
+
----
Some examples of embedded javascript that won't be let through when this
plugin is active:
-* <span style="background: url(javascript:window.location='http://example.org/')">test</span>
-* <span style="any: expression(window.location='http://example.org/')">test</span>
-* <span style="any: expression(window.location='http://example.org/')">test</span>
+* script tag test <script>window.location='http://example.org';</script>
+* <span style="background: url(javascript:window.location='http://example.org/')">CSS script test</span>
+* <span style="any: expression(window.location='http://example.org/')">entity-encoded CSS script test</span>
+* <span style="any: expression(window.location='http://example.org/')">entity-encoded CSS script test</span>