Julien Charpentier – Directeur R&D
Cyrille Grandval – Directeur Général
ZF2 Sécurité
« Sécuriser mes applications avec ZF2 »
18.06.2015
Darkmira Tour Zend Day 2015
Qui sommes nous?
Cyrille Grandval
Zend Evangelist (membre Z-Team)
Consultant PHP / Sécurité
Professeur / Formateur PHP et
Sécurité des applications Web
cgrandval@darkmira.fr
@CyrilleGrandval
Julien Charpentier
Consultant / Architecte PHP
Professeur / Formateur PHP
jcharpentier@darkmira.fr
@jcharpentier_
Co-auteur du livre « Préparation à la certification
Zend Certified PHP Engineer - ZCPE » aux éditions ENI
ZF2 – Composants de sécurité
• ZendAuthentification
• ZendDb
• ZendCaptcha
• ZendCrypt
• ZendEscaper
• ZendFilter
• ZendInputFilter
• ZendPermissions
• ZendMath
• ZendValidator
Première (et seule) vérité
Ne vous fiez à
personne…
Les hackers ne se soucient pas de mon
site !
Sécurité – Mantra du No®ris (que)
Filtre et valide les
données entrantes,
encode les données
sortantes !
Sécurité ZF2 – données entrantes
• S’assurer de la provenance des données
(ZendCaptcha)
• Filtrer les données utilisateurs (ZendFilter)
• Valider les données utilisateurs (ZendValidate)
• Etablir une stratégie de filtrage
(ZendInputFilter)
ZendCaptcha
• Captcha => Test de défi-réponse utilisé en
informatique
• S'assure qu'une réponse n'est pas générée par
un ordinateur
L'acronyme « CAPTCHA » est basé sur le mot capture, et vient de l'anglais
completely automated public Turing test to tell computers and humans apart
Permet de s’assurer qu’un formulaire est bien
soumis par un utilisateur.
ZendCaptcha
Plusieurs adaptateurs
• ZendCaptchaDumb
• ZendCaptchaFiglet
• ZendCaptchaImage
• ZendCatpchaReCaptcha
ZendCaptchaImage
Création et configuration du captcha
Ajout dans un formulaire
ZendCaptchaImage
ZendCaptcha
ZendFilter
• Appliquer un ou plusieurs traitement sur une donnée
• Un filtre est un transformateur -> retourne une donnée
après l’avoir nettoyée, tronquée, cryptée, compressée
voire même traduite ou convertie
• Méthode filter qui retourne la donnée d’entrée
« nettoyée »
Permet de transformer une source de données
externe
ZendFilter
• ZendFilterBlacklist
• ZendFilterBoolean
• ZendFilterCallback
• ZendFilterDigits
• ZendFilterDecrypt
• ZendFilterEncrypt
• ZendFilterHtmlEntities
• ZendFilterPregReplace
• ZendFilterStripNewlines
• ZendFilterStripTags
• ZendFilterToInt
• ZendFilterWhiteList
• ZendI18nFilter*
Listes non exhaustive des filtres prédéfinis
ZendFilter - utilisation
• ZendFilterStripTags
• ZendFilterToInt
• ZendFilterWhitelist
Exemples de filtrage d’une donnée entrante
ZendFilter - utilisation
Intégration dans un formulaire
ZendFilter - utilisation
ZendFilter – aller plus loin
• Appeler un filtre de manière statique (ZendFilterStaticFilter)
• Définir un filtre avec une fonction de callback
(ZendFilterCallback)
• Créer ses filtres personnels (étendre ZendFilterAbstractFilter et
en informer le PluginManager)
ZendFilter
ZendValidator
• Valide le fait qu’une donnée reçue en entrée
respecte certains critères prédéfinis
Un validateur contient une méthode isValid qui retourne la valeur
TRUE si la donnée reçue respecte les critères, FALSE dans le cas
contraire.
Permet de s’assurer que le format d’une source
de données externe est conforme à nos attentes.
ZendValidator
• ZendValidatorDbRecordExi
sts
• ZendValidatorCallback
• ZendValidatorCreditCard
• ZendValidatorDigits
• ZendValidatorEmailAddress
• ZendValidatorGreaterThan
• ZendValidatorInArray
• ZendValidatorLessThan
• ZendValidatorRegexp
• ZendValidatorStringLengt
h
• ZendValidatorUri
• ZendI18nValidator*
Listes non exhaustive des validateurs prédéfinis
ZendValidator - utilisation
Exemples de validation d’une donnée entrante
• ZendValidatorDigits
• ZendValidatorEmailAddress
ZendValidator - utilisation
Intégration dans un formulaire
ZendValidator - utilisation
ZendValidator – aller plus loin
• Appeler un validator de manière statique
(ZendValidatorStaticValidator)
• Définir un validateur avec une fonction de callback
(ZendValidatorCallback)
• Créer ses validators personnels (étendre
ZendValidatorAbstractValidator et en informer le
ZendValidator
ZendInputFilter
Un filtre d’entrée permet de définir une collection de filtres et de validateurs
applicable sur n’importe quel type de données d’entrées (formulaires, paramètres
GET, COOKIE, entête HTTP, etc…) dont le nom est connu.
Il est ainsi possible de définir des filtres et validateurs pour l’ensemble des
données utilisées par une application.
Un filtre d’entrée contient une méthode isValid qui retourne la
valeur TRUE si la donnée reçue respecte les critères, FALSE dans le
cas contraire
Permet de définir une stratégie globale de
validation d’une source de données externe.
ZendInputFilter - utilisation
Exemple de création d’un filtre d’entrée
ZendInputFilter - utilisation
ZendInputFilter - utilisation
Exemple d’utilisation du filtre d’entrée
Avec un formulaire
ZendInputFilter
Sécurité – données sortantes
Composants ZF2
• ZendEscaper
• ZendViewHelperEscape*
• EscapeCss
• EscapeHtml
• EscapeHtmlAttr
• EscapeJs
• EscapeUrl
ZendEscaper
• Permet de transformer une donnée destinée à
l’affichage afin que celle-ci ne soit pas interprétable par
le navigateur
• Un encodeur contient plusieurs méthodes permettant
l’encodage suivant le contexte d’affichage (html, css, js,
url ou attribut html)
Permet de s’assurer que les données s’affichent
telles que nous le voulons.
ZendEscaper - utilisation
Exemple d’encodage de données sortantes
Ou directement dans une vue
ZendEscaper
Top 10 OWASP 2013
A1 – Injection
A2 – Violation de Gestion d’Authentification et de Session
A3 – Cross-Site Scripting (XSS)
A4 – Références directes non sécurisées à un objet
A5 – Mauvaise configuration Sécurité
A6 – Exposition de données sensibles
A7 – Manque de contrôle d’accès au niveau fonctionnel
A8 - Falsification de requête intersite (CSRF)
A9 - Utilisation de composants avec des vulnérabilités
connues
A10 – Redirections et Renvois Non Validés
A1 – Injection
• Une donnée entrante brute est insérée dans une
commande liée à une interprétation
• Plus connu : injection SQL mais bien d’autres : LDAP,
Xpath, ...
1. Valider les données entrantes
2. Requêtes paramétrées (préparées, procédures stockées)
A1 – Injection
• Paramètres anonymes
• Paramètres nommés
A2 – Violation de Gestion d’Authentification et de Session
• Mot de passes utilisateurs incorrectement stockés
• Divination des mots de passes utilisateurs et des
identifiants de session
• Permettre l’utilisation des identifiants de session dans
l’URL
• Pas de timeout de session
• Pas de renouvellement d’identifiant de session après
changement de droits
• Utilisation de connexion non sécurisées
• Mauvaise configuration
A2 – Violation de Gestion d’Authentification et de Session
Exemple d’utilisation de ZendSessionConfig et
ZendSessionSessionManager
Exemple de configuration
Exemple d’utilisation de ZendSessionManager
A2 – Violation de Gestion d’Authentification et de Session
A3 – Cross-Site Scripting (XSS)
• Faille la plus répandue
• Inclusion direct de code script fourni par l’utilisateur
dans la réponse au navigateur
• XSS réfléchi
• XSS stocké
• XSS basé sur DOM
Validation des données d’entrées et encodage des
données de sortie
A4 – Références directes non sécurisées à un objet
• Objet interne fait directement référence à une ressource (fichier,
répertoire, enregistrement en base de données) sans contrôle
d’accès spécifique
• Par exemple, modification d’un id dans l’url pour accéder à
une autre ressource
Vérifier systématiquement si un utilisateur à accès à une
ressource
• Mise en place d’ACL simple, maintenable et clair
• Vérifier en base de données à chaque action
A4 – Références directes non sécurisées à un
objet
Gestion des droits
Vérifier qu’un utilisateur a bien accès à un type de ressource défini
• ZendAuthentification
• ZendPermissionsAcl ou ZendPermissionsRbac
A4 – Références directes non sécurisées à un
objet
ZendAuthentification
Fournit une API permettant de gérer l’authentification d’un
utilisateur
ZendAuthentificationAdapter
Plusieurs adaptateurs disponibles :
• Base de données
• Digest
• HTTP
• LDAP
• Callback
A4 – Références directes non sécurisées à un
objet
Exemple d’utilisation de ZendAuthentification
ZendPermissionsAcl et ZendPermissionsRbac
Gestion des ACL (Access Control List) et des Rbac (Role-
based Access Control) de manière souple et intuitive.
A4 – Références directes non sécurisées à un
objet
A4 – Références directes non sécurisées à un
objet
Exemple d’utilisation des Acl
A4 – Références directes non sécurisées à un
objet
A4 – Références directes non sécurisées à un
objet
A4 – Références directes non sécurisées à un
objet
A4 – Références directes non sécurisées à un
objet
A5 – Mauvaise configuration sécurité
Configuration sécurisée doit être définie, mise en œuvre, et
maintenue au jour le jour
• Ne pas afficher les messages d’erreurs / stacktrace
• Modifier les login et mot de passes par défaut des applications
utilisées
• Mettre à jour sa version de PHP
• Mettre à jour ses bibliothèques tierces
• Bloquer tous les ports inutilisés
A6 – Exposition de donnés sensibles
• Crypter les données sensibles
• Hacher les mots de passes avec des
algorithmes forts
• Protéger les données sensibles comme
données patients, cartes bleues, ...
• md5 ou sha1 avec ou sans grain de sel n’est plus
suffisamment sécurisée
• Recommandé d’utiliser aujourd’hui bcrypt, scrypt ou
PBKDF2
A6 – Exposition de donnés sensibles
ZendCrypt
Ce composant permet de mettre en œuvre une cryptographie
poussée de manière simple et intuitive.
Liste des composants
• ZendCryptBlockCipher
• ZendCryptHash
• ZendCryptHmac
• ZendCryptKeyDerivation
• ZendCryptPassword
• ZendCryptPublicKey
• ZendCryptSymmetic
A6 – Exposition de donnés sensibles
ZendCryptBlockCipher
C’est ce composant que nous allons utiliser pour encrypter et décrypter les
données sensibles de l’application (cryptage symétrique).
Il gère aussi l’authentification (HMAC). L’encryptage utilise l’adapter Mcrypt.
Liste des méthodes utiles de l’API
• setKey($key)
• encrypt($data)
• decrypt($data)
A6 – Exposition de donnés sensibles
BlockCipher - options par défaut
• Algorithme AES (clé de 256 bits)
• Mode CBC
« Cipher Block Chaining » ou Enchaînement des blocs
• HMAC (SHA-256)
« keyed-hash message authentication code »
• Mode PKCS7 (RFC 5652)
« Public Key Cryptographic Standards » ou Standard de syntaxe de message
cryptographique
• PBKDF2
« Password-Based Key Derivation Function 2» comme fonction de dérivation
de clé pour la génération des clés de cryptage et d’authentification
• Random IV pour générer le grain de sel
A6 – Exposition de donnés sensibles
Exemple d’utilisation de ZendCryptBlockCipher
A6 – Exposition de donnés sensibles
ZendCryptPasswordBCrypt
Composant utilisé pour encrypter et décrypter les mots de passe de
l’application
Liste des méthodes utiles de l’API
• create($password)
• verify($password, $hash)
• setSalt($salt) avec $salt chaine optionnelle de 16 caractères
minimum
• setCost($cost) avec $cost entier compris entre 4 et 31 (14 par
défaut)
A6 – Exposition de donnés sensibles
Exemple d’utilisation de ZendCryptPasswordBcrypt
A8 – Cross-site Request Forgery (CSRF)
• Faire envoyer une requête par le navigateur d’un
utilisateur, à son insu, pour effectuer une action
• Les navigateurs envoient automatiquement les
informations d’authentification tels que les
cookies de session
Inclure un jeton unique dans un champ caché (pour un
formulaire), dans une url( pour les liens)
A8 – Cross-site Request Forgery (CSRF)
Mise en place d’un token anti-CSRF dans vos formulaires
A9 – Utilisation de composants avec des vulnérabilités
connues
Liste de diffusion des failles de sécurité ZF2
http://framework.zend.com/security/advisories/
Des questions ??
Merci !

Sécuriser mes applications avec ZF2

  • 1.
    Julien Charpentier –Directeur R&D Cyrille Grandval – Directeur Général ZF2 Sécurité « Sécuriser mes applications avec ZF2 » 18.06.2015 Darkmira Tour Zend Day 2015
  • 2.
    Qui sommes nous? CyrilleGrandval Zend Evangelist (membre Z-Team) Consultant PHP / Sécurité Professeur / Formateur PHP et Sécurité des applications Web cgrandval@darkmira.fr @CyrilleGrandval Julien Charpentier Consultant / Architecte PHP Professeur / Formateur PHP jcharpentier@darkmira.fr @jcharpentier_ Co-auteur du livre « Préparation à la certification Zend Certified PHP Engineer - ZCPE » aux éditions ENI
  • 3.
    ZF2 – Composantsde sécurité • ZendAuthentification • ZendDb • ZendCaptcha • ZendCrypt • ZendEscaper • ZendFilter • ZendInputFilter • ZendPermissions • ZendMath • ZendValidator
  • 4.
    Première (et seule)vérité Ne vous fiez à personne…
  • 6.
    Les hackers nese soucient pas de mon site !
  • 7.
    Sécurité – Mantradu No®ris (que) Filtre et valide les données entrantes, encode les données sortantes !
  • 8.
    Sécurité ZF2 –données entrantes • S’assurer de la provenance des données (ZendCaptcha) • Filtrer les données utilisateurs (ZendFilter) • Valider les données utilisateurs (ZendValidate) • Etablir une stratégie de filtrage (ZendInputFilter)
  • 9.
    ZendCaptcha • Captcha =>Test de défi-réponse utilisé en informatique • S'assure qu'une réponse n'est pas générée par un ordinateur L'acronyme « CAPTCHA » est basé sur le mot capture, et vient de l'anglais completely automated public Turing test to tell computers and humans apart Permet de s’assurer qu’un formulaire est bien soumis par un utilisateur.
  • 10.
    ZendCaptcha Plusieurs adaptateurs • ZendCaptchaDumb •ZendCaptchaFiglet • ZendCaptchaImage • ZendCatpchaReCaptcha
  • 11.
    ZendCaptchaImage Création et configurationdu captcha Ajout dans un formulaire
  • 12.
  • 13.
  • 14.
    ZendFilter • Appliquer unou plusieurs traitement sur une donnée • Un filtre est un transformateur -> retourne une donnée après l’avoir nettoyée, tronquée, cryptée, compressée voire même traduite ou convertie • Méthode filter qui retourne la donnée d’entrée « nettoyée » Permet de transformer une source de données externe
  • 15.
    ZendFilter • ZendFilterBlacklist • ZendFilterBoolean •ZendFilterCallback • ZendFilterDigits • ZendFilterDecrypt • ZendFilterEncrypt • ZendFilterHtmlEntities • ZendFilterPregReplace • ZendFilterStripNewlines • ZendFilterStripTags • ZendFilterToInt • ZendFilterWhiteList • ZendI18nFilter* Listes non exhaustive des filtres prédéfinis
  • 16.
    ZendFilter - utilisation •ZendFilterStripTags • ZendFilterToInt • ZendFilterWhitelist Exemples de filtrage d’une donnée entrante
  • 17.
  • 18.
  • 19.
    ZendFilter – allerplus loin • Appeler un filtre de manière statique (ZendFilterStaticFilter) • Définir un filtre avec une fonction de callback (ZendFilterCallback) • Créer ses filtres personnels (étendre ZendFilterAbstractFilter et en informer le PluginManager)
  • 20.
  • 21.
    ZendValidator • Valide lefait qu’une donnée reçue en entrée respecte certains critères prédéfinis Un validateur contient une méthode isValid qui retourne la valeur TRUE si la donnée reçue respecte les critères, FALSE dans le cas contraire. Permet de s’assurer que le format d’une source de données externe est conforme à nos attentes.
  • 22.
    ZendValidator • ZendValidatorDbRecordExi sts • ZendValidatorCallback •ZendValidatorCreditCard • ZendValidatorDigits • ZendValidatorEmailAddress • ZendValidatorGreaterThan • ZendValidatorInArray • ZendValidatorLessThan • ZendValidatorRegexp • ZendValidatorStringLengt h • ZendValidatorUri • ZendI18nValidator* Listes non exhaustive des validateurs prédéfinis
  • 23.
    ZendValidator - utilisation Exemplesde validation d’une donnée entrante • ZendValidatorDigits • ZendValidatorEmailAddress
  • 24.
  • 25.
  • 26.
    ZendValidator – allerplus loin • Appeler un validator de manière statique (ZendValidatorStaticValidator) • Définir un validateur avec une fonction de callback (ZendValidatorCallback) • Créer ses validators personnels (étendre ZendValidatorAbstractValidator et en informer le
  • 27.
  • 28.
    ZendInputFilter Un filtre d’entréepermet de définir une collection de filtres et de validateurs applicable sur n’importe quel type de données d’entrées (formulaires, paramètres GET, COOKIE, entête HTTP, etc…) dont le nom est connu. Il est ainsi possible de définir des filtres et validateurs pour l’ensemble des données utilisées par une application. Un filtre d’entrée contient une méthode isValid qui retourne la valeur TRUE si la donnée reçue respecte les critères, FALSE dans le cas contraire Permet de définir une stratégie globale de validation d’une source de données externe.
  • 29.
    ZendInputFilter - utilisation Exemplede création d’un filtre d’entrée
  • 30.
  • 31.
    ZendInputFilter - utilisation Exempled’utilisation du filtre d’entrée Avec un formulaire
  • 32.
  • 33.
    Sécurité – donnéessortantes Composants ZF2 • ZendEscaper • ZendViewHelperEscape* • EscapeCss • EscapeHtml • EscapeHtmlAttr • EscapeJs • EscapeUrl
  • 34.
    ZendEscaper • Permet detransformer une donnée destinée à l’affichage afin que celle-ci ne soit pas interprétable par le navigateur • Un encodeur contient plusieurs méthodes permettant l’encodage suivant le contexte d’affichage (html, css, js, url ou attribut html) Permet de s’assurer que les données s’affichent telles que nous le voulons.
  • 35.
    ZendEscaper - utilisation Exempled’encodage de données sortantes Ou directement dans une vue
  • 36.
  • 37.
    Top 10 OWASP2013 A1 – Injection A2 – Violation de Gestion d’Authentification et de Session A3 – Cross-Site Scripting (XSS) A4 – Références directes non sécurisées à un objet A5 – Mauvaise configuration Sécurité A6 – Exposition de données sensibles A7 – Manque de contrôle d’accès au niveau fonctionnel A8 - Falsification de requête intersite (CSRF) A9 - Utilisation de composants avec des vulnérabilités connues A10 – Redirections et Renvois Non Validés
  • 38.
    A1 – Injection •Une donnée entrante brute est insérée dans une commande liée à une interprétation • Plus connu : injection SQL mais bien d’autres : LDAP, Xpath, ... 1. Valider les données entrantes 2. Requêtes paramétrées (préparées, procédures stockées)
  • 39.
    A1 – Injection •Paramètres anonymes • Paramètres nommés
  • 40.
    A2 – Violationde Gestion d’Authentification et de Session • Mot de passes utilisateurs incorrectement stockés • Divination des mots de passes utilisateurs et des identifiants de session • Permettre l’utilisation des identifiants de session dans l’URL • Pas de timeout de session • Pas de renouvellement d’identifiant de session après changement de droits • Utilisation de connexion non sécurisées • Mauvaise configuration
  • 41.
    A2 – Violationde Gestion d’Authentification et de Session Exemple d’utilisation de ZendSessionConfig et ZendSessionSessionManager
  • 42.
    Exemple de configuration Exempled’utilisation de ZendSessionManager A2 – Violation de Gestion d’Authentification et de Session
  • 43.
    A3 – Cross-SiteScripting (XSS) • Faille la plus répandue • Inclusion direct de code script fourni par l’utilisateur dans la réponse au navigateur • XSS réfléchi • XSS stocké • XSS basé sur DOM Validation des données d’entrées et encodage des données de sortie
  • 44.
    A4 – Référencesdirectes non sécurisées à un objet • Objet interne fait directement référence à une ressource (fichier, répertoire, enregistrement en base de données) sans contrôle d’accès spécifique • Par exemple, modification d’un id dans l’url pour accéder à une autre ressource Vérifier systématiquement si un utilisateur à accès à une ressource • Mise en place d’ACL simple, maintenable et clair • Vérifier en base de données à chaque action
  • 45.
    A4 – Référencesdirectes non sécurisées à un objet Gestion des droits Vérifier qu’un utilisateur a bien accès à un type de ressource défini • ZendAuthentification • ZendPermissionsAcl ou ZendPermissionsRbac
  • 46.
    A4 – Référencesdirectes non sécurisées à un objet ZendAuthentification Fournit une API permettant de gérer l’authentification d’un utilisateur ZendAuthentificationAdapter Plusieurs adaptateurs disponibles : • Base de données • Digest • HTTP • LDAP • Callback
  • 47.
    A4 – Référencesdirectes non sécurisées à un objet Exemple d’utilisation de ZendAuthentification
  • 48.
    ZendPermissionsAcl et ZendPermissionsRbac Gestiondes ACL (Access Control List) et des Rbac (Role- based Access Control) de manière souple et intuitive. A4 – Références directes non sécurisées à un objet
  • 49.
    A4 – Référencesdirectes non sécurisées à un objet Exemple d’utilisation des Acl
  • 50.
    A4 – Référencesdirectes non sécurisées à un objet
  • 51.
    A4 – Référencesdirectes non sécurisées à un objet
  • 52.
    A4 – Référencesdirectes non sécurisées à un objet
  • 53.
    A4 – Référencesdirectes non sécurisées à un objet
  • 54.
    A5 – Mauvaiseconfiguration sécurité Configuration sécurisée doit être définie, mise en œuvre, et maintenue au jour le jour • Ne pas afficher les messages d’erreurs / stacktrace • Modifier les login et mot de passes par défaut des applications utilisées • Mettre à jour sa version de PHP • Mettre à jour ses bibliothèques tierces • Bloquer tous les ports inutilisés
  • 55.
    A6 – Expositionde donnés sensibles • Crypter les données sensibles • Hacher les mots de passes avec des algorithmes forts • Protéger les données sensibles comme données patients, cartes bleues, ... • md5 ou sha1 avec ou sans grain de sel n’est plus suffisamment sécurisée • Recommandé d’utiliser aujourd’hui bcrypt, scrypt ou PBKDF2
  • 56.
    A6 – Expositionde donnés sensibles ZendCrypt Ce composant permet de mettre en œuvre une cryptographie poussée de manière simple et intuitive. Liste des composants • ZendCryptBlockCipher • ZendCryptHash • ZendCryptHmac • ZendCryptKeyDerivation • ZendCryptPassword • ZendCryptPublicKey • ZendCryptSymmetic
  • 57.
    A6 – Expositionde donnés sensibles ZendCryptBlockCipher C’est ce composant que nous allons utiliser pour encrypter et décrypter les données sensibles de l’application (cryptage symétrique). Il gère aussi l’authentification (HMAC). L’encryptage utilise l’adapter Mcrypt. Liste des méthodes utiles de l’API • setKey($key) • encrypt($data) • decrypt($data)
  • 58.
    A6 – Expositionde donnés sensibles BlockCipher - options par défaut • Algorithme AES (clé de 256 bits) • Mode CBC « Cipher Block Chaining » ou Enchaînement des blocs • HMAC (SHA-256) « keyed-hash message authentication code » • Mode PKCS7 (RFC 5652) « Public Key Cryptographic Standards » ou Standard de syntaxe de message cryptographique • PBKDF2 « Password-Based Key Derivation Function 2» comme fonction de dérivation de clé pour la génération des clés de cryptage et d’authentification • Random IV pour générer le grain de sel
  • 59.
    A6 – Expositionde donnés sensibles Exemple d’utilisation de ZendCryptBlockCipher
  • 60.
    A6 – Expositionde donnés sensibles ZendCryptPasswordBCrypt Composant utilisé pour encrypter et décrypter les mots de passe de l’application Liste des méthodes utiles de l’API • create($password) • verify($password, $hash) • setSalt($salt) avec $salt chaine optionnelle de 16 caractères minimum • setCost($cost) avec $cost entier compris entre 4 et 31 (14 par défaut)
  • 61.
    A6 – Expositionde donnés sensibles Exemple d’utilisation de ZendCryptPasswordBcrypt
  • 62.
    A8 – Cross-siteRequest Forgery (CSRF) • Faire envoyer une requête par le navigateur d’un utilisateur, à son insu, pour effectuer une action • Les navigateurs envoient automatiquement les informations d’authentification tels que les cookies de session Inclure un jeton unique dans un champ caché (pour un formulaire), dans une url( pour les liens)
  • 63.
    A8 – Cross-siteRequest Forgery (CSRF) Mise en place d’un token anti-CSRF dans vos formulaires
  • 64.
    A9 – Utilisationde composants avec des vulnérabilités connues Liste de diffusion des failles de sécurité ZF2 http://framework.zend.com/security/advisories/
  • 66.

Notes de l'éditeur

  • #7 Alors on peut se demander si, 100% de couverture de code correspond à une application bien testée. J’aimerai le croire.