Landing page

Domande sulle funzionalità di backend: amministrazione utenti e corsi, certificati, iscrizioni, report, ...
User avatar
Simbiosi
FormaLms User
Posts: 174
Joined: Thu Sep 20, 2012 6:12 pm
Location: Milano

Re: Landing page

Post by Simbiosi »

eccolo qua, posto tutta la parte.

Code: Select all

	

	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.');
		}
	}
.- Primus inter pares -.
jasmines
Senior Boarder
Posts: 277
Joined: Fri May 03, 2013 12:29 pm

Re: Landing page

Post by jasmines »

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:

Code: Select all

<?php
session_start();
$_SESSION['mdsign'] = md5(uniqid(rand(), true) ."|". mt_rand() ."|". time());
$_SESSION['mdsign_timestamp'] = time();
?>
<form id="login_confirm" method="post" action="http://e.frareg.com/doceboLms/index.php?modname=login&op=confirm">
<input type="hidden" id="authentic_request_login_confirm" name="authentic_request" value="<?php echo $_SESSION['mdsign'];?>" />

<label for="login_userid">Username</label>
<input type="text" id="login_userid" name="login_userid" value="" maxlength="255" tabindex="1" />
<label for="login_pwd">Password</label>
<input type="password" id="login_pwd" name="login_pwd" maxlength="255" tabindex="2" autocomplete="off" />
<input type="submit" id="login" name="log_button" value="Login" tabindex="3" />
</form>
User avatar
Simbiosi
FormaLms User
Posts: 174
Joined: Thu Sep 20, 2012 6:12 pm
Location: Milano

Re: Landing page

Post by Simbiosi »

e questa?

http://www.docebo.com/community/doceboC ... lOgin.html

se riesco a capire quale sia l'if di cui parla potrei commentarlo anche io.

ho trovato anche
http://www.docebo.com/community/doceboC ... e_web.html

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.
.- Primus inter pares -.
jasmines
Senior Boarder
Posts: 277
Joined: Fri May 03, 2013 12:29 pm

Re: Landing page

Post by jasmines »

Si riferiscono alla 3.6...
jasmines
Senior Boarder
Posts: 277
Joined: Fri May 03, 2013 12:29 pm

Re: Landing page

Post by jasmines »

Prova a commentare l'intera funzione in /lib/lib.utils.php:

Code: Select all

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.');
		}*/
	}
User avatar
Simbiosi
FormaLms User
Posts: 174
Joined: Thu Sep 20, 2012 6:12 pm
Location: Milano

Re: Landing page

Post by Simbiosi »

purtroppo non funziona.
Da errore nel server appena si prova ad autenticarsi.

SI lo so che erano per la 3 ma pensavo avessero solo " riordinato le funzioni" e magari la chiamata si trovava nel bootstrap ( invece no ).
.- Primus inter pares -.
jasmines
Senior Boarder
Posts: 277
Joined: Fri May 03, 2013 12:29 pm

Re: Landing page

Post by jasmines »

Cmq è lì che devi lavorare... prova a commentare solo la parte Invalid request...
User avatar
Simbiosi
FormaLms User
Posts: 174
Joined: Thu Sep 20, 2012 6:12 pm
Location: Milano

Re: Landing page

Post by Simbiosi »

SOLUZIONE FUNZIONANTE:

Aprire il file lib.utils.php ( /lib )

E modificare con questo codice la funziona checkSignature.

Code: Select all

	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:

Code: Select all

/*	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.');
		}*/
tnx to jasmines
.- Primus inter pares -.
jasmines
Senior Boarder
Posts: 277
Joined: Fri May 03, 2013 12:29 pm

Re: Landing page

Post by jasmines »

Ciao, qualcuno ha trovato il modo di accedere dall'esterno senza modificare il controllo sulla signature che da' grossi rischi sicurezza?

Mi riferisco in particolare a max e pasto che dicevano di averlo fatto...
User avatar
max
FormaLms Guru
Posts: 2770
Joined: Thu Mar 01, 2012 10:41 am
Version: forma.lms 2.4
Contact:

Re: Landing page

Post by max »

Ciao Jasmines,
l'avevamo fatto con una 3.6, come dicevo qualche post fa, e il sistema è cambiato da allora...
---------------------
Massimiliano Ferrari
Elearnit - Elearning e Knowledge Management
https://www.elearnit.net
https://www.linkedin.com/in/massimilianoferrari
m.ferrari[at]elearnit.net
Skype: m_ferrari_it
Post Reply