SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Auditing PHP
         applications

      Audit des
    applications en
          PHP

vendredi 13 novembre 2009   1
Who speak? Qui parle?
                            Philippe Gamache         Philippe Gamache

                            Parler Haut, Interagir   Parler Haut, Interagir
                            Librement :              Librement :
                            Web development,         Développement Web,
                            security audit,          audit de sécurité,
                            training                 formations

                            info@ph-il.ca            info@ph-il.ca

                            @SecureSymfony           @SecureSymfony


vendredi 13 novembre 2009                                                     2
Security book
                               Livre de sécurité
                  New 2009 edition
                  Comprehensive review of
                  security system for MySQL,
                  PHP, etc.
                  Published in French
                     Planning translation


                  Nouvelle édition 2009
                  Bilan complet de la sécurité :
                  système, MySQL, PHP, etc.
                  Édité chez Eyrolles
                  Dédicaces sur demande

vendredi 13 novembre 2009                          3
Agenda                          Ordre du jour
                            Workshop               Présentation de
                            presentation           l’atelier

                            Black box audit        Audit boîte noire

                            Source code audit      Audit à code ouvert




vendredi 13 novembre 2009                                                4
Why?                             Pourquoi?
                            Confidence does not      La confiance n'e xclut pas
                            exclude control™         le contrôle™
                              To validate external       Pour valider un travail
                              work                       externe
                                                         Pour valider un travail
                              To validate internal       interne
                              work
                                                         Pour faire le point
                              Round-up                   Pour avoir un regard
                              For an external            externe
                              perspective                Aussi souvent que
                              As often as possible       possible



vendredi 13 novembre 2009                                                          5
Full audit synopsis
                                 Synopsis d’un audit
                            Identification of the   Identification des
                            audit goals             objectifs d'audit

                            Interview with the      Entretien avec les
                            development teams       équipes de
                                                    développement
                            Black box testing
                                                    Test boîte noire
                            Open Code audit
                                                    Audit de code
                            Report


vendredi 13 novembre 2009                                                6
Identification of the audit goals
               Identification des objectifs d’audit
                            Audit scope      Étendue de l'audit

                              Security         Sécurité

                              Performance      Performance

                              Code quality     Qualité du code




vendredi 13 novembre 2009                                         7
Inter view with the development teams
                 Entretien avec les équipes de développement
                            Check if development       Vérifiez si l’équipe de
                            teams knows what to        développement sait ce
                            secure                     qu’il faut sécurisé
                            Have the design            Demandez d’expliquer la
                            explained first             conception
                            Have them explains their   Demandez d’expliquer
                            approach                   leur approche
                               Check what they say        Vérifiez ce qu'ils
                               Check what they don’t      disent
                               say                        Vérifiez ce qu'ils ne
                                                          disent pas



vendredi 13 novembre 2009                                                         8
The shy version
                                  La version timide
                            We know there are       Nous savons qu’il y a
                            security problems       des problèmes de
                                                    sécurité :
                              but we have no time
                              to secure them          mais nous n'avons
                                                      pas le temps de les
                              this app has been       sécuriser
                              written years ago
                                                      ce logiciel a été écrit
                              we can’t keep up        il y a quelques années
                              with the threats
                                                      nous ne pouvons pas
                                                      suivre les menaces



vendredi 13 novembre 2009                                                       9
The strong version
                                  La version forte
                            We have secured the        Nous avons sécurisé
                            application                l'application
                                                           Nous utilisons le
                              We use SSL and               protocole SSL et la
                              crypto                       cryptographie
                              All content is               Tout le contenu est
                              validated and filtered       validé et filtré
                                                           Nous ne faisons
                              We don’t do any              aucune inclusion
                              dynamical include            dynamique
                              Our frameworks               Nos cadres
                              doesn’t allow this           d’applications sont
                                                           sécurisées


vendredi 13 novembre 2009                                                        10
Black box testing
                                   Test boîte noire
                            Easy to set up          Facile de mise en place

                            Take into account the   Prendre en compte le
                            context of the          contexte de la
                            application             demande

                            Often spectacular       Souvent
                                                    spectaculaires
                            Generally shallow
                                                    Généralement peu
                                                    profondes


