SECURISER VOTRE PROJET     Christophe Villeneuve        28 février 2013
A labordage... ✔     Le fromage, la souris et... ✔     Les techniques ✔     Du PHP ✔     Du Java ✔     Du Web ✔     Du Pro...
RéflexionLe fromage,             La souris,                                 Et...    nAcademy – 28 Février 2013
Pourquoi ?         Les hackers sont astucieux    nAcademy – 28 Février 2013
nAcademy – 28 Février 2013
Notions basics ✔     Rappel des risques (W3C, Spam...) ✔     Front-end sur les entrées (formulaire, url...) ✔     Back-end...
Les Vulnérabilités reconnues ✔     Insuffisance des tests de sécurité ✔     Configuration par défaut ✔     Pas de cryptage...
TOP 10 OWASP (Web)     2007                                                 2010                                          ...
nAcademy – 28 Février 2013
Injections applicatives & webs                                           include ($_GET[x]);  PHP                         ...
Injections applicatives & webs                                  WHERE login=.$_GET[x] ➢  PHP                              ...
Injections applicatives & webs                                  echo $_GET[x]; ➢  PHP                             echo $_G...
Injections applicatives & webs                                  <input type="text" size=20 name="name"> ➢  PHP            ...
Injections applicatives & webs                                  <% String pageToInclude = ➢  PHP                          ...
Injections applicatives & webs                                   $sql = "SELECT **FROM users WHERE ➢  PHP                 ...
Injections applicatives & webs                                   $qid = $sql->where("id =".$_GET[id].""); ➢  PHP          ...
Au niveau projet                                 //    nAcademy – 28 Février 2013
STEGANOGRAPHIELart de cacher les             Q   Trouver la courbe lachoses à la vue de tous             plus longue dans ...
Code sécurisé    3 points à connaître✔   Défense en profondeur✔   Limité les accès de données à lextérieur✔   Maximiser le...
Mais... Quoi affiché !!!    Un minimum dinformations lors dun crash✔    Erreur 404                           ✔   Erreur 50...
Minimum de sécurité... 1 / 3    Le contrôle : Authentification✔    Mettre une bonne stratégie de mot de passe (Jpassword)✔...
Minimum de sécurité... 2 / 3    Le contrôle des accès✔    Gestion des sessions aléatoire                                  ...
Minimum de sécurité... 3 / 3    Logique de code... Pas sûr✔    Contrôler le cache✔    Penser à vider le cache             ...
nAcademy – 28 Février 2013
Scanneurs automatiques✔    Acunetix Web Vulnerability Scanner           http://www.acunetix.com/vulnerability-scanner/✔   ...
Comment se protéger ✔     Vega (http://subgraph.com) ✔     PHP Lint (http://www.icosaedro.it/phplint/)      nAcademy – 28 ...
OWASP (ESAPI)            EASPI Homepage : https://www.owasp.org/index.php/ESAPI   nAcademy – 28 Février 2013
Questions ?    nAcademy – 28 Février 2013
Prochain SlideShare
Chargement dans…5
×

Sécuriser votre projet

1 221 vues

Publié le

Présentation à la nAcademy (Février 2013) : Sécuriser votre projet par Christophe Villeneuve

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 221
Sur SlideShare
0
Issues des intégrations
0
Intégrations
31
Actions
Partages
0
Téléchargements
25
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Sécuriser votre projet

  1. 1. SECURISER VOTRE PROJET Christophe Villeneuve 28 février 2013
  2. 2. A labordage... ✔ Le fromage, la souris et... ✔ Les techniques ✔ Du PHP ✔ Du Java ✔ Du Web ✔ Du Projet ✔ et... nAcademy – 28 Février 2013
  3. 3. RéflexionLe fromage, La souris, Et... nAcademy – 28 Février 2013
  4. 4. Pourquoi ? Les hackers sont astucieux nAcademy – 28 Février 2013
  5. 5. nAcademy – 28 Février 2013
  6. 6. Notions basics ✔ Rappel des risques (W3C, Spam...) ✔ Front-end sur les entrées (formulaire, url...) ✔ Back-end avec un Framework ✔ La base de données ✔ Tester votre code ✔ Méthodologie nAcademy – 28 Février 2013
  7. 7. Les Vulnérabilités reconnues ✔ Insuffisance des tests de sécurité ✔ Configuration par défaut ✔ Pas de cryptage des données sensibles ✔ Pas de mises à jour du système ✔ La sécurité apparaît lors des catastrophes ✔ Surveillance inefficace ✔ Contrôle insuffisant de laccès par des tiers nAcademy – 28 Février 2013
  8. 8. TOP 10 OWASP (Web) 2007 2010 2013 Version RC1✔ Cross Site Scripting (XSS) ✔ Failles dinjection ✔ Failles dinjection✔ Failles dinjection ✔ Cross-Site Scripting (XSS) ✔ Violation dauthentification et de Session✔ Exécution de Fichier Malicieux ✔ Violation dauthentification et de Session ✔ Cross-Site Scripting (XSS)✔ Référence directe non Sécurisée à un ✔ Référence directe non sécurisée à un ✔ Référence directe non sécurisée à un Objet objet objet ✔ Falsification de requête (CSRF) ✔ Mauvaise configuration de sécurité✔ Falsification de requête (CSRF)✔ Fuite dinformation et Traitement derreur ✔ N Mauvaise configuration de sécurité ✔ Z Données sensibles accessible Incorrect ✔ Stockage cryptographique non sécurisé ✔ Z Manque de sécurité au niveau des rôles✔ Violation dauthentification et de Session ✔ Manque de restriction daccès URL ✔ Falsification de requête (CSRF)✔ Stockage Cryptographique non Sécurisé ✔ Communications non sécurisées ✔ N Utilisation de composants connus vulnérables✔ Communications non sécurisées ✔ N Redirections non validées ✔ Redirections non validées✔ Manque de Restriction d’Accès URL ✔ Fuite dinformation et Traitement derreur X Incorrect X ✔ Communications non sécurisées ✔ X Exécution de Fichier Malicieux Hausse Baisse Identique nAcademy – 28 Février 2013 N Nouveau Z Renommé X Sortie
  9. 9. nAcademy – 28 Février 2013
  10. 10. Injections applicatives & webs include ($_GET[x]); PHP include ($_GET[x]); ✔ ➢ ✔ grep -ri include **> incl.php.txt grep -ri include > incl.php.txt ✔ Filtrer avec ✔ $ ✔ . et .. ✔ Exclure les valeurs filtrés nAcademy – 28 Février 2013
  11. 11. Injections applicatives & webs WHERE login=.$_GET[x] ➢ PHP WHERE login=.$_GET[x] ➢ SQL ✔ mysql_escape_string ✔ addslashes ✔ pdo_quote "WHERE login= ".$_GET[x]."" nAcademy – 28 Février 2013
  12. 12. Injections applicatives & webs echo $_GET[x]; ➢ PHP echo $_GET[x]; <?php ➢ SQL echo htmlentities($_GET[x]) ; ?> ➢ XSS nAcademy – 28 Février 2013
  13. 13. Injections applicatives & webs <input type="text" size=20 name="name"> ➢ PHP <input type="text" size=20 name="name"> String ldapSearchQuery = "(cn=" + String ldapSearchQuery = "(cn=" + ➢ SQL $username + ")"; $username + ")"; System.out.println(ldapSearchQuery); System.out.println(ldapSearchQuery); ➢ XSS ✔ Pas de GetParameter ➢ LDAP ✔ Pas de requête paramétré ✔ Valider les données avant de générer une requête de recherche nAcademy – 28 Février 2013
  14. 14. Injections applicatives & webs <% String pageToInclude = ➢ PHP <% String pageToInclude = getDataFromUntrustedSource(); %> getDataFromUntrustedSource(); %> <Jsp: include = la page "<% =% <Jsp: include = la page "<% =% ➢ SQL pageToInclude>" /> pageToInclude>" /> ➢ XSS ✔ Filtrer avec ➢ LDAP ✔ $ ✔ . et .. ➢ JAVA ✔ Exclure les valeurs filtrés nAcademy – 28 Février 2013
  15. 15. Injections applicatives & webs $sql = "SELECT **FROM users WHERE ➢ PHP $sql = "SELECT FROM users WHERE name = ?"; name = ?"; $qid= $cnx->executeQuery($sql, $qid= $cnx->executeQuery($sql, ➢ SQL array($_GET[rname])); array($_GET[rname])); ➢ XSS $sql = " SELECT * FROM users ➢ LDAP WHERE name = " . $cnx->quote( ➢ JAVA $_GET[username], PDO::PARAM_STR); ➢ ORM = Doctrine nAcademy – 28 Février 2013
  16. 16. Injections applicatives & webs $qid = $sql->where("id =".$_GET[id].""); ➢ PHP $qid = $sql->where("id =".$_GET[id].""); $where = ➢ SQL $this->getAdapter()->quoteInto("id =?, $_GET[id]); ➢ XSS ➢ LDAP ➢ JAVA ➢ ORM = Doctrine ➢ Framework = Zend nAcademy – 28 Février 2013
  17. 17. Au niveau projet // nAcademy – 28 Février 2013
  18. 18. STEGANOGRAPHIELart de cacher les Q Trouver la courbe lachoses à la vue de tous plus longue dans limage nAcademy – 28 Février 2013
  19. 19. Code sécurisé 3 points à connaître✔ Défense en profondeur✔ Limité les accès de données à lextérieur✔ Maximiser les droits nAcademy – 28 Février 2013
  20. 20. Mais... Quoi affiché !!! Un minimum dinformations lors dun crash✔ Erreur 404 ✔ Erreur 500 ✔ Fichier Log nAcademy – 28 Février 2013
  21. 21. Minimum de sécurité... 1 / 3 Le contrôle : Authentification✔ Mettre une bonne stratégie de mot de passe (Jpassword)✔ Ne pas le stocker en clair✔ Pensez au captcha ou au jeton✔ Force le mode SSL / TLS✔ Limité le délais pour modifier son profil utilisateur✔ Identification session✔ Authentification coté serveur✔ Pas dauthentification en JS / Ajax nAcademy – 28 Février 2013
  22. 22. Minimum de sécurité... 2 / 3 Le contrôle des accès✔ Gestion des sessions aléatoire (JSESSIONID / $_SESSION)✔ Minimum dinformations visibles (ex URL)✔ Eviter les données sensibles sur le réseau (VS scanner de réseau)✔ Cookie sécurisé (onglets des navigateurs)✔ Limiter la fin de session pour les projets sensibles (ex 5 minutes)✔ Bloquer les doubles logins / accès✔ 1 Authentification = 1 utilisateur = 1 connexion BDD nAcademy – 28 Février 2013
  23. 23. Minimum de sécurité... 3 / 3 Logique de code... Pas sûr✔ Contrôler le cache✔ Penser à vider le cache ✔ Fermer fenêtre ✔ Fermer Navigateur ✔ Fermer Application nAcademy – 28 Février 2013
  24. 24. nAcademy – 28 Février 2013
  25. 25. Scanneurs automatiques✔ Acunetix Web Vulnerability Scanner http://www.acunetix.com/vulnerability-scanner/✔ BeEF http://www.bindshell.net/tools/beef/✔ Burp Suite http://portswigger.net/suite/✔ Metasploit http://www.metasploit.com/ nAcademy – 28 Février 2013
  26. 26. Comment se protéger ✔ Vega (http://subgraph.com) ✔ PHP Lint (http://www.icosaedro.it/phplint/) nAcademy – 28 Février 2013
  27. 27. OWASP (ESAPI) EASPI Homepage : https://www.owasp.org/index.php/ESAPI nAcademy – 28 Février 2013
  28. 28. Questions ? nAcademy – 28 Février 2013

×