CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Sécurité de mon script en [JS]

Pseudo supprimé
Pseudo supprimé 21 mars 2015 à 14:17:29

Bonjour,

Je tente de savoir si mon script est assez sécurisé pour protéger l'accès à un site avec un code en JavaScript.

Si le code est bon, alors on accède à la bonne page par ce principe :

window.location.href = mdp + ".htm"

Voilà le résultat donné de la fonction quand j'y tape mon mot de passe :
875

Sauriez-vous retrouver mon mot de passe ? Est-ce assez sécurisé ?
Voilà la fonction checksum :

function checksum(mdp)
{
  var ok = 0, lg = mdp.length, checksum = 0, bl = "", pr = 0;
  var tab = "3IRsJwGFz!2@oiS}1APDBtf{W)kX08n6xeQcbVC9LlUNvy.m?rOaEh5u#dqKMgjYH7Zp4T$";
  var tab2 = "KQ4uPsl3CEi6NaDowxJLX95tm0FhAb7qcVYZkHM2zdUgO1TGeRnyWBSvj8Iprf";
  for(var i=0;i<lg;i++)
  {
    for(var y=0;y<71;y++)
    {
      if(mdp[i]==tab[y])
      {
        pr += y + i + lg;
        y = 71;
      }
    }
  }
  while(pr>50)pr-=50;
  var t = pr;
  while(pr>0)
  {
    tab2 = (pr%3==1) ? " " + tab2 : tab2;
    pr--;
  }
  tab2 = "    " + tab2;
  for(var i=0;i<lg;i++)
  {
    for(var y=0;y<71;y++)
    {
      if(mdp[i]==tab2[y])
      {
        checksum += t*i + y/t + ((y%2==0) ? y/2 : 1);
        checksum *= (y%3==0) ? 1.3 : 1.23;
        checksum += y + t + lg - i;
        checksum *= (y%4==1) ? 1.63 : 1.78;
        checksum += t/(y+1) - i*lg + 62.3;
        checksum *= (i+t+lg+y)%2==0 ? 1.38 : 1.52;
        while(checksum>10209)checksum-=10209;
        y = 71;
      }
    }
  }
  checksum +=  (lg+t)*i + ((t*lg%5==0) ? 5.6 : 4.2);
  checksum = parseInt(checksum);
  if(checksum<0)checksum=-checksum;
  while(checksum>2419)checksum-=2419;
  return checksum;
}
[notch]
[notch]
Niveau 10
21 mars 2015 à 14:28:46

Je pense pas que sécuriser un site avec du js soit une bonne idée.

Message édité le 21 mars 2015 à 14:31:19 par [notch]
Chocolayte
Chocolayte
Niveau 73
21 mars 2015 à 14:33:49

Avec les mots de passes lbbq0sli, a9se8ssj, eayqk22, le checksum renvoie "875". Si c'est ce simple nombre qui détermine si le mot de passe est correct ou non, ça ne me semble pas très viable comme solution. Typiquement, toute sécurité faite en javascript est à éviter

Chocolayte
Chocolayte
Niveau 73
21 mars 2015 à 14:34:57
function ChaineAleatoire(nbcar)
{
  var ListeCar = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9");
  var Chaine ='';
  for(i = 0; i < nbcar; i++)
  {
    Chaine = Chaine + ListeCar[Math.floor(Math.random()*ListeCar.length)];
  }
  return Chaine;
}


do {
  mdp = ChaineAleatoire(8);
  result = checksum(mdp);
} while (result != 875);

alert(mdp);

Tu noteras que ça ne tient qu'en quelques lignes.

Pseudo supprimé
Pseudo supprimé 21 mars 2015 à 14:51:10

Le 21 mars 2015 à 14:28:46 [notch] a écrit :
Je pense pas que sécuriser un site avec du js soit une bonne idée.

Je pense que c'est néanmoins possible.

Pseudo supprimé
Pseudo supprimé 21 mars 2015 à 14:52:11

Le 21 mars 2015 à 14:33:49 Chocolayte a écrit :
Avec les mots de passes lbbq0sli, a9se8ssj, eayqk22, le checksum renvoie "875". Si c'est ce simple nombre qui détermine si le mot de passe est correct ou non, ça ne me semble pas très viable comme solution. Typiquement, toute sécurité faite en javascript est à éviter

Non, il y a une redirection en fonction du mot de passe entré par l'utilisateur sur la bonne page.
Ainsi s'il a entré une collision, il tombera sur la page 404 NOT FOUND

Pseudo supprimé
Pseudo supprimé 21 mars 2015 à 14:53:15

