Skip to content
Extraits de code Groupes Projets
Valider ebb06ce6 rédigé par esj's avatar esj
Parcourir les fichiers

Le Oups de riguer (François Schreuer)

parent 7ce2c047
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -103,21 +103,6 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) ...@@ -103,21 +103,6 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour)
$email_auteur = $GLOBALS['auteur_session']['email']; $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. // ne pas mettre '', sinon le squelette n'affichera rien.
$previsu = ' '; $previsu = ' ';
...@@ -161,10 +146,8 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) ...@@ -161,10 +146,8 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour)
if ($afficher_texte != 'non') if ($afficher_texte != 'non')
$previsu = inclure_previsu($texte, $titre, $email_auteur, $auteur, $url_site, $nom_site_forum, $ajouter_mot); $previsu = inclure_previsu($texte, $titre, $email_auteur, $auteur, $url_site, $nom_site_forum, $ajouter_mot);
$alea = forum_fichier_tmp();
include_spip('inc/actions'); $alea = forum_fichier_tmp();
$hash = calculer_action_auteur('ajout_forum'.join(' ', $ids).' '.$alea);
// Poser un cookie pour ne pas retaper les infos invariables // Poser un cookie pour ne pas retaper les infos invariables
include_spip('inc/cookie'); include_spip('inc/cookie');
...@@ -173,10 +156,32 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) ...@@ -173,10 +156,32 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour)
'email' => $email_auteur))); 'email' => $email_auteur)));
} }
// pour la chaine de hidden
$script_hidden = $script = str_replace('&', '&', $script); // Valeurs servant au calcul d'une signature de securite.
foreach ($ids as $id => $v) // Elles seront placees en Input Hidden pour que inc/forum_insert
$script_hidden = parametre_url($script_hidden, $id, $v, '&'); // 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, return array('formulaires/formulaire_forum', 0,
array( array(
......
...@@ -113,24 +113,12 @@ function mots_du_forum($ajouter_mot, $id_message) ...@@ -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)"); 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 // Retourne le fichier verrouillant si correct
// http://doc.spip.org/@forum_insert_secure // 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"; $file = _DIR_TMP ."forum_" . preg_replace('/[^0-9]/', '', $alea) .".lck";
return file_exists($file) ? $file : ''; return file_exists($file) ? $file : '';
...@@ -204,7 +192,10 @@ function inc_forum_insert_dist() { ...@@ -204,7 +192,10 @@ function inc_forum_insert_dist() {
// Verifier hash securite pour les forums avec previsu // Verifier hash securite pour les forums avec previsu
if ($afficher_texte <> 'non') { 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) { if (!$file) {
# ne pas tracer cette erreur, peut etre due a un double POST # ne pas tracer cette erreur, peut etre due a un double POST
# tracer_erreur_forum('session absente'); # tracer_erreur_forum('session absente');
......
...@@ -84,7 +84,10 @@ if (autoriser_sans_cookie($exec)) { ...@@ -84,7 +84,10 @@ if (autoriser_sans_cookie($exec)) {
} else { } else {
$var_auth = charger_fonction('auth', 'inc'); $var_auth = charger_fonction('auth', 'inc');
$var_auth = $var_auth(); $var_auth = $var_auth();
if ($var_auth) redirige_par_entete($var_auth); if ($var_auth) {
include_spip('inc/headers');
redirige_par_entete($var_auth);
}
} }
// //
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter