2006-08-23 07:41:07 +02:00
|
|
|
[[template id=plugin name=htmlscrubber core=1 included=1
|
2006-08-23 22:27:18 +02:00
|
|
|
author="[[Joey]]"]]
|
2006-08-23 07:41:07 +02:00
|
|
|
[[tag type/html type/core]]
|
|
|
|
|
2006-05-05 07:41:11 +02:00
|
|
|
This plugin is enabled by default. It sanitizes the html on pages it renders
|
|
|
|
to avoid XSS attacks and the like.
|
2006-04-25 05:18:21 +02:00
|
|
|
|
2006-05-05 07:41:11 +02:00
|
|
|
It excludes all html tags and attributes except for those that are
|
2006-04-25 05:18:21 +02:00
|
|
|
whitelisted using the same lists as used by Mark Pilgrim's Universal Feed
|
|
|
|
Parser, documented at <http://feedparser.org/docs/html-sanitization.html>.
|
|
|
|
Notably it strips `style`, `link`, and the `style` attribute.
|
|
|
|
|
2006-05-05 07:41:11 +02:00
|
|
|
It uses the HTML::Scrubber perl module to perform its html
|
2006-04-25 05:18:21 +02:00
|
|
|
sanitisation, and this perl module also deals with various entity encoding
|
|
|
|
tricks.
|
|
|
|
|
2006-04-25 05:23:49 +02:00
|
|
|
While I believe that this makes ikiwiki as resistant to malicious html
|
2006-04-25 05:18:21 +02:00
|
|
|
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
|
2006-04-25 05:22:51 +02:00
|
|
|
in ikiwiki's [GPL](GPL) license.
|
2006-04-25 05:18:21 +02:00
|
|
|
|
2006-04-25 05:23:26 +02:00
|
|
|
The web's security model is *fundamentally broken*; ikiwiki's html
|
2006-04-25 05:18:21 +02:00
|
|
|
sanitisation is only a patch on the underlying gaping hole that is your web
|
|
|
|
browser.
|
|
|
|
|
|
|
|
----
|
|
|
|
|
2006-05-05 07:41:11 +02:00
|
|
|
Some examples of embedded javascript that won't be let through when this
|
|
|
|
plugin is active:
|
2006-04-25 05:18:21 +02:00
|
|
|
|
2006-04-25 05:36:25 +02:00
|
|
|
* <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>
|