| Viewing file:  DefaultCsrfProvider.php (2.18 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
<?php
 /*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
 
 namespace Symfony\Component\Form\Extension\Csrf\CsrfProvider;
 
 /**
 * Default implementation of CsrfProviderInterface.
 *
 * This provider uses the session ID returned by session_id() as well as a
 * user-defined secret value to secure the CSRF token.
 *
 * @author Bernhard Schussek <bschussek@gmail.com>
 *
 * @deprecated Deprecated since version 2.4, to be removed in Symfony 3.0. Use
 *             {@link \Symfony\Component\Security\Csrf\CsrfTokenManager} in
 *             combination with {@link \Symfony\Component\Security\Csrf\TokenStorage\NativeSessionTokenStorage}
 *             instead.
 */
 class DefaultCsrfProvider implements CsrfProviderInterface
 {
 /**
 * A secret value used for generating the CSRF token
 * @var string
 */
 protected $secret;
 
 /**
 * Initializes the provider with a secret value
 *
 * A recommended value for the secret is a generated value with at least
 * 32 characters and mixed letters, digits and special characters.
 *
 * @param string $secret A secret value included in the CSRF token
 */
 public function __construct($secret)
 {
 $this->secret = $secret;
 }
 
 /**
 * {@inheritDoc}
 */
 public function generateCsrfToken($intention)
 {
 return sha1($this->secret.$intention.$this->getSessionId());
 }
 
 /**
 * {@inheritDoc}
 */
 public function isCsrfTokenValid($intention, $token)
 {
 return $token === $this->generateCsrfToken($intention);
 }
 
 /**
 * Returns the ID of the user session.
 *
 * Automatically starts the session if necessary.
 *
 * @return string The session ID
 */
 protected function getSessionId()
 {
 if (version_compare(PHP_VERSION, '5.4', '>=')) {
 if (PHP_SESSION_NONE === session_status()) {
 session_start();
 }
 } elseif (!session_id()) {
 session_start();
 }
 
 return session_id();
 }
 }
 
 |