SlideShare une entreprise Scribd logo
1  sur  61
Télécharger pour lire hors ligne
C r         p r PHP
                     Auditeur statique de code PHP




jeudi 10 mars 2011
A

                     • Qu’est-ce que Cornac?
                     • Application et résultats
                     • Comment améliorer la qualité du code


jeudi 10 mars 2011
Q p r ?

                     • Damien Seguy
                     • Consultant à Alter way Consulting,
                       Alter Way Group

                     • Industrialisation, expertise LAMP
                     • damien.seguy@alterway.fr

jeudi 10 mars 2011
Y ,w   q
jeudi 10 mars 2011
./bin/cornac -I spotweb.ini
                     > Tokenizeur
                     > Auditeur
                     > Done



jeudi 10 mars 2011
I v   r r p




jeudi 10 mars 2011
I v   r r p




jeudi 10 mars 2011
I v   r r p




jeudi 10 mars 2011
I v   r r p




jeudi 10 mars 2011
C r

                     • Auditeur statique
                     • Analyse le code PHP sans l’exécuter
                     • Scrute une application dans son
                       ensemble




jeudi 10 mars 2011
N p      f      r
         • Xdebug
          • xdebug exécute le code
         • grep
          • grep ne comprend pas la sémantique PHP
         • CodeSniffer
          • CodeSniffer applique des conventions de
                     codage

jeudi 10 mars 2011
A       f      r

                     • PMD
                      • PHP Mess Detector
                     • PHP_Depends


jeudi 10 mars 2011
L                     PHP


                         • Véritable liste des extensions
                         • Pratique pour les déploiements
                         • Aimé par les hébergeurs


jeudi 10 mars 2011
A            r         q
                     • Traite de grosses quantités de code
                     • Traite de manière répétitive
                     • Dépend de l’expérience d’auditeur
                     • Automatise les recherches
                     • Systématise les recherches
                     • Produit beaucoup de faux positifs
jeudi 10 mars 2011
C




jeudi 10 mars 2011
C




jeudi 10 mars 2011
C




jeudi 10 mars 2011
C




jeudi 10 mars 2011
I v            r      ’ pp

                     • Prendre du recul sur l’application
                     • Lister les noms utilisés
                     • Lister les fonctionnalités utilisées


jeudi 10 mars 2011
Ap                      q

                     • Lister tous les aspects techniques
                      • Fonctionnalités PHP
                      • Fonctionnalités avancées
                      • Fonctionnalités obsolètes
                      • Dépendances

jeudi 10 mars 2011
M r              5.3

                     • Fonctions obsolètes
                     • Passage par référence
                     • Référence après new
                     • mktime ne prend plus 7 paramètres

jeudi 10 mars 2011
N                 r       r

                     • Extrait toutes les structures nommées
                     • Étudie leurs conventions
                     • Étudie leur ensemble
                     • Étudie leur sémantique

jeudi 10 mars 2011
jeudi 10 mars 2011
jeudi 10 mars 2011
jeudi 10 mars 2011
jeudi 10 mars 2011
jeudi 10 mars 2011
jeudi 10 mars 2011
jeudi 10 mars 2011
? ? ?


jeudi 10 mars 2011
? ? ?


jeudi 10 mars 2011
R    ’
   • include*, require*
   • Ignore les variables
   • Les cercles sont les
          fichiers

   • Les flèches indiquent
          l’inclusion




jeudi 10 mars 2011
R         ’

   • Inclusions uniques
   • Inclusions multiples
   • Inclusions d’inclusions
   • Inclusions doubles


jeudi 10 mars 2011
U
   • Lien entre la définition
          d’une constante et son
          utilisation

   • Les constantes sont
          utilisées dans leur
          fichier de définition

   • Sauf une

jeudi 10 mars 2011
Ap rç          ’       b


                     • Affichage global
                     • Pas d’analyse détaillée


jeudi 10 mars 2011
H r r

                     • Version DOT
                     • Peu d’extensions
                     • Où est la classe db?



jeudi 10 mars 2011
H r r




                     • Exemple de dotclear
jeudi 10 mars 2011
H r r




jeudi 10 mars 2011
Vr   Gp




jeudi 10 mars 2011
jeudi 10 mars 2011
jeudi 10 mars 2011
R                    C r

                     • Cornac utilise le tokenizer de PHP
                     • Il ajoute une couche de détection des
                       structures complexes

                     • Il se débarrasse des éléments de syntaxe
                      • {} [] () ; , ‘’ «»

jeudi 10 mars 2011
r
             <?php print ("hello $world! "); ?>
                     [1] => Array
                         (                       [6] => Array
                             [0] => 266              (
                             [1] => print                [0] => 309
                             [2] => 1                    [1] => $world
                         )                               [2] => 1
                                                     )
                     [2] => Array
                         (                       [7] => Array
                             [0] => 370              (
                             [1] =>                      [0] => 314
                             [2] => 1                    [1] => !
                         )                               [2] => 1
                                                     )
                     [3] => (
                     [4] => "                    [8] => "
                     [5] => Array                [9] => )
                         (                       [10] => ;
                              [0] => 314
                              [1] => hello
                              [2] => 1            [1] => Array
                         )                            (
                                                           [0] => token PHP
                                                           [1] => code PHP
                                                           [2] => ligne
                                                      )
                                                  [2] => "


jeudi 10 mars 2011
r
             <?php print ("hello $world! "); ?>




jeudi 10 mars 2011
r




jeudi 10 mars 2011
L   v r b




jeudi 10 mars 2011
L   v r b




jeudi 10 mars 2011
L   v r b




jeudi 10 mars 2011
L   v r b




jeudi 10 mars 2011
L   v r b




jeudi 10 mars 2011
L   v r b




jeudi 10 mars 2011
Iff




jeudi 10 mars 2011
Iff




jeudi 10 mars 2011
Iff




jeudi 10 mars 2011
Iff




jeudi 10 mars 2011
C




                     • Classes, propriétés, variables, fonctions, constantes

jeudi 10 mars 2011
F

            Token        Auditeur   Affichage
             izeur




                         Analyzer

jeudi 10 mars 2011
Ev

            Token
                                 • Web
             izeur
                      Auditeur
                                 • XML
                                 • ODS
                                 • PHPCodeBrow
                                 • Sonar
                      Analyzer

jeudi 10 mars 2011
Rè
                     • Sécurité
                     • Recommandations (groupe PHP, CMS..)
                     • Conventions maison
                     • Migration PHP 5.3
                     • Performances
                     • Motif de conceptions
jeudi 10 mars 2011
http://www.cornac.info/
                damien.seguy@alterway.fr

jeudi 10 mars 2011
jeudi 10 mars 2011

Contenu connexe

En vedette

Una nota, a medio camino entre el contenido jurídico y la reflexión social, s...
Una nota, a medio camino entre el contenido jurídico y la reflexión social, s...Una nota, a medio camino entre el contenido jurídico y la reflexión social, s...
Una nota, a medio camino entre el contenido jurídico y la reflexión social, s...Universidad Autónoma de Barcelona
 
Sportsmen and women from La Línea
Sportsmen and women from La LíneaSportsmen and women from La Línea
Sportsmen and women from La Líneacariam
 
Panafrican patriot act . Manifeste pour une Afrique consciente.
Panafrican patriot act . Manifeste pour une Afrique consciente.Panafrican patriot act . Manifeste pour une Afrique consciente.
Panafrican patriot act . Manifeste pour une Afrique consciente.Patrice Piardon
 
Phising
PhisingPhising
Phisingabsisa
 
Embalaje
EmbalajeEmbalaje
Embalaje14325
 
Community management extrait 1 intro
Community management extrait 1 introCommunity management extrait 1 intro
Community management extrait 1 introTobee Biz
 
