From: Vincent Zanotti Date: Mon, 19 May 2008 22:16:28 +0000 (+0200) Subject: Improves the XSRF protection by reducing it to a single assert on the existence of... X-Git-Tag: core/1.0.0~180 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;ds=sidebyside;h=40d428d888fbbe36da4c6196caa7b346266934f3;p=platal.git Improves the XSRF protection by reducing it to a single assert on the existence of the XSRF token. Signed-off-by: Vincent Zanotti --- diff --git a/classes/csvimporter.php b/classes/csvimporter.php index 522544f..571d227 100644 --- a/classes/csvimporter.php +++ b/classes/csvimporter.php @@ -330,9 +330,7 @@ class CSVImporter $fields[] = $key; } if ($current == 'valid' && Env::has('csv_valid')) { - if (!S::has_xsrf_token()) { - $page->kill("L'opération n'a pas pu être effectuée, merci de réessayer."); - } + S::assert_xsrf_token(); $this->run($_SESSION['csv_action'], $insert, $update); $page->assign('csv_done', true); $this->cleanSession($sesfields); diff --git a/classes/pltableeditor.php b/classes/pltableeditor.php index 35d5aae..826faa5 100644 --- a/classes/pltableeditor.php +++ b/classes/pltableeditor.php @@ -192,8 +192,9 @@ class PLTableEditor { $page->changeTpl('core/table-editor.tpl'); $list = true; + if ($action == 'delete') { + S::assert_xsrf_token(); - if ($action == 'delete' && S::has_xsrf_token()) { if (!isset($this->delete_action)) { foreach ($this->jtables as $table => $j) XDB::execute("DELETE FROM {$table} WHERE {$j['joinid']} = {?}{$j['joinextra']}", $id); @@ -209,8 +210,6 @@ class PLTableEditor } else { $page->trig("Impossible de supprimer l'entrée."); } - } else if ($action == 'delete') { - $page->trig("Impossible de supprimer l'entrée, merci de réessayer."); } if ($action == 'edit') { $r = XDB::query("SELECT * FROM {$this->table} WHERE {$this->idfield} = {?} AND {$this->whereclause}",$id); @@ -240,7 +239,9 @@ class PLTableEditor } $list = false; } - if ($action == 'update' && S::has_xsrf_token()) { + if ($action == 'update') { + S::assert_xsrf_token(); + $values = ""; $cancel = false; foreach ($this->vars as $field => $descr) { @@ -289,8 +290,6 @@ class PLTableEditor if (!$this->auto_return) { return $this->apply($page, 'edit', $id); } - } else if ($action == 'update') { - $page->trig("Impossible de mettre à jour, merci de réessayer."); } if ($action == 'sort') { $this->sortfield = $id; diff --git a/classes/session.php b/classes/session.php index 5a58059..2cb755a 100644 --- a/classes/session.php +++ b/classes/session.php @@ -78,11 +78,6 @@ class Session return Session::logged() && Session::v('perms')->hasFlag(PERMS_ADMIN); } - public static function has_xsrf_token() - { - return Session::has('xsrf_token') && Session::v('xsrf_token') == Env::v('token'); - } - public static function logged() { return Session::v('auth', AUTH_PUBLIC) >= AUTH_COOKIE; @@ -92,6 +87,22 @@ class Session { return Session::v('auth', AUTH_PUBLIC) >= AUTH_MDP; } + + // Anti-XSRF protections. + public static function has_xsrf_token() + { + return Session::has('xsrf_token') && Session::v('xsrf_token') == Env::v('token'); + } + + public static function assert_xsrf_token() + { + if (!Session::has_xsrf_token()) { + global $page; + if ($page instanceof PlatalPage) { + $page->kill("L'opération n'a pas pu aboutir, merci de réessayer."); + } + } + } } // {{{ function check_perms() diff --git a/modules/admin.php b/modules/admin.php index e9e899d..9b6fe07 100644 --- a/modules/admin.php +++ b/modules/admin.php @@ -413,9 +413,8 @@ class AdminModule extends PLModule // Check if there was a submission foreach($_POST as $key => $val) { - if (!S::has_xsrf_token()) { - $page->kill("L'opération de modification de l'utilisateur a échouée, merci de réessayer."); - } + S::assert_xsrf_token(); + switch ($key) { case "add_fwd": $email = trim(Env::v('email')); @@ -748,26 +747,20 @@ class AdminModule extends PLModule // on examine l'op a effectuer switch ($op) { case 'mail': - 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."); - } + S::assert_xsrf_token(); + + send_warning_homonyme($prenom, $nom, $forlife, $loginbis); + switch_bestalias($target, $loginbis); $op = 'list'; break; case 'correct': - 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."); - } + S::assert_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); $op = 'list'; break; } @@ -834,7 +827,9 @@ class AdminModule extends PLModule $page->assign('promo',$promo); - if ($validate && S::has_xsrf_token()) { + if ($validate) { + S::assert_xsrf_token(); + $new_deces = array(); $res = XDB::iterRow("SELECT user_id,matricule,nom,prenom,deces FROM auth_user_md5 WHERE promo = {?}", $promo); while (list($uid,$mat,$nom,$prenom,$deces) = $res->next()) { @@ -853,8 +848,6 @@ class AdminModule extends PLModule } } $page->assign('new_deces',$new_deces); - } else if ($validate) { - $page->trig("La mise à jour des dates de decès à échouée, merci de réessayer."); } $res = XDB::iterator('SELECT matricule, nom, prenom, deces FROM auth_user_md5 WHERE promo = {?} ORDER BY nom,prenom', $promo); @@ -937,12 +930,10 @@ class AdminModule extends PLModule } if(Env::has('uid') && Env::has('type') && Env::has('stamp')) { + S::assert_xsrf_token(); + $req = Validate::get_typed_request(Env::v('uid'), Env::v('type'), Env::v('stamp')); - if($req && S::has_xsrf_token()) { - $req->handle_formu(); - } else if ($req) { - $page->trig("L'opération a échoué, merci de réessayer."); - } + $req->handle_formu(); } $r = XDB::iterator('SHOW COLUMNS FROM requests_answers'); @@ -1046,7 +1037,9 @@ class AdminModule extends PLModule } // update wiki perms - if ($action == 'update' && S::has_xsrf_token()) { + if ($action == 'update') { + S::assert_xsrf_token(); + $perms_read = Post::v('read'); $perms_edot = Post::v('edit'); if ($perms_read || $perms_edit) { @@ -1061,21 +1054,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 != '' && S::has_xsrf_token()) { + if ($action == 'delete' && $wikipage != '') { + S::assert_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 && S::has_xsrf_token()) { + if ($action == 'rename' && $wikipage != '' && $wikipage2 != '' && $wikipage != $wikipage2) { + S::assert_xsrf_token(); + if ($changedLinks = wiki_rename_page($wikipage, $wikipage2)) { $s = 'La page '.$wikipage.' a été déplacée en '.$wikipage2.'.'; if (is_numeric($changedLinks)) { @@ -1085,8 +1078,6 @@ 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(); @@ -1135,10 +1126,7 @@ class AdminModule extends PLModule switch (Post::v('action')) { case 'create': if (trim(Post::v('ipN')) != '') { - if (!S::has_xsrf_token()) { - $page->trig("L'ajout d'une IP à surveiller a échoué, merci de réessayer."); - break; - } + S::assert_xsrf_token(); Xdb::execute('INSERT IGNORE INTO ip_watch (ip, mask, state, detection, last, uid, description) VALUES ({?}, {?}, {?}, CURDATE(), NOW(), {?}, {?})', ip_to_uint(trim(Post::v('ipN'))), ip_to_uint(trim(Post::v('maskN'))), @@ -1147,10 +1135,7 @@ class AdminModule extends PLModule break; case 'edit': - if (!S::has_xsrf_token()) { - $page->trig("L'édition de l'IP a échoué, merci de réessayer."); - break; - } + S::assert_xsrf_token(); Xdb::execute('UPDATE ip_watch SET state = {?}, last = NOW(), uid = {?}, description = {?}, mask = {?} WHERE ip = {?}', Post::v('stateN'), S::i('uid'), Post::v('descriptionN'), @@ -1159,11 +1144,8 @@ class AdminModule extends PLModule default: if ($action == 'delete' && !is_null($ip)) { - 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éessayer."); - } + S::assert_xsrf_token(); + Xdb::execute('DELETE FROM ip_watch WHERE ip = {?}', ip_to_uint($ip)); } } if ($action != 'create' && $action != 'edit') { diff --git a/modules/axletter.php b/modules/axletter.php index d093bd3..68577c5 100644 --- a/modules/axletter.php +++ b/modules/axletter.php @@ -109,7 +109,9 @@ class AXLetterModule extends PLModule $saved = false; $new = true; } - } elseif (Post::has('valid') && S::has_xsrf_token()) { + } elseif (Post::has('valid')) { + S::assert_xsrf_token(); + if (!$subject && $title) { $subject = $title; } @@ -190,8 +192,6 @@ class AXLetterModule extends PLModule pl_redirect('ax'); break; } - } elseif (Post::has('valid')) { - $page->trig("L'opération a échouée, merci de réessayer."); } $page->assign('id', $id); $page->assign('short_name', $short_name); @@ -288,7 +288,9 @@ class AXLetterModule extends PLModule $action = Post::v('action'); $uid = Post::v('uid'); } - if ($uid && S::has_xsrf_token()) { + if ($uid) { + S::assert_xsrf_token(); + $uids = preg_split('/ *[,;\: ] */', $uid); foreach ($uids as $uid) { switch ($action) { @@ -303,8 +305,6 @@ class AXLetterModule extends PLModule $page->trig("Personne ne correspond à l'identifiant '$uid'"); } } - } elseif ($uid) { - $page->trig("L'opération sur la liste des administrateurs AX a échouée, merci de réessayer."); } $page->changeTpl('axletter/admin.tpl'); diff --git a/modules/carnet.php b/modules/carnet.php index 194d866..cf1cd16 100644 --- a/modules/carnet.php +++ b/modules/carnet.php @@ -127,9 +127,8 @@ class CarnetModule extends PLModule $promo_sortie = $res->fetchOneCell(); $page->assign('promo_sortie', $promo_sortie); - if ($action && !S::has_xsrf_token()) { - $page->trig("La mise à jour des notifications a échouée, merci de réessayer."); - $action = false; + if ($action) { + S::assert_xsrf_token(); } switch ($action) { case 'add_promo': @@ -146,24 +145,21 @@ class CarnetModule extends PLModule break; } - if (Env::has('subs') && S::has_xsrf_token()) { + if (Env::has('subs')) { + S::assert_xsrf_token(); $watch->_subs->update('sub'); - } elseif (Env::has('subs')) { - $page->trig("La mise à jour des notifications a échouée, merci de réessayer."); } - if (Env::has('flags_contacts') && S::has_xsrf_token()) { + if (Env::has('flags_contacts')) { + S::assert_xsrf_token(); $watch->watch_contacts = Env::b('contacts'); $watch->saveFlags(); - } elseif (Env::has('flags_contacts')) { - $page->trig("La mise à jour des notifications a échouée, merci de réessayer."); } - if (Env::has('flags_mail') && S::has_xsrf_token()) { + if (Env::has('flags_mail')) { + S::assert_xsrf_token(); $watch->watch_mail = Env::b('mail'); $watch->saveFlags(); - } elseif (Env::has('flags_mail')) { - $page->trig("La mise à jour des notifications a échouée, merci de réessayer."); } $page->assign_by_ref('watch', $watch); @@ -214,9 +210,11 @@ class CarnetModule extends PLModule // For XSRF protection, checks both the normal xsrf token, and the special RSS token. // It allows direct linking to contact adding in the RSS feed. - if (Env::v('action') && (S::has_xsrf_token() || Env::v('token') === S::v('core_rss_hash'))) { - switch (Env::v('action')) { - case 'retirer': + if (Env::v('action') && Env::v('token') !== S::v('core_rss_hash')) { + S::assert_xsrf_token(); + } + switch (Env::v('action')) { + case 'retirer': if (is_numeric($user)) { if (XDB::execute('DELETE FROM contacts WHERE uid = {?} AND contact = {?}', @@ -236,7 +234,7 @@ class CarnetModule extends PLModule } break; - case 'ajouter': + case 'ajouter': require_once('user.func.inc.php'); if (($login = get_user_login($user)) !== false) { if (XDB::execute( @@ -250,9 +248,6 @@ class CarnetModule extends PLModule $page->trig('Contact déjà dans la liste !'); } } - } - } elseif (Env::v('action')) { - $page->trig("La modification du contact a échouée, merci de réessayer."); } $search = false; diff --git a/modules/core.php b/modules/core.php index 663af58..031032d 100644 --- a/modules/core.php +++ b/modules/core.php @@ -79,16 +79,13 @@ class CoreModule extends PLModule function handler_purge_cache(&$page) { - if (S::has_xsrf_token()) { - require_once 'wiki.inc.php'; + require_once 'wiki.inc.php'; + S::assert_xsrf_token(); - $page->clear_compiled_tpl(); - wiki_clear_all_cache(); + $page->clear_compiled_tpl(); + wiki_clear_all_cache(); - http_redirect(empty($_SERVER['HTTP_REFERER']) ? './' : $_SERVER['HTTP_REFERER']); - } else { - $page->kill("La purge du cache a échouée, merci de réessayer."); - } + http_redirect(empty($_SERVER['HTTP_REFERER']) ? './' : $_SERVER['HTTP_REFERER']); } function handler_kill_sessions(&$page) @@ -116,7 +113,9 @@ class CoreModule extends PLModule global $globals; $page->changeTpl('core/bug.tpl', SIMPLE); $page->addJsLink('close_on_esc.js'); - if (Env::has('send') && trim(Env::v('detailed_desc')) && S::has_xsrf_token()) { + if (Env::has('send') && trim(Env::v('detailed_desc'))) { + S::assert_xsrf_token(); + $body = wordwrap(Env::v('detailed_desc'), 78) . "\n\n" . "----------------------------\n" . "Page : " . Env::v('page') . "\n\n" @@ -131,10 +130,8 @@ class CoreModule extends PLModule $mymail->setSubject('Plat/al '.Env::v('task_type').' : '.Env::v('item_summary')); $mymail->setTxtBody($body); $mymail->send(); - } elseif (Env::has('send') && S::has_xsrf_token()) { - $page->trig("Merci de remplir une explication du problème rencontré"); } elseif (Env::has('send')) { - $page->trig("L'envoi du bug a échoué, merci de réessayer."); + $page->trig("Merci de remplir une explication du problème rencontré"); } } diff --git a/modules/email.php b/modules/email.php index e00cf76..b321981 100644 --- a/modules/email.php +++ b/modules/email.php @@ -103,7 +103,9 @@ class EmailModule extends PLModule $page->assign('demande', AliasReq::get_request($uid)); - if ($action == 'delete' && $value && S::has_xsrf_token()) { + if ($action == 'delete' && $value) { + S::assert_xsrf_token(); + //Suppression d'un alias XDB::execute( 'DELETE virtual, virtual_redirect @@ -111,8 +113,6 @@ class EmailModule extends PLModule INNER JOIN virtual_redirect USING (vid) WHERE alias = {?} AND (redirect = {?} OR redirect = {?})', $value, $forlife.'@'.$globals->mail->domain, $forlife.'@'.$globals->mail->domain2); - } elseif ($action == 'delete' && $value) { - $page->trig("La suppression de ton alias a échouée, merci de réessayer."); } //Récupération des alias éventuellement existants @@ -127,9 +127,10 @@ class EmailModule extends PLModule list($alias, $visibility) = $res->fetchOneRow(); $page->assign('actuel', $alias); - if ($action == 'ask' && Env::has('alias') && Env::has('raison') && S::has_xsrf_token()) { - //Si l'utilisateur vient de faire une damande + if ($action == 'ask' && Env::has('alias') && Env::has('raison')) { + S::assert_xsrf_token(); + //Si l'utilisateur vient de faire une damande $alias = Env::v('alias'); $raison = Env::v('raison'); $public = (Env::v('public', 'off') == 'on')?"public":"private"; @@ -173,8 +174,6 @@ class EmailModule extends PLModule $page->assign('success',$alias); return; } - } elseif ($action == 'ask' && Env::has('alias') && Env::has('raison')) { - $page->trig("Ta demande d'alias n'a pas pu être enregistrée, merci de réessayer."); } elseif ($action == 'set' && ($value == 'public' || $value == 'private')) { if (!S::has_xsrf_token()) { return PL_FORBIDDEN; @@ -232,7 +231,9 @@ class EmailModule extends PLModule $redirect->modify_one_email_redirect($email, $rewrite); } - if (Env::has('emailop') && S::has_xsrf_token()) { + if (Env::has('emailop')) { + S::assert_xsrf_token(); + $actifs = Env::v('emails_actifs', Array()); print_r(Env::v('emails_rewrite')); if (Env::v('emailop') == "ajouter" && Env::has('email')) { @@ -243,8 +244,6 @@ class EmailModule extends PLModule $page->assign('retour', $redirect->modify_email($actifs, Env::v('emails_rewrite',Array()))); } - } else if (Env::has('emailop')) { - $page->trig('L\'ajout d\'une nouvelle redirection a échoué, merci de réessayer.'); } $res = XDB::query( @@ -294,7 +293,9 @@ class EmailModule extends PLModule wiki_require_page('Xorg.Mails'); $page->changeTpl('emails/submit_spam.tpl'); - if (Post::has('send_email') && S::has_xsrf_token()) { + if (Post::has('send_email')) { + S::assert_xsrf_token(); + $upload = PlUpload::get($_FILES['mail'], S::v('forlife'), 'spam.submit', true); if (!$upload) { $page->trig('Une erreur a été rencontrée lors du transfert du fichier'); @@ -316,8 +317,6 @@ class EmailModule extends PLModule $mailer->send(); $page->trig('Le message a été transmis à ' . $box); $upload->clear(); - } elseif (Post::has('send_email')) { - $page->trig("La soumission du spam a échouée, merci de réessayer."); } } @@ -344,7 +343,9 @@ class EmailModule extends PLModule VALUES ({?}, {?})", S::i('uid'), $data); } exit; - } else if (Env::v('submit') == 'Envoyer' && S::has_xsrf_token()) { + } else if (Env::v('submit') == 'Envoyer') { + S::assert_xsrf_token(); + function getEmails($aliases) { if (!is_array($aliases)) { @@ -411,8 +412,6 @@ class EmailModule extends PLModule } } } - } else if (Env::v('submit') == 'Envoyer') { - $page->trig("L'envoi de l'email a échoué, merci de réessayer."); } else { $res = XDB::query("SELECT data FROM email_send_save @@ -475,7 +474,9 @@ class EmailModule extends PLModule $page->changeTpl('emails/broken.tpl'); - if ($warn == 'warn' && $email && S::has_xsrf_token()) { + if ($warn == 'warn' && $email) { + S::assert_xsrf_token(); + $email = valide_email($email); // vérifications d'usage $sel = XDB::query( @@ -514,16 +515,14 @@ L'équipe d'administration mail->domain . '>'; $mail->send(); $page->trig("Mail envoyé ! :o)"); } - } elseif ($warn == 'warn' && $email) { - $page->trig("Nous n'avons pas pu prévenir ton correspondant, merci de réessayer."); - } elseif (Post::has('email') && S::has_xsrf_token()) { + } elseif (Post::has('email')) { + S::assert_xsrf_token(); + $email = valide_email(Post::v('email')); list(,$fqdn) = explode('@', $email); $fqdn = strtolower($fqdn); - if ($fqdn == 'polytechnique.org' || $fqdn == 'melix.org' - || $fqdn == 'm4x.org' || $fqdn == 'melix.net') - { + if ($fqdn == 'polytechnique.org' || $fqdn == 'melix.org' || $fqdn == 'm4x.org' || $fqdn == 'melix.net') { $page->assign('neuneu', true); } else { $page->assign('email',$email); @@ -554,8 +553,6 @@ L'équipe d'administration mail->domain . '>'; $page->assign_by_ref('x', $x); } } - } elseif (Post::has('email')) { - $page->trig("Nous n'avons pas réussi à satisfaire ta demande, merci de réessayer."); } } @@ -569,8 +566,8 @@ L'équipe d'administration mail->domain . '>'; 'dangerous' => 'Usurpations par cette adresse'); $page->assign('states', $states); - if (Post::has('action') && !S::has_xsrf_token()) { - $page->kill("L'action n'a pas pu être réalisée, merci de réessayer."); + if (Post::has('action')) { + S::assert_xsrf_token(); } switch (Post::v('action')) { case 'create': diff --git a/modules/googleapps.php b/modules/googleapps.php index 14baa8e..d22f9b2 100644 --- a/modules/googleapps.php +++ b/modules/googleapps.php @@ -68,18 +68,15 @@ class GoogleAppsModule extends PLModule } else if ($subaction == 'nosync') { $account->set_password_sync(false); } else if (Post::has('response2') && !$account->sync_password) { - if (S::has_xsrf_token()) { - $account->set_password(Post::v('response2')); - } else { - $page->trig("Le changement de ton mot de passe Google Apps a échoué, merci de réessayer."); - } + S::assert_xsrf_token(); + $account->set_password(Post::v('response2')); } } if ($action == 'suspend' && Post::has('suspend') && $account->active()) { - if (!S::has_xsrf_token()) { - $page->trig("La demande de suspension de ton compte a échouée, merci de réessayer."); - } else if ($account->pending_update_suspension) { + S::assert_xsrf_token(); + + if ($account->pending_update_suspension) { $page->trig("Ton compte est déjà en cours de désactivation."); } else { if ($redirect->modify_one_email('googleapps', false) == SUCCESS) { @@ -99,6 +96,8 @@ class GoogleAppsModule extends PLModule $page->assign('password_sync', Get::b('password_sync', true)); } if ($action == 'create' && Post::has('password_sync') && Post::has('redirect_mails')) { + S::assert_xsrf_token(); + $password_sync = Post::b('password_sync'); $redirect_mails = Post::b('redirect_mails'); if ($password_sync) { @@ -107,12 +106,8 @@ class GoogleAppsModule extends PLModule $password = Post::v('response2'); } - if (S::has_xsrf_token()) { - $account->create($password_sync, $password, $redirect_mails); - $page->trig("La demande de création de ton compte Google Apps a bien été enregistrée."); - } else { - $page->trig("La demande de création de ton compte Google Apps a échouée, merci de réessayer."); - } + $account->create($password_sync, $password, $redirect_mails); + $page->trig("La demande de création de ton compte Google Apps a bien été enregistrée."); } } diff --git a/modules/platal.php b/modules/platal.php index 1c3f71d..f2d4d96 100644 --- a/modules/platal.php +++ b/modules/platal.php @@ -187,8 +187,9 @@ class PlatalModule extends PLModule { global $globals; - if (Post::has('response2') && S::has_xsrf_token()) { + if (Post::has('response2')) { require_once 'secure_hash.inc.php'; + S::assert_xsrf_token(); $_SESSION['password'] = $password = Post::v('response2'); @@ -216,8 +217,6 @@ class PlatalModule extends PLModule $page->changeTpl('platal/motdepasse.success.tpl'); $page->run(); - } else if (Post::has('response2')) { - $page->trig('Le changement de ton mot de passe a échoué, merci de réessayer.'); } $page->changeTpl('platal/motdepasse.tpl'); diff --git a/modules/xnet.php b/modules/xnet.php index b1dd12b..c8e5611 100644 --- a/modules/xnet.php +++ b/modules/xnet.php @@ -80,7 +80,9 @@ class XnetModule extends PLModule Get::v('del')); list($id, $nom, $domain) = $res->fetchOneRow(); $page->assign('nom', $nom); - if ($id && Post::has('del') && S::has_xsrf_token()) { + if ($id && Post::has('del')) { + S::assert_xsrf_token(); + XDB::query('DELETE FROM groupex.membres WHERE asso_id={?}', $id); $page->trig('membres supprimés'); @@ -103,20 +105,18 @@ 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') && S::has_xsrf_token()) { + if (Post::has('diminutif')) { + S::assert_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 85009c3..b3de66d 100644 --- a/modules/xnetgrp.php +++ b/modules/xnetgrp.php @@ -221,7 +221,9 @@ class XnetGrpModule extends PLModule global $globals; $page->changeTpl('xnetgrp/edit.tpl'); - if (Post::has('submit') && S::has_xsrf_token()) { + if (Post::has('submit')) { + S::assert_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,8 +274,6 @@ 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()) {