SlideShare une entreprise Scribd logo
1  sur  85
Télécharger pour lire hors ligne
PHP & PHP Framework
Sommaire
Sommaire
1. Les bases du web
Sommaire
1. Les bases du web
2. Introduction rapide au PHP
Sommaire
1. Les bases du web
3. Programmation Orientée Objet (POO)
2. Introduction rapide au PHP
Sommaire
1. Les bases du web
3. Programmation Orientée Objet (POO)
2. Introduction rapide au PHP
4. Le Framework Symfony 2
Sommaire
1. Les bases du web
3. Programmation Orientée Objet (POO)
2. Introduction rapide au PHP
4. Le Framework Symfony 2
5. La sécurité sur le web
Sommaire
1. Les bases du web
3. Programmation Orientée Objet (POO)
2. Introduction rapide au PHP
4. Le Framework Symfony 2
5. La sécurité sur le web
6. Projet de groupe : Créez votre framework
1. Les bases du web
Deux types de besoins
Deux types de besoins
Information figéeBesoin
Deux types de besoins
Information figéeBesoin
Un site internet statiqueSolution
Deux types de besoins
Information figéeBesoin
Un site internet statiqueSolution
Technologie HTML, CSS, Javascript
Deux types de besoins
Une page dont le contenu
peut changer
Information figéeBesoin
Un site internet statiqueSolution
Technologie HTML, CSS, Javascript
Deux types de besoins
Une page dont le contenu
peut changer
Un site internet dynamique
Information figéeBesoin
Un site internet statiqueSolution
Technologie HTML, CSS, Javascript
Deux types de besoins
Une page dont le contenu
peut changer
Un site internet dynamique
Information figéeBesoin
Un site internet statiqueSolution
Technologie HTML, CSS, Javascript
HTML, CSS, Javascript, langage
serveur, base de données…
1.1 Comment se déroule une
requête ?
Comment se passe une requête sur le web ?
Client
Serveur
Comment se passe une requête sur le web ?
Client
Serveur
Nom de domaine
facebook.com
Comment se passe une requête sur le web ?
Requête une page
Client
Serveur
Comment se passe une requête sur le web ?
Requête une page
Répond le contenu de la page
Client
Serveur
Comment se passe une requête sur le web ?
Client
Serveur
Comment se passe une requête sur le web ?
Client
Serveur
Connexion TCP
Comment se passe une requête sur le web ?
Client
Serveur
Connexion TCP
Protocole HTTP
Qu’est ce que le protocole HTTP ?
http://monsite.com/pass.php?search=a
Une syntaxe commune permettant à un client et un
serveur de communiquer.
Qu’est ce que le protocole HTTP ?
http://monsite.com/pass.php?search=a
Une syntaxe commune permettant à un client et un
serveur de communiquer.
GET /pass.php/?search=a HTTP/1.1
Host: 94.128.126.14
User-Agent: Mozilla/5.0 (Windows NT 6.1)Firefox/18.0
Referer: http://monsite.com/pass.php
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
Qu’est ce que le protocole HTTP ?
http://monsite.com/pass.php?search=a
Une syntaxe commune permettant à un client et un
serveur de communiquer.
GET /pass.php/?search=a HTTP/1.1
Host: 94.128.126.14
User-Agent: Mozilla/5.0 (Windows NT 6.1)Firefox/18.0
Referer: http://monsite.com/pass.php
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
Qu’est ce que le protocole HTTP ?
http://monsite.com/pass.php?search=a
Type de requête
Une syntaxe commune permettant à un client et un
serveur de communiquer.
GET /pass.php/?search=a HTTP/1.1
Host: 94.128.126.14
User-Agent: Mozilla/5.0 (Windows NT 6.1)Firefox/18.0
Referer: http://monsite.com/pass.php
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
Qu’est ce que le protocole HTTP ?
IP client
http://monsite.com/pass.php?search=a
Type de requête
Une syntaxe commune permettant à un client et un
serveur de communiquer.
GET /pass.php/?search=a HTTP/1.1
Host: 94.128.126.14
User-Agent: Mozilla/5.0 (Windows NT 6.1)Firefox/18.0
Referer: http://monsite.com/pass.php
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
Qu’est ce que le protocole HTTP ?
IP client
Navigateur client
http://monsite.com/pass.php?search=a
Type de requête
Une syntaxe commune permettant à un client et un
serveur de communiquer.
GET /pass.php/?search=a HTTP/1.1
Host: 94.128.126.14
User-Agent: Mozilla/5.0 (Windows NT 6.1)Firefox/18.0
Referer: http://monsite.com/pass.php
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
Qu’est ce que le protocole HTTP ?
IP client
Navigateur client
Page précédente
(courante)
http://monsite.com/pass.php?search=a
Type de requête
Une syntaxe commune permettant à un client et un
serveur de communiquer.
GET /pass.php/?search=a HTTP/1.1
Host: 94.128.126.14
User-Agent: Mozilla/5.0 (Windows NT 6.1)Firefox/18.0
Referer: http://monsite.com/pass.php
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
Qu’est ce que le protocole HTTP ?
IP client
Navigateur client
Page précédente
(courante)
Conserver connection
http://monsite.com/pass.php?search=a
Type de requête
GET /pass.php/?search=a HTTP/1.1
Host: 94.128.126.14
User-Agent: Mozilla/5.0 (Windows NT 6.1)Firefox/18.0
Referer: http://monsite.com/pass.php
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
Qu’est ce que le protocole HTTP ?
IP client
Navigateur client
Page précédente
(courante)
Conserver connection
http://monsite.com/pass.php?search=a
Type de requête
Qu’est ce que le protocole HTTP ?
http://monsite.com/pass.php?search=a
Sans keep alive Nouvelle connection TCP à chaque requête
Avec keep alive On conserve la connexion TCP entre les différentes requêtes
d’un même navigateur
Deux types de requêtes HTTP
GET
POST
Requête une page avec des paramètres dans l’url
http:// bing.fr /search ?search=protocole
Paramètres GETPageDomaineProtocole
Requête une page avec des paramètres dans le body HTTP
http:// bing.fr /connect
PageDomaineProtocole
Qu’est ce que le protocole HTTP ?
Génération de la page
Qu’est ce que le protocole HTTP ?
Génération de la page
HTTP/1.1 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close
<!doctype html><html itemscope="" itemtype=« 
http://schema.org/WebPage" lang=« fr"><head>
<meta content="/images/
Qu’est ce que le protocole HTTP ?
HTTP/1.1 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close
<!doctype html><html itemscope="" itemtype=« 
http://schema.org/WebPage" lang=« fr"><head>
<meta content="/images/
Qu’est ce que le protocole HTTP ?
Code status
HTTP/1.1 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close
<!doctype html><html itemscope="" itemtype=« 
http://schema.org/WebPage" lang=« fr"><head>
<meta content="/images/
Qu’est ce que le protocole HTTP ?
Encodage des pages
(ISO, UTF-8…)
Code status
HTTP/1.1 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close
<!doctype html><html itemscope="" itemtype=« 
http://schema.org/WebPage" lang=« fr"><head>
<meta content="/images/
Qu’est ce que le protocole HTTP ?
Code HTML à afficher
Encodage des pages
(ISO, UTF-8…)
Code status
Qu’est ce que le protocole HTTP ?
Qu’est ce que le protocole HTTP ?
Code status
2xx Success
3xx Redirect
4xx Client error
5xx Server error
1.2 Ou peut-on stocker des
informations ?
Bases de données, Cookies, Sessions et Local Storage
Bases de données, Cookies, Sessions et Local Storage
Bases de données serveur
Bases de données, Cookies, Sessions et Local Storage
Bases de données serveur
Local Storage HTML 5
Session Storage HTML 5
< 5 Mo / domaine
Bases de données, Cookies, Sessions et Local Storage
Bases de données serveur
Local Storage HTML 5
Session Storage HTML 5
< 5 Mo / domaine
Cookie
- Stocke des informations
sur le navigateur
- A une durée de vie limitée
- Editable par le client et le
serveur
Bases de données, Cookies, Sessions et Local Storage
Bases de données serveur
Local Storage HTML 5
Session Storage HTML 5
< 5 Mo / domaine
cookies envoyés par HTTP
Cookie
- Stocke des informations
sur le navigateur
- A une durée de vie limitée
- Editable par le client et le
serveur
Bases de données, Cookies, Sessions et Local Storage
Bases de données serveur
Local Storage HTML 5
Session Storage HTML 5
< 5 Mo / domaine
cookies envoyés par HTTP
Cookie
- Stocke des informations
sur le navigateur
- A une durée de vie limitée
- Editable par le client et le
serveur
Session
- 1 session / navigateur
- Identifiée par un cookie
- Stocke des informations sur
le serveur
Les cookies, concrètement
Liste de cookie
- statisitics 3
- id U3Y7UID
Les cookies, concrètement
Liste de cookie
- statisitics 3
- id U3Y7UID
Liste de cookie
- statisitics 3
- id U3Y7UID
Les cookies, concrètement
Set-cookie
- tokenUser 8879
Liste de cookie
- statisitics 3
- id U3Y7UID
Les cookies, concrètement
Set-cookie
- tokenUser 8879
Liste de cookie
- statisitics 3
- id U3Y7UID
- tokenUser 8879
Les cookies, concrètement
Liste de cookie
- statisitics 3
- id U3Y7UID
- tokenUser 8879
Liste de cookie
- statisitics 3
- id U3Y7UID
- tokenUser 8879
Les sessions, concrètement
1 2 3
jeremie jean alexandre
Données sur le
serveur
Client
Les sessions, concrètement
1 2 3
jeremie jean alexandre
Données sur le
serveur
Client
Les sessions, concrètement
1 2 3
jeremie jean alexandre
4
robert
Données sur le
serveur
Client
Les sessions, concrètement
1 2 3
jeremie jean alexandre
4
robert
Données sur le
serveur
Client
Set-cookie
- idSession 4
Les sessions, concrètement
1 2 3
jeremie jean alexandre
4
robert
Données sur le
serveur
Client
Liste de cookie
- idSession 4
Les sessions, concrètement
1 2 3
jeremie jean alexandre
4
robert
Données sur le
serveur
Client
Liste de cookie
- idSession 4
Les sessions, concrètement
A la fermeture du navigateur le cookie de session expire. L’id de session
disparait, on ne peut plus authentifier l’utilisateur.
Comparaison des stockages sur le client
- Cookies pèsent au maximum quelques Ko
- Cookies sont envoyés dans chaque requêtes
- Le serveur peut lire et éditer les cookies
Les cookies
- Local storage peut prendre jusqu’à 5 Mo
Le local storage
- Session storage peut prendre jusqu’à 5 Mo
Le session storage
- Supprimé à la fermeture de la session
1.3 Etude de cas :
Authentification des utilisateurs
Besoins liés à la connexion d’un utilisateur
- Procéder à l’authentification grâce aux identifiants
Besoins liés à la connexion d’un utilisateur
- Procéder à l’authentification grâce aux identifiants
- Conserver la connexion entre deux chargement de page
Besoins liés à la connexion d’un utilisateur
- Procéder à l’authentification grâce aux identifiants
- Conserver la connexion entre deux chargement de page
- Se souvenir de l’utilisateur au prochain démarrage du navigateur
Besoins liés à la connexion d’un utilisateur
Procéder à l’authentification grâce aux identifiants
Procéder à l’authentification grâce aux identifiants
1 . L’utilisateur rempli un formulaire et le soumet
Procéder à l’authentification grâce aux identifiants
1 . L’utilisateur rempli un formulaire et le soumet
2. Pour l’envoi du formulaire une requête de type POST est choisie
Procéder à l’authentification grâce aux identifiants
1 . L’utilisateur rempli un formulaire et le soumet
2. Pour l’envoi du formulaire une requête de type POST est choisie
3. Pour éviter l’interception de la requête et le vol du mot de passe et du nom
d’utilisateur, on utilise une connexion HTTPS
Procéder à l’authentification grâce aux identifiants
1 . L’utilisateur rempli un formulaire et le soumet
2. Pour l’envoi du formulaire une requête de type POST est choisie
3. Pour éviter l’interception de la requête et le vol du mot de passe et du nom
d’utilisateur, on utilise une connexion HTTPS
4. On hash le mot de passe. On vérifie les données dans la base de donnée du
serveur. Si l’utilisateur existe et que le mot de passe est le bon alors l’utilisateur est
connecté.
Conserver la connexion entre deux chargement de page
Conserver la connexion entre deux chargement de page
1 . Lors de la connexion de l’utilisateur on sauvegarde son nom d’utilisateur dans une
session
Conserver la connexion entre deux chargement de page
1 . Lors de la connexion de l’utilisateur on sauvegarde son nom d’utilisateur dans une
session
2. On génère un identifiant de session purement aléatoire qui ne doit pas être
prédictible.
Conserver la connexion entre deux chargement de page
1 . Lors de la connexion de l’utilisateur on sauvegarde son nom d’utilisateur dans une
session
2. On génère un identifiant de session purement aléatoire qui ne doit pas être
prédictible.
3. On stocke l’identifiant de Session dans un cookie à l’aide du header set-cookie
dans la réponse HTTP. Ce cookie doit être Http-Only.
Conserver la connexion entre deux chargement de page
1 . Lors de la connexion de l’utilisateur on sauvegarde son nom d’utilisateur dans une
session
2. On génère un identifiant de session purement aléatoire qui ne doit pas être
prédictible.
3. On stocke l’identifiant de Session dans un cookie à l’aide du header set-cookie
dans la réponse HTTP. Ce cookie doit être Http-Only.
4. Lors de la requête suivante, si un identifiant de session est spécifié dans les
cookies ont l’utilise pour identifier notre utilisateur.
Se souvenir de l’utilisateur au prochain démarrage du navigateur
Se souvenir de l’utilisateur au prochain démarrage du navigateur
1 . Quand « Remember Me » est coché au moment de la connexion un
cookie additionnel est créé qui permet d’authentifier l’utilisateur si sa session est
supprimée.
Se souvenir de l’utilisateur au prochain démarrage du navigateur
1 . Quand « Remember Me » est coché au moment de la connexion un
cookie additionnel est créé qui permet d’authentifier l’utilisateur si sa session est
supprimée.
2. Ce nouveau cookie contient le nom d’utilisateur, un n° serie utilisateur et un token
créé pour l’occasion. Le token et le n° de série sont unique, aléatoire et long. On
stocke le triplet dans la base de donnée serveur.
Se souvenir de l’utilisateur au prochain démarrage du navigateur
1 . Quand « Remember Me » est coché au moment de la connexion un
cookie additionnel est créé qui permet d’authentifier l’utilisateur si sa session est
supprimée.
2. Ce nouveau cookie contient le nom d’utilisateur, un n° serie utilisateur et un token
créé pour l’occasion. Le token et le n° de série sont unique, aléatoire et long. On
stocke le triplet dans la base de donnée serveur.
3. Quand un utilisateur non authentifié visite le site et qu’il possède dans son cookie
le triplet on essaie de l’authentifier. On regarde si le triplet existe dans la base de
donnée.
Se souvenir de l’utilisateur au prochain démarrage du navigateur
1 . Quand « Remember Me » est coché au moment de la connexion un
cookie additionnel est créé qui permet d’authentifier l’utilisateur si sa session est
supprimée.
2. Ce nouveau cookie contient le nom d’utilisateur, un n° serie utilisateur et un token
créé pour l’occasion. Le token et le n° de série sont unique, aléatoire et long. On
stocke le triplet dans la base de donnée serveur.
3. Quand un utilisateur non authentifié visite le site et qu’il possède dans son cookie
le triplet on essaie de l’authentifier. On regarde si le triplet existe dans la base de
donnée.
3.1. Si le triplet est présent, l’utilisateur est considéré comme authentifié. On
supprime le token et on en génère un nouveau qu’on retourne au client.
Se souvenir de l’utilisateur au prochain démarrage du navigateur
1 . Quand « Remember Me » est coché au moment de la connexion un
cookie additionnel est créé qui permet d’authentifier l’utilisateur si sa session est
supprimée.
2. Ce nouveau cookie contient le nom d’utilisateur, un n° serie utilisateur et un token
créé pour l’occasion. Le token et le n° de série sont unique, aléatoire et long. On
stocke le triplet dans la base de donnée serveur.
3. Quand un utilisateur non authentifié visite le site et qu’il possède dans son cookie
le triplet on essaie de l’authentifier. On regarde si le triplet existe dans la base de
donnée.
3.1. Si le triplet est présent, l’utilisateur est considéré comme authentifié. On
supprime le token et on en génère un nouveau qu’on retourne au client.
3.2. Si seul le token ne matche pas, l’utilisateur est menacé. On supprime le
triplet de la base. On prévient l’utilisateur de la menace.
Ceci n’est un extrait du cours, contactez-nous pour plus d’informations.
https://www.linkedin.com/pub/jérémie-campari/55/205/275

