une vérification dans la bdd case-sensitive

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : une vérification dans la bdd case-sensitive

par Invité » 20 févr. 2007, 14:57

VaN ==> a tu tester avant de poster ?

je t'explique :

si ton code d'espace membres est bien coder, c'est impossible que tu est 2 fois le même pseudo !

Je vient de faire l'essai sur le mien :

Le pseudo " PHPFRANCE " s'inscrit et un autre " phPfRanCe " veut aussi s'inscrire ! comme tu le constate, c'est exactement le même pseudo a quelques majuscule-minuscule près... et pourtant, mon code me dit ==> Désolé, ce pseudo est déja utilisé, veuillez en choisir un autre !

j'ai bien fait une trentaines d'essai car ton post m'avait fait un peu peur !

En clair, le pseudo " PHPFRANCE " peut très bien se connecter en mettant " PhpFrAnCe " ou phpfrance " ! Mais personne d'autres ne pourra avoir le même pseudo a une majuscule près !

Pour info, je suis un très très gros débutant en php, je ne le connait qu'a 35 % et sans vouloir me vanter, j'ai très bien codé mon espace membre après avoir bien entendu galérer pendant plus de 3 semaines... !

Donc, si toi avec un site de commerce avec carte bancaire et compagnie, on peut facilement prendre le pseudo de quelqu'un d'autres, c'est qu'il y a un gros problème de conception et surtout de protection des données !

enfin, fait le test que je vient de cité ci-dessus et dit moi ce qu'il en est :wink:

par AB » 20 févr. 2007, 00:47

mouais. Dans ce cas, pas besoin de pseudo. C'est un mot de passe supplémentaire. je suis un raleur, hein? :P
Oui, surtout que comme le dit Ajoloca s'il suffit d'utiliser BINARY dans la requête, le pb est vite réglé :wink:

par Arcanis » 20 févr. 2007, 00:20

mouais. Dans ce cas, pas besoin de pseudo. C'est un mot de passe supplémentaire. je suis un raleur, hein? :P

par Ajoloca » 19 févr. 2007, 23:53

Si on lit le même post, il parle d'un site e-commerce et pas d'un forum.
C'est surement pas le même niveau de sécurité, non ?

par Arcanis » 19 févr. 2007, 23:49

Mouais...
Si un utilisateur se nomme "Pseudo" et un autre "pseudo", ça fiche un peu le bazar dans la liste des utilisateurs (pas au niveau technique, mais au niveau...comment dire...humain?). Après, pour la sécuritée, ça marche, d'accord. Et encore. Normalement, ce sont les pseudos qui sont visibles sur un site. Donc si on voit les pseudos, je ne vois pas l'interet de les rendre sensible à la casse. On saura toujours quelle est la bonne casse.
M'enfin bon...

par Ajoloca » 19 févr. 2007, 22:52

@Arcanis

Je crois que l'utilisation de la sensibilité à la casse dans les mots de passe et un grand, très grand plus pour la sécurité.

Le fait de pousser jusqu'au psuedo, j'approuve à 1.000% :pouce: :pouce: :pouce:

par Arcanis » 19 févr. 2007, 22:47

