Sécurité PHP 5 et MySQL

Book description

Présentation

Préface de Rasmus Lerdorf

Après avoir rappelé l'importance de principes fondamentaux tel celui de la défense en profondeur, cet ouvrage explique comment sécuriser une application professionnelle en PHP et MySQL à tous les niveaux, depuis la configuration du serveur jusqu'à la protection de la base de données MySQL, sans oublier toutes les vulnérabilités propres aux sites web dynamiques basés sur des langages de script.

Maîtriser la sécurité pour les applications en ligne

De nouvelles vulnérabilités apparaissent chaque jour dans les applications en ligne et les navigateurs. Pour mettre en place une politique de sécurité à la fois efficace et souple, sans être envahissante, il est essentiel de maîtriser les nombreux aspects qui entrent en jeu dans la sécurité en ligne : la nature du réseau, les clients HTML, les serveurs web, les plates-formes de développement, les bases de données... Autant de composants susceptibles d'être la cible d'une attaque spécifique à tout moment.

Une référence complète et systématique de la sécurité informatique

Écrit par deux experts ayant une pratique quotidienne de la sécurité sur la pile LAMP, ce livre recense toutes les vulnérabilités connues, les techniques pour s'en prémunir et leurs limitations. Très appliqué, il donne les clés pour se préparer à affronter un contexte complexe, où les performances, la valeur des données et la complexité des applications pimentent la vie des administrateurs responsables de la sécurité.

À qui s'adresse cet ouvrage ?

Aux concepteurs d'applications web, aux programmeurs PHP et MySQL, ainsi qu'aux administrateurs de bases de données en ligne et à leurs responsables de projets, qui doivent connaître les techniques de sécurisation d'applications en ligne.

Au sommaire
  • Risques liés aux applications web
    • Introduction à la sécurité des applications web
    • Vulnérabilités des pages web
    • Formulaires et téléchargement : valider les données
    • Témoins et sessions
  • Mesures de sécurité pour PHP
    • Installation et configuration de PHP
    • Intégrité des scripts PHP
  • Risques liés aux bases de données
    • Vulnérabilités des base de données
    • Mesures de sécurité pour MySQL
  • Mesures de sécurité pour les technologies connexes
    • Mesures de sécurité côté serveur
    • Techniques de sécurisation des applications web
    • Penser sécurité lors du développement
  • Annexes
    • A. Fonctions de sécurité et caractères spéciaux
    • B. Sauvegardes
    • C. Ressources web

