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é] Problème avec Javascript dans un code d'authentification


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Points : 25
    Points
    25
    Par défaut [Sécurité] Problème avec Javascript dans un code d'authentification
    Bonjour !

    J'ai essayé d'appliquer un tuto de développez traitant d'un système de connexion par $_SESSION globalement sûr (http://bob.developpez.com/phpauth/), mais php me retoure un message d'erreur en rapport avec le javascript sensé renvoyer le mot de passe crypté en md5 à la place du mot de passe en clair.

    Pour vous éviter de lire tout le tuto voilà le script en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     "function submit_pass()
    {
      pass=document.forms['log'].passwd.value;
      document.forms['log'].passwd.value="";
      buf=MD5(pass);
      document.forms['log'].md5.value=buf;
     
      return true;
    }"
    Et mon message d'erreur:
    "Parse error: syntax error, unexpected '=' in /usr/export/www/hosting/altyr/minisite/menu_droite.php on line 4"
    Sachant que la ligne 4 correspond à la première ligne de la fonction submit_pass().
    Je n'ai pas de connaissance en javascript/AJAX. Je compte m'y mettre un jour ou l'autre, mais en attendant je suis un peu bloqué. J'espère que quelqu'un pourra me dire d'où vient l'erreur.

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    et bienvenue !

    Est-ce que tu peux :
    - utilisez les balises [code] pour ton... code
    - nous donnez un peu plus de code car là c'est un peu flou.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par Mr N.
    - nous donnez un peu plus de code car là c'est un peu flou.
    +1
    Il s'agit d'une erreur de syntaxe php. Nous avons donc besoin du code entourant ta fonction js pour trouver l'erreur.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Merci pour l'accueil et désolé pour les balises.

    Pour le code pas de problème le voilà:

    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
    <?php
    function submit_pass()
    {
      pass=document.forms['log'].mdp.value;
      document.forms['log'].mdp.value="";
      buf=MD5(pass);
      document.forms['log'].md5.value=buf;
     
      return true;
    }
    ?>
    <div class="menudroite">
    <form id='log' method='post' action='http://altyr.al.funpic.org/auth.php' onsubmit='javascript:submit_pass();'>
    	<input type='hidden' name='md5' />
    	<input type="text" class="pseudo" name="login" value="login" size="15" onfocus="this.select();" tabindex="10" /> <br/>
    	<input type="password" class="mdp" name="mdp" value="*******" size="15" onfocus="this.select();" tabindex="20" /> <br/>
    	<input type="submit" class="bouton" value="OK" tabindex="30" accesskey="enter" />
    </form>
    Ya pas grand chose vu que c'est juste le code de mon menu de droite que j'inclue sur la page principale. Mais le problème vient bien de cette partie. Et sans doute du flash auquel je ne pompe rien

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Ta fonction submit_pass() est du javascript, pas du php. Tu ne dois donc pas l'entourer des balises <?php ?>, mais l'envoyer directement au navigateur comme les reste du html.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Il n'y a quand même pas une balise quelconque a mettre ?

    Parce que là le navigateur me l'affiche tel quel comme du texte:

    http://altyr.al.funpic.org//minisite/menu_droite.php

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par Helifyl
    Il n'y a quand même pas une balise quelconque a mettre ?
    Si bien entendu : <script type="text/javascript">
    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script type="text/javascript">
    <!--
    function submit_pass()
    {
      pass=document.forms['log'].mdp.value;
      document.forms['log'].mdp.value="";
      buf=MD5(pass);
      document.forms['log'].md5.value=buf;
     
      return true;
    }
    // -->
    </script>

  8. #8
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Merci beaucoup ! Cette fois ça marche !

    Il faut vraiment que je me mette à l'AJAX moi...

    Encore merci !

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Avec plaisir
    N'oublie pas le tag

  10. #10
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Hmm désolé je crois que j'ai crié victoire trop vite: la fonction javascript me supprime bien le champs 'mdp' qui contient le mot de passe en clair mais par contre je ne reçois rien dans la variable $_POST['md5'] qui devrait contenir le mot de passe crypté en md5.

    Est-ce que le javascript reconnait la fonction md5 telle qu'on la voit ici ?


  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Personnellement, j'inclus le script qui contient la fonction md5 (fais une recherche Google).
    Sinon, as-tu bien un champ "md5" dans ton formulaire ?

  12. #12
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Je vais essayer d'inclure md5, mais je ne suis pas sûr que le problème vienne de là, dans la mesure où j'ai fait des tests et que php l'utilise correctement chez cet hébergeur.

    Sinon pour le champ oui il y est (on peut le voir dans mon post d'hier à 22h35). Il est caché mais je ne pense pas que ce soit l'origine du problème.

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par Helifyl
    Je vais essayer d'inclure md5, mais je ne suis pas sûr que le problème vienne de là, dans la mesure où j'ai fait des tests et que php l'utilise correctement chez cet hébergeur.
    Attention : php et js sont des langages n'ayant strictement rien en commun. Donc si php supporte md5, cela ne veut pas dire que js le supporte. Déjà parce que php tourne côté serveur, et js côté client.

    Voici un script js md5 : http://pajhome.org.uk/crypt/md5/md5src.html

    Tu copies la source, tu la mets dans un fichier md5.js, et dans le head de ta page, tu inclus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="chemin_du_script/md5.js"></script>

  14. #14
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Encore raison, c'était bien ça. Merci

    Par contre pour les inscriptions je vais crypter les mdp directement avant de les stocker dans la db (normal). Est-ce que la fonction md5 de php correspond à hex_md5, b64_md5 ou à str_md5 du fichier md5.js ??

  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    J'avoue que je ne sais pas.
    Voici un autre script où il suffit d'appeler MD5() :
    http://commun.webingenia.com/js/MD5.js
    C'est celui que j'utilise personnellement, et le résultat est exactement le même que la fonction md5() de php.

  16. #16
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Cette fois tout est nickel !

    Je sais que je me répète mais merci à toi vg33

    PS: promis je me mets à l'AJAX !

  17. #17
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Avec grand plaisir
    Tu verras, AJAX, avec un peu d'habitude, c'est génial !

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

Discussions similaires

  1. Problème avec syntaxe dans un code
    Par titiana dans le forum Images
    Réponses: 4
    Dernier message: 17/07/2013, 20h47
  2. Problème avec JavaScript dans JSP
    Par aminos88 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 22/06/2009, 22h31
  3. Réponses: 8
    Dernier message: 15/12/2006, 17h15
  4. Problème de paramètres dans mon code javascript
    Par cocacollection dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/03/2006, 10h53
  5. Problème avec Between dans un code
    Par Sendo dans le forum Access
    Réponses: 4
    Dernier message: 02/10/2005, 18h44

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