From: Vincent Zanotti Date: Fri, 25 Apr 2008 09:01:21 +0000 (+0200) Subject: Adds basic support for XSRF protection. X-Git-Tag: core/1.0.0~232 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=2fe96c5414e00fc2af8df38f379a02166a563a7d;p=platal.git Adds basic support for XSRF protection. Signed-off-by: Vincent Zanotti --- diff --git a/classes/session.php b/classes/session.php index 07f6fab..a1e72da 100644 --- a/classes/session.php +++ b/classes/session.php @@ -27,6 +27,9 @@ class Session if (empty($_SESSION['challenge'])) { $_SESSION['challenge'] = sha1(uniqid(rand(), true)); } + if (empty($_SESSION['xsrf_token'])) { + $_SESSION['xsrf_token'] = rand_url_id(); + } if (!isset($_SESSION['perms']) || !($_SESSION['perms'] instanceof FlagSet)) { $_SESSION['perms'] = new FlagSet(); } @@ -74,6 +77,11 @@ 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; diff --git a/plugins/function.xsrf_token.php b/plugins/function.xsrf_token.php new file mode 100644 index 0000000..0258495 --- /dev/null +++ b/plugins/function.xsrf_token.php @@ -0,0 +1,27 @@ + diff --git a/plugins/function.xsrf_token_field.php b/plugins/function.xsrf_token_field.php new file mode 100644 index 0000000..28f09b8 --- /dev/null +++ b/plugins/function.xsrf_token_field.php @@ -0,0 +1,30 @@ +'; + } + return ''; +} + +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: +?>