[theora] <video/> and cross site scripting policy.
Michael Dale
dale at ucsc.edu
Fri Nov 7 09:32:38 PST 2008
I would also voice concern about the "treating video differently from
image" approach being proposed. I work on one such javascript library
mv_embed that remaps video tags to multiple playback mechanisms. And its
worlds easier to deal with all the plugins that do allow cross domain
video than the ones that don't (java cortado). The cross-domain java
issue is already the source of the most configuration troubles and
impediments to rich interfaces.
Take this blog for example: http://metavid-mike.blogspot.com/ It pulls
text transcripts from a remote server allowing the local site to stylize
and or format the transcripts if so desired. As the video plays back the
transcript auto-scroll in the page. The transcripts are pulled from one
server and the video url is dynamically pulled form any number of media
servers.
We have yet to implement all the crazy trickery needed to query the
iframed java video object for timestamps, play state etc. (I belive you
can do it by packing data in a constantly updated anchor link and
reading the iframe src attribute)... Having the video object "just work"
(like every other in browser video playback system (quicktime, windows
media, mplayer, vlc , flash etc) makes these sort of usages worlds easier.
Ofcourse this could still be done by broadly applying the Access-Control
mechanism as you describe but this raises the barrier to entry. Plus if
people have any of the above mentioned plugins you can still elicit all
the cross site media info you aim to restrict. What are the chances of
someone not having any of the above mentioned plugins installed? Is this
effort boradly supported is Adobe on board to respect
Access-Control-Deny-Origin headers?
I think Gregory's point about people accidentally broadly applying the
Access-Control header must be fully considered. Since its possible this
security mechanism that differentiates static video content from static
image content will cause more problems than it will solve as people who
can't configure things apply excessively broad security mechanisms
because they often do "what works"
The proposed security mechanism would be nice if we where designing the
web from day 1. But cross site static content querying is for better or
worse part of the net ecosystem and attempting to reverse that course
may just cause more trouble than it will save.
and finally as Gregory mentions most big sites already have all their
static content on a separate domain..so essentially we propose breaking
the way that this is presently dealt with to add another way that may
result in media on the same domain as logins and putting the security at
risk by people improperly configuring cross domain header restrictions.
--michael
Gregory Maxwell wrote:
> On Thu, Nov 6, 2008 at 11:07 PM, Robert O'Callahan <robert at ocallahan.org> wrote:
>
>> Putting all your world-accessible video files in one directory subtree and
>> changing the .htaccess there is still quite simple IMHO. At least if we do
>> it *now* before all this stuff is deployed and set up.
>>
>
> Back to the assumption that the server supports htaccess.
>
> Even still, It is still more complicated. From my perspective every
> step is another chunk of users who won't get it working, and another
> chunk who will shoot themselves in the head security wise. With
> that in mind I think we can understand each other's positions.
>
> [snip]
>
>>> But there are still many sites that won't but would still want to
>>> allow hot linking. Especially smaller sites, for example the xiph.org
>>> wiki would become vulnerable to XSS attack by using an allow all
>>> policy, yet we would want to permit hotlinking images stored on or
>>> servers. Worse, people who donate capacity to us would make
>>> themselves vulnerable or have to undergo even more complicated
>>> configuration.
>>>
>> That is an issue worth thinking about. It doesn't seem to me very hard to
>> collect the resources you want to be world-accessible and configure them so
>> --- I presume video and similar resources are already collected together in
>> their own directory space, with scripts and other sensitive data elsewhere
>> --- but, I haven't thought about that very much and I don't have experience
>> at running a Web site.
>>
>
> It depends. Structured CMS systems like mediawiki will have that
> behavior, virtually everything else wont. In practice people are
> going to handle this incorrectly.
>
>
>>> [snip]
>>>
>> That depends on how it's done. You'll start leaking the size of the video,
>> its existence, maybe its type. The spec gets more complex because it has to
>> describe behaviour in same-origin and cross-origin situations. So does our
>> code. There's more attack surface.
>>
>
> True.
>
>
>> One thing to keep in mind is that if we ship with a same-origin restriction
>> now, and then discover later that was a really dumb mistake, we can then
>> relax it and little has been lost. But if we ship with no restrictions and
>> then find out *that* was a dumb mistake, there's nothing we can do without
>> massively breaking things; we'll have to live with that mistake forever
>> (like <img>).
>>
>
> This is a very good point which I had not fully considered.
>
> I'd like to point out that <img> can be significantly improved:
> Specify a header Access-Control-Deny-Origin: with the following rules:
> If there is an allow header mentioning your origin, allow. If there
> is a deny mentioning your origin deny. If there is a wildcard allow,
> allow, wildcard deny deny. No header? Allow for legacy things, deny
> for new things/unsafe things.
>
> Under that scenario images would eventually gain the protection as
> servers are updated to emit a deny. But in that situation I'd
> suggest that video should work like img in accordance with the
> principle of least surprise.
>
>
>> Why do you need to distinguish same-origin failure from any other failure?
>> Wouldn't you try fallback no matter what the failure is? And wouldn't you
>> normally know whether the file you're linking to is same-origin or not?
>> These are not rhetorical questions, I really want to know :-).
>>
>
> I know if it's same origin or not but I do not know if the not-same
> request will be permitted or denied by the target server. The
> fall-backs are clearly inferior to native support (including long load
> times, wasted bandwidth, and some risk of triggering a client crash),
> we would prefer not to use them unless we must (so, no flipping to
> Java just because it's not the same-origin). Additionally, it would
> create tremendous confusion if I popped up a message that said "This
> video will not play because fooserver.com does not allow playback from
> barserver.com. See here for more info on fixing this problem" when in
> reality the file is corrupt or just doesn't exist. (if the file
> doesn't exist AND the file was not permitted, this message is less
> harmful)
> _______________________________________________
> theora mailing list
> theora at xiph.org
> http://lists.xiph.org/mailman/listinfo/theora
>
More information about the theora
mailing list