Formation : Applications PHP sécurité
Se former avec
ORSYS
- Renseignements :
- Durée : 3 Jours
- Type : En centre (inter)
- Diplômant : Non
-
Prix H.T. € :1490.00
- Objectifs :
- Les applications PHP font maintenant partie intégrante du SI d'entreprise. Il est donc important de sécuriser ces applications ainsi que les plateformes qui les hébergent. Durant ce stage, résolument pratique, vous découvrirez les risques majeurs encourus et les techniques de protection en termes de paramétrage, de configuration et de développement des plateformes LAMP (Linux, Apache, MySQL, PHP).
- Public visé :
-
Responsable développement, ingénieur développement, architecte développement, chef de projet Web, développeur Internet et Webmaster.
- Pré-requis :
- Connaissance de base Serveur, PHP, MySQL, HTML, JavaScript.
- Introduction
- Présentation du contexte en quelques chiffres
- Evolutions des attaques. Hier et aujourd'hui. Attaques applicatives en hausse. Ajax et Web 2.0.
- Attaques les plus courantes : quelques exemples. Inclusion et exécution de scripts distants. Exécution de commande. Injection SQL. Cross Site Scriptin. Cross Site Request Forgery.
Constituants LAMP et informations sensibles
Linux
- Vulnérabilité du système d'exploitation, importance des mises à jour.
- Intérêt des cages (chroot).
Apache, fichier de configuration et modules
- Configuration Apache. Signature Apache : directive ServerToken. Extension des fichiers : directive addType. Dissimulations des extensions : directive ForceType. Rendre non accessibles les fichiers non php contenant des informations sensibles. Redirection SSL sur les pages qui transmettent des informations sensibles. Utilisation des variables d'environnement Apache pour passer des données directement à PHP.
- Modules Apache. mod_security : module de filtrage indépendant à PHP. mod_rewrite : une boîte à outils très utile.
- Configuration PHP. php.ini et ses directives. expose_php, error_reporting, display_errors, log_errors, error_log. max_upload_size, max_post_size, max_execution_time, memory_limit. disable_functions, enable_dl. magic_quotes_gpc. Cas particulier : allow_url_fopen , allow_url_open_include.
- .htaccess. Utilité de auto_prepend_file.
- Modules complémentaires. Hardened-PHP. Suhosin.
- MySQL, fichier de configuration et paramétrage. Configuration. Adresse IP d'écoute. Socket file. Paramétrage. Bien penser les ''droits'' utilisateur MySQL.
- Architecture d'une application PHP d'un point de vue sécurité. Déplacement des répertoires sensibles (BackOffice, accès administrateur...). Protéger les fichiers directement lisibles sans interprétation (config.inc, db.txt...). Au-dessus du DocumentRoot, (presque) tout est permis.
Code PHP : attaques et contre-mesures
Filtrage des données entrantes
- Méthode dite ''de répartition'' (un seul fichier php qui inclut d'autres fichiers).
- Méthode dite ''d'inclusion'' (un seul fichier php chargé de contrôler les variables).
- Instruction de contrôle (expressions régulières, isint, isfloat, isstring ...).
- Encodage (htmlentities, mysql_escape_string, addslashes) (attention à strip_tags).
- Copie des tableaux super globaux après filtrage.
- L'extension Filter de php 5.2.
Filtrage des données sortantes
- Eviter l'envoi de contenu en format HTML/JS de provenance extérieure ou utilisateur.
- Empêcher le Cross Site Scripting (XSS) : htmlspecialchars, strip_tags(), et utf8_decode().
Contrôler qui fait quoi
- Importance des sessions. Contrôle du Referer. Stockage du UserAgent pour éviter le vol de session. DB plutôt que fichier pour les sessions.
Sécurité Ajax et Web 2.0 : mythes et réalités
- Nouvelles techniques = nouvelles failles ? Certaines parties des applications Web sont déportées côté client. ''Application Javascript''. Les mêmes vulnérabilités qu'une application Web classique et potentiellement plus nombreuses. Les nouvelles attaques côté client.
- Session, authentification. Côté serveur, limiter l'émission de contenu à la requête cliente authentifiée.
- Protéger son propre code JavaScript. Prévenir les attaques type XSS. Prototype Hijacking. Intérêt de l'obfuscation.
Travaux pratiques
Compliquer volontairement un code JavaScript. Un sniffer JavaScript, démonstration et contre-mesure. Obfusquer un code JavaScript avec « packer ».
Audit de sécurité
- Fixer le périmètre de l'audit. Du système d'exploitation au code JavaScript côté client. Quel niveau de sécurité pour quelle application ? Configuration PHP et assimilé.
- Le principal : traitement des données entrantes/sortantes. Les données entrantes : sont-elles bien filtrées ? Sont-elles bien échappées ? Les données brutes sont-elles bien distinguées des données filtrées ? Les données sortantes : sont-elles bien échappées ?
- Les outils d'analyse de code. Avantages et limites. Outils : RATS. Spike PHP Security Audit Tool.
Travaux pratiques
Utilisations de RATS. Exemple sur l'annuaire avant/après le TP du chapitre « Code PHP : attaques et contre-mesures ».
Conclusion
- Budget sécurité dans un projet Web. Augmentation du coût et des délais initiaux. Précision du cahier des charges. Ressources humaines. Retour sur investissement.
- Plateforme LAMP et les autres plateformes. Différentes plateformes et langages, les vulnérabilités sont les mêmes. Ajax ajoute des contraintes supplémentaires.
- Solutions génériques. Les Reverse Proxy filtrants. Autres (binarysec).