Implement Iframe module, and provide %HTML.SafeIframe and %URI.SafeIframeRegexp for...
commit4164b2eb2b134d0d27cbce718b53ff9a442fd498
authorBradley M. Froehle <brad.froehle@gmail.com>
Mon, 14 Feb 2011 01:47:01 +0000 (13 17:47 -0800)
committerEdward Z. Yang <ezyang@mit.edu>
Mon, 26 Dec 2011 13:50:53 +0000 (26 21:50 +0800)
tree3afa4c61937a1867ec8aa0462a8c115bd7cedb04
parent1e5293d9fe9c433a715d25b16368e150173625ca
Implement Iframe module, and provide %HTML.SafeIframe and %URI.SafeIframeRegexp for untrusted usage.

The purpose of this addition is twofold. In trusted mode, iframes are
now unconditionally allowed.

However, many online video providers (YouTube, Vimeo) and other web
applications (Google Maps, Google Calendar, etc) provide embed code in
iframe format, which is useful functionality in untrusted mode.
You can specify iframes as trusted elements with %HTML.SafeIframe;
however, you need to additionally specify a whitelist mechanism such as
%URI.SafeIframeRegexp to say what iframe embeds are OK (by default
everything is rejected).

Note: As iframes are invalid in strict doctypes, you will not be able to
use them there.

We also added an always_load parameter to URIFilters in order to support
the strange nature of the SafeIframe URIFilter (it always needs to be
loaded, due to the inability of accessing the %HTML.SafeIframe directive
to see if it's needed!)  We expect this URIFilter can expand in the future
to offer more complex validation mechanisms.

Signed-off-by: Bradley M. Froehle <brad.froehle@gmail.com>
Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
17 files changed:
NEWS
configdoc/usage.xml
library/HTMLPurifier.includes.php
library/HTMLPurifier.safe-includes.php
library/HTMLPurifier/AttrDef/URI.php
library/HTMLPurifier/ConfigSchema/schema.ser
library/HTMLPurifier/ConfigSchema/schema/HTML.SafeIframe.txt [new file with mode: 0644]
library/HTMLPurifier/ConfigSchema/schema/URI.SafeIframeRegexp.txt [new file with mode: 0644]
library/HTMLPurifier/HTMLModule/Forms.php
library/HTMLPurifier/HTMLModule/Iframe.php [new file with mode: 0644]
library/HTMLPurifier/HTMLModuleManager.php
library/HTMLPurifier/URIDefinition.php
library/HTMLPurifier/URIFilter.php
library/HTMLPurifier/URIFilter/SafeIframe.php [new file with mode: 0644]
tests/HTMLPurifier/HTMLT/safe-iframe-googlemaps.htmlt [new file with mode: 0644]
tests/HTMLPurifier/HTMLT/safe-iframe-youtube.htmlt [new file with mode: 0644]
tests/HTMLPurifier/HTMLT/safe-iframe.htmlt [new file with mode: 0644]