190 likes | 354 Views
Un peu de sécurité. Modal Web. Un peu de vocabulaire…. Injection SQL : : consiste à exploiter une faille d’un site afin d’y « injecter » ses propres requêtes SQL XSS (Cross Site Scripting) : consiste à exploiter une faille d’un site afin d’y déposer son propre code (JavaScript par exemple)
E N D
Un peu de sécurité Modal Web Modal Web - Baptiste DESPREZ
Modal Web - Baptiste DESPREZ Un peu de vocabulaire… • Injection SQL : : consiste à exploiter une faille d’un site afin d’y « injecter » ses propres requêtes SQL • XSS (Cross Site Scripting) : consiste à exploiter une faille d’un site afin d’y déposer son propre code (JavaScript par exemple) • CSRF (Cross Site RequestForgery) : consiste à se servir d’un utilisateur pour effectuer diverses actions à son insu
Modal Web - Baptiste DESPREZ Un peu de vocabulaire… • Usurpation de session : consiste à récupérer la session d’un utilisateur afin d’accéder à ses données • Captcha : petite image bizarroïde que seul un humain est capable de lire (et encore, pas toujours). • Bot : Robot informatique
Modal Web - Baptiste DESPREZ … beaucoup de pratique ! • Injection SQL • Au mieux, le pirate accède au contenu de votre base de données (courriels, données personnelles ou financières, …) • Au pire, votre base de données est détruite
Modal Web - Baptiste DESPREZ Injection SQL
Modal Web - Baptiste DESPREZ Injection SQL • Comment se protéger ? • Avec PDO : $sth = $dbh -> prepare() puis $sth->execute(array($login, $password)) • Sinon : mysql_real_escape_string($login) • Restreindre les droits des utilisateurs Mysql (par exemple, créer un utilisateur Mysql lambda pour votre site) • N’affichez pas vos erreurs SQL !
Modal Web - Baptiste DESPREZ XSS • 21/10/2010 : Twitter est victime d’une faille XSS. Résultat : des utilisateurs spammés, et les serveurs de Twitter à genou (et tout ça avec moins de 140 caractères !!!) • 09/01/2012 : Une faille XSS vient d’être découverte sur le site de La Banque Postale
Modal Web - Baptiste DESPREZ XSS • Comment se protéger ? • A chaque fois que vous devez afficher un contenu pouvant être modifié par un utilisateur ($_GET, $_POST, …), utilisez htmlspecialchars($string) • Empêchez l’utilisateur d’insérer des caractères spéciaux : les signes &,$,*, etc. n’ont rien à faire dans un login par exemple • Vérifiez le type (entier -> ctype_digit(), etc.)
Modal Web - Baptiste DESPREZ CSRF… • … ou comment profiter des droits d’un utilisateur sans que ce dernier ne s’en rende compte
Modal Web - Baptiste DESPREZ CSRF • Comment se protéger ? • Il n’y a pas de solution miracle mais des pistes pour limiter la faille : http://www.serversidemagazine.com/php/php-security-measures-against-csrf-attacks/ • Comment amener les utilisateurs vers mon site contrefait ? • Google Trends !
Modal Web - Baptiste DESPREZ Et si on combinait tout ? • Démonstration !
Modal Web - Baptiste DESPREZ Usurpation de session • La session (démarrée avec session_start()) est en fait une chaîne alphanumérique partagée entre votre navigateur et le serveur. • Il est possible de la prédire (32 caractères quand même), de l’intercepter (via une faille XSS par exemple) ou de la fixer.
Modal Web - Baptiste DESPREZ Usurpation de session • Comment 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; } ?>
Modal Web - Baptiste DESPREZ Bot • La plupart des attaques sur le net sont effectuées par des Bots plus ou moins intelligents
Modal Web - Baptiste DESPREZ Bot • Comment se protéger ? • Protéger les formulaires publics par des CAPTCHA (http://www.google.com/recaptcha) • MAIS… • Les OCR se perfectionnent • Une base de données de 1000 captcha s’achète 1$ • Cf. « Comment amener un utilisateur vers mon site contrefait »
Modal Web - Baptiste DESPREZ Captcha !
Modal Web - Baptiste DESPREZ Mais aussi… • Attaques type DoS ou « Déni de service » • Manipulation de cookies • Modification du code avec FireBug • Google Hacking • Attention aux include / require! • Man in the Middle • Payant ne veut pas dire plus sécurisé ! • …
Modal Web - Baptiste DESPREZ Conclusion • Ne faites pas confiance aux utilisateurs ! • Contrôler tout ce qu’il peuvent modifier ou afficher ($_GET, $_POST, …) • Protégez vos formulaires (captcha, modération, …) • Protégez l’authentification de votre site avec HTTPS (si possible)