From 8d73663dcead13504ec2c71ce625adb79b438c6d Mon Sep 17 00:00:00 2001 From: Vincent Zanotti Date: Thu, 3 Jul 2008 23:08:26 +0200 Subject: [PATCH] Adds XSRF protection to the XnetLists module. Signed-off-by: Vincent Zanotti --- modules/xnetlists.php | 12 ++++++++++++ templates/xnetlists/alias-admin.tpl | 3 ++- templates/xnetlists/alias-create.tpl | 1 + templates/xnetlists/create.tpl | 1 + templates/xnetlists/index.tpl | 5 +++-- templates/xnetlists/sync.tpl | 2 +- 6 files changed, 20 insertions(+), 4 deletions(-) diff --git a/modules/xnetlists.php b/modules/xnetlists.php index f442fea..3c71652 100644 --- a/modules/xnetlists.php +++ b/modules/xnetlists.php @@ -79,15 +79,19 @@ class XnetListsModule extends ListsModule $page->changeTpl('xnetlists/index.tpl'); if (Get::has('del')) { + S::assert_xsrf_token(); $this->client->unsubscribe(Get::v('del')); pl_redirect('lists'); } if (Get::has('add')) { + S::assert_xsrf_token(); $this->client->subscribe(Get::v('add')); pl_redirect('lists'); } if (Post::has('del_alias') && may_update()) { + S::assert_xsrf_token(); + $alias = Post::v('del_alias'); // prevent group admin from erasing aliases from other groups $alias = substr($alias, 0, strpos($alias, '@')).'@'.$globals->asso('mail_domain'); @@ -125,6 +129,8 @@ class XnetListsModule extends ListsModule if (!Post::has('submit')) { return; + } else { + S::assert_xsrf_token(); } if (!Post::has('liste')) { @@ -189,6 +195,7 @@ class XnetListsModule extends ListsModule $page->changeTpl('xnetlists/sync.tpl'); if (Env::has('add')) { + S::assert_xsrf_token(); $this->client->mass_subscribe($liste, array_keys(Env::v('add'))); } @@ -234,6 +241,8 @@ class XnetListsModule extends ListsModule $page->changeTpl('xnetlists/alias-admin.tpl'); if (Env::has('add_member')) { + S::assert_xsrf_token(); + $add = Env::v('add_member'); if (strstr($add, '@')) { list($mbox,$dom) = explode('@', strtolower($add)); @@ -269,6 +278,7 @@ class XnetListsModule extends ListsModule } if (Env::has('del_member')) { + S::assert_xsrf_token(); XDB::query( "DELETE FROM x4dat.virtual_redirect USING x4dat.virtual_redirect @@ -308,6 +318,8 @@ class XnetListsModule extends ListsModule if (!Post::has('submit')) { return; + } else { + S::assert_xsrf_token(); } if (!Post::has('liste')) { diff --git a/templates/xnetlists/alias-admin.tpl b/templates/xnetlists/alias-admin.tpl index 1b25671..91ddf3e 100644 --- a/templates/xnetlists/alias-admin.tpl +++ b/templates/xnetlists/alias-admin.tpl @@ -45,7 +45,7 @@ {if $m.admin}{/if} - + {icon name=delete title='retirer membre'} @@ -64,6 +64,7 @@
+ {xsrf_token_field}
  diff --git a/templates/xnetlists/alias-create.tpl b/templates/xnetlists/alias-create.tpl index 243312a..688dd92 100644 --- a/templates/xnetlists/alias-create.tpl +++ b/templates/xnetlists/alias-create.tpl @@ -46,6 +46,7 @@ Pour les autres besoins de communications (notament pour un grand nombre de pers de modération), il est recommandé de créer une liste de diffusion.

+ {xsrf_token_field} diff --git a/templates/xnetlists/create.tpl b/templates/xnetlists/create.tpl index 21baa74..6bcb001 100644 --- a/templates/xnetlists/create.tpl +++ b/templates/xnetlists/create.tpl @@ -34,6 +34,7 @@ Si tu as besoin de cette fonctionnalité, il faut alors impérativement< un alias qui, lui, est capable de regrouper plusieurs listes.

+ {xsrf_token_field}
Caractéristiques de l'alias
diff --git a/templates/xnetlists/index.tpl b/templates/xnetlists/index.tpl index f2ad857..7af568c 100644 --- a/templates/xnetlists/index.tpl +++ b/templates/xnetlists/index.tpl @@ -24,6 +24,7 @@

Es-tu sûr de vouloir supprimer l'alias {$smarty.get.del_alias} ?

+ {xsrf_token_field}
@@ -79,11 +80,11 @@ croix verte te permet de t'inscrire, après accord des responsables si l'inscrip
diff --git a/templates/xnetlists/sync.tpl b/templates/xnetlists/sync.tpl index 8cfad99..b7e979c 100644 --- a/templates/xnetlists/sync.tpl +++ b/templates/xnetlists/sync.tpl @@ -24,7 +24,7 @@

Non abonnés à la liste {$platal->argv[1]}@{$asso.mail_domain}

- + {xsrf_token_field}
Caractéristiques de la Liste{$l.nbsub} {if $l.sub eq 2} - {icon name=cross title="me désinscrire"} + {icon name=cross title="me désinscrire"} {elseif $l.sub eq 1} {icon name=flag_orange title='inscription en attente de modération'} {else} - {icon name=add title="m'inscrire"} + {icon name=add title="m'inscrire"} {/if}
-- 2.1.4
Membre