X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/a8fa52080d8ba1df29543df5c6180b620cae59f6..274fbca2ce49126ed250f0b2a5bcf022215df097:/doc/plugins/htmlscrubber.mdwn diff --git a/doc/plugins/htmlscrubber.mdwn b/doc/plugins/htmlscrubber.mdwn index cc749e2dc..08c81212b 100644 --- a/doc/plugins/htmlscrubber.mdwn +++ b/doc/plugins/htmlscrubber.mdwn @@ -1,20 +1,20 @@ -[[template id=plugin name=htmlscrubber core=1 author="[[Joey]]"]] -[[tag type/html]] +[[!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. 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` and `link`. +Parser, documented at +. +Notably it strips `style` and `link` tags, and the `style` attribute. -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. +Any attributes that could be used to specify a URL are checked to ensure +that they are known, safe schemes. It will also block embedded javascript +in such URLs. -It uses the [[cpan 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. @@ -28,9 +28,16 @@ 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. +Note that enabling or disabling the htmlscrubber plugin also affects some +other HTML-related functionality, such as whether [[meta]] allows +potentially unsafe HTML tags. + +The `htmlscrubber_skip` configuration setting can be used to skip scrubbing +of some pages. Set it to a [[ikiwiki/PageSpec]], such as +`posts/* and !comment(*) and !*/Discussion`, and pages matching that can have +all the evil CSS, JavsScript, and unsafe html elements you like. One safe +way to use this is to use [[lockedit]] to lock those pages, so only admins +can edit them. ---- @@ -41,4 +48,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 +* click me