On Tue, Apr 6, 2010 at 11:15 AM, David Recordon <record...@gmail.com> wrote:
> There is potential for leakage if the client then redirects the user to
> another SSL URL. This doesn't feel like a common pattern and the client
> would generally be redirecting to a page which they control after receiving
> the access token.
> From 15.1.3 of RFC 2616:
> Clients SHOULD NOT include a Referer header field in a (non-secure) HTTP
> request if the referring page was transferred with a secure protocol.

There are several ways tokens passed on URLs tend to leak.  I think I
listed them all in the security considerations. [1]

If the callback URL points to a page that links to third-party
content, the third-party content will get a copy of the URL, including
the access token, via the referer header.  Search for 'referer' in the
browsersec wiki [2] for the gory details.

If the callback URL is an open redirector, it might be tricked into
sending the access token to an untrusted third-party.

If the web server logs requests, the access token will end up in the
web server logs.

Passing the token on the fragment mitigates all of those risks.
Callback URL whitelisting is also important.  Time-limited access
tokens are a final layer of defense.

There are some intrinsic risks here - I'd like to make sure that we
treat lightweight javascript clients (no secrets, transient data
access, authenticated only by callback URL) different than
full-fledged web servers (can keep secrets, permanent data access.)

Note that it's pretty easy for a web server to pass an access token
down into a javascript widget.  So I think there's a clear upgrade
path from the one mode to the other.

Cheers,
Brian

[1] http://trac.tools.ietf.org/wg/oauth/trac/wiki/SecurityConsiderations
[2] http://code.google.com/p/browsersec/wiki/Part1#Hypertext_Transfer_Protocol
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to