Security Flashcards
quel sont les 4 concepts de base de security fourni dans SF
Sessions cookie, CSRF, authentification (firewall) & authorization (access control)
qu’est ce que le security provider
c’est le mécanisme permettant de recupérer et valider un access (user BDD, memory, LDAP, etc…)
que signifie l’etat “stateless” du firewall
le firewall ne dépend d’une session user pour maintenir l’auth. il faut donc s’auth à chaq request. Ideal pour API
que signifie l’etat “stateful” du firewall
le firewall stateful va conservé l’etat auth à travers les request par l’intermédiaire de la session.
a quoi sert l’I UserPasswordHasherInterface
a hash un password pour le persist en BDD
comment hash un password manually
php bin/console security:hash-password
que signifie le mode “lazy” dans la config d’un firewall
cela permet de ne créer une session que si les users est réellement authorize. Pour éviter de faire travaillé le cache de session pour rien.
comment récuperer la config d’un firewall suivant une request
$this->security->getFirewallConfig($request)
quels sont les différents modes d’authentification
Form Login, JSON login, HTTP Basic, Login Link, X.509 client certificates, Remote users, Custom Authenticators, socialMedia auth (HWIOAuthBundle)
quels sont les specificité de la connexion par Form Login
1/ use FormLoginAuthenticator 2/ config firewall main:form_login 3/ firewall redirect if request non auth page into login_path 4/ FormLoginAuthenticator intercept request & check auth
quels sont les specificité de la connexion par JSON login
1/ endpoint provide token access 2/ config firewall main:json_login 3/ generate token 4/ sending token each secure request
quels sont les specificité de la connexion HTTP Basic
1/ basic form login 2/ config firewall main:http_basic 3/ utilise le header WWW-Authenticate response header 4/ pas de logout fonction 5/ browser remember credentials and sent on every request
quels sont les specificité de la connexion Login Link
systeme d’auth sans password. Le user recoit une URL qui l’auth un certain temps sur le site
quels sont les specificité de la connexion Access Tokens
systeme de connexion par token qui est emi par un systeme externe
quels sont les specificité de la connexion X.509
systeme d’auth gérer par le WebServer par certification (config = firewalls.main.x509.provider)
quels sont les specificité de la connexion Remote User
systeme d’auth gérer par le WebServer et des services externe comme Kerberos (config = firewalls.main.remote_user.provider)
comment éviter une Brute Force Login Attack
1/ installer le bundle “symfony/rate-limiter” permettant de limiter les tentatives de connexion 2/ utiliser l’option login_throttling (utilise le nbr connexion + username + IP Address)
Comment gérer de manière plus fine la protection par Brute Force Login
impl RequestRateLimiterInterface ou DefaultLoginRateLimiter
comment customizer le success ou le fail authentification process
implémenter AuthenticationSuccessHandlerInterface / AuthenticationFailureHandlerInterface
qui est responsable de récuperer l’obj User
Le service Security
Quels sont les 3 facons de gérer l’accès à une URL/Resource
Access Control / In Controller / Attribute #[IsGranted()] / Voters
Quel est la différence entre les status “IS_AUTHENTICATED”, “IS_AUTHENTICATED_FULLY”, “IS_AUTHENTICATED_REMEMBERED” et “IS_IMPERSONATOR”
IS_AUTHENTICATED_FULLY signifie que le user à entrer ces access sur la dernière session alors que IS_AUTHENTICATED_REMEMBERED signifie que le user utilise le cookie pour éviter de retapper ces login et IS_IMPERSONATOR signifie que les user est connecté en tant qu’un autre user. Tous ces status sont compris dans le status plus général IS_AUTHENTICATED
décrire le mecanisme de controller du user entre les request
pour chq request (stateful firewall) dans le firewall, une fois le user serializer dans la session, il est deserializer et passer au user provider (doctrine) pour le refresh. Le system compare le user provenant de la session et celui provenant du refresh.
comment gérer les hash des mot de passe
utiliser le composant symfony/password-hasher
comment vérifier qu’un password est correct
avec le composant password-hasher et l’interface UserPasswordHasherInterface et la methode isPasswordValid
comment gérer le reset password efficacement
utiliser le bundle symfonycasts/reset-password-bundle & make:reset-password