Ben Ramsey wrote:
To me, it's not a question of whether the sites are physically
located on the same machine, and it's not a question of
encrypting the session id. Anyone who even knows the encrypted
session id could then POST it to the form in a replay attack,
authenticating themselves as the intended user.

You used a key word there - authenticate.

Sessions don't naturally exist across domains, so this problem is best treated as an authentication problem - you want the user to have a consistent experience, so you need to automatically authenticate the user in order to do so. Techniques used to provide persistent logins ("remember me") can help here, except that you'll pass data in the URL rather than in a cookie.

When I've provided this feature in the past, I've always taken advantage of launch and landing pages - e.g., users could only get to the other domain and still be logged in if they clicked a link from my application, and those links all go through a launch page. This page takes care of generating whatever data I plan to send to the remote domain (including the URL that the user wants to visit) and redirecting the user to the landing page at that domain. With servers synchronized with ntpd, this lets you close the window of opportunity down to just a few seconds, strengthening the technique.

I might try to write a more detailed spec for this at some point, but hopefully that provides some good ideas. :-)

Chris

--
Chris Shiflett
Brain Bulb, The PHP Consultancy
http://brainbulb.com/

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to