Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Error en Silex con CsrfServiceProvider al migrar de servidor

23 de septiembre de 2016

Hola!

Estoy intentando migrar un servidor de Amazon Web Services a Strato. En AWS uso Silex 1.3 creo y en strato tengo Silex 2.0.

La cosa es que tengo que al ir a www.midominio.com va a AWS y con www.subdominio.midominio.com va a Strato. Todo va bien pero cuando cambio www.midominio.com que apunte a la IP del servidor Strato en el envío de todos los formularios me da error de CSRF.

En Strato con Silex 2.0 tengo:

$app->register(new CsrfServiceProvider());
 
    // y en cada formulario
    $data = array(
        /*'csrf_protection' => false,*/
        'invalid_message' => "este valor no es valido",
        'csrf_message' => "se ha excedido el tiempo",
    );
    $form = $app['form.factory']->createBuilder(
            FormType::class,
            $data)

Con AWS silex 1.3 si van la configuración tanto decsrf_protection como de csrf_message pero con Silex 2.0 diría que eso no tiene ningún efecto y que siempre se activa y muestra el mensaje por defecto se Silex.

Tengo la sensación (aunque seguro que me equivoco) que al hacer el cambio de IP de AWS a Strato casi al instante va al Servidor de Strato pero que en los envíos POST van a AWS.

¿Como puedo desactivar Csrf En Silex 2.0? ¿Como puedo configurar CsrfServiceProvider con el register?

$app->register(new CsrfServiceProvider());

Respuestas

#1

La forma correcta de registrar el provider de CSRF en Silex 2 es la que muestras tu mismo al final de tu comentario. En esta página de la documentación de Silex puedes ver el mismo ejemplo.

Por otra parte, no se cuál puede ser la causa del error, pero sí que te diría que comprobaras que el valor de la opción $app['form.secret'] en los dos servidores es la misma. Si no, cada uno generará tokens diferentes y no podrá validar los tokens generados por la otra aplicación.

@javiereguiluz

25 septiembre 2016, 13:34
#2

Muchas gracias @javiereguiluz .

Probaré a poner el valor de $app['form.secret'] igual en los dos servidores que ahora mismo son diferentes y ver que pasa. Desde que lo pruebe comento.

@Yercapa

28 septiembre 2016, 2:28