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é, cryptage, est il possible d'afficher un script php


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Points : 70
    Points
    70
    Par défaut Sécurité, cryptage, est il possible d'afficher un script php
    Bonjour, ayant parcouru quelques forums à ce sujet, la conclusion semble assez net, il serait impossible d'afficher le code ou les données insérées dans un coode php côté client ou il aurait là une énorme faille.
    D'autre part j'ai lu à l'instant l'excellent article ici même :
    http://grunk.developpez.com/tutoriel...sse-securises/
    Et du coup je me pose la question de savoir si cela concerne uniquement la base de donnée ou si (part exemple) le mot de passe) est aussi concerné dans sa sécurité quand il est stocké dans un fichier php
    Si dans ce dernier cas il l'était, des scripts que l'on trouve à la volée sur internet seraient dangereux? Car les identifiants et mots de passes y sont écrit en clair...
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    // On définit un login et un mot de passe de base pour tester notre exemple. Cependant, vous pouvez très bien interroger votre base de données afin de savoir si le visiteur qui se connecte est bien membre de votre site
    $login_valide = "mon-identifiant";
    $pwd_valide = "mon-mot-de-passe";
     
    // on teste si nos variables sont définies
    if (isset($_POST['login']) && isset($_POST['pwd'])) {
     
    	// on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
    	if ($login_valide == $_POST['login'] && $pwd_valide == $_POST['pwd']) {
    		// dans ce cas, tout est ok, on peut démarrer notre session
     
    		// on la démarre :)
    		session_start (); etc.........
    Ou faudrait-il dans ce cas prévenir l'utilisateur du code qu'il a tout intérêt à 'hasher' son password.
    Mais dans la mesure où il serait impossible d'afficher le code php, dans ce cas pas de risque^^?
    Je serais heureux d'avoir un ou des avis compétents...
    Par avance merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ça serait effectivement mieux que le mot de passe soit écrit sous forme hachée.
    Plutôt que de l'écrire dans le script, on peut créer un fichier de configuration en dehors de l'arborescence web ou dans un dossier inaccessible : c'est plus simple à maintenir et au cas ou le serveur web se mettait à distribuer le code PHP, rien ne filtrerait.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Points : 70
    Points
    70
    Par défaut
    Bonjour @_Sabotage, sans faire de "parano" ;-) juste je cherche une sécurité fiable, sans non plus courir après "le 100%" inexistant, *donc mettre le fichier "config.php" dans un dossier "config" à la racine qui elle même est "protégée" par l'index... (j'ai lu aussi que la protection par "index.(...)" n'était pas vraiment fiable.( Faut-il tout croire, lol^^) *Sur un autre serveur oui mais beaucoups n'ont pas un second serveurs loués. Un dossier inaccessible, tu entends par là protégé par un fichier .htaccess ?
    Juste je me débrouille, j'apprend et note mais ne suis pas un as^^, stp, si t'as un moment, peux tu me donner, d'une façon très "concrète", tes idées si tu devais avoir à faire à un fichier de la sorte pour en maximiser la protection...? Et ai-je bien suivi ce que tu me disais? ...

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Points : 70
    Points
    70
    Par défaut
    (Au cas où je poste à nouveau^^)
    ci-dessous parraîtrait bien?...ou pas?... (pas si easy de trouver des idées d'identif en 2 ou 3 fichiers sur le net)
    fichier formulaire.html
    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
    <html>
    <FORM method=post action="login.php">
    Enregistrement d un utilisateur
    <table border=0>
    <tr>
    	<td>Nom</td>
    	<td>
    	<INPUT type=text name="admin">
    	</td>
    </tr>
    <tr>
    	<td>Mot de pass</td>
    	<td>
    	<INPUT  type="password" name="pass">
    	</td>
    </tr></table>
    <INPUT type="submit" value="Envoyer"><br /><br />
    Si vous n êtes pas le webmaster, veillez<a href="../index.php"> cliquez ici</a><br /><br />
    </html>
    fichier login.php
    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
    <?php
    // On inclu le fichier contenant les passes admin
    include ('config/config.php');
    // On accorde les données d'envoi et de réception
     $ID_a = $_POST['admin'];
     $ID_b = $_POST['pass'];
    $ID1 = $pass_admin;
    $ID2 = $pass_pass;
    //On vérifie que les données correspondent
    if( $ID1== $ID_a && $ID2== $ID_b )
    	// Si tout correspond on ouvre la session
     { session_start(); echo 'oook';
     
    }
       // Sinon on écrit qu'il y a une erreur et on quitte.
    else{
    die("Mauvais mot de passe. <a href='formulaire.html'>Veuillez essayer à nouveau...</a>"); // ... on affiche un message d'erreur et on arrête le script.
    exit;  
    }
    ?>
    fichier de stockage config.php là dans un dossier config (config/config.php)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     <?php
      $pass_admin="moi"; // admin
      $pass_pass="345"; // Password
    echo $_POST['admin']; 
    $ligne=$admin.":".crypt($pass);
      session_start(); // On lance la session
      ?>
    reste a placer le fichier config en sécu, mais comme il est inclus je me demande si ce n'est pas même plutôt pire que de mettre les logins directement dans le fichier principal...? (C'est signé moi, je crais le pire, lol^^...)

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Utilise les fonctions password_hash() et password_verify() comme décris dans l'article que tu as cité au début.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Points : 70
    Points
    70
    Par défaut mot de passe mdp crypté dans fichier txt texte config php
    Merci pour réponses alors pour commencer simple, j'ai tenté (à la façon d'un .htaccess / .htpasswd) d'employer le code (ci-dessus) et dans un 1er temps de crypter le mot de passe qui se trouve dans dans le fichier config/config.php
    disons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
      $pass_admin="$1$FO43ABNP$v2mYe7BEG0eyH5ONyQIx1"; // Password admin CRYPTE
    echo $_POST['admin']; 
    $ligne=$admin.":".crypt($pass);
      session_start(); // On lance la session
      ?>
    Je laisse le formulaire d'envoi tel-quel >> et comme ça ne fonctionne pas, j'écris le "real path" dans le fichier de transit 'login.php'
    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
    <?php  print "Bonjour : ";
    if (!isset($_POST['txt'])) {
    	$txt = $_POST['pass'];
    	if (preg_match('~[#[{<"/">}\];]~', $txt))
    		die ('<span style="color:red">Par mesure de sécurité,</span><br />
    	Ces carractères spéciaux ne sont pas autorisés [#[{&lt;""&gt;}\];]</i>: '.$ligne.'
    	<br />
    	Merci pour votre compréhention.<br />RETOUR <a href="formulaire.html">ICI</a>');
      } // chemin complet du fichier config >>>>>>>
      include("/web/monsite/www/dossier/DB-txt/config/config.php"); // On inclut config.php
      $pass=$HTTP_POST_VARS["pass"]; print " , "; // $pass vient d'un formulaire POST
      if ($pass_admin==$pass){ // Si le pass envoyé est bien celui de config.php...
      session_register("pass"); // ... on enregistre la session $pass
      }else{ // Sinon,...
      die("Mauvais mot de passe. <a href='formulaire.html'>Veuillez essayer à nouveau...</a>"); // ... on affiche un message d'erreur et on arrête le script.
      }
      
      ?><a href="page-admin.php">Réussite, cliquez ici</a> ?>
    Et même avec le real path ça ne fonctionne pas, ma question, comment crypter et accédes à l'identification dans une configuration comme celle-ci?

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Déjà avant faut mettre session_start() avant tous les echo.
    Ensuite $HTTP_POST_VARS et session_register() sont des éléments obsolètes depuis PHP5.4 au moins.

    Ensuite pour ton débugage que vaut le mot de passe POST une fois chiffré ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Attention : tu as des $ dans une chaine encadrée par des doubles quotes : $pass_admin="$1$FO43ABNP$v2mYe7BEG0eyH5ONyQIx1";.
    Par défaut, une chaine entre doubles quotes va tenter d'interpréter ce qu'il considère comme des variables, en l’occurrence $1, $FO43ABNP et $v2mYe7BEG0eyH5ONyQIx1. Comme je doute que ces variables existent, tu risques d'obtenir un résultat bizarre...
    Apostrophes ou guillemets : lesquels choisir ?.
    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]

Discussions similaires

  1. Est ce possible d'afficher les accents??
    Par Bebert71 dans le forum GLUT
    Réponses: 15
    Dernier message: 28/04/2009, 17h35
  2. Réponses: 7
    Dernier message: 12/02/2008, 11h29
  3. [SQL] Est-il possible d'afficher le résultat d'une requête dans un cadre
    Par dessinateurttuyen dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 18/07/2006, 17h52
  4. [W3C] Est-il possible d'afficher un div par dessus une applet ?
    Par drinkmilk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/02/2005, 10h22
  5. Réponses: 3
    Dernier message: 29/07/2003, 09h38

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