Le Regard illustré n°53 février 2013
Le Regard illustré n°53 février 2013Le Regard illustré n°53 février 2013
Le Regard illustré n°53 février 2013midod
 
Tableau général 2009 2010
Tableau général 2009 2010Tableau général 2009 2010
Tableau général 2009 2010Sciences Po
 
Planete Pme 15 juin 2010 Conference Et Gorgy Timing Prix Chine 2010
Planete Pme 15 juin 2010 Conference Et Gorgy Timing Prix Chine 2010Planete Pme 15 juin 2010 Conference Et Gorgy Timing Prix Chine 2010
Planete Pme 15 juin 2010 Conference Et Gorgy Timing Prix Chine 2010Renaud Favier
 
Phising
PhisingPhising
Phisingabsisa
 
Semestral maria cristinaacostacalderon
Semestral maria cristinaacostacalderonSemestral maria cristinaacostacalderon
Semestral maria cristinaacostacalderonCristina Acosta
 
Liga de fútbol sala seniors san diego 2011/2012
Liga de fútbol sala seniors san diego 2011/2012Liga de fútbol sala seniors san diego 2011/2012
Liga de fútbol sala seniors san diego 2011/2012PABLO DE LA MORENA RAMOS
 
Arquetipos para la educacación emocional cuento brillando en la oscuridad
Arquetipos para la educacación emocional cuento brillando en la oscuridadArquetipos para la educacación emocional cuento brillando en la oscuridad
Arquetipos para la educacación emocional cuento brillando en la oscuridadLola Fernández
 
Jardines en bloques de viviendas
Jardines en bloques de viviendasJardines en bloques de viviendas
Jardines en bloques de viviendasRocio
 
Declaration patrimoine-conway-mouret
Declaration patrimoine-conway-mouretDeclaration patrimoine-conway-mouret
Declaration patrimoine-conway-mouretLe Point
 

En vedette (20)

Una nota, a medio camino entre el contenido jurídico y la reflexión social, s...
Una nota, a medio camino entre el contenido jurídico y la reflexión social, s...Una nota, a medio camino entre el contenido jurídico y la reflexión social, s...
Una nota, a medio camino entre el contenido jurídico y la reflexión social, s...
 
Importance langues
Importance languesImportance langues
Importance langues
 
Part 1 paris 2010 3
Part 1 paris 2010 3Part 1 paris 2010 3
Part 1 paris 2010 3
 
B2 c fest'iga
B2 c fest'igaB2 c fest'iga
B2 c fest'iga
 
Diegep10 tis3 y4_g3
Diegep10 tis3 y4_g3Diegep10 tis3 y4_g3
Diegep10 tis3 y4_g3
 
Sportsmen and women from La Línea
Sportsmen and women from La LíneaSportsmen and women from La Línea
Sportsmen and women from La Línea
 
Panafrican patriot act . Manifeste pour une Afrique consciente.
Panafrican patriot act . Manifeste pour une Afrique consciente.Panafrican patriot act . Manifeste pour une Afrique consciente.
Panafrican patriot act . Manifeste pour une Afrique consciente.
 
Bluetooth Marketing
Bluetooth MarketingBluetooth Marketing
Bluetooth Marketing
 
Phising
PhisingPhising
Phising
 
Embalaje
EmbalajeEmbalaje
Embalaje
 
Community management extrait 1 intro
Community management extrait 1 introCommunity management extrait 1 intro
Community management extrait 1 intro
 
Le Regard illustré n°53 février 2013
Le Regard illustré n°53 février 2013Le Regard illustré n°53 février 2013
Le Regard illustré n°53 février 2013
 
Tableau général 2009 2010
Tableau général 2009 2010Tableau général 2009 2010
Tableau général 2009 2010
 
Planete Pme 15 juin 2010 Conference Et Gorgy Timing Prix Chine 2010
Planete Pme 15 juin 2010 Conference Et Gorgy Timing Prix Chine 2010Planete Pme 15 juin 2010 Conference Et Gorgy Timing Prix Chine 2010
Planete Pme 15 juin 2010 Conference Et Gorgy Timing Prix Chine 2010
 
