IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

$_SERVER[] et Sécurité


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Par défaut $_SERVER[] et Sécurité
    Bonjour

    Je voulais Identifier les IP sur mon site

    en utilisant : $_SERVER['HTTP_X_FORWARDED_FOR'] ; $_SERVER['HTTP_CLIENT_IP'] et $_SERVER['REMOTE_ADDR'].

    Mais si j'ai bien compris les variable $_SERVER ne sont pas fiables...

    Cela veut dire que quelqu'un pourrait modifier mes variables serveur ???

    Même si on utilise le HTTPS ???

    Quelqu’un pourrait se connecter en faisant croire qu'il utilise mon IP ???

    J'attends vos confirmations... c'est fou l'informatique

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Bon déjà je ne trouve pas $_SERVER['HTTP_X_FORWARDED_FOR'] et $_SERVER['HTTP_CLIENT_IP'] dans la doc officielle, mais je vais supposer que la remarque sur la fiabilité est la même que pour $_SERVER['HTTP_REFERER'] : c'est une information fournie par le poste client (via la requête HTTP) et par principe, on ne fait pas confiance à ce qui vient du client. Tu n'as aucune maîtrise sur ce qui se trouve dans la requête, ni aucune garantie que l'information est renseignée et correctement renseignée.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Par défaut
    et $_SERVER['REMOTE_ADDR'] lui il est plus sûr ? un peu sûr ou pas sûr

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Bonjour,

    Les variables $_SERVER['HTTP_X_FORWARDED_FOR'] et $_SERVER['HTTP_CLIENT_IP'] servent à essayer de récupérer l'adresse IP d'un utilisateur même s'il est derrière un proxy.

    Comme l'a dit @Celira, tu ne peux pas te fier à 100% aux variables $_SERVER, malheureusement, tu n'as pas le choix si tu souhaite récupérer l'adresse l'IP ^^
    Personnellement, quand je sauvegarde une adresse IP en DB (pour un concours par exemple), je sauvegarde également toujours le USER_AGENT ($_SERVER['HTTP_USER_AGENT']).
    Car même si, pour le commun des mortels, c'est compliqué de changer les variables $_SERVER, changer son IP est à la portée du premier venu mais peu de gens connaissent le USER_AGENT.
    Avoir une paire de données plutôt qu'un seule permet d'identifier un peu mieux les gens (on a détecté énormément de tricheurs dans des concours grâce à cette technique, car ils pensaient que juste changer l'IP était suffisant)

  5. #5
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Par défaut
    Si j'ai bien compris tout ce qui est $_SERVER['HTTP_XXX vient des entêtes HTTP, modifiable par le client

    Mais les autres variables $_SERVER['REMOTE_ADDR'] peuvent -elle aussi être modifié par le client ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $_SERVER['REMOTE_ADDR']
     
    $_SERVER["REQUEST_URI"]
     
    $_SERVER['SERVER_NAME']
    C'est quand même fiable ou c'est aussi modifiable

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Le principe de base : Never Trust User Input (ne jamais faire confiance à l'utilisateur) Il faut savoir que ça inclut en fait tout ce qui est transmis dans la requête HTTP, que ça nécessite théoriquement une intervention humaine (formulaire...) ou non (entêtes HTTP).
    L'IP du client provenant du client, ça rentre dans la catégorie des données extérieures, donc n'est pas garanti.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Toutes les variables $_SERVER qui commence par HTTP_ peuvent être modifiée via une entête HTTP. Ce qui veux dire que elle ne sont pas des sources fiables de données.
    On peut les utiliser pour essayer d'avoir une infos , mais il ne faut pas qu'une sécurité quelconque repose sur cette info.

    Les valeurs REMOTE_ sont partiellement sûre dans le sens où elle sont le reflet du handshake TCP/IP , donc non altérable par le client facilement.

    REMOTE_ADDR aura souvent la valeur du proxy et non l'adresse IP réelle. ET donc HTTP_X_FORWARDED_FOR pourrait contenir la véritable adresse IP du client mais c'est pas garantie. Beaucoup de proxy l'anonymise par exemple.

    Dans tous les cas il faut appliquer les sécurité d'usage sur ces données quand on veux les utiliser.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [Sécurité] protéger les variables $_SERVER
    Par grunk dans le forum Langage
    Réponses: 5
    Dernier message: 11/03/2008, 19h03
  2. [Sécurité] Durée de vie des $_SERVER
    Par Invité dans le forum Langage
    Réponses: 3
    Dernier message: 17/08/2007, 15h27
  3. La Sécurité dans Access
    Par Maxence HUBICHE dans le forum Sondages et Débats
    Réponses: 81
    Dernier message: 24/06/2007, 02h07
  4. [Sécurité] Peut on créer une variable $_SERVER
    Par Cr@zyDeep dans le forum Langage
    Réponses: 6
    Dernier message: 12/05/2006, 10h27
  5. Pb de sécurité
    Par xtrips dans le forum Débuter
    Réponses: 6
    Dernier message: 16/04/2003, 08h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo