public static function generateSignature($addendum = false) {
if($addendum == false) $addendum = time();
if(!isset($_SESSION['mdsign'])) {
$_SESSION['mdsign'] = md5(uniqid(rand(), true) ."|". mt_rand() ."|". $addendum);
$_SESSION['mdsign_timestamp'] = time();
}
}
/**
* Get the signature saved in session or generate a new signature if needed
* @return string
*/
public static function getSignature($for_link = false) {
if(!isset($_SESSION['mdsign'])) Util::generateSignature();
if($for_link) return 'authentic_request='.$_SESSION['mdsign'];
return $_SESSION['mdsign'];
}
/**
* Check if the signature attached to the page request is valid, user in order to detect foreigns requests
*/
public static function checkSignature() {
//signature from a post or get
$authentic_request = Get::req('authentic_request', DOTY_STRING, '');
// signature from a ajax request
if(!$authentic_request && isset($_SERVER['HTTP_X_SIGNATURE'])) $authentic_request = $_SERVER['HTTP_X_SIGNATURE'];
if(!isset($_SESSION['mdsign'])
|| $authentic_request != $_SESSION['mdsign']
) {
// Invalid request
if (!defined('IS_AJAX')) {
Util::jump_to(Get::rel_path('lms').'/index.php?modname=login&op=logout&msg=101');
}
Util::fatal('Security issue, the request seem invalid ! Try a new login and retry.');
}
}
Il problema a quanto pare è che oltre a un controllo sulla signature c'è anche un controllo sulla sessione, per cui anche aprendola sulla pagina di login, non è la stessa che aprirebbe docebo, quindi in linea di massima non può funzionare su due server diversi.
Nel tuo caso, se la pagina di login è sulla stessa istanza di apache della piattaforma (così pare) potrebbe funzionare una cosa del genere:
ps
in ogni caso non lavora, neanche nella root dove si trova l'index originale.
L'unica soluzione è disabilitare il controllo che fa, anche se perdo in sicurezza.
public static function checkSignature() {
/*
//signature from a post or get
$authentic_request = Get::req('authentic_request', DOTY_STRING, '');
// signature from a ajax request
if(!$authentic_request && isset($_SERVER['HTTP_X_SIGNATURE'])) $authentic_request = $_SERVER['HTTP_X_SIGNATURE'];
//die(var_dump($_SESSION['mdsign']));
if(!isset($_SESSION['mdsign'])
|| $authentic_request != $_SESSION['mdsign']
) {
// Invalid request
if (!defined('IS_AJAX')) {
Util::jump_to(Get::rel_path('lms').'/index.php?modname=login&op=logout&msg=101');
}
Util::fatal('Security issue, the request seem invalid ! Try a new login and retry.');
}*/
}
public static function checkSignature() {
//signature from a post or get
$authentic_request = Get::req('authentic_request', DOTY_STRING, '');
// signature from a ajax request
if(!$authentic_request && isset($_SERVER['HTTP_X_SIGNATURE'])) $authentic_request = $_SERVER['HTTP_X_SIGNATURE'];
/* if(!isset($_SESSION['mdsign'])
|| $authentic_request != $_SESSION['mdsign']
) {
// Invalid request
if (!defined('IS_AJAX')) {
Util::jump_to(Get::rel_path('lms').'/index.php?modname=login&op=logout&msg=101');
}
Util::fatal('Security issue, the request seem invalid ! Try a new login and retry.');
}*/
}
Per la precisione ho commentato solo questo pezzo: