C r         p r PHP                     Auditeur statique de code PHPjeudi 10 mars 2011
A                     • Qu’est-ce que Cornac?                     • Application et résultats                     • Comment...
Q p r ?                     • Damien Seguy                     • Consultant à Alter way Consulting,                       ...
Y ,w   qjeudi 10 mars 2011
./bin/cornac -I spotweb.ini                     > Tokenizeur                     > Auditeur                     > Donejeud...
I v   r r pjeudi 10 mars 2011
I v   r r pjeudi 10 mars 2011
I v   r r pjeudi 10 mars 2011
I v   r r pjeudi 10 mars 2011
C r                     • Auditeur statique                     • Analyse le code PHP sans l’exécuter                     ...
N p      f      r         • Xdebug          • xdebug exécute le code         • grep          • grep ne comprend pas la sém...
A       f      r                     • PMD                      • PHP Mess Detector                     • PHP_Dependsjeudi...
L                     PHP                         • Véritable liste des extensions                         • Pratique pour...
A            r         q                     • Traite de grosses quantités de code                     • Traite de manière...
Cjeudi 10 mars 2011
Cjeudi 10 mars 2011
Cjeudi 10 mars 2011
Cjeudi 10 mars 2011
I v            r      ’ pp                     • Prendre du recul sur l’application                     • Lister les noms ...
Ap                      q                     • Lister tous les aspects techniques                      • Fonctionnalités ...
M r              5.3                     • Fonctions obsolètes                     • Passage par référence                ...
N                 r       r                     • Extrait toutes les structures nommées                     • Étudie leurs...
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 indiquen...
R         ’   • Inclusions uniques   • Inclusions multiples   • Inclusions d’inclusions   • Inclusions doublesjeudi 10 mar...
U   • Lien entre la définition          d’une constante et son          utilisation   • Les constantes sont          utili...
Ap rç          ’       b                     • Affichage global                     • Pas d’analyse détailléejeudi 10 mars...
H r r                     • Version DOT                     • Peu d’extensions                     • Où est la classe db?j...
H r r                     • Exemple de dotclearjeudi 10 mars 2011
H r rjeudi 10 mars 2011
Vr   Gpjeudi 10 mars 2011
jeudi 10 mars 2011
jeudi 10 mars 2011
R                    C r                     • Cornac utilise le tokenizer de PHP                     • Il ajoute une couc...
r             <?php print ("hello $world! "); ?>                     [1] => Array                         (               ...
r             <?php print ("hello $world! "); ?>jeudi 10 mars 2011
rjeudi 10 mars 2011
L   v r bjeudi 10 mars 2011
L   v r bjeudi 10 mars 2011
L   v r bjeudi 10 mars 2011
L   v r bjeudi 10 mars 2011
L   v r bjeudi 10 mars 2011
L   v r bjeudi 10 mars 2011
Iffjeudi 10 mars 2011
Iffjeudi 10 mars 2011
Iffjeudi 10 mars 2011
Iffjeudi 10 mars 2011
C                     • Classes, propriétés, variables, fonctions, constantesjeudi 10 mars 2011
F            Token        Auditeur   Affichage             izeur                         Analyzerjeudi 10 mars 2011
Ev            Token                                 • Web             izeur                      Auditeur                 ...
Rè                     • Sécurité                     • Recommandations (groupe PHP, CMS..)                     • Conventi...
http://www.cornac.info/                damien.seguy@alterway.frjeudi 10 mars 2011
jeudi 10 mars 2011
Prochain SlideShare
Chargement dans…5
×

Auditeur statique PHP

1 520 vues

Publié le

L'analyse de code PHP se fait le plus souvent manuellement : il faut lire le code pour le comprendre.

L'analyse statique permet d'aller plus vite, et dans tous les recoins de l'application : elle travaille sans se lasser, exhaustivement, mais sous direction.

Durant la session, nous mettrons en place un analyseur statique pour PHP, pour détecter automatiquement l'arbre des inclusions, les arguments jamais utilisés, les affectations de GPC, et produire un inventaire à la Prévert du code.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 520
Sur SlideShare
0
Issues des intégrations
0
Intégrations
12
Actions
Partages
0
Téléchargements
15
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Auditeur statique PHP

  1. 1. C r p r PHP Auditeur statique de code PHPjeudi 10 mars 2011
  2. 2. A • Qu’est-ce que Cornac? • Application et résultats • Comment améliorer la qualité du codejeudi 10 mars 2011
  3. 3. Q p r ? • Damien Seguy • Consultant à Alter way Consulting, Alter Way Group • Industrialisation, expertise LAMP • damien.seguy@alterway.frjeudi 10 mars 2011
  4. 4. Y ,w qjeudi 10 mars 2011
  5. 5. ./bin/cornac -I spotweb.ini > Tokenizeur > Auditeur > Donejeudi 10 mars 2011
  6. 6. I v r r pjeudi 10 mars 2011
  7. 7. I v r r pjeudi 10 mars 2011
  8. 8. I v r r pjeudi 10 mars 2011
  9. 9. I v r r pjeudi 10 mars 2011
  10. 10. C r • Auditeur statique • Analyse le code PHP sans l’exécuter • Scrute une application dans son ensemblejeudi 10 mars 2011
  11. 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 codagejeudi 10 mars 2011
  12. 12. A f r • PMD • PHP Mess Detector • PHP_Dependsjeudi 10 mars 2011
  13. 13. L PHP • Véritable liste des extensions • Pratique pour les déploiements • Aimé par les hébergeursjeudi 10 mars 2011
  14. 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 positifsjeudi 10 mars 2011
  15. 15. Cjeudi 10 mars 2011
  16. 16. Cjeudi 10 mars 2011
  17. 17. Cjeudi 10 mars 2011
  18. 18. Cjeudi 10 mars 2011
  19. 19. I v r ’ pp • Prendre du recul sur l’application • Lister les noms utilisés • Lister les fonctionnalités utiliséesjeudi 10 mars 2011
  20. 20. Ap q • Lister tous les aspects techniques • Fonctionnalités PHP • Fonctionnalités avancées • Fonctionnalités obsolètes • Dépendancesjeudi 10 mars 2011
  21. 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ètresjeudi 10 mars 2011
  22. 22. N r r • Extrait toutes les structures nommées • Étudie leurs conventions • Étudie leur ensemble • Étudie leur sémantiquejeudi 10 mars 2011
  23. 23. jeudi 10 mars 2011
  24. 24. jeudi 10 mars 2011
  25. 25. jeudi 10 mars 2011
  26. 26. jeudi 10 mars 2011
  27. 27. jeudi 10 mars 2011
  28. 28. jeudi 10 mars 2011
  29. 29. jeudi 10 mars 2011
  30. 30. ? ? ?jeudi 10 mars 2011
  31. 31. ? ? ?jeudi 10 mars 2011
  32. 32. R ’ • include*, require* • Ignore les variables • Les cercles sont les fichiers • Les flèches indiquent l’inclusionjeudi 10 mars 2011
  33. 33. R ’ • Inclusions uniques • Inclusions multiples • Inclusions d’inclusions • Inclusions doublesjeudi 10 mars 2011
  34. 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 unejeudi 10 mars 2011
  35. 35. Ap rç ’ b • Affichage global • Pas d’analyse détailléejeudi 10 mars 2011
  36. 36. H r r • Version DOT • Peu d’extensions • Où est la classe db?jeudi 10 mars 2011
  37. 37. H r r • Exemple de dotclearjeudi 10 mars 2011
  38. 38. H r rjeudi 10 mars 2011
  39. 39. Vr Gpjeudi 10 mars 2011
  40. 40. jeudi 10 mars 2011
  41. 41. jeudi 10 mars 2011
  42. 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. 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. 44. r <?php print ("hello $world! "); ?>jeudi 10 mars 2011
  45. 45. rjeudi 10 mars 2011
  46. 46. L v r bjeudi 10 mars 2011
  47. 47. L v r bjeudi 10 mars 2011
  48. 48. L v r bjeudi 10 mars 2011
  49. 49. L v r bjeudi 10 mars 2011
  50. 50. L v r bjeudi 10 mars 2011
  51. 51. L v r bjeudi 10 mars 2011
  52. 52. Iffjeudi 10 mars 2011
  53. 53. Iffjeudi 10 mars 2011
  54. 54. Iffjeudi 10 mars 2011
  55. 55. Iffjeudi 10 mars 2011
  56. 56. C • Classes, propriétés, variables, fonctions, constantesjeudi 10 mars 2011
  57. 57. F Token Auditeur Affichage izeur Analyzerjeudi 10 mars 2011
  58. 58. Ev Token • Web izeur Auditeur • XML • ODS • PHPCodeBrow • Sonar Analyzerjeudi 10 mars 2011
  59. 59. Rè • Sécurité • Recommandations (groupe PHP, CMS..) • Conventions maison • Migration PHP 5.3 • Performances • Motif de conceptionsjeudi 10 mars 2011
  60. 60. http://www.cornac.info/ damien.seguy@alterway.frjeudi 10 mars 2011
  61. 61. jeudi 10 mars 2011

×