From 839a80cf2662cc418335b3e92f255192e46793b0 Mon Sep 17 00:00:00 2001 From: Vincent Zanotti Date: Sun, 18 May 2008 17:01:13 +0200 Subject: [PATCH] Adds missing anti-XSRF protections in Admin module. Signed-off-by: Vincent Zanotti --- modules/admin.php | 44 +++++++++++++++++++++---------- templates/admin/homonymes.tpl | 2 ++ templates/admin/wiki.tpl | 5 ++-- templates/core/password_prompt_logged.tpl | 1 + 4 files changed, 36 insertions(+), 16 deletions(-) diff --git a/modules/admin.php b/modules/admin.php index addfe08..e9e899d 100644 --- a/modules/admin.php +++ b/modules/admin.php @@ -740,24 +740,34 @@ class AdminModule extends PLModule } } - $page->assign('op',$op); - $page->assign('target',$target); + $page->assign('op', $op); + $page->assign('target', $target); // on a un $target valide, on prepare les mails if ($target) { - // on examine l'op a effectuer switch ($op) { case 'mail': - send_warning_homonyme($prenom, $nom, $forlife, $loginbis); - switch_bestalias($target, $loginbis); + if (S::has_xsrf_token()) { + send_warning_homonyme($prenom, $nom, $forlife, $loginbis); + switch_bestalias($target, $loginbis); + } else { + $page->assign('op', 'list'); + $page->trig("L'envoi du mail d'homonymie a échoué, merci de réessayer."); + } $op = 'list'; break; + case 'correct': - switch_bestalias($target, $loginbis); - XDB::execute("UPDATE aliases SET type='homonyme',expire=NOW() WHERE alias={?}", $loginbis); - XDB::execute("REPLACE INTO homonymes (homonyme_id,user_id) VALUES({?},{?})", $target, $target); - send_robot_homonyme($prenom, $nom, $forlife, $loginbis); + if (S::has_xsrf_token()) { + switch_bestalias($target, $loginbis); + XDB::execute("UPDATE aliases SET type='homonyme',expire=NOW() WHERE alias={?}", $loginbis); + XDB::execute("REPLACE INTO homonymes (homonyme_id,user_id) VALUES({?},{?})", $target, $target); + send_robot_homonyme($prenom, $nom, $forlife, $loginbis); + } else { + $page->assign('op', 'list'); + $page->trig("La correction de l'homonymie a échouée, merci de réessayer."); + } $op = 'list'; break; } @@ -843,7 +853,7 @@ class AdminModule extends PLModule } } $page->assign('new_deces',$new_deces); - } else if (!$validate) { + } else if ($validate) { $page->trig("La mise à jour des dates de decès à échouée, merci de réessayer."); } @@ -1036,7 +1046,7 @@ class AdminModule extends PLModule } // update wiki perms - if ($action == 'update') { + if ($action == 'update' && S::has_xsrf_token()) { $perms_read = Post::v('read'); $perms_edot = Post::v('edit'); if ($perms_read || $perms_edit) { @@ -1051,17 +1061,21 @@ class AdminModule extends PLModule wiki_set_perms($wiki_page, $perms0, $perms1); } } + } elseif ($action == 'update') { + $page->trig("La mise à jour des permissions wiki a échouée, merci de réessayer."); } - if ($action == 'delete' && $wikipage != '') { + if ($action == 'delete' && $wikipage != '' && S::has_xsrf_token()) { if (wiki_delete_page($wikipage)) { $page->trig("La page ".$wikipage." a été supprimée."); } else { $page->trig("Impossible de supprimer la page ".$wikipage."."); } + } elseif ($action == 'delete' && $wikipage != '') { + $page->trig("La suppression de la page wiki a échouée, merci de réessayer."); } - if ($action == 'rename' && $wikipage != '' && $wikipage2 != '' && $wikipage != $wikipage2) { + if ($action == 'rename' && $wikipage != '' && $wikipage2 != '' && $wikipage != $wikipage2 && S::has_xsrf_token()) { if ($changedLinks = wiki_rename_page($wikipage, $wikipage2)) { $s = 'La page '.$wikipage.' a été déplacée en '.$wikipage2.'.'; if (is_numeric($changedLinks)) { @@ -1071,6 +1085,8 @@ class AdminModule extends PLModule } else { $page->trig("Impossible de déplacer la page ".$wikipage); } + } elseif ($action == 'rename' && $wikipage != '' && $wikipage2 != '' && $wikipage != $wikipage2) { + $page->trig("Le renommage de la page wiki a échoué, merci de réessayer."); } $perms = wiki_perms_options(); @@ -1146,7 +1162,7 @@ class AdminModule extends PLModule if (S::has_xsrf_token()) { Xdb::execute('DELETE FROM ip_watch WHERE ip = {?}', ip_to_uint($ip)); } else { - $page->trig("La suppression de l'adresse IP a échouée, merci de réssayer."); + $page->trig("La suppression de l'adresse IP a échouée, merci de réessayer."); } } } diff --git a/templates/admin/homonymes.tpl b/templates/admin/homonymes.tpl index 1b71bfa..b254bcc 100644 --- a/templates/admin/homonymes.tpl +++ b/templates/admin/homonymes.tpl @@ -73,6 +73,7 @@ {elseif $op eq 'mail-conf'}
+ {xsrf_token_field} @@ -108,6 +109,7 @@ L'équipe Polytechnique.org {elseif $op eq 'correct-conf'} + {xsrf_token_field}
Envoyer un mail pour prévenir l'utilisateur
diff --git a/templates/admin/wiki.tpl b/templates/admin/wiki.tpl index c8257f3..45de786 100644 --- a/templates/admin/wiki.tpl +++ b/templates/admin/wiki.tpl @@ -73,6 +73,7 @@

+{xsrf_token_field}
Mettre en place le robot {$loginbis}@{#globals.mail.domain#}
diff --git a/templates/core/password_prompt_logged.tpl b/templates/core/password_prompt_logged.tpl index 54a8aed..32e517d 100644 --- a/templates/core/password_prompt_logged.tpl +++ b/templates/core/password_prompt_logged.tpl @@ -75,6 +75,7 @@
+ {xsrf_token_field} -- 2.1.4
@@ -112,8 +113,8 @@ {$perm.edit} - {icon name=book_next title='déplacer'} - {icon name=cross title='supprimer'} + {icon name=book_next title='déplacer'} + {icon name=cross title='supprimer'}