Headers, cookies et sessions



Documents pareils
TP JAVASCRIPT OMI4 TP5 SRC

PHP et les Bases de données - Généralités

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

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6

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

Stockage du fichier dans une table mysql:

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

Module BD et sites WEB

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

Mise en place d un serveur Proxy sous Ubuntu / Debian

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Attaques applicatives

Microsoft Hosted Exchange 2010 DOCUMENT D EXPLOITATION

PARAMETRER INTERNET EXPLORER 9

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

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

Formulaires et Compteurs

RTE Technologies. RTE Geoloc. Configuration avec Proxy ou Firewall

Création de formulaires interactifs

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

Sessions en ligne - QuestionPoint

Assistance à distance sous Windows

(structure des entêtes)

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

Installation d un manuel numérique 2.0

Formulaire pour envoyer un mail

(Fig. 1 :assistant connexion Internet)

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

SERVEUR DE MESSAGERIE

L3 informatique TP n o 2 : Les applications réseau

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Attaques de type. Brandon Petty

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

Guide pour bien débuter avec

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

STID 2ème année : TP Web/PHP

API SMS CONSEIL HTTP V2.01. Sommaire. Documentation V1.0 au 21/05/2011

Logiciel de connexion sécurisée. M2Me_Secure. NOTICE D'UTILISATION Document référence :

Formation Webmaster : Création de site Web Initiation + Approfondissement

Manuel d Installation et de Configuration Clic & Surf C&S 3.3

FileSender par RENATER - Guide utilisateur

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

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

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

Comment utiliser mon compte alumni?

