Jump to content

Extension:SecureHTML: Difference between revisions

From mediawiki.org
Content deleted Content added
-archived
 
(21 intermediate revisions by 14 users not shown)
Line 1: Line 1:
{{notice|text=For the extension stored in the '''Git repository <code>mediawiki/extensions/SecureHTML</code>''', see [[Extension:Secure HTML]].}}
{{Extension
{{Archived extension|778151|Secure HTML}}
|name = SecureHTML
|status = beta
|type1 = tag
|type2 = user rights
|author = [[user:jldupont|Jean-Lou Dupont]]
|image =
|version = 2.3.0
|update =
|mediawiki = 1.10 or later
|download = [http://mediawiki.googlecode.com/svn/trunk/extensions/SecureHTML/ SVN]
|readme =
|changelog = See SVN ($Id$)
|description = This extension securely inserts HTML section(s) or pages on a wiki page.
|parameters =
|rights =
|example =
}}
This extension allows editors to add HTML section(s) or pages on a wiki page. This extension can only be used on protected pages, but allows an editor to add a protected template on an unprotected, editable page.

== Implementation detail ==
The extension leverages the '$wgRawHtml' global variable of Mediawiki.


== Features ==
* Cascading: if the base page is allowed to use 'html' tags, then all included pages will be processed as if they could.
* Namespace exemption: configured namespaces are exempted from 'protection' requirement
* Parser cache friendliness:
** The extension must be enabled to continue the support of the inserted content
* Support for the parser function <nowiki>{{#html}}</nowiki>
* <nowiki>{{#shtml}}</nowiki> is very well suited for securely embedding ''widgets'' such as the ones created with [http://www.sproutbuilder.com/ SproutBuilder] or GoogleGadgets.
** The page where the ''shtml'' parser function is used does not need to be protected '''but''' the template page where the javascript/html widget code is located must though.
** This behavior makes it easy for administrator to allow selected widgets to be included by the user population of the wiki

== Motivation for the {{ #html}} parser function ==
It is sometimes useful to include, in a secure fashion, a template containing 'raw html' in another page. This enables, for example, the construction of ''gadgets''.

Through the added functionality of parameterization using the <code>{@{parameter_here}@}</code>, the said templates can be customized on a per-page basis without resorting to convoluted escape patterns (e.g. <nowiki></html>{{{parameter_here}}}<html></nowiki>) which renders page viewing difficult to humans.

== Usage ==
=== < html> tag ===
* Use the standard <nowiki><html></nowiki> tags (see [[Manual:$wgRawHtml]]) within a protected page. One can either protect the page before or after the inclusion of the said tag(s).
* Complete usage example for using iframes tag:
<nowiki><html><iframe src="http://stim.com/" width=600 height=500></iframe></html></nowiki>

=== {{ #html}} parser function ===
Use: <code>{{#html:page_name [|optional parameters]}}</code> where:
* <code>page_name</code> is the page name of the article to include
* <code>optional parameters</code> are of the form:
** <code>param_x = value_x | param_y = value_y </code>
The page where this [[Manual:Parser functions|parser function]] is used must be ''edit'' protected.

=== {{ #shtml }} parser function ===
Same usage as for ''#html'' with difference that the origin page where this parser function is used does not need to be ''edit'' protected. The target page's ''edit'' protection attribute ensures security.

== Example ==
=== Test Page ===
<code>{{#html:Template:Page1|param1=value1}}</code>
=== Template:Page1 ===
<code>This parameter will be replaced when called from [[Test:Page]] >> {@{param1}@}</code>

== Required extensions ==
* [[Extension:StubManager|StubManager extension]]
* [[Extension:ParserFunctionsHelper|ParserFunctionsHelper extension]] is optional and only required for the parser function ''#shtml''
{{Pear|SecureHTML}}

== History ==
* added namespace exemption functionality i.e. namespaces where article do not need to be protected in order to use 'html' tags
** use <code>SecureHTMLclass::enableExemptNamespaces = false; </code> to turn off
** use <code>SecureHTMLclass::exemptNamespaces[] = NS_XYZ; </code> to add namespaces
* enhanced with functionality to 'add' content to the document's 'head' section
* Removed dependency on ExtensionClass
* Enabled for 'StubManager'
* Added 'addExemptNamespaces' function
=== 1.1.0 ===
* Added, by default, NS_MEDIAWIKI namespace to the exemptNamespaces
=== 2.0.0 ===
* Addition of the parser function <code>{{ #html}}</code>
=== 2.1.0 ===
* Addition of the parser function ''#shtml'' (requires [[Extension:ParserFunctionsHelper]])

== Todo ==
* Fix for allowing more customization of 'exempt' namespaces even when using StubManager
* Think about renaming the extension to be more distinct from [[Extension:Secure HTML]]

==See also==
* [[Extension:SecureWidgets]]
* [[Extension:Secure HTML]] - Different extension, with a 'secret key' approach to securing <nowiki><html></nowiki>. Unfortunately it has a very similar name!

[[Category:Script embedding extensions]]

{{languages}}

Latest revision as of 15:33, 18 June 2024