Auditeur statique PHP
-
Upload
alter-way -
Category
Technology
-
view
1.033 -
download
1
description
Transcript of Auditeur statique PHP
Cornac pour PHPAuditeur statique de code PHP
jeudi 10 mars 2011
Agenda
•Qu’est-ce que Cornac?
•Application et résultats
•Comment améliorer la qualité du code
jeudi 10 mars 2011
Qui parle?
•Damien Seguy
•Consultant à Alter way Consulting, Alter Way Group
•Industrialisation, expertise LAMP
jeudi 10 mars 2011
Yes, we take questionsjeudi 10 mars 2011
./bin/cornac -I spotweb.ini> Tokenizeur
> Auditeur> Done
jeudi 10 mars 2011
Inventaire rapide
jeudi 10 mars 2011
Inventaire rapide
jeudi 10 mars 2011
Inventaire rapide
jeudi 10 mars 2011
Inventaire rapide
jeudi 10 mars 2011
Cornac
•Auditeur statique
•Analyse le code PHP sans l’exécuter
•Scrute une application dans son ensemble
jeudi 10 mars 2011
Ne pas confondre•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 confondre
•PMD
•PHP Mess Detector
•PHP_Depends
jeudi 10 mars 2011
Liste des .tensions PHP
•Véritable liste des extensions
•Pratique pour les déploiements
•Aimé par les hébergeurs
jeudi 10 mars 2011
Auditeur statique•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
Classes
jeudi 10 mars 2011
Classes
jeudi 10 mars 2011
Classes
jeudi 10 mars 2011
Classes
jeudi 10 mars 2011
Inventaire d’application
•Prendre du recul sur l’application
•Lister les noms utilisés
•Lister les fonctionnalités utilisées
jeudi 10 mars 2011
Aspects techniques
•Lister tous les aspects techniques
•Fonctionnalités PHP
•Fonctionnalités avancées
•Fonctionnalités obsolètes
•Dépendances
jeudi 10 mars 2011
Migration 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
Noms de structure
•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éseau d’inclusions
• include*, require*
• Ignore les variables
• Les cercles sont les fichiers
• Les flèches indiquent l’inclusion
jeudi 10 mars 2011
Réseau d’inclusions
• Inclusions uniques
• Inclusions multiples
• Inclusions d’inclusions
• Inclusions doubles
jeudi 10 mars 2011
Utilisation des constantes
• 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
Aperçu d’ensemble
•Affichage global
•Pas d’analyse détaillée
jeudi 10 mars 2011
Hiérarchies
• Version DOT
• Peu d’extensions
• Où est la classe db?
jeudi 10 mars 2011
Hiérarchies
• Exemple de dotclear
jeudi 10 mars 2011
Hiérarchies
jeudi 10 mars 2011
Version Gephi
jeudi 10 mars 2011
jeudi 10 mars 2011
jeudi 10 mars 2011
Rouages de Cornac
•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
2tractions [6] => Array ( [0] => 309 [1] => $world [2] => 1 )
[7] => Array ( [0] => 314 [1] => ! [2] => 1 )
[8] => " [9] => ) [10] => ;
[1] => Array ( [0] => token PHP [1] => code PHP [2] => ligne ) [2] => "
<?php print ("hello $world! "); ?> [1] => Array ( [0] => 266 [1] => print [2] => 1 )
[2] => Array ( [0] => 370 [1] => [2] => 1 )
[3] => ( [4] => " [5] => Array ( [0] => 314 [1] => hello [2] => 1 )
jeudi 10 mars 2011
2tractions<?php print ("hello $world! "); ?>
jeudi 10 mars 2011
2tractions
jeudi 10 mars 2011
Liste des variables
jeudi 10 mars 2011
Liste des variables
jeudi 10 mars 2011
Liste des variables
jeudi 10 mars 2011
Liste des variables
jeudi 10 mars 2011
Liste des variables
jeudi 10 mars 2011
Liste des variables
jeudi 10 mars 2011
Iffectations
jeudi 10 mars 2011
Iffectations
jeudi 10 mars 2011
Iffectations
jeudi 10 mars 2011
Iffectations
jeudi 10 mars 2011
Classes inutilisées
• Classes, propriétés, variables, fonctions, constantes
jeudi 10 mars 2011
Fonctionnement
Token
izeurAuditeur Affichage
Analyzer
jeudi 10 mars 2011
Evolution
Token
izeurAuditeur
Analyzer
•Web
•XML
•ODS
•PHPCodeBrowser
•Sonar
jeudi 10 mars 2011
Règles•Sécurité
•Recommandations (groupe PHP, CMS..)
•Conventions maison
•Migration PHP 5.3
•Performances
•Motif de conceptions
jeudi 10 mars 2011
http://www.cornac.info/[email protected]
jeudi 10 mars 2011
jeudi 10 mars 2011