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 :

[Sécurité] Mot de passe dans le fichier : est-ce sécurisé ?


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 216
    Points : 159
    Points
    159
    Par défaut [Sécurité] Mot de passe dans le fichier : est-ce sécurisé ?
    Bonjour à tous

    Voilà, il y a une personne qui va devoir s'authentifier sur une page (l'admin), du coup je ne passe pas du tout par une base de données pour l'authentification... Et pour diverses raisons, je n'utilise pas non plus de .htaccess...

    Alors j'ai bricolé un code comme ça pour la page d'authentification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?php
    if (isset($_GET['valid'])) {
    	$login=strip_tags($_POST['login']);
    	$pass=strip_tags($_POST['pass']);
    	if ( ($login=="admin") && ($pass="mon_pass") ) {
    		$expire = 24*3600;  // Duree de 1 jour
    		$pass=md5($pass);
    		setcookie($login,$pass,time()+$expire);
    		header("Location:gestion.php");
    }
    ?>
     
     
    ()()()()()()
     
    Identification nécessaire :
     
    <form name="form" method="post" action="index.php?valid=ok">
    LOGIN : <input type="text" name="login">
    PASSWORD : <input type="password" name="pass">
    </form>
     
    ()()()()()()
    (y'a pas tout hein, c'est juste pour montrer le principe... les "()()()()()()" c'est des zones que j'ai enlevées, car ça sert à rien dans ce post ^^).

    Donc voilà, vous noterez que le mot de passe (volontairement changé ici ^^) est dans le code. Ma question c'est : est-ce sécurisé ?
    Ben oui, finalement, qui pourrait lire du code php comme ça ?
    En plus vous remarquerez que j'utilise des strip_tags...

    Merci d'avance pour vous réponse

  2. #2
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Ben oui, finalement, qui pourrait lire du code php comme ça ?
    Tu as ta réponse

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 216
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par Sylvain71
    Tu as ta réponse
    Merci bien, je tenais juste à être sûr . Ca me rappelle cette histoire de fichier config.php, qui contient les infos pour se connecter à la base de données, accessible sur les forums phpBB... Ca n'a en fait rien de méchant donc .

    Merci pour la réponse !

  4. #4
    Membre à l'essai Avatar de ngmsky
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    Bonjour,
    premièrement, je suis loin d'être expert en sécurité, encore mois en programmation (ou en php )de façon générale. Mais je donne juste mon avis, que je pense avoir lu quelque part ...



    Citation Envoyé par Msieurduss Voir le message
    Ma question c'est : est-ce sécurisé ?
    Ben oui, finalement, qui pourrait lire du code php comme ça ?
    - A la première question je dirai : Non et à la deuxieme je dirai tout le monde.

    Sénario :
    1/ le serveur (ou moteur) php tombe en panne.
    2/ un visiteur lance ta page d'authentification : monSIte.com/connexion.php
    3/ le serveur web (apache par exemeple) lit (parcourit) le conde source de connexion.php,
    4/ à chaque fois qu'il trouvera trouvera quelque chose de cette forme <?php, ... code php .... ?> il l'en verra au serveur php pour qu'il l'exécute (ou iterprete) et le retourner la version html de ce bout de code.
    5/ le serveur php etant en panne (bug, non démarré, ou autre état), il n'interpretera pas les données php.
    6/ je ne me souviens plus pour quelle raison exacte, et comment, mais suite au 5/, apache reçoit en retour le même code php qu'il avait evoyé, donc non interprété.
    7/ Apache l'ajoutera au code html.
    8/ Arrivée en fin du fichier, apache retourne la page demandé au visiteur.

    Donc si au 5/ et 6/ le code php contenait le mot de passe, comme le tient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( ($login=="admin") && ($pass="mon_pass") ) {
    il sera affiché à n'importe quel visiteur qui arrivera sur la page d'authentification.

    ------


    Le cas du config.php, si tu vérifie bien, tu vera que :

    le fichier connexion.php doit faire une inclusion du fichier config.php ( include (".... config.php") ; )
    Avec la condition suivante : le fichier config.php ne doit jamais être accéssible au client web (navigateur ou autres).
    Pour le faire, 2 cas possibles :

    cas 1/ config.php se trouve dans un dossier contenant un .htaccess interdisant tout accès web (deny from all)
    cas 2/ config.php se trouve au même niveau que connexion.php mais le .htaccess de leur dossier (ou dans un des dossier parent) interdit l'accès au fichier config.php à tous. // quelque chose genre : <fille> *config.php> deny from all </file>

    Dans cette condition, même ci le serveur php est en panne, tout ceque les viiteur pourra voir, au pire ç aserait : l'instruction: include (".... config.php") ;
    Il sauront certe où se trouve ce fichier mais ne veront jamais ton mot de passe parce que le serveur php n'aura pas exécuté cette instruction, et donc n'aura pas inclus le contenu de config.php.

    Et si un visiteur essaie d'afficher directement la page monsite.com/.../config.php il aura une erreur Acces denied - erreur 403, le pense !

    C'est cette methode qu'utilise oscommerce pour stoquer le le mot de passe dans un fichier, tout en el sécurisant pour le web.

    Après, il faut aussi sécuriser ce fichier, au niveau systeme (serveur), cad avec des droits de lecture très restrains, sinon un utilisateur du systeme pourrai lire son contenu.

    Personnellement, je te conseil de le mèttre en 440 (et de permetre éventuellement à apache ? ou plutôt à php ? de le lire, à confirmer)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/08/2011, 15h06
  2. crypter un mot de passe dans un fichier.xml
    Par ghnawfal dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 21/12/2010, 15h00
  3. Expiration Mot de passe dans un fichier .htaccess
    Par gege87270 dans le forum Apache
    Réponses: 1
    Dernier message: 17/01/2008, 15h08
  4. sécuriser un mot de passe dans un fichier de config
    Par vegas dans le forum Sécurité
    Réponses: 5
    Dernier message: 26/10/2007, 09h31
  5. apache su mot de passe dans un fichier
    Par jean-jacques varvenne dans le forum Apache
    Réponses: 4
    Dernier message: 31/01/2005, 20h07

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