vendredi 13 novembre 2009                                                     11
Black box testing
                                   Test boîte noire
                            Finding informations   Recherche
                            Look for               d’informations
                            vulnerabilities        Rechercher les
                               Automatic           vulnérabilités
                               scanners               Scanneurs
                               By hand                automatiques
                               Fuzzing                À la main
                               Scenarios              Fuzzing
                            Strikes                   Scénarios
                                                   Attaquer


vendredi 13 novembre 2009                                            12
Black box testing
                                   Test boîte noire
                            Usual directories               Répertoires habituels

                                includes, include, inc, com, classes, lib,
                                library
                                admin, adm, administrator, administrateur
                                tmp, TMP, ext, var
                                data, db, conf, config, configuration
                                uploads, install




vendredi 13 novembre 2009                                                           13
Black box testing
                                    Test boîte noire
                            Typical files              Fichiers typiques
                              .phps, .inc, .class        .phps, .inc, .class
                              xml, ini, yaml, cfg        xml, ini, yaml, cfg
                              .tar, .gz, .zip, .rar,     .tar, .gz, .zip, .rar,
                              .bz2                       .bz2
                              Apache Alias : /           Apache Alias : /
                              icons/                     icons/
                              robots.txt                 robots.txt


vendredi 13 novembre 2009                                                         14
Open Code audit
                                     Audit de code
                            Look into the PHP code   Rechercher dans le code
                                                     PHP
                            Search for hidden
                            problems                 Rechercher les
                                                     problèmes cachés
                            Usually less
                            spectacular than         Habituellement, moins
                            black box                spectaculaire que les
                                                     tests boîte noire
                            Easy to loose focus
                                                     Facile de perdre sa
                            Tempting to audit        concentration
                            everything
                                                     Tentant de tout vérifier


vendredi 13 novembre 2009                                                       15
Approch                            Approche
                            What to search for?   Que rechercher?
                            What are the entry    Quels sont les points
                            points?               d'e ntrée?
                            What are the exit     Quels sont les points de
                            points?               sortie?
                            Open-mindedness and   Ouverture d’esprit et
                            discovery             découverte
                            How can they be       Comment peuvent-ils
                            exploited             être exploités
                               Or protected ?         Ou protégés?



vendredi 13 novembre 2009                                                    16
Assessing the code
                                   Évaluer le code
                     One liners                           En une ligne
                        One line of code is                  Une ligne de code est
                        sufficiently to be bad               suffisamment pour être
                     Even though                             mauvais
                        you must follow the               Malgré tous
                        code                                 vous devez suivre le code
                           for ward (for input)                vers l’avant (entrées)
                           in reverse (for                     sens inverse (sorties)
                           output)
                            <?php
                            $action = $_POST['action'];
                            $query_string = "action=$action";
                            $link = "index.php?$query_string";
                            ?>
                            <a href="<?php echo $link; ?>"> Click Here </a>

vendredi 13 novembre 2009                                                                17
What to search for?
                                Que rechercher?
                            Injections          Injections

                              PHP                 PHP

                              SQL                 SQL

                              HTML/JavaScript     HTML/JavaScript

                              system              système




vendredi 13 novembre 2009                                           18
Tools                                    Outils
                            Your eyes              Vos yeux
                            Text editors           Éditeurs de texte
                            grep                   grep
                              Fast, available,       Rapide, disponible,
                              convenient             pratique
                            Tokenizer              Tokenizer
                              Semantic, accurate     Sémantique, précis


vendredi 13 novembre 2009                                                  19
Tokenizer
       <?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] => (
                                                                [1] => Array
               [4] => "                 [8] => "
                                                                    (
               [5] => Array             [9] => )
                                                                         [0] => PHP token
                   (                    [10] => ;
                                                                         [1] => PHP code
                        [0] => 314
                                                                         [2] => Script line
                        [1] => hello
                                                                    )
                        [2] => 1
                                                                [2] => "
                   )


