Solución:
No hay una forma documentada de verificar el token csrf manualmente. Symfony valida automáticamente la presencia y precisión de este token. http://symfony.com/doc/current/book/forms.html#csrf-protection
Sin embargo, existe un proveedor de csrf:
http://api.symfony.com/2.0/Symfony/Component/Form/Extension/Csrf/CsrfProvider/SessionCsrfProvider.html
y
http://api.symfony.com/master/Symfony/Component/Form/Extension/Csrf/CsrfProvider/DefaultCsrfProvider.html
Clases de marcas capaces de proporcionar protección CSRF Puede generar un token CSRF utilizando el método generateCsrfToken (). A este método, debe pasar un valor que sea exclusivo de la página que debe protegerse contra ataques CSRF. Este valor no tiene por qué ser necesariamente secreto. Las implementaciones de esta interfaz son responsables de agregar más información secreta.
Si desea proteger el envío de un formulario contra ataques CSRF, puede proporcionar una cadena de “intención”. De esta manera, se asegura de que el formulario solo se pueda vincular a páginas que están diseñadas para manejar el formulario, es decir, que usan la misma cadena de intención para validar el token CSRF con isCsrfTokenValid ().
Puede recuperar el proveedor de esta manera
$csrf = $this->get('form.csrf_provider');
el uso puede luego usar
public Boolean isCsrfTokenValid(string $intention, string $token)
Validates a CSRF token.
Parámetros cadena $ intención La intención utilizada al generar el token CSRF cadena $ token El token proporcionado por el navegador
Valor devuelto Booleano Si el token proporcionado por el navegador es correcto
Necesita encontrar la cadena de intención utilizada por su formulario.
Algunas publicaciones interesantes sobre SO:
Symfony CSRF y Ajax
Enlaces Symfony2 con token CSRF
Además de artworkad, puede especificar una intención:
Ramita:
<form method="post">
<input type="text" name="form_name[field]" value="" />
<input type="hidden" name="_csrf_token" value="{{ csrf_token('form_name') }}">
</form>
PHP:
$token = $request->request->get('_csrf_token');
$csrf_token = new CsrfToken('form_name', $token);
var_dump($this->get('security.csrf.token_manager')->isTokenValid($csrf_token));
O no:
Ramita:
<form method="post">
<input type="text" name="field" value="" />
<input type="hidden" name="_csrf_token" value="{{ csrf_token('') }}">
</form>
PHP:
$token = $request->request->get('_csrf_token');
$csrf_token = new CsrfToken('', $token);
var_dump($this->get('security.csrf.token_manager')->isTokenValid($csrf_token));