Le 21 mars 2015 à 14:34:57 Chocolayte a écrit :
function ChaineAleatoire(nbcar) { var ListeCar = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"); var Chaine =''; for(i = 0; i < nbcar; i++) { Chaine = Chaine + ListeCar[Math.floor(Math.random()*ListeCar.length)]; } return Chaine; } do { mdp = ChaineAleatoire(8); result = checksum(mdp); } while (result != 875); alert(mdp);

Tu noteras que ça ne tient qu'en quelques lignes.

Si le mdp entré est une collision, alors l'utilisateur sera redirigé sur la page 404 not found puisque la page se nomme avec le vrai mot de passe.

Pseudo supprimé
Pseudo supprimé 21 mars 2015 à 14:56:18

Le 21 mars 2015 à 14:52:28 bluepoint_ a écrit :
Arrrgl Arrrgl .
Bon déjà :
if(checksum<0)checksum=-checksum; while(checksum>2419)checksum-=2419;

L'espace des valeurs possible de la somme de contrôle ne contient que 2400 valeurs, donc à la louche, on doit obtenir une collision avec en moyenne même pas 100 valeurs de mot de passe, et encore en supposant que ton truc possède de bonnes propriétés. Trouver un antécédent de 875 est à peine plus difficile.

Ensuite, on ne fait pas ce genre de vérification coté client, toujours coté serveur !

Et surtout, surtout ON N'ECRIT JAMAIS SOIT MEME UNE PRIMITIVE CRYPTOGRAPHIQUE.
Boudiou.

Non car seul le vrai et unique mot de passe permet de faire passer l'utilisateur.

En effet, si le mot de passe trouvé est une collision, alors la personne sera redirigée vers une page inexistante (puisque le script redirige vers la page mdp_user + ".htm")

et donc une erreur 404 NOT FOUND !

Donc seul le vrai mot de passe donnera accès à la page.

Pseudo supprimé
Pseudo supprimé 21 mars 2015 à 14:57:50

Le 21 mars 2015 à 14:52:28 bluepoint_ a écrit :
Arrrgl Arrrgl .
Bon déjà :
if(checksum<0)checksum=-checksum; while(checksum>2419)checksum-=2419;

Non, il y a une redirection en fonction du mot de passe entré par l'utilisateur sur la bonne page.

Ainsi s'il a entré une collision, il tombera sur la page 404 NOT FOUND

Ben dans ces cas là ta somme de contrôle est juste une aide pour l'attaquant,
au lieu de faire du bruteforce sur les liens tonsite/mdp
Il fait la même chose en essayant que les antécédents de 875.

Mouais mais le mot de passe est très difficile à trouver tu sais :ok:

Pseudo supprimé
Pseudo supprimé 21 mars 2015 à 14:59:14

Le 21 mars 2015 à 14:58:36 bluepoint_ a écrit :

Non, il y a une redirection en fonction du mot de passe entré par l'utilisateur sur la bonne page.

Ainsi s'il a entré une collision, il tombera sur la page 404 NOT FOUND

Ben oui mais dans ce cas ta somme de contrôle sert juste à aider l'attaquant

Sans la somme de contrôle:
-Attaque par force brute sur les liens /tonsite/mdp
Avec la somme de contrôle
-Même attaque mais avec les antécédents de 875

En fait tu aides le pirate.

:snif:

Pseudo supprimé
Pseudo supprimé 21 mars 2015 à 15:01:52

Le 21 mars 2015 à 14:58:36 bluepoint_ a écrit :

Non, il y a une redirection en fonction du mot de passe entré par l'utilisateur sur la bonne page.

Ainsi s'il a entré une collision, il tombera sur la page 404 NOT FOUND

Ben oui mais dans ce cas ta somme de contrôle sert juste à aider l'attaquant

Sans la somme de contrôle:
-Attaque par force brute sur les liens /tonsite/mdp
Avec la somme de contrôle
-Même attaque mais avec les antécédents de 875

En fait tu aides le pirate.
Donc faut virer ta somme de contrôle
En plus ça veut dire que si le pirate intercepte la connexion entre toi et ton site il obtient direct le mot de passe

Alors comment je protège avec du JS ?

Pseudo supprimé
Pseudo supprimé 21 mars 2015 à 15:05:52

Le 21 mars 2015 à 15:04:11 bluepoint_ a écrit :
Tu le fais pas, le JS est coté client donc coté attaquant, donc il a pleine connaissance de ce qui s'y passe.
Ta sécurité doit se trouver coté serveur et au niveau de la connexion entre le client et le serveur

Un hash sha256 suffit alors ?

Pseudo supprimé
Pseudo supprimé 21 mars 2015 à 15:12:17

Le 21 mars 2015 à 15:10:34 bluepoint_ a écrit :

Le 21 mars 2015 à 15:05:52 Igyro a écrit :

Le 21 mars 2015 à 15:04:11 bluepoint_ a écrit :
Tu le fais pas, le JS est coté client donc coté attaquant, donc il a pleine connaissance de ce qui s'y passe.
Ta sécurité doit se trouver coté serveur et au niveau de la connexion entre le client et le serveur

Un hash sha256 suffit alors ?

Coté SERVEUR oui, c'est un des algorithmes de hachage considérés comme sûrs à l'heure actuelle.
Dans l'idéal, il faudra que tu conserve coté serveur ton mot de passe salé et haché un grand nombre de fois.
Et une connexion sécurisée entre ton serveur et ton client.
Et sans passer le mdp dans l'URL boudiou

comment on fait une connexion sécurisée entre client serveur ?

Pseudo supprimé
Pseudo supprimé 21 mars 2015 à 15:19:00

Le 21 mars 2015 à 15:16:48 bluepoint_ a écrit :
Chais pas moi, en HTTPS par exemple.
Enfin d'une manière générale, pour ce qui est de la sécurité, la règle veut qu'on utilise des solutions qui ont fait leurs preuves plutôt que d'en inventer soi-même

Merci

Sujet fermé pour la raison suivante : Résolu
Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment