Chargement en cours ecrire/balise/formulaire_forum.php +27 −22 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -103,21 +103,6 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) $email_auteur = $GLOBALS['auteur_session']['email']; } } // Tableau des valeurs servant au calcul d'une signature de securite. // Elles seront placees en Input Hidden pour que inc/forum_insert // recalcule la meme chose et verifie l'identite des resultats. // Donc ne pas changer la valeur de ce tableau entre le calcul de // la signature et la fabrication des Hidden // Faire attention aussi a 0 != '' // id_rubrique est parfois passee pour les articles, on n'en veut pas $ids = array(); if ($id_rubrique > 0 AND ($id_article OR $id_breve OR $id_syndic)) $id_rubrique = 0; foreach (array('id_article', 'id_breve', 'id_forum', 'id_rubrique', 'id_syndic') as $o) { $ids[$o] = ($x = intval($$o)) ? $x : ''; } // ne pas mettre '', sinon le squelette n'affichera rien. $previsu = ' '; Chargement en cours Chargement en cours @@ -161,10 +146,8 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) if ($afficher_texte != 'non') $previsu = inclure_previsu($texte, $titre, $email_auteur, $auteur, $url_site, $nom_site_forum, $ajouter_mot); $alea = forum_fichier_tmp(); include_spip('inc/actions'); $hash = calculer_action_auteur('ajout_forum'.join(' ', $ids).' '.$alea); $alea = forum_fichier_tmp(); // Poser un cookie pour ne pas retaper les infos invariables include_spip('inc/cookie'); Chargement en cours @@ -173,10 +156,32 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) 'email' => $email_auteur))); } // pour la chaine de hidden $script_hidden = $script = str_replace('&', '&', $script); foreach ($ids as $id => $v) $script_hidden = parametre_url($script_hidden, $id, $v, '&'); // Valeurs servant au calcul d'une signature de securite. // Elles seront placees en Input Hidden pour que inc/forum_insert // recalcule la meme chose et verifie l'identite des resultats. // Ne pas changer ces valeurs entre le calcul de la signature // et leur insertion en hidden. // Faire attention aussi a 0 != '' // id_rubrique est parfois passee pour les articles, on n'en veut pas if ($id_rubrique > 0 AND ($id_article OR $id_breve OR $id_syndic)) $id_rubrique = 0; $arg = intval($id_article) .'/'. . intval($id_breve) . '/' . intval($id_forum) . '/' . intval($id_rubrique) . '/' . intval($id_syndic) . '/' . $alea; include_spip('inc/actions'); $hash = calculer_action_auteur("ajout_forum-$arg"); $script = str_replace('&', '&', $script); $script_hidden = parametre_url($script, 'arg', $arg, '&'); $script_hidden = parametre_url($script_hidden, 'action', 'ajout_forum, '&'); return array('formulaires/formulaire_forum', 0, array( Chargement en cours ecrire/inc/forum_insert.php +6 −15 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -113,24 +113,12 @@ function mots_du_forum($ajouter_mot, $id_message) spip_abstract_insert('spip_mots_forum', '(id_mot, id_forum)', "($id_mot, $id_message)"); } // Recalcule la signature faite dans formulaires/inc-formulaire-forum // en fonction des input POST (ne pas se fier aux parametres d'URL) // Retourne le fichier verrouillant si correct // http://doc.spip.org/@forum_insert_secure function forum_insert_secure($alea, $hash) function forum_insert_secure($arg, $hash) { $ids = array(); foreach (array('id_article', 'id_breve', 'id_forum', 'id_rubrique', 'id_syndic') as $o) { $ids[$o] = ($x = intval($_POST[$o])) ? $x : ''; } if (!verifier_action_auteur('ajout_forum'.join(' ', $ids).' '.$alea, $hash)) { spip_log('erreur hash forum'); die (_T('forum_titre_erreur')); # echec du POST } $file = _DIR_TMP ."forum_" . preg_replace('/[^0-9]/', '', $alea) .".lck"; return file_exists($file) ? $file : ''; Chargement en cours Chargement en cours @@ -204,7 +192,10 @@ function inc_forum_insert_dist() { // Verifier hash securite pour les forums avec previsu if ($afficher_texte <> 'non') { $file = forum_insert_secure(_request('alea'), _request('hash')); $var_f = charger_fonction('controler_action_auteur', 'inc'); $var_f(); $file = forum_insert_secure(_request('arg'), _request('hash')); if (!$file) { # ne pas tracer cette erreur, peut etre due a un double POST # tracer_erreur_forum('session absente'); Chargement en cours ecrire/index.php +4 −1 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -84,7 +84,10 @@ if (autoriser_sans_cookie($exec)) { } else { $var_auth = charger_fonction('auth', 'inc'); $var_auth = $var_auth(); if ($var_auth) redirige_par_entete($var_auth); if ($var_auth) { include_spip('inc/headers'); redirige_par_entete($var_auth); } } // Chargement en cours Chargement en cours
ecrire/balise/formulaire_forum.php +27 −22 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -103,21 +103,6 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) $email_auteur = $GLOBALS['auteur_session']['email']; } } // Tableau des valeurs servant au calcul d'une signature de securite. // Elles seront placees en Input Hidden pour que inc/forum_insert // recalcule la meme chose et verifie l'identite des resultats. // Donc ne pas changer la valeur de ce tableau entre le calcul de // la signature et la fabrication des Hidden // Faire attention aussi a 0 != '' // id_rubrique est parfois passee pour les articles, on n'en veut pas $ids = array(); if ($id_rubrique > 0 AND ($id_article OR $id_breve OR $id_syndic)) $id_rubrique = 0; foreach (array('id_article', 'id_breve', 'id_forum', 'id_rubrique', 'id_syndic') as $o) { $ids[$o] = ($x = intval($$o)) ? $x : ''; } // ne pas mettre '', sinon le squelette n'affichera rien. $previsu = ' '; Chargement en cours Chargement en cours @@ -161,10 +146,8 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) if ($afficher_texte != 'non') $previsu = inclure_previsu($texte, $titre, $email_auteur, $auteur, $url_site, $nom_site_forum, $ajouter_mot); $alea = forum_fichier_tmp(); include_spip('inc/actions'); $hash = calculer_action_auteur('ajout_forum'.join(' ', $ids).' '.$alea); $alea = forum_fichier_tmp(); // Poser un cookie pour ne pas retaper les infos invariables include_spip('inc/cookie'); Chargement en cours @@ -173,10 +156,32 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) 'email' => $email_auteur))); } // pour la chaine de hidden $script_hidden = $script = str_replace('&', '&', $script); foreach ($ids as $id => $v) $script_hidden = parametre_url($script_hidden, $id, $v, '&'); // Valeurs servant au calcul d'une signature de securite. // Elles seront placees en Input Hidden pour que inc/forum_insert // recalcule la meme chose et verifie l'identite des resultats. // Ne pas changer ces valeurs entre le calcul de la signature // et leur insertion en hidden. // Faire attention aussi a 0 != '' // id_rubrique est parfois passee pour les articles, on n'en veut pas if ($id_rubrique > 0 AND ($id_article OR $id_breve OR $id_syndic)) $id_rubrique = 0; $arg = intval($id_article) .'/'. . intval($id_breve) . '/' . intval($id_forum) . '/' . intval($id_rubrique) . '/' . intval($id_syndic) . '/' . $alea; include_spip('inc/actions'); $hash = calculer_action_auteur("ajout_forum-$arg"); $script = str_replace('&', '&', $script); $script_hidden = parametre_url($script, 'arg', $arg, '&'); $script_hidden = parametre_url($script_hidden, 'action', 'ajout_forum, '&'); return array('formulaires/formulaire_forum', 0, array( Chargement en cours
ecrire/inc/forum_insert.php +6 −15 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -113,24 +113,12 @@ function mots_du_forum($ajouter_mot, $id_message) spip_abstract_insert('spip_mots_forum', '(id_mot, id_forum)', "($id_mot, $id_message)"); } // Recalcule la signature faite dans formulaires/inc-formulaire-forum // en fonction des input POST (ne pas se fier aux parametres d'URL) // Retourne le fichier verrouillant si correct // http://doc.spip.org/@forum_insert_secure function forum_insert_secure($alea, $hash) function forum_insert_secure($arg, $hash) { $ids = array(); foreach (array('id_article', 'id_breve', 'id_forum', 'id_rubrique', 'id_syndic') as $o) { $ids[$o] = ($x = intval($_POST[$o])) ? $x : ''; } if (!verifier_action_auteur('ajout_forum'.join(' ', $ids).' '.$alea, $hash)) { spip_log('erreur hash forum'); die (_T('forum_titre_erreur')); # echec du POST } $file = _DIR_TMP ."forum_" . preg_replace('/[^0-9]/', '', $alea) .".lck"; return file_exists($file) ? $file : ''; Chargement en cours Chargement en cours @@ -204,7 +192,10 @@ function inc_forum_insert_dist() { // Verifier hash securite pour les forums avec previsu if ($afficher_texte <> 'non') { $file = forum_insert_secure(_request('alea'), _request('hash')); $var_f = charger_fonction('controler_action_auteur', 'inc'); $var_f(); $file = forum_insert_secure(_request('arg'), _request('hash')); if (!$file) { # ne pas tracer cette erreur, peut etre due a un double POST # tracer_erreur_forum('session absente'); Chargement en cours
ecrire/index.php +4 −1 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -84,7 +84,10 @@ if (autoriser_sans_cookie($exec)) { } else { $var_auth = charger_fonction('auth', 'inc'); $var_auth = $var_auth(); if ($var_auth) redirige_par_entete($var_auth); if ($var_auth) { include_spip('inc/headers'); redirige_par_entete($var_auth); } } // Chargement en cours