PHP Avancé. Olivier Martineau SpreadButton Alexandre Pauchet INSA Rouen Normandie

Documents pareils
Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Par l'exemple de. Laurent Destailleur

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Devenez un véritable développeur web en 3 mois!

les techniques d'extraction, les formulaires et intégration dans un site WEB

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

SYSTÈMES D INFORMATIONS

GUIDE D INSTALLATION DE L APPLICATION GECOL SUR

Proxies,, Caches & CDNs

25 mars. Tutoriel sur Laravel. Préparé par : Lydiane Beaulne-Bélisle. Ceci est un tutorial qui montre comment débuter avec le Framework PHP Laravel.

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Tech-Evenings Sécurité des applications Web Sébastien LEBRETON

Hébergement de site web Damien Nouvel

Pratique et administration des systèmes

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Aide-mémoire minimal pour la sécurité en PHP François Gannaz

«Cachez-moi cette page!»

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Nouveautés de Drupal 8. Léon

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

COMPÉTENCES TECHNIQUES

Gestion centralisée d un réseau de sites discrets. Nicolas JEAN

(structure des entêtes)

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Dans l'épisode précédent

Vulnérabilités et sécurisation des applications Web

Internet. Web Sécurité Optimisation

Programmation Web. Madalina Croitoru IUT Montpellier

PHP. Performances. Audit et optimisation LAMP. Julien Pauli. Cyril Pierre de Geyer. Guillaume Plessis. Préface d Armel Fauveau

Sécuriser les applications web

Sommaire. 1 Introduction Présentation du logiciel de commerce électronique 23

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

CREATION WEB DYNAMIQUE

Documentation technique

OWASP Open Web Application Security Project. Jean-Marc Robert Génie logiciel et des TI

Module BD et sites WEB

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Web statique : client-serveur. PHP/MySQL: Sites dynamiques Formulaires et bases de données. Discussion HTTP. Caractéristiques du HTTP

Notre processus d embauche

Aide à la Détection de Faiblesses d un site Web Mandataire inverse, Modsecurity

Web Tier : déploiement de servlets

Technologies Web avancées. ING1 SIGL Technologies Web avancées

Stockage du fichier dans une table mysql:

Développement des Systèmes d Information

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

CREATION d UN SITE WEB (INTRODUCTION)

Application Web et J2EE

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Rapport de certification ANSSI-CSPN-2010/05. ModSecurity v2.5.12

PHP et LeMonde.fr : passé, présent et avenir Olivier Grange-Labat <grange@lemonde.fr>

Drupal, pour quel usage? Comment se positionne Drupal? Les fonctionnalités de Drupal et de son écosystème. L'architecture technique et logicielle Le

Sécurité des applications web. Daniel Boteanu

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É PHP. 27 ans - 6 ans d'expérience

Mise à jour : Octobre 2011

Performance, rendement Vs Evolutivité

Applications et Services WEB: Architecture REST

OpenPaaS Le réseau social d'entreprise

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

Audit Sécurité vendredi 13 novembre

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Programme ASI Développeur

Serveurs de noms Protocoles HTTP et FTP

SPIP. Gestion de la performance dans SPIP. Préoccupa)on historique

PHP 5. La base de données MySql. A. Belaïd 1

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Outils de traitements de logs Apache

Formation en Logiciels Libres. Fiche d inscription

HTTP HTTP. IUT1 dpt SRC L Isle d Abeau Jean-françois Berdjugin. Introduction et architecture Messages Authentification Conclusion

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

RESUME DE CARRIERE. Alice JULIENNE. 23 ans Nationalité Française Développeur Web Front-End. Compétences

Démonstration de la mise en cache via HTML 5 sur iphone

Application web de gestion de comptes en banques

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Mercredi 15 Janvier 2014

1 ère Université WEB. Courbevoie Samedi 21 octobre Votre site interactif sur internet.

Introduction à HTTP. Chapitre HTTP 0.9

Mise en place d un serveur Proxy sous Ubuntu / Debian

PHP et le Cloud. All rights reserved. Zend Technologies, Inc.

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Mise en œuvre des serveurs d application

Maxpho Web Services. Maxpho Cloud Services. Date: 20 Septembre 2013 Version: 1.2 Auteur: Maxpho Ltd

Applications orientées données

Francis Mignault. ! Coauteur : Expert Oracle Application Express. ! Membre du Oracle APEX Advisory Board apex.oracle.com/vote

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

10. Base de données et Web. OlivierCuré

Fiche Technique Windows Azure

Formation : WEbMaster

Transcription:

PHP Avancé Olivier Martineau SpreadButton olivier@sb.am Alexandre Pauchet INSA Rouen Normandie alexandre.pauchet@insa-rouen.fr

Framework? «Un cadre» Couche supplémentaire à PHP Arrêter de re-inventer la roue

Les plus connus CodeIngiter CakePHP Symfony Zend Framework Jelix Laravel

Services apportés Internationalisation Template Routage ORM Cache Profiling Gestion des erreurs Sécurité

Internationalisation Pas de texte dans le code Gestion des langues par le framework Fonction ( Translate me ) tout en UTF-8 + formatage dates, devises, nombres...