Phising
PhisingPhising
Phising
 
Semestral maria cristinaacostacalderon
Semestral maria cristinaacostacalderonSemestral maria cristinaacostacalderon
Semestral maria cristinaacostacalderon
 
Liga de fútbol sala seniors san diego 2011/2012
Liga de fútbol sala seniors san diego 2011/2012Liga de fútbol sala seniors san diego 2011/2012
Liga de fútbol sala seniors san diego 2011/2012
 
Arquetipos para la educacación emocional cuento brillando en la oscuridad
Arquetipos para la educacación emocional cuento brillando en la oscuridadArquetipos para la educacación emocional cuento brillando en la oscuridad
Arquetipos para la educacación emocional cuento brillando en la oscuridad
 
Jardines en bloques de viviendas
Jardines en bloques de viviendasJardines en bloques de viviendas
Jardines en bloques de viviendas
 
Declaration patrimoine-conway-mouret
Declaration patrimoine-conway-mouretDeclaration patrimoine-conway-mouret
Declaration patrimoine-conway-mouret
 

Similaire à Auditeur statique PHP

Agenda 2ème réunion TTFx Breizh 2011-06-20
Agenda 2ème réunion TTFx Breizh 2011-06-20Agenda 2ème réunion TTFx Breizh 2011-06-20
Agenda 2ème réunion TTFx Breizh 2011-06-20Christophe Keromen
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPjulien pauli
 
Ez18n theorie encoding gouvernance
Ez18n theorie encoding gouvernanceEz18n theorie encoding gouvernance
Ez18n theorie encoding gouvernancegdigugli
 
Développement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend SearchDéveloppement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend SearchRobert Viseur
 
Rails on business - RailsCampParis3
Rails on business - RailsCampParis3Rails on business - RailsCampParis3
Rails on business - RailsCampParis3Vodeclic SAS
 
Soutenance séminaire bibliographique
Soutenance séminaire bibliographiqueSoutenance séminaire bibliographique
Soutenance séminaire bibliographiqueMaxime ALAY-EDDINE
 
Software Craftsmanship : en Pratique - AgileTour
Software Craftsmanship : en Pratique - AgileTourSoftware Craftsmanship : en Pratique - AgileTour
Software Craftsmanship : en Pratique - AgileTourJean-Laurent de Morlhon
 
AUF11 - 01 Introduction
AUF11 - 01 IntroductionAUF11 - 01 Introduction
AUF11 - 01 Introductionotb
 
Geneva jug Lucene Solr
Geneva jug Lucene Solr Geneva jug Lucene Solr
Geneva jug Lucene Solr francelabs
 
Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014
Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014
Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014francelabs
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?Rui Carvalho
 

Similaire à Auditeur statique PHP (15)

GetText / Rails - FR
GetText / Rails - FRGetText / Rails - FR
GetText / Rails - FR
 
GetText / Rails
GetText / RailsGetText / Rails
GetText / Rails
 
Agenda 2ème réunion TTFx Breizh 2011-06-20
Agenda 2ème réunion TTFx Breizh 2011-06-20Agenda 2ème réunion TTFx Breizh 2011-06-20
Agenda 2ème réunion TTFx Breizh 2011-06-20
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
 
Ez18n theorie encoding gouvernance
Ez18n theorie encoding gouvernanceEz18n theorie encoding gouvernance
Ez18n theorie encoding gouvernance
 
Développement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend SearchDéveloppement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend Search
 
Tutoriel : "Gestion d’ontologies"
Tutoriel : "Gestion d’ontologies"Tutoriel : "Gestion d’ontologies"
Tutoriel : "Gestion d’ontologies"
 
Rails on business - RailsCampParis3
Rails on business - RailsCampParis3Rails on business - RailsCampParis3
Rails on business - RailsCampParis3
 
