8768 sujets

Développement web côté serveur, CMS

Bonjour,
J'ai un formulaire qui s'envoie en PHP et j'aimerais qu'il s'envoie au clic du bouton "OK" seulement si le JS dit que c'est bon (mot de passe respectant les consignes).
Mais je ne veux pas que le php vérifie, je veux que se soit le JS qui vérifie (je sais que ça peut être modifié par le client mais je préfère comme ça et ça ne dérange pas) les critères.

Merci beaucoup !
Merci pour le pattern parsimonhi !
J'ai donc
<input type="password" name="mdp" required placeholder="Votre mot de passe sécurisé" size="15" title="Votre mot de passe sécurisé : champ requis. Un mot de passe est sécurisé s'il contient au moins 8 caractères avec une lettre minuscule, une majuscule, un chiffre et un caractère spécial." pattern="^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[-+!*$@%_])([-+!*$@%_\w]{8,15})$">


Comment faire pour que lorsque les critères ne sont pas respectés, l'utilisateur sache ce qui lui manque ?

J'avais une autre question : Lorsque l'on met l'input de type 'password', ça mets ça : upload/1605378285-81417-password.png mais si on mets en tant que 'text', ça n'affiche pas ça. Peut-on faire pour que le mot de passe soit caché sans que l'avertissement apparaisse ?

J'ai trouvé
"Abc*d)4fgh(ye!".replace('???????????', '*')
mais je ne sais pas ce qu'il faut mettre à la place des points d'interrogations ni si on peut l'intégrer au formulaire. Ou alors, y a-t-il une autre solution ?

Merci beaucoup !
Meilleure solution
Modérateur
Bonjour,

1) Selon moi, c'est une mauvaise idée d'imposer "une lettre minuscule, une majuscule, un chiffre et un caractère spécial". Car ça pourrit la vie de l'utilisateur, diminue fortement le nombre de mots de passe possibles, et en fin de compte rend probablement le code plus facile à casser. Contentes toi de 8 caractères minimum, et suggère seulement l'emploi des différents caractères : le résultat est alors complètement différent, car le nombre de mots de passe possibles est du coup beaucoup (beaucoup) plus élevé.

Et puis tu n'es pas une banque (enfin, je suppose) ! Smiley smile

Après bon, ce n'est peut-être qu'un exercice imposé aussi !

2) Pour avertir l'utilisateur qu'il choisit un mauvais mot de passe (ou d'une manière plus général qu'un champ n'a pas une valeur appropriée), tu as des exemples ici : https://developer.mozilla.org/fr/docs/Web/Guide/HTML/Formulaires/Validation_donnees_formulaire

3) Pour ne plus voir le message sur la connexion non-sécurisée, il faudrait (il suffirait ?) que le serveur fonctionne en https. Ce serait quand même le plus propre. Chercher des solutions de contournement pour que l'utilisateur ne s'aperçoive de rien sont à proscrire.

EDIT: je vois pas ce message dans une page de test qui est pourtant non sécurisée. Dans quelles conditions as-tu ce message ?

4) Pour intégrer à ton formulaire
"Abc*d)4fgh(ye!".replace('???????????', '*')
il faudrait déjà qu'on soit sûr de ce que tu veux faire. Parce que là, on comprend rien !

Amicalement,
Modifié par parsimonhi (15 Nov 2020 - 11:21)
Re-bonjour,
niuxe a écrit :
paye ta faille de sécurité....

Ce commentaire était très constructif de votre part, je vous remercie.


@parsimonhi Merci !
1)
parsimonhi a écrit :
Contentes toi de 8 caractères minimum, et suggère seulement l'emploi des différents caractères : le résultat est alors complètement différent, car le nombre de mots de passe possibles est du coup beaucoup (beaucoup) plus élevé.

Vous pensez qu'il y aura moins de chance que les mots de passe soient différents ?
Personne ne mettra "password", "qwerty" ou "12345678" ?
Parce que j'ai besoin que tous tous les mots de passe soient bien différents.

2) Merci !

3) Oui, en https, ça fonctionne par contre j'ai une nouvelle question : "5) Comment ça se fait que ma page soit http://lenomdemonsite.com mais que l'on puisse quand même mettre httpS://lenomdemonsite.com et que ça fonctionne (avec le petit cadenas vert au lieu de rouge) ? Pourquoi ça ne se redirige pas tout seul ? Peut-on faire une redirection automatique (en html ou JS) ?"

EDIT : Votre page de test avait-elle un envoie php ? Je pense que c'est ça qui donne le message.

4) C'était une hypothèse pour bidouiller et transformer les caractères en asterix. Mais du coup ça fonctionne et je viens aussi de penser que du coup, on n'aurait pas pu récupérer le mot de passe.

Merci !
Modifié par js_html (15 Nov 2020 - 12:19)
Modérateur
Bonjour,
js_html a écrit :
Vous pensez qu'il y aura moins de chance que les mots de passe soient différents ?
Personne ne mettra "password", "qwerty" ou "12345678" ?
Parce que j'ai besoin que tous tous les mots de passe soient bien différents.


C'est une très mauvaise idée d'espérer que les mots de passe soient tous différents. C'est cette idée qu'il faut changer, et non combiner pour pousser les utilisateurs à en choisir (peut-être) des différents.

Après, sur certains sites sensibles, on peut avoir besoin d'empêcher les utilisateurs de choisir certains mots de passe trop faciles à deviner comme "qwerty" ou "12345678". Dans ces cas-là, on emploie un dictionnaire et on rejette ces mots de passe. Mais bon, faut que ça soit justifié.

js_html a écrit :
Comment ça se fait que ma page soit http://lenomdemonsite.com mais que l'on puisse quand même mettre httpS://lenomdemonsite.com et que ça fonctionne (avec le petit cadenas vert au lieu de rouge) ? Pourquoi ça ne se redirige pas tout seul ? Peut-on faire une redirection automatique (en html ou JS) ?"


Normalement, il me semble que c'est le serveur qui se charge de ça.

js_html a écrit :

EDIT : Votre page de test avait-elle un envoie php ? Je pense que c'est ça qui donne le message.


C'était bien du php. Il y a surement autre chose, mais pour l'instant, je ne vois pas.

Amicalement,
Merci !
parsimonhi a écrit :
C'est une très mauvaise idée d'espérer que les mots de passe soient tous différents. C'est cette idée qu'il faut changer, et non combiner pour pousser les utilisateurs à en choisir (peut-être) des différents.

Et si on en a vraiment besoin ? Car je ne sais presque pas utiliser php et mon hébergeur n'a pas de base de données. Du coup je vais demander en php les mdp puis je vais créer à la main les fichiers lemotdepasse.js et je vais les inclure avec $.getScript(lemotdepasse.js, function(){}); où lemotdepasse a été entré dans un champ.

parsimonhi a écrit :
Dans ces cas-là, on emploie un dictionnaire et on rejette ces mots de passe.

Un dictionnaire ? C'est quoi ? Un tableau "[]", un objet "{}", autre chose ?

Merci !
Modérateur
Bonjour,
js_html a écrit :
Un dictionnaire ? C'est quoi ? Un tableau "[]", un objet "{}", autre chose


Un liste de mots rangés où tu veux.

Amicalement,
@parsimonhi
Après, si vous voulez bien m'aider pour le faire en php, je suis preneur !
Modifié par js_html (18 Nov 2020 - 16:27)