Adds XSRF protection to the Core modue.
authorVincent Zanotti <vincent.zanotti@polytechnique.org>
Sun, 18 May 2008 17:29:59 +0000 (19:29 +0200)
committerVincent Zanotti <vincent.zanotti@polytechnique.org>
Sun, 18 May 2008 17:29:59 +0000 (19:29 +0200)
Signed-off-by: Vincent Zanotti <vincent.zanotti@polytechnique.org>
modules/core.php
templates/core/bug.tpl
templates/skin/common.menu.tpl

index f5bac89..663af58 100644 (file)
@@ -79,12 +79,16 @@ class CoreModule extends PLModule
 
     function handler_purge_cache(&$page)
     {
-        require_once 'wiki.inc.php';
+        if (S::has_xsrf_token()) {
+            require_once 'wiki.inc.php';
 
-        $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']);
+            http_redirect(empty($_SERVER['HTTP_REFERER']) ? './' : $_SERVER['HTTP_REFERER']);
+        } else {
+            $page->kill("La purge du cache a échouée, merci de réessayer.");
+        }
     }
 
     function handler_kill_sessions(&$page)
@@ -112,7 +116,7 @@ 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'))) {
+        if (Env::has('send') && trim(Env::v('detailed_desc')) && S::has_xsrf_token()) {
             $body = wordwrap(Env::v('detailed_desc'), 78) . "\n\n"
                   . "----------------------------\n"
                   . "Page        : " . Env::v('page') . "\n\n"
@@ -127,8 +131,10 @@ 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')) {
+        } 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.");
         }
     }
 
index fae29f6..15f36d8 100644 (file)
@@ -60,6 +60,7 @@ function fillContent()
 <div class="center"><input type="submit" onclick="window.close()" name="close" value="Fermer" /></div>\r
 {else}\r
 <form action="send_bug" method="post" onsubmit="cleanContent()">\r
+  {xsrf_token_field}\r
   <h1>Signaler un bug ou demander une amélioration</h1>\r
   <div style="margin-left:10%;margin-right:10%">\r
     <select name="task_type">\r
index afe97a0..dbd23e0 100644 (file)
@@ -78,7 +78,7 @@
 <div class="menu_title">***</div>
 <div class="menu_item"><a href="marketing">Marketing</a></div>
 <div class="menu_item"><a href="admin/">Administration</a></div>
-<div class="menu_item"><a href="purge_cache">Clear cache</a></div>
+<div class="menu_item"><a href="purge_cache?token={xsrf_token}">Clear cache</a></div>
 <div class="menu_item"><a href="get_rights/user">Devenir utilisateur</a></div>
 <div class="menu_item"><a href="http://trackers.polytechnique.org">Trackers</a></div>
 <div class="menu_item"><a href="http://support.polytechnique.org">Support</a></div>