Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'core/Nonce.php')
-rw-r--r--core/Nonce.php81
1 files changed, 0 insertions, 81 deletions
diff --git a/core/Nonce.php b/core/Nonce.php
deleted file mode 100644
index 632ed55b07..0000000000
--- a/core/Nonce.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-/**
- * Piwik - Open source web analytics
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
- * @version $Id$
- *
- * @category Piwik
- * @package Piwik
- */
-
-/**
- * Nonce class.
- *
- * A cryptographic nonce -- "number used only once" -- is often recommended as part of a robust defense against cross-site request forgery (CSRF/XSRF).
- * Desrable characteristics: limited lifetime, uniqueness, unpredictability (pseudo-randomness).
- *
- * We use a session-dependent nonce with a configurable expiration that combines and hashes:
- * - a private salt because it's non-public
- * - time() because it's unique
- * - a mix of PRNGs (pseudo-random number generators) to increase entropy and make it less predictable
- *
- * @package Piwik
- */
-class Piwik_Nonce
-{
- /**
- * Generate nonce
- *
- * @param string $id Unique id to avoid namespace conflicts, e.g., ModuleName.ActionName
- * @param int $ttl Optional time-to-live in seconds; default is 5 minutes
- * @return string Nonce
- */
- static public function getNonce($id, $ttl = 300)
- {
- // save session-dependent nonce
- $ns = new Zend_Session_Namespace($id);
- $nonce = $ns->nonce;
-
- // re-use an unexpired nonce (a small deviation from the "used only once" principle, so long as we do not reset the expiration)
- // to handle browser pre-fetch or double fetch caused by some browser add-ons/extensions
- if(empty($nonce))
- {
- // generate a new nonce
- $nonce = md5(Piwik_Common::getSalt() . time() . Piwik_Common::generateUniqId());
- $ns->nonce = $nonce;
- $ns->setExpirationSeconds($ttl, 'nonce');
- }
-
- return $nonce;
- }
-
- /**
- * Verify nonce and check referrer (if present, i.e., it may be suppressed by the browser or a proxy/network).
- *
- * @param string $id Unique id
- * @param string $cnonce Nonce sent to client
- * @return bool true if valid; false otherwise
- */
- static public function verifyNonce($id, $cnonce)
- {
- $ns = new Zend_Session_Namespace($id);
- $nonce = $ns->nonce;
-
- // validate token
- if(empty($cnonce) || $cnonce !== $nonce)
- {
- return false;
- }
-
- // validate referer
- $referer = Piwik_Url::getReferer();
- if(!empty($referer) && (Piwik_Url::getLocalReferer() === false))
- {
- return false;
- }
-
- return true;
- }
-}