[webkit-dev] innerStaticHTML
Maciej Stachowiak
mjs at apple.com
Wed Nov 25 13:25:30 PST 2009
On Nov 25, 2009, at 12:34 PM, Adam Barth wrote:
> On Wed, Nov 25, 2009 at 12:30 PM, Maciej Stachowiak <mjs at apple.com>
> wrote:
>> On Nov 25, 2009, at 6:05 AM, Adam Barth wrote:
>>> Maybe we should have a DOM API called
>>> webkitJailChildren("no-script-for-you") on Node that prevents future
>>> children from running script. Making it a DOM API prevents authors
>>> from trying to turn the feature on with markup.
>>
>> Interesting idea. This seems potentially trickier to implement than
>> just
>> innerStaticHTML, since nearly every method that mutates the DOM
>> will have to
>> check jail status. innerStaticHTML could be limited in scope to only
>> operations that happen as part of parsing.
>
> Instead of checking every DOM mutation, we could just walk the parent
> pointers before executing a script to see if an ancestor is jailed.
A few thoughts:
1) Presumably we'd want to block instantiation of plugins and Java
applets too, or the scripting restriction becomes toothless. Perhaps
also iframes, unless the scripting restriction is intended to
propagate across frame boundaries.
2) Capturing all points at which script execution occurs and tracing
them back to the originating element may be tricky. javascript: URIs
are one potentially subtle example. By the time the JavaScript for
those gets executed, I believe we no longer know the originating
element, the way the code is currently structured.
3) It seems like the rule "don't execute JS" might not be quite what
is desired, since it would (presumably) prevent the parent itself from
using event listeners on nodes in the jail. IMO the best treatment for
event listeners would be to prevent them from being created by
attributes, rather than to prevent them from executing.
4) Do we need to strip or rename id, name and class values to prevent
interference with the containing page's use of getElementById() and
such? Caja does.
Regards,
Maciej
More information about the webkit-dev
mailing list