note 116620 deleted from features.http-auth by salathe
| From: | salathe@php.net | Date: | Fri, 06 Feb 2015 13:34:20 +0000 |
| Subject: | note 116620 deleted from features.http-auth by salathe | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-201639@lists.php.net to get a copy of this message | ||
Note Submitter: nakkers at gmail dot com
----
I came up with another approach to work around the problem of browsers caching WWW authentication
credentials and creating logout problems. While most browsers have some kind of way to wipe this
information, I prefer having my website to take care of the task instead of relying on the
user's sanity.
Even with Lalit's method of creating a random realm name, it was still possible to get back
into the protected area using the back button in Firefox, so that didn't work. Here's my
solution:
Since browsers attach the credentials to specific URLs, use virtual paths where a component of the
path is actually a PHP script, and everything following it is part of the URI, such as:
http://toronto-personal-injury.lawyer/medical-mapratice/
some_dir/login.php/auth/8f631b92/
By choosing a different number for the last component of the URL, browsers can be tricked into
thinking that they are dealing with a completely different website, and thus prompting the user for
credentials again.
Note that using a random, unrestricted number will still allow the user to hit the back button to
get back into the page. You should keep track of this number in a server-side file or database and
regenerate it upon each successful login, so that the last number(s) become invalid. Using an
invalid number might result in a 403 response or, depending on how you feel that day, a 302 to a
nasty website.
Care should be taken when linking from the page generated in this case, since relative links will be
relative to the virtual and non-existant directory rather than the true script directory.
Hope this helps somebody.