Как отключить проверку CSRF для форм на основе html в приложении Symfony? - PullRequest
0 голосов
/ 05 августа 2020

У меня есть приложение Symfony с открытым исходным кодом, и мне нужно отключить проверки CSRF глобально или хотя бы для некоторых <forms>. Помимо двух описанных ниже методов, я также попытался удалить различные строки кода, в которых упоминается CSRF, но ничего не помогло.

Что я пробовал:

  1. Я пытался глобально отключить CSRF, как описано здесь Как я могу глобально включить защиту CSRF на Symfony 3 с помощью FOSUserBundle , но проблема в моем приложении Symfony, в каталоге root/config нет файлов .yml - он содержит только: settings.php, default.settings.php, dev.php, prod.php, languages.php, но не .yml / .xml файлов
  2. Я пытался отключить CSFR для определенного c <form> как описано здесь Как отключить csrf в symfony? , но проблема в том, что мой <form> основан на HTML, а не на PHP. Приложение My Symfony не создает <form> s через PHP.

My Symfony Приложение:

  • Приложение является открытым исходным кодом - репозиторий здесь: https://github.com/agendav/agendav/tree/develop/web
  • В root/app/controllers.php У меня есть этот фрагмент кода с защитой CSRF ↓↓↓. Я попытался удалить его, но форма даже не отображается.
...
// Authentication
$app->get('/login', '\AgenDAV\Controller\Authentication::loginAction')->bind('login');
$app->post('/login', '\AgenDAV\Controller\Authentication::loginAction');
$app->get('/logout', '\AgenDAV\Controller\Authentication::logoutAction')->bind('logout');

// CSRF protection
$app->before(function(Request $request, Application $app) {
    return \AgenDAV\Csrf::check($request, $app);
});
...
  • Шаблон формы входа находится в root/templates/login.html, и он вызывается внутри root/src/controller/Authentication.php:
...
return $app['twig']->render('login.html', $template_vars);
...
...