Au lieu d'essayer de le rendre sensible à la casse, j'empêcherai plutôt les utilisateurs de s'inscrire si ils ont un pseudo semblable à un autre (et que seule la casse diffère). En plus, ça permet d'éviter les (c'est quoi le nom formé à partir de "confondre"?).

par Ajoloca » 19 févr. 2007, 22:36

Bonjour,

MySQL, comme la majorité de SGBD(R) sont par défaut insensibles à la casse.

Si tu veux qu'il en tienne compte tu dois le spécifier à la création (ou bien avec un alter).
Il y a une convention pour les noms de collation : elles commencent par le nom du jeu de
caractères auquel elles sont associées; elles incluent généralement un nom de langue, et finissent
par _ci (case insensitive, insensible à la casse), _cs (case sensitive, sensible à
la casse), _bin (binaire), ou _uca (Algorithme Unicode, Unicode Collation Algorithm
[http://www.unicode.org/reports/tr10/]).
Une autre solution c'est d'utiliser BINARY dans ta requête, un exemple
mysql> SELECT * FROM articles WHERE codeArticle ='bal45';
+-------------+-------------+---------------------------+------+-------+
| codeArticle | idCategorie | nom                       | prix | stock |
+-------------+-------------+---------------------------+------+-------+
| BAL45       |           2 | Balle de squash débutant  | 5.00 |    35 | 
+-------------+-------------+---------------------------+------+-------+
1 row in set (0.02 sec)

mysql> SELECT * FROM articles WHERE BINARY codeArticle ='bal45';
Empty set (0.00 sec)
mysql> SELECT * FROM articles WHERE BINARY  codeArticle = 'BAL45';
+-------------+-------------+---------------------------+------+-------+
| codeArticle | idCategorie | nom                       | prix | stock |
+-------------+-------------+---------------------------+------+-------+
| BAL45       |           2 | Balle de squash débutant  | 5.00 |    35 | 
+-------------+-------------+---------------------------+------+-------+
1 row in set (0.00 sec)

par VaN » 19 févr. 2007, 22:12

certe, ce n'est pas a négliger mais plusieurs compte avec le meme pseudo et passe a une majuscule près serait vraiment un coup du hasard !
C'est vrai, il y'a une infime chance que cela se produise. Mais quand cela concerne un site professionnel à caractère économique, on ne peut pas laisser ce hasard arriver : )
merci pour le lien, je vais aller y jeter un oeil.

par Invité » 19 févr. 2007, 21:06

certe, ce n'est pas a négliger mais plusieurs compte avec le meme pseudo et passe a une majuscule près serait vraiment un coup du hasard !

Sinon, regarde un peu ici ==> http://www.phpfrance.com/tutoriaux/inde ... bles-mysql rubrique " les chaines de caractères " !

peut être que ca t'interressera...

par VaN » 19 févr. 2007, 20:55

Ce n'est pas vraiment acceptable pour moi. Je m'explique :

je prends le cas extrême, où par malheur, il existerai les deux comptes suivant dans ma base de donnée :

login : Bonjour
pass : salut

et

login : bonjour
pass : salut

(c'est extrême, mais ce n'est pas à négliger)

Dans le meilleur des cas, "Bonjour" va se faire logger en tant que "Bonjour", tant mieux pour lui. Dans le pire des cas, "Bonjour" va se faire logger en tant que "bonjour", et là, c'est le drâme. (il s'agit d'un site à caractère commercial, vente en ligne, carte bancaire, etc).

par Invité » 19 févr. 2007, 20:47

Salut,

je reste honnete avec toi ==> ta méthode actuelle est très bien !

Que ce soit un b ou B , ca change quoi pour toi ?

Perso,quand je vais sur un site et qu'il refuse ma connexion a cause d'une lettre majuscule ou minuscule et que je suis obligé de tout retapé (mot de passe et pseudo)... ca me gonfle.. et je pense ne pas être le seul !

Et puis "case-sensitive", j'opte plutot pour "sensible a la casse" ou insensible à la casse" :wink:

une vérification dans la bdd case-sensitive

par VaN » 19 févr. 2007, 19:17

Bonjour,

Mon script d'ouverture de session me pose problème.
Il semblerait que celui-ci ne soit pas case-sensitive lorsqu'il vérifie que tel login correspond bien à tel mot de passe, dans la base de données.

Exemple :

login : Bonjour
pass : salut

Ma session va s'ouvrir, si je tape Bonjour/salut, mais également si je tape bonjour/salut.

la requete est la suivante :
$sql = 	"SELECT *
					FROM USERS
					WHERE user_login = '".$_POST['login']."'";
Comment puis-je résoudre ça ?