diff --git a/auth.inc.php b/auth.inc.php index 0685bf5f..31aa90ff 100644 --- a/auth.inc.php +++ b/auth.inc.php @@ -22,12 +22,18 @@ if (isset($_POST["server"])) { } } $_GET["server"] = $_POST["server"]; -} elseif (isset($_GET["logout"])) { - unset($_SESSION["usernames"][$_GET["server"]]); - unset($_SESSION["passwords"][$_GET["server"]]); - unset($_SESSION["databases"][$_GET["server"]]); - $_SESSION["tokens"][$_GET["server"]] = array(); - redirect(substr($SELF, 0, -1), lang('Logout successful.')); +} elseif (isset($_POST["logout"])) { + if ($_POST["token"] != $_SESSION["tokens"][$_GET["server"]]["?logout"]) { + page_header(lang('Logout'), lang('Invalid CSRF token. Send the form again.')); + page_footer("db"); + exit; + } else { + unset($_SESSION["usernames"][$_GET["server"]]); + unset($_SESSION["passwords"][$_GET["server"]]); + unset($_SESSION["databases"][$_GET["server"]]); + $_SESSION["tokens"][$_GET["server"]] = array(); + redirect(substr($SELF, 0, -1), lang('Logout successful.')); + } } function auth_error() { diff --git a/design.inc.php b/design.inc.php index 6a742d4c..c82585e5 100644 --- a/design.inc.php +++ b/design.inc.php @@ -60,11 +60,19 @@ function page_footer($missing = false) {