Soutenance séminaire bibliographique
Soutenance séminaire bibliographiqueSoutenance séminaire bibliographique
Soutenance séminaire bibliographique
 
Software Craftsmanship : en Pratique - AgileTour
Software Craftsmanship : en Pratique - AgileTourSoftware Craftsmanship : en Pratique - AgileTour
Software Craftsmanship : en Pratique - AgileTour
 
Software Craftsmanship: En pratique
Software Craftsmanship: En pratiqueSoftware Craftsmanship: En pratique
Software Craftsmanship: En pratique
 
AUF11 - 01 Introduction
AUF11 - 01 IntroductionAUF11 - 01 Introduction
AUF11 - 01 Introduction
 
Geneva jug Lucene Solr
Geneva jug Lucene Solr Geneva jug Lucene Solr
Geneva jug Lucene Solr
 
Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014
Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014
Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?
 

Plus de ALTER WAY

Drupagora 2019 : Drupal, accessibilité et RGAA
Drupagora 2019 : Drupal, accessibilité et RGAADrupagora 2019 : Drupal, accessibilité et RGAA
Drupagora 2019 : Drupal, accessibilité et RGAAALTER WAY
 
#sharingLille : L'Open Source pour une société numérique ouverte, transparent...
#sharingLille : L'Open Source pour une société numérique ouverte, transparent...#sharingLille : L'Open Source pour une société numérique ouverte, transparent...
#sharingLille : L'Open Source pour une société numérique ouverte, transparent...ALTER WAY
 
Flyer promotions Alter Way Formation Avril Mai 2015
Flyer promotions Alter Way Formation Avril Mai 2015Flyer promotions Alter Way Formation Avril Mai 2015
Flyer promotions Alter Way Formation Avril Mai 2015ALTER WAY
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ? Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ? ALTER WAY
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?ALTER WAY
 
Open World Forum 2014 : From ES6 to Javascript 2.0. What use today ? par Jon...
Open World Forum 2014  : From ES6 to Javascript 2.0. What use today ? par Jon...Open World Forum 2014  : From ES6 to Javascript 2.0. What use today ? par Jon...
Open World Forum 2014 : From ES6 to Javascript 2.0. What use today ? par Jon...ALTER WAY
 
Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent
Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent
Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent ALTER WAY
 
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014ALTER WAY
 
Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch ALTER WAY
 
Solutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSA
Solutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSASolutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSA
Solutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSAALTER WAY
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...ALTER WAY
 
Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF
Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF
Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF ALTER WAY
 
Elasticsearch : petit déjeuner du 13 mars 2014
Elasticsearch : petit déjeuner du 13 mars 2014Elasticsearch : petit déjeuner du 13 mars 2014
Elasticsearch : petit déjeuner du 13 mars 2014ALTER WAY
 
Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014ALTER WAY
 
Présentation Drupal - Global Training Days
Présentation Drupal - Global Training DaysPrésentation Drupal - Global Training Days
Présentation Drupal - Global Training DaysALTER WAY
 
OpenStack havana tour d'horizon
OpenStack havana tour d'horizonOpenStack havana tour d'horizon
OpenStack havana tour d'horizonALTER WAY
 
H2O, le Cloud par Alter Way
H2O, le Cloud par Alter WayH2O, le Cloud par Alter Way
H2O, le Cloud par Alter WayALTER WAY
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php ALTER WAY
 
Reprise sur incident , par Jean Marc Fontaine
Reprise sur incident , par Jean Marc FontaineReprise sur incident , par Jean Marc Fontaine
Reprise sur incident , par Jean Marc FontaineALTER WAY
 
Organiser efficacement son depot de code par Jean Marc Fontaine
Organiser efficacement son depot de code par Jean Marc FontaineOrganiser efficacement son depot de code par Jean Marc Fontaine
Organiser efficacement son depot de code par Jean Marc FontaineALTER WAY
 

Plus de ALTER WAY (20)

