From c4cfd6eb2e9b8b03c8833905f4da372140b27682 Mon Sep 17 00:00:00 2001 From: Vincent Zanotti Date: Fri, 25 Apr 2008 19:14:15 +0200 Subject: [PATCH] Fixes the most critical XSRF vulnerabilities in Xnet/XnetGrp. Signed-off-by: Vincent Zanotti --- modules/xnet.php | 8 ++++++-- modules/xnetgrp.php | 4 +++- templates/xnet/admin.tpl | 2 ++ templates/xnetgrp/edit.tpl | 1 + 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/modules/xnet.php b/modules/xnet.php index d592f5b..c05c939 100644 --- a/modules/xnet.php +++ b/modules/xnet.php @@ -80,7 +80,7 @@ class XnetModule extends PLModule Get::v('del')); list($id, $nom, $domain) = $res->fetchOneRow(); $page->assign('nom', $nom); - if ($id && Post::has('del')) { + if ($id && Post::has('del') && Session::has_xsrf_token()) { XDB::query('DELETE FROM groupex.membres WHERE asso_id={?}', $id); $page->trig('membres supprimés'); @@ -103,16 +103,20 @@ class XnetModule extends PLModule XDB::query('DELETE FROM groupex.asso WHERE id={?}', $id); $page->trig("Groupe $nom supprimé"); Get::kill('del'); + } else if ($id && Post::has('del')) { + $page->trig("La suppression du groupe X a échouée, merci de réssayer."); } if (!$id) { Get::kill('del'); } } - if (Post::has('diminutif')) { + if (Post::has('diminutif') && Session::has_xsrf_token()) { XDB::query('INSERT INTO groupex.asso (id,diminutif) VALUES(NULL,{?})', Post::v('diminutif')); pl_redirect('../'.Post::v('diminutif').'/edit'); + } else if (Post::has('diminutif')) { + $page->trig("L'ajout du groupe X a échoué, merci de réssayer."); } $res = XDB::query('SELECT nom,diminutif FROM groupex.asso ORDER by NOM'); diff --git a/modules/xnetgrp.php b/modules/xnetgrp.php index 79496d2..b064196 100644 --- a/modules/xnetgrp.php +++ b/modules/xnetgrp.php @@ -221,7 +221,7 @@ class XnetGrpModule extends PLModule global $globals; $page->changeTpl('xnetgrp/edit.tpl'); - if (Post::has('submit')) { + if (Post::has('submit') && Session::has_xsrf_token()) { if (S::has_perms()) { if (Post::v('mail_domain') && (strstr(Post::v('mail_domain'), '.') === false)) { $page->trig("le domaine doit être un FQDN (aucune modif effectuée) !!!"); @@ -272,6 +272,8 @@ class XnetGrpModule extends PLModule } pl_redirect('../'.Post::v('diminutif', $globals->asso('diminutif')).'/edit'); + } else if (Post::has('submit')) { + $page->trig("La mise à jour des paramètres du groupe a échouée, merci de réssayer."); } if (S::has_perms()) { diff --git a/templates/xnet/admin.tpl b/templates/xnet/admin.tpl index b495608..fe44a1a 100644 --- a/templates/xnet/admin.tpl +++ b/templates/xnet/admin.tpl @@ -25,6 +25,7 @@

Suppression du groupe {$nom}

+ {xsrf_token_field}
@@ -35,6 +36,7 @@

Ajouter un groupe

+ {xsrf_token_field}

Pour ajouter un groupe, choisir ici le diminutif qu'il va utiliser, tu seras ensuite redirigé vers une page te permettant d'éditer le groupe : diff --git a/templates/xnetgrp/edit.tpl b/templates/xnetgrp/edit.tpl index 9ba8a6b..fb9a389 100644 --- a/templates/xnetgrp/edit.tpl +++ b/templates/xnetgrp/edit.tpl @@ -23,6 +23,7 @@

{if $asso.nom}{$asso.nom} : {/if}Éditer l'accueil

+ {xsrf_token_field} {if $super} -- 2.1.4