Table of contents

  1. Couverture
  2. Page de titre
  3. Copyright
  4. Chez le même éditeur
  5. Préface
  6. Avant-propos
  7. Table des matières
  8. Partie 1: Risques liés aux applications web
    1. Chapitre 1: Introduction à la sécurité des applications web
      1. Les risques à prévenir
        1. L’abus de ressources
        2. La destruction de données
        3. La publication de données confidentielles
        4. Le détournement du site
        5. L’usurpation d’identité
        6. La mise à mal de l’image de marque du site
      2. Concepts de sécurité
        1. La sécurité dès la conception
        2. La sécurité dans le développement
        3. La sécurité de tous les jours
    2. Chapitre 2: Vulnérabilités des pages web
      1. Les injections HTML : XSS
      2. Prototype d’une injection HTML
      3. Impact d’une XSS sur un site
      4. Attaques par moteur de recherche
      5. Savoir protéger les pages web
        1. Neutralisation des caractères spéciaux
        2. Les balises <iframe> et <frame>
        3. Les balises javascript
        4. Le code css
        5. Les balises images
        6. Les url
        7. Les noms de domaine
        8. Ajax
      6. CSRF : les utilisateurs en otage
      7. Se défendre contre une CSRF
        1. POST au lieu de GET
        2. Confirmations
        3. Un jeton aléatoire
        4. Se méfier de tous
      8. Ces virus qui s’installent
    3. Chapitre 3: Formulaires et téléchargement : valider les données
      1. Les formulaires
        1. Quelles défenses pour les formulaires ?
        2. La suppression des défenses javascript
        3. Les enchaînements de pages web
        4. Construire une attaque HTTP
        5. Un formulaire unique
        6. La création de formulaires
        7. Maîtriser les erreurs de formulaire
      2. Techniques de validation des données
        1. Présence et absence de données
        2. Les types des données
        3. Les données complexes
        4. La taille des données
        5. La liste blanche
        6. La liste noire
        7. La liste grise
        8. Les expressions régulières
        9. Les formats standardisés
        10. Les filtres en PHP
        11. XML et services web
        12. Cadres d’application
      3. Le téléchargement de fichiers
        1. Comment les fichiers sont envoyés sur le serveur
        2. La taille des fichiers
        3. Les formats de fichiers
        4. Les noms de fichiers sont également vulnérables
        5. Savoir gérer les fichiers reçus
        6. Les types de fichiers
    4. Chapitre 4: Témoins et sessions
      1. Les témoins
        1. Présentation des témoins
        2. Défendre ses cookies
        3. Le cas des tableaux de témoins
        4. Un témoin comme défense
        5. Forcer le passage par un formulaire
      2. Les sessions
        1. Fonctionnement des sessions
        2. Les risques liés aux sessions
  9. Partie 2: Mesures de sécurité pour PHP
    1. Chapitre 5: Installation et configuration de PHP
      1. Installation PHP
        1. Types d’installation PHP
        2. Patch Suhoshin
      2. Configurations de sécurité PHP
        1. Directives de sécurité
        2. Consommation de ressources
        3. PHP exposé
        4. Configuration des sessions
    2. Chapitre 6: Intégrité des scripts PHP
      1. Protection physique
        1. Écrasement de fichiers
        2. Droits d’écriture
      2. Injection de code distant
      3. Exécution de code à la volée
        1. eval()
        2. assert()
        3. preg_replace()
        4. Téléchargement de fichiers
        5. Extensions de fichiers
        6. Attention au modérateur
      4. Fonctions à surveiller
        1. Code PHP
        2. Affichages d’information
        3. Interfaces externes
      5. Gestion des erreurs
        1. Exceptions ou messages traditionnels ?
        2. Affichage des erreurs par défaut
        3. Intercepter les erreurs
        4. Audit grâce au niveau d’erreur
  10. Partie 3: Risques liés aux bases de données
    1. Chapitre 7: Vulnérabilités des bases de données
      1. Vue d’ensemble des risques associés aux bases de données
        1. Un langage universel : SQL
        2. Risques dans les manipulations de données
        3. Stockage permanent
      2. Injections SQL
        1. Exemples d’injections SQL
        2. Comment bloquer les injections SQL
        3. Savoir limiter les dégâts
      3. Accès au serveur SQL
        1. Où ranger les accès au serveur SQL ?
        2. Mot de passe par défaut
        3. Accès anonymes au serveur SQL
        4. Protocoles de communication de MySQL
      4. Accès secondaires
        1. Sauvegardes
        2. Réplication
        3. Fichiers de log SQL
        4. Liste des processus
        5. Fichiers de données
        6. Communications
    2. Chapitre 8: Mesures de sécurité pour MySQL
      1. Base de données mysql
      2. Règles d’accès à MySQL
        1. Utilisateurs MySQL
        2. Tables de bases et d’hôtes
      3. Gestion des droits
        1. Droits sur les données
        2. Droits d’administration de MySQL
        3. Cas particuliers des droits
      4. Configuration MySQL
        1. Compilation
        2. Moteurs de tables
        3. Procédures stockées
        4. Interface modulaire de MySQL
        5. Directives de configuration
        6. Limiter les consommations
  11. Partie 4: Mesures de sécurité pour les technologies connexes
    1. Chapitre 9: Mesures de sécurité côté serveur
      1. Redirection et en-têtes HTTP
        1. Injection par retour à la ligne
        2. Redirections internes au site
      2. Courrier électronique
        1. Pourriel
        2. Injections dans le courrier électronique
        3. Défendre ses courriers électroniques
        4. Défenses fournies par PHP
      3. Système de fichiers
        1. Garder le système de fichiers voilé
        2. Protéger les fichiers sur le serveur
        3. Cas des bases SQLite
        4. Fichiers temporaires
      4. Système d’exploitation
        1. Risques du Shell
        2. Protéger les commandes système
      5. Structure d’une application web
        1. Extensions de fichiers
        2. Un dossier hors Web
      6. Accéder au réseau depuis PHP
        1. Appels séquentiels
        2. Appels récursifs
        3. Votre site masque une attaque
    2. Chapitre 10: Techniques de sécurisation des applications web
      1. Attaque par force brute
        1. Fonctionnement de l’attaque
        2. Attaque par dictionnaire
        3. Identifier l’attaquant
        4. Adresse IP
        5. Cookie
        6. Temporisation
      2. Hameçonnage
        1. Injection d’intermédiaire réseau
        2. Éducation des utilisateurs
        3. Sécurisation des connexions
        4. Authentification forte
      3. Dénis de service
        1. Quota de consommation
        2. Identification des clients
        3. Débrayer le système
      4. Gestion des mots de passe
        1. Signature
        2. Stockage des mots de passe
        3. Renforcement de la signature
        4. Vérification des mots de passe
        5. Création de mots de passe
        6. Mots de passe perdus
      5. Chiffrement et signatures
        1. Chiffrement
        2. Signature
        3. Chiffrement en PHP et MySQL
        4. Limitation du chiffrement
      6. Pots de miel et trappes
      7. Complication du code source
      8. CAPTCHA
        1. Limitations des CAPTCHA
        2. Modernisation du CAPTCHA
        3. Mise en place d’un CAPTCHA
      9. Identifiants internes
        1. Masquer les identifiants internes
        2. …même aux super-utilisateurs
        3. Identifiants prédictibles
      10. Attaques par timing
        1. Du bruit sur la ligne
        2. Impact du traitement
        3. Sécurité par le ralentissement
    3. Chapitre 11: Penser sécurité lors du développement
      1. Référentiel de sécurité
        1. Définition
        2. Structure du document
      2. Les mantras PHP
      3. Les audits
        1. Les audits croisés
  12. Partie 5: Annexes
    1. Annexe A: Fonctions de sécurité et caractères spéciaux
      1. Fonctions de protection de PHP
        1. Caractères spéciaux
        2. Fonctions citées dans le livre
    2. Annexe B: Sauvegardes
      1. Sauvegarde de l’application
        1. Automatiser la remise en état
        2. Automatiser la surveillance du code
      2. Sauvegarde des données
        1. Sécurité du support de stockage
        2. Restauration des données
    3. Annexe C: Ressources web
      1. Outils utiles
        1. PHP et MySQL
        2. Outils de filtrages
        3. Robots de tests
        4. Outils de tests
        5. Outils de recherche d’informations
        6. Anti-sèches
        7. Outils d’analyse de code
        8. Applications web insécurisées pour apprendre
      2. Actualités
        1. Sécurité PHP
        2. Sécurité MySQL
        3. Sécurité des applications web
      3. Sites cités
  13. Index

Product information

  • Title: Sécurité PHP 5 et MySQL
  • Author(s): Damien Seguy, Philippe Gamache
  • Release date: February 2012
  • Publisher(s): Eyrolles
  • ISBN: 9782212133394