Drupagora 2019 : Drupal, accessibilité et RGAA
Drupagora 2019 : Drupal, accessibilité et RGAADrupagora 2019 : Drupal, accessibilité et RGAA
Drupagora 2019 : Drupal, accessibilité et RGAA
 
#sharingLille : L'Open Source pour une société numérique ouverte, transparent...
#sharingLille : L'Open Source pour une société numérique ouverte, transparent...#sharingLille : L'Open Source pour une société numérique ouverte, transparent...
#sharingLille : L'Open Source pour une société numérique ouverte, transparent...
 
Flyer promotions Alter Way Formation Avril Mai 2015
Flyer promotions Alter Way Formation Avril Mai 2015Flyer promotions Alter Way Formation Avril Mai 2015
Flyer promotions Alter Way Formation Avril Mai 2015
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ? Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
 
Open World Forum 2014 : From ES6 to Javascript 2.0. What use today ? par Jon...
Open World Forum 2014  : From ES6 to Javascript 2.0. What use today ? par Jon...Open World Forum 2014  : From ES6 to Javascript 2.0. What use today ? par Jon...
Open World Forum 2014 : From ES6 to Javascript 2.0. What use today ? par Jon...
 
Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent
Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent
Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent
 
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
 
Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch
 
Solutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSA
Solutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSASolutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSA
Solutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSA
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
 
Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF
Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF
Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF
 
Elasticsearch : petit déjeuner du 13 mars 2014
Elasticsearch : petit déjeuner du 13 mars 2014Elasticsearch : petit déjeuner du 13 mars 2014
Elasticsearch : petit déjeuner du 13 mars 2014
 
Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014
 
Présentation Drupal - Global Training Days
Présentation Drupal - Global Training DaysPrésentation Drupal - Global Training Days
Présentation Drupal - Global Training Days
 
OpenStack havana tour d'horizon
OpenStack havana tour d'horizonOpenStack havana tour d'horizon
OpenStack havana tour d'horizon
 
H2O, le Cloud par Alter Way
H2O, le Cloud par Alter WayH2O, le Cloud par Alter Way
H2O, le Cloud par Alter Way
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
 
Reprise sur incident , par Jean Marc Fontaine
Reprise sur incident , par Jean Marc FontaineReprise sur incident , par Jean Marc Fontaine
Reprise sur incident , par Jean Marc Fontaine
 
Organiser efficacement son depot de code par Jean Marc Fontaine
Organiser efficacement son depot de code par Jean Marc FontaineOrganiser efficacement son depot de code par Jean Marc Fontaine
Organiser efficacement son depot de code par Jean Marc Fontaine
 