\ \ / \ / / \/ ~ \/ _ \\ \ ` \ Y ( <_> ) \ / /\ _ / \ / / \/ \/ \/ Team

Services bancaires par Internet aux entreprises. Guide pratique pour : Transfert de fichiers Version

Serveur d application WebDev

Internet Explorer. Microsoft. Sommaire :

Formation. Module WEB 4.1. Support de cours

MANUEL D INSTALLATION Sous WINDOWS

Documentation Honolulu 14 (1)

Accès distant Freebox v6 Configuration

Mise en oeuvre d un intranet à partir de logiciels Open Source avec intégration des certificats numériques et login unique

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

Modules Prestashop - ExportCatalogue / EXPORT IMPORT POUR MODIFICATIONS EN MASSE DANS PRESTASHOP VERSION Optim'Informatique

Guide d interfaçage SSO Connexion des ressources aux plates-formes de type Corrélyce. Sommaire. Titre du document

Diffuser un contenu sur Internet : notions de base... 13

SYSTÈMES D INFORMATIONS

Manuel d utilisation de la messagerie.

> INSTRUCTIONS POUR LA FACTURATION DES BONS DE COMMANDE

FileMaker Server 14. Aide FileMaker Server

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Groupe Eyrolles, 2003, ISBN : X

PHP 5.4 Développez un site web dynamique et interactif

Sécurisation d une application ASP.NET

Créer un site Web : mode d emploi Sous SPIP, avec le squelette «établissement» de l académie de Versailles

Application web de gestion de comptes en banques

Censio Tutorial Sharepoint Cloud Connector exporter les données d un fichier plat dans Sharepoint Online. Version 1.

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Live box et Nas Synology

MANUEL D INSTALLATION DES PRE REQUIS TECHNIQUES SALLE DES MARCHES V.7

SQUID P r o x y L i b r e p o u r U n i x e t L i n u x

arcopole Studio Annexe 7 Architectures Site du programme arcopole :

VTX FTP. Transfert de fichiers business par FTP - Manuel de l'utilisateur. Informations complémentaires : info@vtx.

Alfresco Guide Utilisateur

Manuel d utilisation de la plate-forme de gestion de parc UCOPIA. La mobilité à la hauteur des exigences professionnelles

IPS-Firewalls NETASQ SPNEGO

Guide de configuration. Logiciel de courriel

Rapports d activités et financiers par Internet. Manuel Utilisateur

AJOUTER UN COMPTE DE MESSAGERIE SUR UN SMARTPHONE

I La création d'un compte de messagerie Gmail.

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Failles des applications Web. Ce document est extrait du travail de diplôme de M. DIZON dans l état.

Contrôle d accès à Internet

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Documentation Liste des changements apportés

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Guide Utilisateur - Guide général d'utilisation du service via Zdesktop ou Webmail v.8. Powered by. Version EXOCA 1

Contrôle Parental Numericable. Guide d installation et d utilisation

INSTALLATION DE PEGASUS MAIL 3.12 c FR Avec l interface Harp

Vous y trouverez notamment les dernières versions Windows, MAC OS X et Linux de Thunderbird.

Tutoriel : Comment installer une compte (une adresse ) sur un logiciel de messagerie (ou client messagerie)?

Transcription:

Headers, cookies et sessions Chargement de fichiers (upload) Entêtes HTTP et redirections Gestion des cookies et des sessions de connexions Authentification Validation des données Programmation avancée 1

Téléchargement (upload) de fichiers Sur certains site, on autorise le client à télécharger un fichier : mettre une photo de son avatar sur un forum Pour un système de gestion de contenu : base de données catalogue mise à jour à distance le rédacteur d'une fiche produit peut charger une photo du produit après avoir saisi sa description Sur les sites proposant des échanges de fichiers : sons, textes, images, etc. Programmation avancée 2

Choix du fichier (du coté client) Le choix se fait dans un formulaire classique : les informations sur le fichiers sont envoyées à : <FORM ACTION="reception.php" les données sont en plusieurs parties : ENCTYPE="multipart/form data"> un bouton permet de choisir le fichier localement <INPUT TYPE="FILE" NAME="toto"> il faut indiquer une limite à la taille du fichier <INPUT TYPE="HIDDEN" NAME="MAX_FILES_SIZE" VALUE="102400"> // pour 100Ko Programmation avancée 3

Réception du fichier (sur le serveur) Lors de la soumission du formulaire (envoi) : le client envoie des informations sur le fichier le serveur le télécharge dans un dossier temporaire Le fichier reçoit un nom temporaire sur le serveur Programmation avancée 4

Réception du fichier (en PHP) Les informations sur le fichier sont placées dans : $_FILES["toto"] Cette variable est un tableau contenant le détail : $_FILES["toto"]["tmp_name"] Nom du fichier temporaire sur le serveur $_FILES["toto"]["name"] Nom du fichier initial sur le client (tel que le voyait l utilisateur) $_FILES["toto"]["type"] Type MIME du fichier ('image/gif', 'image/jpeg', etc.) $_FILES["toto"]["size"] Taille du fichier téléchargé (en octets) Programmation avancée 5

Contrôler le fichier (sur le serveur) On reçoit des informations sur le fichier, on peut les contrôler avant d'utiliser le fichier reçu : => un fichier a t il bien été choisi? if (empty($_files["toto"]["name"])) { } => le fichier est il du type attendu? if ($_FILES["toto"]["type"]=="image/gif") => le fichier a t il une bonne taille? if ($_FILES["toto"]["size"]<102400) Programmation avancée 6

Ranger le fichier (sur le serveur) A la fin du script le fichier temporaire est supprimé automatiquement du serveur => Après vérification, il faut le copier autre part => En général dans un dossier réservé du site => Le serveur doit avoir le droit d'écrire dans ce répertoire La copie du fichier se fait avec : copy(source,destination); copy($_files[ ]["tmp_name"],"dossier/"); Programmation avancée 7

Utilisation futur du fichier En général on stocke dans une base de données le nom du fichier tel qu il a été enregistré sur le serveur Exemple : table d utilisateur avec «avatar» USERS {pseudo, pass, avatar} ( toto, z21, toto.gif ) On utilise l URL du fichier dans le script d affichage : print("<img SRC=\"images/$avatar\">"); Programmation avancée 8

Entêtes HTTP (header) et redirections Le protocole HTTP envoie des informations au client avant le contenu de la page Web : Entêtes ou Headers : le type de fichiers qui va être reçu HTML, jpeg, etc. les cookies, les demandes d'authentification (cf. après) La fonction header() permet d'envoyer des infos en plus : Il faut la placer avant toute chose (avant tous espaces, balises HTML, etc. ) Utilisation principale : demandes de redirection : header("location: http://.../page.html"); Programmation avancée 9

Cookies et sessions : pourquoi? La navigation sur Internet est sans "souvenirs" Pas de conservation de données entre pages, entre différentes visites On a besoin de ce type de mécanisme pour : Authentification automatique sur un forum souvent visité depuis le même PC Panier électronique sur un site marchand Pages/sites Web "personnalisés" par l'utilisateur Comment : des données doivent conserver l "historique" Programmation avancée 10

Les cookies : qu'est ce? Les cookies sont de simples fichiers textes stockés localement par le navigateur Le nom de ces fichiers à la forme : nom@domaine.txt Son contenu : Une date de validité Des données sous la forme "variable=valeur" Programmation avancée 11

Les cookies : fonctionnement Les cookies sont définis par le serveur Web Quand ils sont reçus par le client, ils sont stockés localement A chaque retour sur le serveur (si la date de validité est correcte), le client envois les paires "variable=valeur" au serveur en même temps que la demande de page Ces variables peuvent être utilisées en PHP Les cookies sont supprimés localement par le navigateur, dès que la date de validité expire Programmation avancée 12

Les cookies en action Une seule fonction pour gérer les cookies en PHP : setcookie(nom,valeur,date d'expiration, chemin, domaine, sécurité); Pour créer/envoyer un cookie au client Il faut l'envoyer avant toute chose (Headers) Chemin : peu utilisé Domaine : autre nom du serveur (pas utilisé) Sécurité : utiliser une connexion sécurisé (SSL) Programmation avancée 13

Les cookies et PHP Exemple de création : <? setcookie("nom","toto", time()+(60*60*2)); // valide 2 heures?> Les cookies déjà définis et envoyés par le client définissent des variables PHP : print($_cookie["nom"]); affiche "toto" Programmation avancée 14

Les cookies et PHP Pour supprimer un cookie, il suffit de le créer sans valeur : setcookie("nom"); Attention les valeurs des cookies ne sont actualisés qu'au rechargement de la page En général, on combine avec une redirection On peut recharger en demandant le clic sur un lien Programmation avancée 15

Exemple auto inscription sur un forum L'historique : variable $login = dernier login utilisé Page d'accueil vérifiant l'existence de la variable (envoyée par le cookie) Si variable définie => accès direct au forum Sinon redirection vers un formulaire d'authentification Vérification des login et mot de passe saisis Création d'un cookie avec le login saisi Accès au forum Programmation avancée 16

Exemple 1/3 : la page d'accueil <? if (isset($_cookie["login"])) { // le cookie est défini => déjà venu print("salut $_COOKIE["login"]"); } else { // le cookie n'est pas défini // il faut se logguer header("location: form_login.html"); }?> reste de la page (pas vu si redirection) Programmation avancée 17

Exemple 2/3 : form_login.html <HTML> <FORM ACTION="verif_login.php" METHOD="POST"> <INPUT TYPE="TEXT" NAME"login"> <INPUT TYPE="SUBMIT" VALUE="Envoi"> </FORM> Programmation avancée 18

Exemple 3/3 : verif_login.php <? // la saisie est elle correcte? if (isset($post["login"]) &&!empty($post["login"])) { // on peut vérifier dans une basdo if (test du login sur basdo) { // envoi cookie valide 2 heures setcookie("login", $POST["login"], time()+(60*60*2)); }} header("location: form_login.php");?> Programmation avancée 19

Les sessions : qu'est ce? Les sessions fonctionnent sur le même principe On peut créer des variables associés à une session La session se termine à la fermeture du navigateur Les informations sur les sessions et les variables associés sont stockées sur le serveur (pas chez le client) C'est plus sûr Chaque client reçois un numéro de session unique (automatiquement stocké dans un cookie chez le client) On peut utiliser ce numéro en association avec une base de données (panier électronique, etc.) Programmation avancée 20

Les sessions : gestion en PHP Démarrer une session : session_start(); mêmes limites que header et setcookie : à exécuter avant toute chose Associer des variables : session_register("nomvar1","nomvar2", ); Les valeurs de ces variables sont conservées dans toutes les pages ouvrant une session. $_SESSION["variable"] = "valeur"; Programmation avancée 21

Authentification Le serveur peut envoyer une demande d'authentification au client (dans les headers) Le client demande un login + mot de passe à l'utilisateur, puis envois ces valeurs avec chaque demande de page du même domaine On utilise encore la fonction header() : Header("WWW Authenticate: Basic real=\"mon domaine\""); Header("HTTP/1.0 401 Unauthorized"); Programmation avancée 22

Authentification Les login et mot de passe saisis se retrouve dans des variables PHP : $PHP_AUTH_USER $PHP_AUTH_PW Il suffit de vérifier leur existence : fonction isset() Puis il faut vérifier les valeurs reçues : Un utilisateur et un mot de passe unique Dans une base de données d'utilisateurs Programmation avancée 23

Authentification : exemple <? $ok=false; if (isset($php_auth_user)) { if ($PHP_AUTH_USER=="toto" && $PHP_AUTH_PW=="truc") $ok=true; } if (!$ok) { Header("WWW Authenticate "); Header("HTTP/1.0 "); print("vous devez vous logger"); exit; }?> reste de la page HTML Programmation avancée 24

Validation des données Pourquoi? Contrôler les types et format des données : insertion dans une base de données assurer la validité des calculs suivants éviter les failles de sécurité éviter le détournement des scripts PHP ex : type date, entiers d'une BD ex : insertion de balises dans une chaîne Le contrôle en JavaScript peut être détourné Il est facile de copier un formulaire localement Programmation avancée 25

Validation des données Comment? Bien concevoir le formulaire : proposer des valeurs fixes (listes, dates) imposer les choix possibles (radio, case à cocher) Vérifier en PHP : test de valeurs et d'intervalles : if ($x<10) if ($variable="machin") conversion : intval($x) fonctions vérifiant le type : if (is_numeric($x)) Programmation avancée 26

Validation des données Vérifier le format avec une expression régulière : $format_date = "[0 9]{4} [0 9]{1,2} [0 9]{1,2}" ereg($format_date,$date); $format_mail = "^[[:alpha:]]+@[[:alpha:]]+\.[[:alpha:]]+$" ereg($format_mail,$mail); Programmation avancée 27

Expressions régulières "abc" : la chaîne contient "abc" "ab.d" : contient "ab", puis un caractère, puis "c" "[a f]" : une lettre entre a et f "[0 9]" : un chiffre entre 0 et 9 "[^abc]" : ne contient ni "a", ni "b", ni "c" "exp*" : plusieurs fois l'expression "exp+" : au moins une fois l'expression "exp{4}" : 4 fois l'expression "^exp" : commence par l'expression "exp$" : finit par l'expression Programmation avancée 28

La sécurité des données Le client peut saisir n'importe quoi : des balises HTML! des commandes SQL!! Il faut vérifier et filtrer les données de type chaînes strip_tags($chaine) : enlever les balises htmlentities($chaine) : remplace par des entités les ", ',\, sont automatiquement échappés \", \', \\ pour afficher sans : stripslashes($chaine) remplacer les <entrer> par des <BR> : nl2br( ) (pour conserver la mise en page ; comme <PRE>) Programmation avancée 29