Browse Source

Report de r19621 : Ferme #2316 : en cas d'auth PHP il ne faut pas changer l'alea a chaque hit car cela empeche la verification des actions securisee

On ajoute un argument $phpauth aux fonctions d'auth, qui est a true quand la fonction est appelee depuis lire_php_auth
Pas de rupture de compat car si la methode ignore cet argument c'est qu'elle n'en a pas besoin
spip-3-stable
Cerdic 11 years ago
parent
commit
60f24d8523
  1. 3
      ecrire/auth/ldap.php
  2. 6
      ecrire/auth/spip.php
  3. 4
      ecrire/inc/auth.php

3
ecrire/auth/ldap.php

@ -42,10 +42,11 @@ if (!isset($GLOBALS['ldap_attributes']) OR !is_array($GLOBALS['ldap_attributes']
* @param string $login
* @param string $pass
* @param string $serveur
* @param bool $phpauth
* @return string
*/
// http://doc.spip.org/@inc_auth_ldap_dist
function auth_ldap_dist ($login, $pass, $serveur='') {
function auth_ldap_dist ($login, $pass, $serveur='', $phpauth=false) {
#spip_log("ldap $login " . ($pass ? "mdp fourni" : "mdp absent"));

6
ecrire/auth/spip.php

@ -19,9 +19,10 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* @param string $login
* @param string $pass
* @param string $serveur
* @param bool $phpauth
* @return array|bool
*/
function auth_spip_dist ($login, $pass, $serveur='') {
function auth_spip_dist ($login, $pass, $serveur='', $phpauth=false) {
// retrouver le login
$login = auth_spip_retrouver_login($login);
@ -68,7 +69,8 @@ function auth_spip_dist ($login, $pass, $serveur='') {
if (!$row) return array();
// fait tourner le codage du pass dans la base
if ($shanext) {
// sauf si phpauth : cela reviendrait a changer l'alea a chaque hit, et aucune action verifiable par securiser_action()
if ($shanext AND !$phpauth) {
include_spip('inc/acces'); // pour creer_uniqid
@sql_update('spip_auteurs', array('alea_actuel' => 'alea_futur', 'pass' => sql_quote($shanext,$serveur,'text'), 'alea_futur' => sql_quote(creer_uniqid(),$serveur,'text')), "id_auteur=" . $row['id_auteur'].' AND pass IN ('.sql_quote($shapass,$serveur,'text').', '.sql_quote($md5pass,$serveur,'text').')','',$serveur);

4
ecrire/inc/auth.php

@ -628,7 +628,7 @@ function lire_php_auth($login, $pw, $serveur=''){
if (!$row) {
if (spip_connect_ldap($serveur)
AND $auth_ldap = charger_fonction('ldap', 'auth', true))
return $auth_ldap($login, $pw, $serveur);
return $auth_ldap($login, $pw, $serveur, true);
return false;
}
// su pas de source definie
@ -639,7 +639,7 @@ function lire_php_auth($login, $pw, $serveur=''){
$auteur='';
if ($auth)
$auteur = $auth($login, $pw, $serveur);
$auteur = $auth($login, $pw, $serveur, true);
// verifier que ce n'est pas un message d'erreur
if (is_array($auteur) AND count($auteur))
return $auteur;

Loading…
Cancel
Save