Reset token after explicit login

git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1325 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
jakubvrana 2010-02-24 11:59:25 +00:00
parent 3f39fa1056
commit cbf6e9e03c

View file

@ -18,7 +18,7 @@ if (isset($_POST["server"])) {
}
redirect($location);
}
$_GET["server"] = $_POST["server"];
$_GET["server"] = $_POST["server"]; //! used also in ME
} elseif ($_POST["logout"]) {
$token = $_SESSION["tokens"][$_GET["server"]];
if ($token && $_POST["token"] != $token) {
@ -37,11 +37,11 @@ if (isset($_POST["server"])) {
}
} elseif ($_COOKIE["adminer_permanent"] && !isset($_SESSION["usernames"][$_GET["server"]])) {
list($server, $username, $cipher) = array_map('base64_decode', explode(":", $_COOKIE["adminer_permanent"]));
if ($_GET["server"] == "" || $server == $_GET["server"]) {
if (($_GET["server"] == "" && !$_POST) || $server == $_GET["server"]) {
session_regenerate_id(); // defense against session fixation
$_SESSION["usernames"][$server] = $username;
$_SESSION["passwords"][$server] = decrypt_string($cipher, $adminer->permanentLogin());
if (!$_POST && $server != $_GET["server"]) {
if ($server != $_GET["server"]) {
redirect(preg_replace('~^([^?]*).*~', '\\1', ME) . '?server=' . urlencode($server));
}
}
@ -79,3 +79,6 @@ unset($username);
if (!$_SESSION["tokens"][$_GET["server"]]) {
$_SESSION["tokens"][$_GET["server"]] = rand(1, 1e6); // defense against cross-site request forgery
}
if (isset($_POST["server"]) && $_POST["token"]) {
$_POST["token"] = $_SESSION["tokens"][$_GET["server"]];
}