Contenu connexe

En vedette

Clases y objetos en php (poo)
Clases y objetos en php (poo)Clases y objetos en php (poo)
Clases y objetos en php (poo)Jefer Lee Parra
 
Formation angular js - Constellation
Formation angular js - ConstellationFormation angular js - Constellation
Formation angular js - ConstellationJérémie Campari
 
Principe de fonctionnement du cryptage RSA
Principe de fonctionnement du cryptage RSAPrincipe de fonctionnement du cryptage RSA
Principe de fonctionnement du cryptage RSAKristen Le Liboux
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfonyJeremy Gachet
 
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Kristen Le Liboux
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScriptKristen Le Liboux
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPKristen Le Liboux
 
Introduction au business modèle des applications mobile
Introduction au business modèle des applications mobileIntroduction au business modèle des applications mobile
Introduction au business modèle des applications mobileAbdelkader Rhouati
 
Symfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en TwigSymfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en TwigAbdelkader Rhouati
 
Symfony 2 : chapitre 4 - Les services et les formulaires
Symfony 2 : chapitre 4 - Les services et les formulairesSymfony 2 : chapitre 4 - Les services et les formulaires
Symfony 2 : chapitre 4 - Les services et les formulairesAbdelkader Rhouati
 
Symfony 2 : chapitre 3 - Les modèles en Doctrine 2
Symfony 2 : chapitre 3 - Les modèles en Doctrine 2Symfony 2 : chapitre 3 - Les modèles en Doctrine 2
Symfony 2 : chapitre 3 - Les modèles en Doctrine 2Abdelkader Rhouati
 
Symfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation GénéraleSymfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation GénéraleAbdelkader Rhouati
 

En vedette (13)

Clases y objetos en php (poo)
Clases y objetos en php (poo)Clases y objetos en php (poo)
Clases y objetos en php (poo)
 
Formation angular js - Constellation
Formation angular js - ConstellationFormation angular js - Constellation
Formation angular js - Constellation
 
Clases en php
Clases en phpClases en php
Clases en php
 
Principe de fonctionnement du cryptage RSA
Principe de fonctionnement du cryptage RSAPrincipe de fonctionnement du cryptage RSA
Principe de fonctionnement du cryptage RSA
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfony
 
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScript
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 
Introduction au business modèle des applications mobile
Introduction au business modèle des applications mobileIntroduction au business modèle des applications mobile
Introduction au business modèle des applications mobile
 
Symfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en TwigSymfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en Twig
 
Symfony 2 : chapitre 4 - Les services et les formulaires
Symfony 2 : chapitre 4 - Les services et les formulairesSymfony 2 : chapitre 4 - Les services et les formulaires
Symfony 2 : chapitre 4 - Les services et les formulaires
 
Symfony 2 : chapitre 3 - Les modèles en Doctrine 2
Symfony 2 : chapitre 3 - Les modèles en Doctrine 2Symfony 2 : chapitre 3 - Les modèles en Doctrine 2
Symfony 2 : chapitre 3 - Les modèles en Doctrine 2
 
Symfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation GénéraleSymfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation Générale
 

Similaire à PHP et PHP Framework

[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...Clément OUDOT
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented ArchitectureDNG Consulting
 
Introduction au web cours.pdf
Introduction au web cours.pdfIntroduction au web cours.pdf
Introduction au web cours.pdfElomyakobi
 
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...pierredargham
 
Presentation
PresentationPresentation
Presentationbois
 
La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secretsAymeric Bouillat
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.pptadiouf2
 
Présentation de nos MVP - F5 devCentral - Event 09-10-18
Présentation de nos MVP - F5 devCentral - Event 09-10-18Présentation de nos MVP - F5 devCentral - Event 09-10-18
Présentation de nos MVP - F5 devCentral - Event 09-10-18e-Xpert Solutions SA
 
Drupal 8, symfony
Drupal 8, symfonyDrupal 8, symfony
Drupal 8, symfonyjeUXdiCode
 
Apache server configuration & sécurisation -
Apache server configuration & sécurisation  -Apache server configuration & sécurisation  -
Apache server configuration & sécurisation -achraf_ing
 
Publication de documents sur le Web
Publication de documents sur le WebPublication de documents sur le Web
Publication de documents sur le WebSaïd Radhouani
 
Rest ful architecture
Rest ful architectureRest ful architecture
Rest ful architecturezaghir
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPjulien pauli
 
Optimiser WordPress
Optimiser WordPressOptimiser WordPress
Optimiser WordPressChi Nacim
 
WebSphere Portal & Rich Internet Applications
WebSphere Portal & Rich Internet ApplicationsWebSphere Portal & Rich Internet Applications
WebSphere Portal & Rich Internet ApplicationsVincent Perrin
 

Similaire à PHP et PHP Framework (20)

Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented Architecture
 
Introduction au web cours.pdf
Introduction au web cours.pdfIntroduction au web cours.pdf
Introduction au web cours.pdf
 
Cours 8 squid.pdf
Cours 8 squid.pdfCours 8 squid.pdf
Cours 8 squid.pdf
 
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
 
Presentation
PresentationPresentation
Presentation
 
La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secrets
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
 
Présentation de nos MVP - F5 devCentral - Event 09-10-18
Présentation de nos MVP - F5 devCentral - Event 09-10-18Présentation de nos MVP - F5 devCentral - Event 09-10-18
Présentation de nos MVP - F5 devCentral - Event 09-10-18
 
Drupal 8, symfony
Drupal 8, symfonyDrupal 8, symfony
Drupal 8, symfony
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Apache server configuration & sécurisation -
Apache server configuration & sécurisation  -Apache server configuration & sécurisation  -
Apache server configuration & sécurisation -
 
Publication de documents sur le Web
Publication de documents sur le WebPublication de documents sur le Web
Publication de documents sur le Web
 
Rest ful architecture
Rest ful architectureRest ful architecture
Rest ful architecture
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHP
 
technologie web
technologie webtechnologie web
technologie web
 
Optimiser wordpress
Optimiser wordpressOptimiser wordpress
Optimiser wordpress
 
Optimiser WordPress
Optimiser WordPressOptimiser WordPress
Optimiser WordPress
 
WebSphere Portal & Rich Internet Applications
WebSphere Portal & Rich Internet ApplicationsWebSphere Portal & Rich Internet Applications
WebSphere Portal & Rich Internet Applications
 

PHP et PHP Framework

  • 1. PHP & PHP Framework
  • 4. Sommaire 1. Les bases du web 2. Introduction rapide au PHP
  • 5. Sommaire 1. Les bases du web 3. Programmation Orientée Objet (POO) 2. Introduction rapide au PHP
  • 6. Sommaire 1. Les bases du web 3. Programmation Orientée Objet (POO) 2. Introduction rapide au PHP 4. Le Framework Symfony 2
  • 7. Sommaire 1. Les bases du web 3. Programmation Orientée Objet (POO) 2. Introduction rapide au PHP 4. Le Framework Symfony 2 5. La sécurité sur le web
  • 8. Sommaire 1. Les bases du web 3. Programmation Orientée Objet (POO) 2. Introduction rapide au PHP 4. Le Framework Symfony 2 5. La sécurité sur le web 6. Projet de groupe : Créez votre framework
  • 9. 1. Les bases du web
  • 10. Deux types de besoins
  • 11. Deux types de besoins Information figéeBesoin
  • 12. Deux types de besoins Information figéeBesoin Un site internet statiqueSolution
  • 13. Deux types de besoins Information figéeBesoin Un site internet statiqueSolution Technologie HTML, CSS, Javascript
  • 14. Deux types de besoins Une page dont le contenu peut changer Information figéeBesoin Un site internet statiqueSolution Technologie HTML, CSS, Javascript
  • 15. Deux types de besoins Une page dont le contenu peut changer Un site internet dynamique Information figéeBesoin Un site internet statiqueSolution Technologie HTML, CSS, Javascript
  • 16. Deux types de besoins Une page dont le contenu peut changer Un site internet dynamique Information figéeBesoin Un site internet statiqueSolution Technologie HTML, CSS, Javascript HTML, CSS, Javascript, langage serveur, base de données…
  • 17. 1.1 Comment se déroule une requête ?
  • 18. Comment se passe une requête sur le web ? Client Serveur
  • 19. Comment se passe une requête sur le web ? Client Serveur Nom de domaine facebook.com
  • 20. Comment se passe une requête sur le web ? Requête une page Client Serveur
  • 21. Comment se passe une requête sur le web ? Requête une page Répond le contenu de la page Client Serveur
  • 22. Comment se passe une requête sur le web ? Client Serveur
  • 23. Comment se passe une requête sur le web ? Client Serveur Connexion TCP
  • 24. Comment se passe une requête sur le web ? Client Serveur Connexion TCP Protocole HTTP
  • 25. Qu’est ce que le protocole HTTP ? http://monsite.com/pass.php?search=a
  • 26. Une syntaxe commune permettant à un client et un serveur de communiquer. Qu’est ce que le protocole HTTP ? http://monsite.com/pass.php?search=a
  • 27. Une syntaxe commune permettant à un client et un serveur de communiquer. GET /pass.php/?search=a HTTP/1.1 Host: 94.128.126.14 User-Agent: Mozilla/5.0 (Windows NT 6.1)Firefox/18.0 Referer: http://monsite.com/pass.php Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 30 Qu’est ce que le protocole HTTP ? http://monsite.com/pass.php?search=a
  • 28. Une syntaxe commune permettant à un client et un serveur de communiquer. GET /pass.php/?search=a HTTP/1.1 Host: 94.128.126.14 User-Agent: Mozilla/5.0 (Windows NT 6.1)Firefox/18.0 Referer: http://monsite.com/pass.php Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 30 Qu’est ce que le protocole HTTP ? http://monsite.com/pass.php?search=a Type de requête
  • 29. Une syntaxe commune permettant à un client et un serveur de communiquer. GET /pass.php/?search=a HTTP/1.1 Host: 94.128.126.14 User-Agent: Mozilla/5.0 (Windows NT 6.1)Firefox/18.0 Referer: http://monsite.com/pass.php Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 30 Qu’est ce que le protocole HTTP ? IP client http://monsite.com/pass.php?search=a Type de requête
  • 30. Une syntaxe commune permettant à un client et un serveur de communiquer. GET /pass.php/?search=a HTTP/1.1 Host: 94.128.126.14 User-Agent: Mozilla/5.0 (Windows NT 6.1)Firefox/18.0 Referer: http://monsite.com/pass.php Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 30 Qu’est ce que le protocole HTTP ? IP client Navigateur client http://monsite.com/pass.php?search=a Type de requête
  • 31. Une syntaxe commune permettant à un client et un serveur de communiquer. GET /pass.php/?search=a HTTP/1.1 Host: 94.128.126.14 User-Agent: Mozilla/5.0 (Windows NT 6.1)Firefox/18.0 Referer: http://monsite.com/pass.php Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 30 Qu’est ce que le protocole HTTP ? IP client Navigateur client Page précédente (courante) http://monsite.com/pass.php?search=a Type de requête
  • 32. Une syntaxe commune permettant à un client et un serveur de communiquer. GET /pass.php/?search=a HTTP/1.1 Host: 94.128.126.14 User-Agent: Mozilla/5.0 (Windows NT 6.1)Firefox/18.0 Referer: http://monsite.com/pass.php Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 30 Qu’est ce que le protocole HTTP ? IP client Navigateur client Page précédente (courante) Conserver connection http://monsite.com/pass.php?search=a Type de requête
  • 33. GET /pass.php/?search=a HTTP/1.1 Host: 94.128.126.14 User-Agent: Mozilla/5.0 (Windows NT 6.1)Firefox/18.0 Referer: http://monsite.com/pass.php Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 30 Qu’est ce que le protocole HTTP ? IP client Navigateur client Page précédente (courante) Conserver connection http://monsite.com/pass.php?search=a Type de requête
  • 34. Qu’est ce que le protocole HTTP ? http://monsite.com/pass.php?search=a Sans keep alive Nouvelle connection TCP à chaque requête Avec keep alive On conserve la connexion TCP entre les différentes requêtes d’un même navigateur
  • 35. Deux types de requêtes HTTP GET POST Requête une page avec des paramètres dans l’url http:// bing.fr /search ?search=protocole Paramètres GETPageDomaineProtocole Requête une page avec des paramètres dans le body HTTP http:// bing.fr /connect PageDomaineProtocole
  • 36. Qu’est ce que le protocole HTTP ? Génération de la page
  • 37. Qu’est ce que le protocole HTTP ? Génération de la page
  • 38. HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 Connection: close <!doctype html><html itemscope="" itemtype=«  http://schema.org/WebPage" lang=« fr"><head> <meta content="/images/ Qu’est ce que le protocole HTTP ?
  • 39. HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 Connection: close <!doctype html><html itemscope="" itemtype=«  http://schema.org/WebPage" lang=« fr"><head> <meta content="/images/ Qu’est ce que le protocole HTTP ? Code status
  • 40. HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 Connection: close <!doctype html><html itemscope="" itemtype=«  http://schema.org/WebPage" lang=« fr"><head> <meta content="/images/ Qu’est ce que le protocole HTTP ? Encodage des pages (ISO, UTF-8…) Code status
  • 41. HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 Connection: close <!doctype html><html itemscope="" itemtype=«  http://schema.org/WebPage" lang=« fr"><head> <meta content="/images/ Qu’est ce que le protocole HTTP ? Code HTML à afficher Encodage des pages (ISO, UTF-8…) Code status
  • 42. Qu’est ce que le protocole HTTP ?
  • 43. Qu’est ce que le protocole HTTP ? Code status 2xx Success 3xx Redirect 4xx Client error 5xx Server error
  • 44. 1.2 Ou peut-on stocker des informations ?
  • 45. Bases de données, Cookies, Sessions et Local Storage
  • 46. Bases de données, Cookies, Sessions et Local Storage Bases de données serveur
  • 47. Bases de données, Cookies, Sessions et Local Storage Bases de données serveur Local Storage HTML 5 Session Storage HTML 5 < 5 Mo / domaine
  • 48. Bases de données, Cookies, Sessions et Local Storage Bases de données serveur Local Storage HTML 5 Session Storage HTML 5 < 5 Mo / domaine Cookie - Stocke des informations sur le navigateur - A une durée de vie limitée - Editable par le client et le serveur
  • 49. Bases de données, Cookies, Sessions et Local Storage Bases de données serveur Local Storage HTML 5 Session Storage HTML 5 < 5 Mo / domaine cookies envoyés par HTTP Cookie - Stocke des informations sur le navigateur - A une durée de vie limitée - Editable par le client et le serveur
  • 50. Bases de données, Cookies, Sessions et Local Storage Bases de données serveur Local Storage HTML 5 Session Storage HTML 5 < 5 Mo / domaine cookies envoyés par HTTP Cookie - Stocke des informations sur le navigateur - A une durée de vie limitée - Editable par le client et le serveur Session - 1 session / navigateur - Identifiée par un cookie - Stocke des informations sur le serveur
  • 51. Les cookies, concrètement Liste de cookie - statisitics 3 - id U3Y7UID
  • 52. Les cookies, concrètement Liste de cookie - statisitics 3 - id U3Y7UID Liste de cookie - statisitics 3 - id U3Y7UID
  • 53. Les cookies, concrètement Set-cookie - tokenUser 8879 Liste de cookie - statisitics 3 - id U3Y7UID
  • 54. Les cookies, concrètement Set-cookie - tokenUser 8879 Liste de cookie - statisitics 3 - id U3Y7UID - tokenUser 8879
  • 55. Les cookies, concrètement Liste de cookie - statisitics 3 - id U3Y7UID - tokenUser 8879 Liste de cookie - statisitics 3 - id U3Y7UID - tokenUser 8879
  • 56. Les sessions, concrètement 1 2 3 jeremie jean alexandre Données sur le serveur Client
  • 57. Les sessions, concrètement 1 2 3 jeremie jean alexandre Données sur le serveur Client
  • 58. Les sessions, concrètement 1 2 3 jeremie jean alexandre 4 robert Données sur le serveur Client
  • 59. Les sessions, concrètement 1 2 3 jeremie jean alexandre 4 robert Données sur le serveur Client Set-cookie - idSession 4
  • 60. Les sessions, concrètement 1 2 3 jeremie jean alexandre 4 robert Données sur le serveur Client Liste de cookie - idSession 4
  • 61. Les sessions, concrètement 1 2 3 jeremie jean alexandre 4 robert Données sur le serveur Client Liste de cookie - idSession 4
  • 62. Les sessions, concrètement A la fermeture du navigateur le cookie de session expire. L’id de session disparait, on ne peut plus authentifier l’utilisateur.
  • 63. Comparaison des stockages sur le client - Cookies pèsent au maximum quelques Ko - Cookies sont envoyés dans chaque requêtes - Le serveur peut lire et éditer les cookies Les cookies - Local storage peut prendre jusqu’à 5 Mo Le local storage - Session storage peut prendre jusqu’à 5 Mo Le session storage - Supprimé à la fermeture de la session
  • 64. 1.3 Etude de cas : Authentification des utilisateurs
  • 65. Besoins liés à la connexion d’un utilisateur
  • 66. - Procéder à l’authentification grâce aux identifiants Besoins liés à la connexion d’un utilisateur
  • 67. - Procéder à l’authentification grâce aux identifiants - Conserver la connexion entre deux chargement de page Besoins liés à la connexion d’un utilisateur
  • 68. - Procéder à l’authentification grâce aux identifiants - Conserver la connexion entre deux chargement de page - Se souvenir de l’utilisateur au prochain démarrage du navigateur Besoins liés à la connexion d’un utilisateur
  • 69. Procéder à l’authentification grâce aux identifiants
  • 70. Procéder à l’authentification grâce aux identifiants 1 . L’utilisateur rempli un formulaire et le soumet
  • 71. Procéder à l’authentification grâce aux identifiants 1 . L’utilisateur rempli un formulaire et le soumet 2. Pour l’envoi du formulaire une requête de type POST est choisie
  • 72. Procéder à l’authentification grâce aux identifiants 1 . L’utilisateur rempli un formulaire et le soumet 2. Pour l’envoi du formulaire une requête de type POST est choisie 3. Pour éviter l’interception de la requête et le vol du mot de passe et du nom d’utilisateur, on utilise une connexion HTTPS
  • 73. Procéder à l’authentification grâce aux identifiants 1 . L’utilisateur rempli un formulaire et le soumet 2. Pour l’envoi du formulaire une requête de type POST est choisie 3. Pour éviter l’interception de la requête et le vol du mot de passe et du nom d’utilisateur, on utilise une connexion HTTPS 4. On hash le mot de passe. On vérifie les données dans la base de donnée du serveur. Si l’utilisateur existe et que le mot de passe est le bon alors l’utilisateur est connecté.
  • 74. Conserver la connexion entre deux chargement de page
  • 75. Conserver la connexion entre deux chargement de page 1 . Lors de la connexion de l’utilisateur on sauvegarde son nom d’utilisateur dans une session
  • 76. Conserver la connexion entre deux chargement de page 1 . Lors de la connexion de l’utilisateur on sauvegarde son nom d’utilisateur dans une session 2. On génère un identifiant de session purement aléatoire qui ne doit pas être prédictible.
  • 77. Conserver la connexion entre deux chargement de page 1 . Lors de la connexion de l’utilisateur on sauvegarde son nom d’utilisateur dans une session 2. On génère un identifiant de session purement aléatoire qui ne doit pas être prédictible. 3. On stocke l’identifiant de Session dans un cookie à l’aide du header set-cookie dans la réponse HTTP. Ce cookie doit être Http-Only.
  • 78. Conserver la connexion entre deux chargement de page 1 . Lors de la connexion de l’utilisateur on sauvegarde son nom d’utilisateur dans une session 2. On génère un identifiant de session purement aléatoire qui ne doit pas être prédictible. 3. On stocke l’identifiant de Session dans un cookie à l’aide du header set-cookie dans la réponse HTTP. Ce cookie doit être Http-Only. 4. Lors de la requête suivante, si un identifiant de session est spécifié dans les cookies ont l’utilise pour identifier notre utilisateur.
  • 79. Se souvenir de l’utilisateur au prochain démarrage du navigateur
  • 80. Se souvenir de l’utilisateur au prochain démarrage du navigateur 1 . Quand « Remember Me » est coché au moment de la connexion un cookie additionnel est créé qui permet d’authentifier l’utilisateur si sa session est supprimée.
  • 81. Se souvenir de l’utilisateur au prochain démarrage du navigateur 1 . Quand « Remember Me » est coché au moment de la connexion un cookie additionnel est créé qui permet d’authentifier l’utilisateur si sa session est supprimée. 2. Ce nouveau cookie contient le nom d’utilisateur, un n° serie utilisateur et un token créé pour l’occasion. Le token et le n° de série sont unique, aléatoire et long. On stocke le triplet dans la base de donnée serveur.
  • 82. Se souvenir de l’utilisateur au prochain démarrage du navigateur 1 . Quand « Remember Me » est coché au moment de la connexion un cookie additionnel est créé qui permet d’authentifier l’utilisateur si sa session est supprimée. 2. Ce nouveau cookie contient le nom d’utilisateur, un n° serie utilisateur et un token créé pour l’occasion. Le token et le n° de série sont unique, aléatoire et long. On stocke le triplet dans la base de donnée serveur. 3. Quand un utilisateur non authentifié visite le site et qu’il possède dans son cookie le triplet on essaie de l’authentifier. On regarde si le triplet existe dans la base de donnée.
  • 83. Se souvenir de l’utilisateur au prochain démarrage du navigateur 1 . Quand « Remember Me » est coché au moment de la connexion un cookie additionnel est créé qui permet d’authentifier l’utilisateur si sa session est supprimée. 2. Ce nouveau cookie contient le nom d’utilisateur, un n° serie utilisateur et un token créé pour l’occasion. Le token et le n° de série sont unique, aléatoire et long. On stocke le triplet dans la base de donnée serveur. 3. Quand un utilisateur non authentifié visite le site et qu’il possède dans son cookie le triplet on essaie de l’authentifier. On regarde si le triplet existe dans la base de donnée. 3.1. Si le triplet est présent, l’utilisateur est considéré comme authentifié. On supprime le token et on en génère un nouveau qu’on retourne au client.
  • 84. Se souvenir de l’utilisateur au prochain démarrage du navigateur 1 . Quand « Remember Me » est coché au moment de la connexion un cookie additionnel est créé qui permet d’authentifier l’utilisateur si sa session est supprimée. 2. Ce nouveau cookie contient le nom d’utilisateur, un n° serie utilisateur et un token créé pour l’occasion. Le token et le n° de série sont unique, aléatoire et long. On stocke le triplet dans la base de donnée serveur. 3. Quand un utilisateur non authentifié visite le site et qu’il possède dans son cookie le triplet on essaie de l’authentifier. On regarde si le triplet existe dans la base de donnée. 3.1. Si le triplet est présent, l’utilisateur est considéré comme authentifié. On supprime le token et on en génère un nouveau qu’on retourne au client. 3.2. Si seul le token ne matche pas, l’utilisateur est menacé. On supprime le triplet de la base. On prévient l’utilisateur de la menace.
  • 85. Ceci n’est un extrait du cours, contactez-nous pour plus d’informations. https://www.linkedin.com/pub/jérémie-campari/55/205/275