diff options
author | Frédéric Guillot <fred@kanboard.net> | 2014-05-28 15:14:52 -0400 |
---|---|---|
committer | Frédéric Guillot <fred@kanboard.net> | 2014-05-28 15:14:52 -0400 |
commit | 445ef6d1481745cd4e7af7e671f534a25d4495dc (patch) | |
tree | 7990903e398d77339587595ef5a07df8464f5a2e /app/Controller/Base.php | |
parent | 75ab09e28b22e9a5676ee912482027926e271515 (diff) |
Add CSRF protections
Diffstat (limited to 'app/Controller/Base.php')
-rw-r--r-- | app/Controller/Base.php | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/app/Controller/Base.php b/app/Controller/Base.php index 5829fc36..9b695a82 100644 --- a/app/Controller/Base.php +++ b/app/Controller/Base.php @@ -3,6 +3,7 @@ namespace Controller; use Core\Registry; +use Core\Security; use Core\Translator; use Model\LastLogin; @@ -161,6 +162,28 @@ abstract class Base } /** + * Application forbidden page + * + * @access public + */ + public function forbidden() + { + $this->response->html($this->template->layout('app_forbidden', array('title' => t('Access Forbidden')))); + } + + /** + * Check if the CSRF token from the URL is correct + * + * @access protected + */ + protected function checkCSRFParam() + { + if (! Security::validateCSRFToken($this->request->getStringParam('csrf_token'))) { + $this->forbidden(); + } + } + + /** * Check if the current user have access to the given project * * @access protected @@ -171,7 +194,7 @@ abstract class Base if ($this->acl->isRegularUser()) { if ($project_id > 0 && ! $this->project->isUserAllowed($project_id, $this->acl->getUserId())) { - $this->response->redirect('?controller=project&action=forbidden'); + $this->forbidden(); } } } |