secured session handling
This commit is contained in:
parent
201e4c7c50
commit
90daf93e14
|
@ -44,7 +44,7 @@ function startSecureSession() {
|
||||||
// start session
|
// start session
|
||||||
if (isset($_SESSION)) unset($_SESSION);
|
if (isset($_SESSION)) unset($_SESSION);
|
||||||
if (strtolower(session_module_name()) == 'files') {
|
if (strtolower(session_module_name()) == 'files') {
|
||||||
$sessionDir = substr(__FILE__, 0, strlen(__FILE__) - 17) . "/sess";
|
$sessionDir = dirname(__FILE__) . "/../sess";
|
||||||
session_save_path($sessionDir);
|
session_save_path($sessionDir);
|
||||||
}
|
}
|
||||||
@session_start();
|
@session_start();
|
||||||
|
|
|
@ -37,9 +37,10 @@ include_once('../../lib/status.inc');
|
||||||
|
|
||||||
// start session
|
// start session
|
||||||
if (strtolower(session_module_name()) == 'files') {
|
if (strtolower(session_module_name()) == 'files') {
|
||||||
session_save_path("../../sess");
|
session_save_path(dirname(__FILE__) . '/../../sess');
|
||||||
}
|
}
|
||||||
@session_start();
|
session_start();
|
||||||
|
session_regenerate_id(true);
|
||||||
|
|
||||||
setlanguage();
|
setlanguage();
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
$Id$
|
$Id$
|
||||||
|
|
||||||
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
||||||
Copyright (C) 2003 - 2009 Roland Gruber
|
Copyright (C) 2003 - 2010 Roland Gruber
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -53,7 +53,7 @@ if (isset($_POST['passwd'])) $passwd = $_POST['passwd'];
|
||||||
if (!isset($passwd) && !isset($_SESSION['conf_isAuthenticated'])) {
|
if (!isset($passwd) && !isset($_SESSION['conf_isAuthenticated'])) {
|
||||||
$_SESSION['conf_message'] = _("No password was entered!");
|
$_SESSION['conf_message'] = _("No password was entered!");
|
||||||
/** go back to login if password is empty */
|
/** go back to login if password is empty */
|
||||||
require('conflogin.php');
|
metaRefresh('conflogin.php');
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ if ((!isset($_SESSION['conf_isAuthenticated']) || !($_SESSION['conf_isAuthentica
|
||||||
}
|
}
|
||||||
$_SESSION['conf_message'] = _("The password is invalid! Please try again.");
|
$_SESSION['conf_message'] = _("The password is invalid! Please try again.");
|
||||||
/** go back to login if password is invalid */
|
/** go back to login if password is invalid */
|
||||||
require('conflogin.php');
|
metaRefresh('conflogin.php');
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
$_SESSION['conf_isAuthenticated'] = $conf->getName();
|
$_SESSION['conf_isAuthenticated'] = $conf->getName();
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
$Id$
|
$Id$
|
||||||
|
|
||||||
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
||||||
Copyright (C) 2003 - 2009 Roland Gruber
|
Copyright (C) 2003 - 2010 Roland Gruber
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -37,9 +37,10 @@ include_once('../../lib/status.inc');
|
||||||
|
|
||||||
// start session
|
// start session
|
||||||
if (strtolower(session_module_name()) == 'files') {
|
if (strtolower(session_module_name()) == 'files') {
|
||||||
session_save_path("../../sess");
|
session_save_path(dirname(__FILE__) . '/../../sess');
|
||||||
}
|
}
|
||||||
@session_start();
|
session_start();
|
||||||
|
session_regenerate_id(true);
|
||||||
|
|
||||||
setlanguage();
|
setlanguage();
|
||||||
|
|
||||||
|
|
|
@ -45,15 +45,50 @@ include_once("../lib/config.inc"); // Include config.inc which provides Config c
|
||||||
|
|
||||||
// set session save path
|
// set session save path
|
||||||
if (strtolower(session_module_name()) == 'files') {
|
if (strtolower(session_module_name()) == 'files') {
|
||||||
session_save_path("../sess");
|
session_save_path(dirname(__FILE__) . '/../sess');
|
||||||
}
|
}
|
||||||
session_start(); // Start LDAP Account Manager session
|
|
||||||
|
// start empty session and change ID for security reasons
|
||||||
|
session_start();
|
||||||
|
session_destroy();
|
||||||
|
session_start();
|
||||||
|
session_regenerate_id(true);
|
||||||
|
|
||||||
// save last selected login profile
|
// save last selected login profile
|
||||||
if(isset($_POST['profile'])) {
|
if(isset($_POST['profile'])) {
|
||||||
setcookie("lam_default_profile", $_POST['profile'], time() + 365*60*60*24);
|
setcookie("lam_default_profile", $_POST['profile'], time() + 365*60*60*24);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// init some session variables
|
||||||
|
$_SESSION['lampath'] = realpath('../') . "/"; // Save full path to lam in session
|
||||||
|
|
||||||
|
$default_Config = new LAMCfgMain();
|
||||||
|
$_SESSION["cfgMain"] = $default_Config;
|
||||||
|
$default_Profile = $default_Config->default;
|
||||||
|
if(isset($_COOKIE["lam_default_profile"])) {
|
||||||
|
$default_Profile = $_COOKIE["lam_default_profile"];
|
||||||
|
}
|
||||||
|
// Reload loginpage after a profile change
|
||||||
|
if(isset($_POST['profileChange'])) {
|
||||||
|
logNewMessage(LOG_DEBUG, "Change server profile to " . $_POST['profile']);
|
||||||
|
$_SESSION['config'] = new LAMConfig($_POST['profile']); // Recreate the config object with the submited
|
||||||
|
}
|
||||||
|
// Load login page
|
||||||
|
else {
|
||||||
|
$_SESSION["config"] = new LAMConfig($default_Profile); // Create new Config object
|
||||||
|
}
|
||||||
|
|
||||||
|
$_SESSION['language'] = $_SESSION["config"]->get_defaultLanguage();
|
||||||
|
if (isset($_POST['language'])) {
|
||||||
|
$_SESSION['language'] = $_POST['language']; // Write selected language in session
|
||||||
|
}
|
||||||
|
$current_language = explode(":",$_SESSION['language']);
|
||||||
|
$_SESSION['header'] = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n\n";
|
||||||
|
$_SESSION['header'] .= "<html>\n<head>\n";
|
||||||
|
$_SESSION['header'] .= "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . $current_language[1] . "\">\n";
|
||||||
|
$_SESSION['header'] .= "<meta http-equiv=\"pragma\" content=\"no-cache\">\n <meta http-equiv=\"cache-control\" content=\"no-cache\">";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays the login window.
|
* Displays the login window.
|
||||||
*
|
*
|
||||||
|
@ -79,15 +114,6 @@ function display_LoginPage($config_object) {
|
||||||
setcookie("Key", base64_encode($key), 0, "/");
|
setcookie("Key", base64_encode($key), 0, "/");
|
||||||
setcookie("IV", base64_encode($iv), 0, "/");
|
setcookie("IV", base64_encode($iv), 0, "/");
|
||||||
}
|
}
|
||||||
|
|
||||||
$_SESSION['language'] = $config_object->get_defaultLanguage();
|
|
||||||
|
|
||||||
$current_language = explode(":",$_SESSION['language']);
|
|
||||||
$_SESSION['header'] = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n\n";
|
|
||||||
$_SESSION['header'] .= "<html>\n<head>\n";
|
|
||||||
$_SESSION['header'] .= "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . $current_language[1] . "\">\n";
|
|
||||||
$_SESSION['header'] .= "<meta http-equiv=\"pragma\" content=\"no-cache\">\n <meta http-equiv=\"cache-control\" content=\"no-cache\">";
|
|
||||||
|
|
||||||
// loading available languages from language.conf file
|
// loading available languages from language.conf file
|
||||||
$languagefile = "../config/language";
|
$languagefile = "../config/language";
|
||||||
if(is_file($languagefile) == True)
|
if(is_file($languagefile) == True)
|
||||||
|
@ -347,8 +373,6 @@ function display_LoginPage($config_object) {
|
||||||
|
|
||||||
// checking if the submitted username/password is correct.
|
// checking if the submitted username/password is correct.
|
||||||
if(!empty($_POST['checklogin'])) {
|
if(!empty($_POST['checklogin'])) {
|
||||||
$_SESSION['lampath'] = realpath('../') . "/"; // Save full path to lam in session
|
|
||||||
|
|
||||||
include_once("../lib/ldap.inc"); // Include ldap.php which provides Ldap class
|
include_once("../lib/ldap.inc"); // Include ldap.php which provides Ldap class
|
||||||
|
|
||||||
$_SESSION['ldap'] = new Ldap($_SESSION['config']); // Create new Ldap object
|
$_SESSION['ldap'] = new Ldap($_SESSION['config']); // Create new Ldap object
|
||||||
|
@ -419,12 +443,6 @@ if(!empty($_POST['checklogin'])) {
|
||||||
$result = $_SESSION['ldap']->connect($username,$_POST['passwd']); // Connect to LDAP server for verifing username/password
|
$result = $_SESSION['ldap']->connect($username,$_POST['passwd']); // Connect to LDAP server for verifing username/password
|
||||||
if($result === 0) {// Username/password correct. Do some configuration and load main frame.
|
if($result === 0) {// Username/password correct. Do some configuration and load main frame.
|
||||||
$_SESSION['loggedIn'] = true;
|
$_SESSION['loggedIn'] = true;
|
||||||
$_SESSION['language'] = $_POST['language']; // Write selected language in session
|
|
||||||
$current_language = explode(":",$_SESSION['language']);
|
|
||||||
$_SESSION['header'] = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n\n";
|
|
||||||
$_SESSION['header'] .= "<html>\n<head>\n";
|
|
||||||
$_SESSION['header'] .= "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . $current_language[1] . "\">\n";
|
|
||||||
$_SESSION['header'] .= "<meta http-equiv=\"pragma\" content=\"no-cache\">\n <meta http-equiv=\"cache-control\" content=\"no-cache\">";
|
|
||||||
// set security settings for session
|
// set security settings for session
|
||||||
$_SESSION['sec_session_id'] = session_id();
|
$_SESSION['sec_session_id'] = session_id();
|
||||||
$_SESSION['sec_client_ip'] = $_SERVER['REMOTE_ADDR'];
|
$_SESSION['sec_client_ip'] = $_SERVER['REMOTE_ADDR'];
|
||||||
|
@ -440,49 +458,28 @@ if(!empty($_POST['checklogin'])) {
|
||||||
// connection failed
|
// connection failed
|
||||||
$error_message = _("Cannot connect to specified LDAP server. Please try again.");
|
$error_message = _("Cannot connect to specified LDAP server. Please try again.");
|
||||||
logNewMessage(LOG_ERR, 'User ' . $_POST['username'] . ' (' . $clientSource . ') failed to log in (LDAP error: ' . ldap_err2str($result) . ').');
|
logNewMessage(LOG_ERR, 'User ' . $_POST['username'] . ' (' . $clientSource . ') failed to log in (LDAP error: ' . ldap_err2str($result) . ').');
|
||||||
display_LoginPage($_SESSION['config']);
|
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
elseif ($result == 81) {
|
elseif ($result == 81) {
|
||||||
// connection failed
|
// connection failed
|
||||||
$error_message = _("Cannot connect to specified LDAP server. Please try again.");
|
$error_message = _("Cannot connect to specified LDAP server. Please try again.");
|
||||||
logNewMessage(LOG_ERR, 'User ' . $_POST['username'] . ' (' . $clientSource . ') failed to log in (LDAP error: ' . ldap_err2str($result) . ').');
|
logNewMessage(LOG_ERR, 'User ' . $_POST['username'] . ' (' . $clientSource . ') failed to log in (LDAP error: ' . ldap_err2str($result) . ').');
|
||||||
display_LoginPage($_SESSION['config']);
|
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
elseif ($result == 49) {
|
elseif ($result == 49) {
|
||||||
// user name/password invalid. Return to login page.
|
// user name/password invalid. Return to login page.
|
||||||
$error_message = _("Wrong password/user name combination. Please try again.");
|
$error_message = _("Wrong password/user name combination. Please try again.");
|
||||||
logNewMessage(LOG_ERR, 'User ' . $_POST['username'] . ' (' . $clientSource . ') failed to log in (wrong password).');
|
logNewMessage(LOG_ERR, 'User ' . $_POST['username'] . ' (' . $clientSource . ') failed to log in (wrong password).');
|
||||||
display_LoginPage($_SESSION['config']);
|
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// other errors
|
// other errors
|
||||||
$error_message = _("LDAP error, server says:") . "\n<br>($result) " . ldap_err2str($result);
|
$error_message = _("LDAP error, server says:") . "\n<br>($result) " . ldap_err2str($result);
|
||||||
logNewMessage(LOG_ERR, 'User ' . $_POST['username'] . ' (' . $clientSource . ') failed to log in (LDAP error: ' . ldap_err2str($result) . ').');
|
logNewMessage(LOG_ERR, 'User ' . $_POST['username'] . ' (' . $clientSource . ') failed to log in (LDAP error: ' . ldap_err2str($result) . ').');
|
||||||
display_LoginPage($_SESSION['config']);
|
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
|
display_LoginPage($_SESSION['config']);
|
||||||
|
exit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Reload loginpage after a profile change
|
|
||||||
elseif(!empty($_POST['profileChange'])) {
|
|
||||||
logNewMessage(LOG_DEBUG, "Change server profile to " . $_POST['profile']);
|
|
||||||
$_SESSION['config'] = new LAMConfig($_POST['profile']); // Recreate the config object with the submited
|
|
||||||
display_LoginPage($_SESSION['config']); // Load login page
|
|
||||||
}
|
|
||||||
// Load login page
|
|
||||||
else {
|
|
||||||
$default_Config = new LAMCfgMain();
|
|
||||||
$default_Profile = $default_Config->default;
|
|
||||||
if(isset($_COOKIE["lam_default_profile"])) {
|
|
||||||
$default_Profile = $_COOKIE["lam_default_profile"];
|
|
||||||
}
|
|
||||||
$_SESSION["config"] = new LAMConfig($default_Profile); // Create new Config object
|
|
||||||
$_SESSION["cfgMain"] = $default_Config; // Create new CfgMain object
|
|
||||||
|
|
||||||
display_LoginPage($_SESSION["config"]); // Load Login page
|
display_LoginPage($_SESSION["config"]);
|
||||||
}
|
|
||||||
?>
|
?>
|
||||||
|
|
Loading…
Reference in New Issue