vendredi 13 novembre 2009                                                                     20
PHP injections
                                      Injections PHP
                            dynamical inclusion      Inclusions dynamiques
                                                     d'inclusion
                              include, require and
                              *_once                   include, require and
                                                       *_once
                              back ticks (`)
                                                       `
                              eval
                                                       eval




vendredi 13 novembre 2009                                                     21
Input                     Entrées
                            HTML Forms:   Formulaire HTML:

                              form          form

                              input         input

                              $_GET         $_GET

                              $_POST        $_POST

                              $_REQUEST     $_REQUEST


vendredi 13 novembre 2009                                    22
Input                          Entrées
                            Databases:        Bases de données:

                              mysql_query()     mysql_query()

                              SELECT            SELECT

                            HTTP Headers:     Entête HTTP:

                              $_COOKIE          $_COOKIE

                              $_SERVER          $_SERVER


vendredi 13 novembre 2009                                         23
Input                                    Entrées
                            register_globals strikes   register_globals contre-
                            back                       attaque
                              Foreach and $$             Foreach and $$
                              extract                    extract
                              import_request_var         import_request_var
                              $GLOBALS                   $GLOBALS
                              parse_str                  parse_str
                              (ini_get                   (ini_get
                              (‘register_globals’))      (‘register_globals’))



vendredi 13 novembre 2009                                                         24
Output                       Sorties
                            Client:      Client:
                              echo         echo
                              print        print
                              <?=          <?=
                              die          die
                              print_r      print_r
                              var_dump     var_dump


vendredi 13 novembre 2009                               25
Output                                Sorties
                            Databases:             Bases de données:
                              mysql_query()          mysql_query()
                              mysqli_multi_query     mysqli_multi_query
                              update, delete,        update, delete,
                              insert                 insert
                            Headers                En-têtes
                              header()               header()


vendredi 13 novembre 2009                                                 26
Output                        Sorties
                            System:        Système:

                              exec()         exec()

                              passthru()     passthru()

                              system()       system()




vendredi 13 novembre 2009                                 27
Gotchas                                   Pièges
                            Trust of HTTP Headers:   Confiance des en-têtes
                                                     HTTP :
                              Referer
                                                       Referer
                            Trust of $_SERVER:       Confiance de
                              $_SERVER               $_SERVER :
                              ['PHP_SELF']             $_SERVER
                                                       ['PHP_SELF']
                            Trust of Client-Side
                            Restrictions:            Confiance des
                                                     restrictions clients:
                              maxlength                maxlength


vendredi 13 novembre 2009                                                     28
Questions?

                  info@ph-il.ca

                  http://www.ph-il.ca

                  http://www.ph-il.ca/en/
                  conferences

                  http://www.ph-il.ca/fr/
                  conferences



vendredi 13 novembre 2009                      29
vendredi 13 novembre 2009   30
vendredi 13 novembre 2009   31

Mais conteúdo relacionado

Mais de Philippe Gamache

OWASP Top 10 Proactive Controls 2016 - NorthEast PHP 2017
OWASP Top 10 Proactive Controls 2016 - NorthEast PHP 2017 OWASP Top 10 Proactive Controls 2016 - NorthEast PHP 2017
OWASP Top 10 Proactive Controls 2016 - NorthEast PHP 2017 Philippe Gamache
 
Browser Serving Your Web Application Security - NorthEast PHP 2017
Browser Serving Your Web Application Security - NorthEast PHP 2017Browser Serving Your Web Application Security - NorthEast PHP 2017
Browser Serving Your Web Application Security - NorthEast PHP 2017Philippe Gamache
 
OWASP Top 10 Proactive Controls 2016 - PHP Québec August 2017
OWASP Top 10 Proactive Controls 2016 - PHP Québec August 2017OWASP Top 10 Proactive Controls 2016 - PHP Québec August 2017
OWASP Top 10 Proactive Controls 2016 - PHP Québec August 2017Philippe Gamache
 
Kaizen ou l'amélioration continue
Kaizen ou l'amélioration continueKaizen ou l'amélioration continue
Kaizen ou l'amélioration continuePhilippe Gamache
 
Entreprise Security API - OWASP Montreal
Entreprise Security API - OWASP MontrealEntreprise Security API - OWASP Montreal
Entreprise Security API - OWASP MontrealPhilippe Gamache
 
Entreprise Security API - ConFoo 2011
Entreprise Security API - ConFoo 2011Entreprise Security API - ConFoo 2011
Entreprise Security API - ConFoo 2011Philippe Gamache
 
Strong authetification - ConFoo 2011
Strong authetification - ConFoo 2011Strong authetification - ConFoo 2011
Strong authetification - ConFoo 2011Philippe Gamache
 
Une application en une heure avec symfony - Collège de Mainsonneuve
Une application en une heure avec symfony - Collège de MainsonneuveUne application en une heure avec symfony - Collège de Mainsonneuve
Une application en une heure avec symfony - Collège de MainsonneuvePhilippe Gamache
 
Laboratoire sécurité : audit de code PHP - Conférence PHP Québec 2009
Laboratoire sécurité : audit de code PHP - Conférence PHP Québec 2009Laboratoire sécurité : audit de code PHP - Conférence PHP Québec 2009
Laboratoire sécurité : audit de code PHP - Conférence PHP Québec 2009Philippe Gamache
 
One hour application - PHP Quebec Conference 2009
One hour application - PHP Quebec Conference 2009One hour application - PHP Quebec Conference 2009
One hour application - PHP Quebec Conference 2009Philippe Gamache
 
Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Philippe Gamache
 

Mais de Philippe Gamache (11)

OWASP Top 10 Proactive Controls 2016 - NorthEast PHP 2017
OWASP Top 10 Proactive Controls 2016 - NorthEast PHP 2017 OWASP Top 10 Proactive Controls 2016 - NorthEast PHP 2017
OWASP Top 10 Proactive Controls 2016 - NorthEast PHP 2017
 
Browser Serving Your Web Application Security - NorthEast PHP 2017
Browser Serving Your Web Application Security - NorthEast PHP 2017Browser Serving Your Web Application Security - NorthEast PHP 2017
Browser Serving Your Web Application Security - NorthEast PHP 2017
 
OWASP Top 10 Proactive Controls 2016 - PHP Québec August 2017
OWASP Top 10 Proactive Controls 2016 - PHP Québec August 2017OWASP Top 10 Proactive Controls 2016 - PHP Québec August 2017
OWASP Top 10 Proactive Controls 2016 - PHP Québec August 2017
 
Kaizen ou l'amélioration continue
Kaizen ou l'amélioration continueKaizen ou l'amélioration continue
Kaizen ou l'amélioration continue
 
Entreprise Security API - OWASP Montreal
Entreprise Security API - OWASP MontrealEntreprise Security API - OWASP Montreal
Entreprise Security API - OWASP Montreal
 
Entreprise Security API - ConFoo 2011
Entreprise Security API - ConFoo 2011Entreprise Security API - ConFoo 2011
Entreprise Security API - ConFoo 2011
 
Strong authetification - ConFoo 2011
Strong authetification - ConFoo 2011Strong authetification - ConFoo 2011
Strong authetification - ConFoo 2011
 
Une application en une heure avec symfony - Collège de Mainsonneuve
Une application en une heure avec symfony - Collège de MainsonneuveUne application en une heure avec symfony - Collège de Mainsonneuve
Une application en une heure avec symfony - Collège de Mainsonneuve
 
Laboratoire sécurité : audit de code PHP - Conférence PHP Québec 2009
Laboratoire sécurité : audit de code PHP - Conférence PHP Québec 2009Laboratoire sécurité : audit de code PHP - Conférence PHP Québec 2009
Laboratoire sécurité : audit de code PHP - Conférence PHP Québec 2009
 
One hour application - PHP Quebec Conference 2009
One hour application - PHP Quebec Conference 2009One hour application - PHP Quebec Conference 2009
One hour application - PHP Quebec Conference 2009
 
Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009
 

Audit de code PHP - PHP Code Audit - HackFest.ca 2009

  • 1. Auditing PHP applications Audit des applications en PHP vendredi 13 novembre 2009 1
  • 2. Who speak? Qui parle? Philippe Gamache Philippe Gamache Parler Haut, Interagir Parler Haut, Interagir Librement : Librement : Web development, Développement Web, security audit, audit de sécurité, training formations info@ph-il.ca info@ph-il.ca @SecureSymfony @SecureSymfony vendredi 13 novembre 2009 2
  • 3. Security book Livre de sécurité New 2009 edition Comprehensive review of security system for MySQL, PHP, etc. Published in French Planning translation Nouvelle édition 2009 Bilan complet de la sécurité : système, MySQL, PHP, etc. Édité chez Eyrolles Dédicaces sur demande vendredi 13 novembre 2009 3
  • 4. Agenda Ordre du jour Workshop Présentation de presentation l’atelier Black box audit Audit boîte noire Source code audit Audit à code ouvert vendredi 13 novembre 2009 4
  • 5. Why? Pourquoi? Confidence does not La confiance n'e xclut pas exclude control™ le contrôle™ To validate external Pour valider un travail work externe Pour valider un travail To validate internal interne work Pour faire le point Round-up Pour avoir un regard For an external externe perspective Aussi souvent que As often as possible possible vendredi 13 novembre 2009 5
  • 6. Full audit synopsis Synopsis d’un audit Identification of the Identification des audit goals objectifs d'audit Interview with the Entretien avec les development teams équipes de développement Black box testing Test boîte noire Open Code audit Audit de code Report vendredi 13 novembre 2009 6
  • 7. Identification of the audit goals Identification des objectifs d’audit Audit scope Étendue de l'audit Security Sécurité Performance Performance Code quality Qualité du code vendredi 13 novembre 2009 7
  • 8. Inter view with the development teams Entretien avec les équipes de développement Check if development Vérifiez si l’équipe de teams knows what to développement sait ce secure qu’il faut sécurisé Have the design Demandez d’expliquer la explained first conception Have them explains their Demandez d’expliquer approach leur approche Check what they say Vérifiez ce qu'ils Check what they don’t disent say Vérifiez ce qu'ils ne disent pas vendredi 13 novembre 2009 8
  • 9. The shy version La version timide We know there are Nous savons qu’il y a security problems des problèmes de sécurité : but we have no time to secure them mais nous n'avons pas le temps de les this app has been sécuriser written years ago ce logiciel a été écrit we can’t keep up il y a quelques années with the threats nous ne pouvons pas suivre les menaces vendredi 13 novembre 2009 9
  • 10. The strong version La version forte We have secured the Nous avons sécurisé application l'application Nous utilisons le We use SSL and protocole SSL et la crypto cryptographie All content is Tout le contenu est validated and filtered validé et filtré Nous ne faisons We don’t do any aucune inclusion dynamical include dynamique Our frameworks Nos cadres doesn’t allow this d’applications sont sécurisées vendredi 13 novembre 2009 10
  • 11. Black box testing Test boîte noire Easy to set up Facile de mise en place Take into account the Prendre en compte le context of the contexte de la application demande Often spectacular Souvent spectaculaires Generally shallow Généralement peu profondes vendredi 13 novembre 2009 11
  • 12. Black box testing Test boîte noire Finding informations Recherche Look for d’informations vulnerabilities Rechercher les Automatic vulnérabilités scanners Scanneurs By hand automatiques Fuzzing À la main Scenarios Fuzzing Strikes Scénarios Attaquer vendredi 13 novembre 2009 12
  • 13. Black box testing Test boîte noire Usual directories Répertoires habituels includes, include, inc, com, classes, lib, library admin, adm, administrator, administrateur tmp, TMP, ext, var data, db, conf, config, configuration uploads, install vendredi 13 novembre 2009 13
  • 14. Black box testing Test boîte noire Typical files Fichiers typiques .phps, .inc, .class .phps, .inc, .class xml, ini, yaml, cfg xml, ini, yaml, cfg .tar, .gz, .zip, .rar, .tar, .gz, .zip, .rar, .bz2 .bz2 Apache Alias : / Apache Alias : / icons/ icons/ robots.txt robots.txt vendredi 13 novembre 2009 14
  • 15. Open Code audit Audit de code Look into the PHP code Rechercher dans le code PHP Search for hidden problems Rechercher les problèmes cachés Usually less spectacular than Habituellement, moins black box spectaculaire que les tests boîte noire Easy to loose focus Facile de perdre sa Tempting to audit concentration everything Tentant de tout vérifier vendredi 13 novembre 2009 15
  • 16. Approch Approche What to search for? Que rechercher? What are the entry Quels sont les points points? d'e ntrée? What are the exit Quels sont les points de points? sortie? Open-mindedness and Ouverture d’esprit et discovery découverte How can they be Comment peuvent-ils exploited être exploités Or protected ? Ou protégés? vendredi 13 novembre 2009 16
  • 17. Assessing the code Évaluer le code One liners En une ligne One line of code is Une ligne de code est sufficiently to be bad suffisamment pour être Even though mauvais you must follow the Malgré tous code vous devez suivre le code for ward (for input) vers l’avant (entrées) in reverse (for sens inverse (sorties) output) <?php $action = $_POST['action']; $query_string = "action=$action"; $link = "index.php?$query_string"; ?> <a href="<?php echo $link; ?>"> Click Here </a> vendredi 13 novembre 2009 17
  • 18. What to search for? Que rechercher? Injections Injections PHP PHP SQL SQL HTML/JavaScript HTML/JavaScript system système vendredi 13 novembre 2009 18
  • 19. Tools Outils Your eyes Vos yeux Text editors Éditeurs de texte grep grep Fast, available, Rapide, disponible, convenient pratique Tokenizer Tokenizer Semantic, accurate Sémantique, précis vendredi 13 novembre 2009 19
  • 20. Tokenizer <?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] => ( [1] => Array [4] => " [8] => " ( [5] => Array [9] => ) [0] => PHP token ( [10] => ; [1] => PHP code [0] => 314 [2] => Script line [1] => hello ) [2] => 1 [2] => " ) vendredi 13 novembre 2009 20
  • 21. PHP injections Injections PHP dynamical inclusion Inclusions dynamiques d'inclusion include, require and *_once include, require and *_once back ticks (`) ` eval eval vendredi 13 novembre 2009 21
  • 22. Input Entrées HTML Forms: Formulaire HTML: form form input input $_GET $_GET $_POST $_POST $_REQUEST $_REQUEST vendredi 13 novembre 2009 22
  • 23. Input Entrées Databases: Bases de données: mysql_query() mysql_query() SELECT SELECT HTTP Headers: Entête HTTP: $_COOKIE $_COOKIE $_SERVER $_SERVER vendredi 13 novembre 2009 23
  • 24. Input Entrées register_globals strikes register_globals contre- back attaque Foreach and $$ Foreach and $$ extract extract import_request_var import_request_var $GLOBALS $GLOBALS parse_str parse_str (ini_get (ini_get (‘register_globals’)) (‘register_globals’)) vendredi 13 novembre 2009 24
  • 25. Output Sorties Client: Client: echo echo print print <?= <?= die die print_r print_r var_dump var_dump vendredi 13 novembre 2009 25
  • 26. Output Sorties Databases: Bases de données: mysql_query() mysql_query() mysqli_multi_query mysqli_multi_query update, delete, update, delete, insert insert Headers En-têtes header() header() vendredi 13 novembre 2009 26
  • 27. Output Sorties System: Système: exec() exec() passthru() passthru() system() system() vendredi 13 novembre 2009 27
  • 28. Gotchas Pièges Trust of HTTP Headers: Confiance des en-têtes HTTP : Referer Referer Trust of $_SERVER: Confiance de $_SERVER $_SERVER : ['PHP_SELF'] $_SERVER ['PHP_SELF'] Trust of Client-Side Restrictions: Confiance des restrictions clients: maxlength maxlength vendredi 13 novembre 2009 28
  • 29. Questions? info@ph-il.ca http://www.ph-il.ca http://www.ph-il.ca/en/ conferences http://www.ph-il.ca/fr/ conferences vendredi 13 novembre 2009 29