This course is still being released! Check back later for more chapters.

Get Notified About this Course!

We will send you messages regarding this course only
and nothing else, we promise.
You can unsubscribe anytime by emailing us at:
privacy@symfonycasts.com
> Symfony >

Course Overview

Seguridad en Symfony: llevandolo más lejos

Take Symfony Security beyond the basics with sudo mode, custom voters, smarter login flows, impersonation hardening, compromised-password checks, rate limiting and more.

  • intermediate
  • 46 students
  • EN/ES Captions
  • EN/ES Script
  • Certificate of Completion

Your Guides

About this course

Aunque el código de este tutorial usa Symfony 8, ¡todo lo que se explica aquí funciona también en Symfony 7!

What PHP libraries does this tutorial use?

// composer.json
{
    "require": {
        "php": ">=8.4",
        "ext-ctype": "*",
        "ext-iconv": "*",
        "babdev/pagerfanta-bundle": "^4.6", // v4.6.0
        "doctrine/dbal": "^4.4", // 4.4.3
        "doctrine/doctrine-bundle": "^3.2", // 3.2.2
        "doctrine/doctrine-migrations-bundle": "^3.7", // 3.7.0
        "doctrine/orm": "^3.6", // 3.6.6
        "knplabs/knp-time-bundle": "^2.5", // 2.5.0
        "pagerfanta/doctrine-orm-adapter": "^4.8", // v4.8.0
        "php-cs-fixer/shim": "^3.94", // v3.95.2
        "phpdocumentor/reflection-docblock": "^5.6", // 5.6.7
        "phpstan/phpdoc-parser": "^2.3", // 2.3.2
        "stof/doctrine-extensions-bundle": "^1.15", // v1.15.3
        "symfony/asset": "8.0.*", // v8.0.8
        "symfony/asset-mapper": "8.0.*", // v8.0.11
        "symfony/console": "8.0.*", // v8.0.11
        "symfony/dotenv": "8.0.*", // v8.0.11
        "symfony/expression-language": "8.0.*", // v8.0.14
        "symfony/flex": "^2.10", // v2.10.0
        "symfony/form": "8.0.*", // v8.0.9
        "symfony/framework-bundle": "8.0.*", // v8.0.11
        "symfony/http-client": "8.0.*", // v8.0.9
        "symfony/monolog-bundle": "^4.0", // v4.0.2
        "symfony/property-access": "8.0.*", // v8.0.8
        "symfony/property-info": "8.0.*", // v8.0.8
        "symfony/rate-limiter": "8.0.*", // v8.0.14
        "symfony/runtime": "8.0.*", // v8.0.12
        "symfony/security-bundle": "8.0.*", // v8.0.12
        "symfony/security-csrf": "8.0.*", // v8.0.8
        "symfony/serializer": "8.0.*", // v8.0.10
        "symfony/stimulus-bundle": "^2.34", // v2.35.0
        "symfony/twig-bundle": "8.0.*", // v8.0.8
        "symfony/ux-turbo": "^2.34", // v2.35.0
        "symfony/validator": "8.0.*", // v8.0.10
        "symfony/yaml": "8.0.*", // v8.0.12
        "symfonycasts/tailwind-bundle": "^0.12.0", // v0.12.0
        "twig/extra-bundle": "^3.24", // v3.24.0
        "twig/twig": "^3.24" // v3.26.0
    },
    "require-dev": {
        "symfony/debug-bundle": "8.0.*", // v8.0.8
        "symfony/maker-bundle": "^1.67", // v1.67.0
        "symfony/stopwatch": "8.0.*", // v8.0.8
        "symfony/web-profiler-bundle": "8.0.*", // v8.0.12
        "zenstruck/foundry": "^2.9" // v2.10.1
    }
}

Ya tienes el inicio de sesión funcionando, los usuarios tienen roles y tu app está protegida. ¡Genial! Ahora vamos a profundizar en algunas herramientas y técnicas adicionales que pueden hacer que tu sistema de seguridad de Symfony sea más flexible, pulido y seguro.

En este curso, partiremos de los fundamentos de Seguridad en Symfony: conceptos básicos y abordaremos los tipos de problemas de seguridad que surgen en aplicaciones reales.

Esto es lo que vamos a ver:

  • Crear un usuario "superadministrador" que pueda anular otros permisos
  • Añadir el "modo sudo" para exigir una autenticación completa y nueva en acciones delicadas
  • Personalizar los mensajes de error de autenticación
  • Redirigir a los usuarios tras iniciar sesión con _target_path
  • Devolver un 404 en lugar de un 403 con #[IsGranted]
  • Permitir a los usuarios iniciar sesión con su nombre de usuario o con su dirección de correo electrónico
  • Crear un "voter" personalizado para controlar quién puede suplantar a quién
  • Rechazar contraseñas comprometidas con NotCompromisedPassword
  • Crear formularios de cierre de sesión con el nuevo ayudante logout_form()
  • Reforzar la suplantación de identidad de los usuarios con Symfony 8.2
  • Limitar la velocidad de registro con #[RateLimit]

Por el camino, veremos cómo personalizar Symfony Security sin ir en contra del framework, y cómo unos pequeños cambios pueden hacer que la autenticación y la autorización sean más seguras y agradables para tus usuarios.

¡Subamos el nivel de nuestra seguridad!

Next courses in the Symfony: Learn More Tricks section of the Symfony Track!

2 Comments

Sort By
Login or Register to join the conversation
Lola-Slade 24 days ago

Perhaps you can take a look at stateful vs. not-stateful firewalls and API authentication flows?

|

Hey @Lola-Slade!

Definitely want to cover this. We have a few mini security courses planned: 2fa, social login, ldap. Stateless authentication could be a good candidate too.

Thanks for the feedback!
Kevin

1 |

Delete the comment?

Share this comment

astronaut with balloons in space

"Houston: no signs of life"
Start the conversation!