Template Les vues : génération du HTML Modèle HTML sans code métier Syntaxe courte PHP <?=$var?> équivalent à <?php echo $var;?> <html><body> Hello <?=$tpl >nom?> </body></html> Librairies existantes : Twig, Smarty, Mustache, RAIN Tpl

Template Organisation de son code HTML pour une réutilisation <html> <head> <?php include( _head.html );?> </head> <body> <?php include( _top.html );?> Contenu de la page <?php include( _footer.html );?> </body> </html>

Exemple template template.php template.html.php

Routage d URL Le code PHP n est plus directement lié aux URL Sans : http://monsite.com/page.php?type=categorie&id=1 Avec : http://monsite.com/categorie/1 Tout est géré par un seul index.php

Fichier.htaccess Configuration du serveur web Apache Local au dossier et sous-dossiers Usage : redirections (temporaire, permanente ) contrôle d accès re-écritures d URL

Ré-écriture d URL.htaccess RewriteEngine On # RewriteBase /URL_JUSQUA_L_URL_DU_DOSSIER_DU_HTACCESS RewriteBase /~bleponge/tw RewriteCond %{REQUEST_FILENAME}! f RewriteCond %{REQUEST_FILENAME}! d RewriteRule (.*) index.php?arg=$1 [QSA,L] 1. Activation du moteur de ré-écriture d URL 2. Configuration de l URL correspondant au répertoire qui contient le.htaccess (obligatoire pour les dossiers /~homedir) 3. Exclusion des URL correspondante à un fichier 4. Exclusion des URL correspondante à un dossier 5. Transformation de toutes les URL en paramètre de index.php

Routage d URL Si l URL demandée ne correspond pas à un fichier, index.php est appelé avec l URL passé en parametre $_GET[ arg ] Gestion manuelle de la page d erreur 404 header("http/1.0 404 Not Found");

Exemple routage d URL index.php route404.php

Sécurité Authentification / Autorisation Protections contre les injections SQL, XSS (Cross-site scripting), CSRF (Cross-site request forgery)...

Espace de nommage Garantie de l'interopérabilité Nouveauté PHP 5.3 namespace ASI (définition d un espace de nommage) use ASI (cration d alias) new ASI\maClasse (pour une classe, interface, etc.) Attention, dans votre namespace appeler les classes native avec un \, par exemple lors d un throw new \Exception(«erreur»);

Sécurité Never Trust Input! Une fonction pour le filtrage ou la validation. $var = filter_var($var, FILTER); FILTER_VALIDATE_EMAIL Valide une adresse email FILTER_SANITIZE_EMAIL Nettoie une adresse email FILTER_VALIDATE_INT Valide un entier FILTER_SANITIZE_STRING Nettoie un chaine de tag FILTER_VALIDATE_URL Valider une URL FILTER_VALIDATE_URL Nettoie une URL FILTER_VALIDATE_FLOAT Valide un nombre décimal FILTER_VALIDATE_FLOAT Nettoie un nombre décimal FILTER_SANITIZE_SPECIALTransforme en HTML les _CHARS «<>&

Sécurité Requêtes SQL «préparées» $db = new \PDO( ); $prep = $db >prepare( INSERT INTO matable (champs1, champs2 ) VALUE ( :valeur1, :valeur2); $prep >execute(array( :valeur1 => Pierre, :valeur2 => Dubois ); Évite tous problèmes d injection SQL.

Abstraction BD Indépendance par rapport au serveur de BD Structure : Classe objet métier Classe de gestion de la persistance pour chaque classe métier Classe d abstraction base de données

classe DB Fichier : abstraction.db.php

classe DB Fichier : abstraction.db.php

Utilisation classe DB Fichier : abstraction.demo.php

Classe de persistance Objet (ORM) Interface base de données <->objet Hérite de votre classe d abstraction db Retour des objets, ou des tableaux d objets Gestion CRUD (create, read, update et delete) Gestion des listes Gestion de l initialisation (create table)

Exemple classe de persistance objet Fichier : monobjet.db.php

Exemple classe de persistance objet Fichier : monobjet.db.php

Exemple classe de persistance objet Fichier : monobjet.db.php

Organisation du code Lisibilité du MVC Facilité de gestion et de mise à jour index.php conf.php Charge le framework, et gère le routage Paramètres spécifiques à l installation (db ) /classes Classes de gestion des objets (modèles) message.class.php /templates Templates HTML (vue) home.tpl.php /routes Contrôleurs home.route.php /static /lib Fichiers images, css et JS Librairies externes

Cache Objectif : accélérer l affichage des pages Stockage plus ou moins temporaire Plusieurs niveaux de cache : - Cache HTTP - Cache d opcodes PHP - Cache applicatif - Cache MySQL - Reverse Proxy - CDN : content delivery network

Cache HTTP Gestion de la durée de stockage dans le cache du navigateur. Header http : Expires Cache-control + max-age $offset = 60 * 15; header('expires: '.date('d, d M Y H:i:s', time()+$offset).' GMT ); header('cache Control: max age=$offset, must revalidate');

Cache HTTP Attention : les cookies désactivent le cache local, idem pour les session_start()