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

JavaScript Discussion :

Les variables globales


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut Les variables globales
    Bonjour,

    Mon code JS comporte 2 fonctions :
    - une fonction changepwd() qui s'exécute sur une page html, qui a pour but de changer la valeur de la variable log et pwd.
    - une fonction checkpwd(), qui s'exécute sur une autre page, qui a pour but de récupérer ces valeurs et les utilisent.

    Voici mon code :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    log = "21232f297a57a5a743894a0e4a801fc3";
    pwd = "21232f297a57a5a743894a0e4a801fc3";
     
    function checkpwd()
    {
    	var logadmin = document.mdpform.login.value;
    	var md5login = MD5(logadmin);
     
    	var pwadmin = document.mdpform.mdp.value;
    	var md5pw = MD5(pwadmin);
     
    	if (md5login == log && md5pw == pwd)
    	{
    		alert('Informations correctes !\nRedirection !');
    		window.location.replace('index5.htm');
    	}
     
    	else
    	{
    		if (md5login != log || md5pw != pwd)
    		{
    			alert('Informations incorrectes !\nVeuillez r\351essayer.');
    			window.location.reload();
    		}
    	}
    }
     
    function changepwd()
    {
    	var x = document.mdpconfig.logincfg.value;
    	var md5x = MD5(x);
    	var y = document.mdpconfig.mdpcfg.value;
    	var md5y = MD5(y);
     
    	if (!x || !y)
    	{
    		alert('Merci d\'entrer une valeur dans les zones de texte.');
    	}
    	else
    	{
    		log = md5x;
    		pwd = md5y;
    		alert('Informations sauvegard\351es !');
    		window.location.replace('index5.htm');
    	}
    }
    Comment faire pour que la fonction changepwd() change la valeur des 2 variables et que la fonction checkpwd() prenne ces changements en compte ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    JavaScript s'exécute dans le contexte d'une page. Si tu changes de page, tu perdras toutes les variables globales ou pas.

    Pour passer des informations d'une page à une autre, plusieurs options : paramètre d'URL, paramètre de session, cookie, localStorage...
    One Web to rule them all

  3. #3
    Invité
    Invité(e)
    Par défaut
    On peut faire des sessions en js ??
    Pour l'option parametre URL, c'est pas possible puisque les 2 pages ne se suivent pas.

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Il y a bien le sessionStorage, mais je pensais davantage à des données de session stockées côté serveur.
    One Web to rule them all

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ah d'accord mais ceci n'est pas possible. Enfaite je travaille sur un projet basé sur un boîtier domotique pour mes études. Ce boîtier comporte un serveur web intégré mais il n'a pas la possibilité de fonctionner avec du PHP. De ce fait je suis obligé de passer par le js.
    Je vais me renseigner sur le sessionStorage et si j'ai des problèmes, je me retourne vers vous !
    Merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    J'ai utilisé la technique avec les cookies.
    J'ai l'impression que cela fonctionne, cependant lorsque je clique sur "OK" dans l'alert qui s'affiche, la première fois cela ne fonctionne pas et donc ça recharge la page et puis je retape les bons identifiants et je reclique sur "OK" et la seulement cela fonctionne.
    Savez-vous pourquoi cela ne fonctionne qu'à la deuxième fois ?

  7. #7
    Membre actif

    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 183
    Points : 274
    Points
    274
    Par défaut
    Rassure moi, en voyant ton code, je remarque que le mot de passe est dans la page, c'est pas normal déjà
    Ensuite tu dis que tu utilises les cookies ?
    Qu'est-ce que tu stockes dans les cookies ? le password ? si c'est le cas arrête tout de suite et revois ton code

  8. #8
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Oups je n'avais pas lu le code, effectivement ça fait peur ! Une authentification ne sert absolument à rien si elle se fait côté client, ça revient à lui donner la clé avec la serrure.
    One Web to rule them all

  9. #9
    Invité
    Invité(e)
    Par défaut
    En utilisant les cookies, je supprime le mot de passe qui se trouve dans le code. (le premier bout de code que j'ai donné, j'ai essayé avec des variables globales, pas les cookies)
    Je sais qu'une authentification côté client n'est pas du tout sécurisé étant donné qu'il a accès à la clé, cependant je n'ai pas d'autre choix (me semble t-il) puisque je ne peux rien faire côté serveur ..
    Voici mon code actuel en utilisant les cookies :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    function checkpwd()
    {
    	var logadmin = document.mdpform.login.value;
    	var md5login = MD5(logadmin);
    	var pwadmin = document.mdpform.mdp.value;
    	var md5pw = MD5(pwadmin);
     
    	if(readCookie('log'))
    		{	
    			var cookielog = readCookie('log');
    			var cookiepwd = readCookie('pwd');
     
    			if(md5login == cookielog && md5pw == cookiepwd)
    			{
    				alert('Informations correctes !\nRedirection !');
    				document.location.href = 'index5.htm';
    			}
    			else
    			{
    				alert('Informations incorrectes !\nVeuillez r\351essayer.');
    				window.location.reload();
    			}
    		}
    		else
    		{
    			var defaultlog = "21232f297a57a5a743894a0e4a801fc3";
    			var defaultpwd = "21232f297a57a5a743894a0e4a801fc3";
     
    			if(md5login == defaultlog && md5pw == defaultpwd)
    			{
    				alert('Informations correctes !\nRedirection !');
    				window.location.replace('index5.htm');
    			}
    			else
    			{
    				alert('Informations incorrectes !\nVeuillez r\351essayer.');
    				window.location.reload();
    			}
    		}
    }
     
    function changepwd()
    {
    	var x = document.mdpconfig.logincfg.value;
    	var md5x = MD5(x);
    	var y = document.mdpconfig.mdpcfg.value;
    	var md5y = MD5(y);
     
    	if (!x || !y)
    	{
    		alert('Merci d\'entrer une valeur dans les zones de texte.');
    	}
    	else
    	{
    		createCookie('log', md5x, 84);
    		createCookie('pwd', md5y, 84);
    	}
    }
    Je n'ai pas inclus les fonctions createCookie() et readCookie() qui elles se trouvent plus haut dans le code.

  10. #10
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Passer du code en clair dans un script au code en clair dans un cookie ne résout rien du tout, c'est toujours sécurité zéro. A quoi bon faire un formulaire d'authentification si n'importe qui peut passer à travers en trente secondes ? Tu dis faire ça pour tes études, ça m'étonnerait que tes profs se laisser berner par une authent aussi grotesque.
    One Web to rule them all

  11. #11
    Invité
    Invité(e)
    Par défaut
    Il n'est pas en clair, il est crypté en MD5 (ok c'est facile à décrypter mais bon). Le prof qui est en charge de mon projet s'y connait pas donc aucune aide venant de lui n'est possible.
    Le problème c'est que je n'ai aucune autre solution, je ne vois pas comment faire si je ne peux rien faire côté serveur ..

  12. #12
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Le cryptage MD5 ne sert absolument à rien si tu compares les hash côté client... Tout ceci n'est que de la poudre aux yeux, il n'y a aucune sécurité et je pense sincèrement que tu perds ton temps. Si ce boitier est relié à un réseau local, alors la sécurité du réseau local devrait suffire. S'il est relié à Internet, alors tu peux déporter les informations sensibles sur un serveur distant.
    One Web to rule them all

  13. #13
    Invité
    Invité(e)
    Par défaut
    Tu as certainement raison. Je vais abandonner l'idée de changer les informations de connexions. Merci d'avoir pris du temps pour me répondre.

  14. #14
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    Ce boîtier comporte un serveur web intégré mais il n'a pas la possibilité de fonctionner avec du PHP. De ce fait je suis obligé de passer par le js.
    Le boitier comporte un serveur web intégré, et il est possible que le système domotique puisse communiquer avec le serveur intégré via JS.

    Alors, même si ce serveur web intégré ne peu pas implémenter php, il peu surement sans se tromper stoker, et gérer un ensemble d'information... Soit il peu ajouter de nouvelles données que l'on peu lire par la suite, soit il ne peu pas... dans ce cas , cela est difficile d’admettre que ce soit un serveur.

    Dans les deux cas, tu peu quand même aller en lecture sur le serveur : que ce soit des mots de passes que tu ajoutes dans le domotique ou lire des données fourni par les composants...

    donc, la liaison MDP -> client, peu à tout moment se résumer à comparer un "mot clé" fourni par le user, et au pire des cas, un "numéro de serie" fourni par le sytem domotique

    pour moi, ça paraitrait assez logique
    Conception / Dev

Discussions similaires

  1. Les variables globales en C++
    Par jeje99 dans le forum C++
    Réponses: 4
    Dernier message: 03/02/2006, 15h52
  2. Réponses: 13
    Dernier message: 21/11/2005, 11h05
  3. Supprimer la mémoire utilisée par les variables globales
    Par dnaprotector dans le forum OpenGL
    Réponses: 4
    Dernier message: 21/07/2005, 13h18
  4. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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