Auditeur statique PHP

  • 1. C r p r PHP Auditeur statique de code PHP jeudi 10 mars 2011
  • 2. A • Qu’est-ce que Cornac? • Application et résultats • Comment améliorer la qualité du code jeudi 10 mars 2011
  • 3. Q p r ? • Damien Seguy • Consultant à Alter way Consulting, Alter Way Group • Industrialisation, expertise LAMP • damien.seguy@alterway.fr jeudi 10 mars 2011
  • 4. Y ,w q jeudi 10 mars 2011
  • 5. ./bin/cornac -I spotweb.ini > Tokenizeur > Auditeur > Done jeudi 10 mars 2011
  • 6. I v r r p jeudi 10 mars 2011
  • 7. I v r r p jeudi 10 mars 2011
  • 8. I v r r p jeudi 10 mars 2011
  • 9. I v r r p jeudi 10 mars 2011
  • 10. C r • Auditeur statique • Analyse le code PHP sans l’exécuter • Scrute une application dans son ensemble jeudi 10 mars 2011
  • 11. N p f r • Xdebug • xdebug exécute le code • grep • grep ne comprend pas la sémantique PHP • CodeSniffer • CodeSniffer applique des conventions de codage jeudi 10 mars 2011
  • 12. A f r • PMD • PHP Mess Detector • PHP_Depends jeudi 10 mars 2011
  • 13. L PHP • Véritable liste des extensions • Pratique pour les déploiements • Aimé par les hébergeurs jeudi 10 mars 2011
  • 14. A r q • Traite de grosses quantités de code • Traite de manière répétitive • Dépend de l’expérience d’auditeur • Automatise les recherches • Systématise les recherches • Produit beaucoup de faux positifs jeudi 10 mars 2011
  • 19. I v r ’ pp • Prendre du recul sur l’application • Lister les noms utilisés • Lister les fonctionnalités utilisées jeudi 10 mars 2011
  • 20. Ap q • Lister tous les aspects techniques • Fonctionnalités PHP • Fonctionnalités avancées • Fonctionnalités obsolètes • Dépendances jeudi 10 mars 2011
  • 21. M r 5.3 • Fonctions obsolètes • Passage par référence • Référence après new • mktime ne prend plus 7 paramètres jeudi 10 mars 2011
  • 22. N r r • Extrait toutes les structures nommées • Étudie leurs conventions • Étudie leur ensemble • Étudie leur sémantique jeudi 10 mars 2011
  • 30. ? ? ? jeudi 10 mars 2011
  • 31. ? ? ? jeudi 10 mars 2011
  • 32. R ’ • include*, require* • Ignore les variables • Les cercles sont les fichiers • Les flèches indiquent l’inclusion jeudi 10 mars 2011
  • 33. R ’ • Inclusions uniques • Inclusions multiples • Inclusions d’inclusions • Inclusions doubles jeudi 10 mars 2011
  • 34. U • Lien entre la définition d’une constante et son utilisation • Les constantes sont utilisées dans leur fichier de définition • Sauf une jeudi 10 mars 2011
  • 35. Ap rç ’ b • Affichage global • Pas d’analyse détaillée jeudi 10 mars 2011
  • 36. H r r • Version DOT • Peu d’extensions • Où est la classe db? jeudi 10 mars 2011
  • 37. H r r • Exemple de dotclear jeudi 10 mars 2011
  • 38. H r r jeudi 10 mars 2011
  • 39. Vr Gp jeudi 10 mars 2011
  • 42. R C r • Cornac utilise le tokenizer de PHP • Il ajoute une couche de détection des structures complexes • Il se débarrasse des éléments de syntaxe • {} [] () ; , ‘’ «» jeudi 10 mars 2011
  • 43. r <?php print ("hello $world! "); ?> [1] => Array ( [6] => Array [0] => 266 ( [1] => print [0] => 309 [2] => 1 [1] => $world ) [2] => 1 ) [2] => Array ( [7] => Array [0] => 370 ( [1] => [0] => 314 [2] => 1 [1] => ! ) [2] => 1 ) [3] => ( [4] => " [8] => " [5] => Array [9] => ) ( [10] => ; [0] => 314 [1] => hello [2] => 1 [1] => Array ) ( [0] => token PHP [1] => code PHP [2] => ligne ) [2] => " jeudi 10 mars 2011
  • 44. r <?php print ("hello $world! "); ?> jeudi 10 mars 2011
  • 46. L v r b jeudi 10 mars 2011
  • 47. L v r b jeudi 10 mars 2011
  • 48. L v r b jeudi 10 mars 2011
  • 49. L v r b jeudi 10 mars 2011
  • 50. L v r b jeudi 10 mars 2011
  • 51. L v r b jeudi 10 mars 2011
  • 56. C • Classes, propriétés, variables, fonctions, constantes jeudi 10 mars 2011
  • 57. F Token Auditeur Affichage izeur Analyzer jeudi 10 mars 2011
  • 58. Ev Token • Web izeur Auditeur • XML • ODS • PHPCodeBrow • Sonar Analyzer jeudi 10 mars 2011
  • 59. • Sécurité • Recommandations (groupe PHP, CMS..) • Conventions maison • Migration PHP 5.3 • Performances • Motif de conceptions jeudi 10 mars 2011
  • 60. http://www.cornac.info/ damien.seguy@alterway.fr jeudi 10 mars 2011