Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/10/2006, 23h28   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 32
Points : 12
Points : 12
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 :
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:
Citation:
"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.
Helifyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2006, 00h04   #2
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
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.
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2006, 00h20   #3
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
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.
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2006, 22h33   #4
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 32
Points : 12
Points : 12
Merci pour l'accueil et désolé pour les balises.

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

Code :
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
Helifyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2006, 22h37   #5
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
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.
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2006, 23h05   #6
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 32
Points : 12
Points : 12
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
Helifyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2006, 23h12   #7
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
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 :
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>
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2006, 23h14   #8
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 32
Points : 12
Points : 12
Merci beaucoup ! Cette fois ça marche !

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

Encore merci !
Helifyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2006, 23h38   #9
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Avec plaisir
N'oublie pas le tag
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 19h20   #10
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 32
Points : 12
Points : 12
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 ?

Helifyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 19h39   #11
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Personnellement, j'inclus le script qui contient la fonction md5 (fais une recherche Google).
Sinon, as-tu bien un champ "md5" dans ton formulaire ?
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 20h12   #12
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 32
Points : 12
Points : 12
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.
Helifyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 20h42   #13
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
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 :
<script type="text/javascript" src="chemin_du_script/md5.js"></script>
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 21h07   #14
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 32
Points : 12
Points : 12
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 ??
Helifyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 22h36   #15
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
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.
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 22h46   #16
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 32
Points : 12
Points : 12
Cette fois tout est nickel !

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

PS: promis je me mets à l'AJAX !
Helifyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 22h52   #17
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Avec grand plaisir
Tu verras, AJAX, avec un peu d'habitude, c'est génial !
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h33.


 
 
 
 
Partenaires

Hébergement Web