le 04/08/2009 à 08:32
jackbocar
Bonjour,
J'aimerai que l'on me dise si c'est possible pourquoi lorsque j'ajoute ces deux ligne de code :
Le control alpha numérique n'est plus valide. Ce qui veut dire que je peux ajouter des chiffres au login et au mot de passe.
Ce qui est incroyable, c'est que tout fonctionne très bien, le code prend très bien les logins avec des chiffres et idem pour les mots de passes.
Et les données sont elles aussi très biens enregistrées puisqu'on peut se connecter avec les logins et passwords avec chiffres.
Lorsque l'on se connecte à la page des membres, la fonction qui control les caractères alphanumériques, accepte très bien les mots de passes avec des chiffres idem pour les logins.
Et lorsque j'envoie le mot de passe : ' or 1=1--, là j'ai une alerte qui me dit que le mot de passe doit être alphanumérique.
Toutes les alertes de mauvais mot de passe ou mauvais login fonctionne très bien.
<html>
<head>
<title>Insertion d'un nouvel utilisateur</title>
</head>
<body>
<p>
</p>
</body>
</html>
Jack Bocar
J'aimerai que l'on me dise si c'est possible pourquoi lorsque j'ajoute ces deux ligne de code :
<?php
$username = mysql_escape_string($username);
$password = mysql_escape_string($password);
?>
Le control alpha numérique n'est plus valide. Ce qui veut dire que je peux ajouter des chiffres au login et au mot de passe.
Ce qui est incroyable, c'est que tout fonctionne très bien, le code prend très bien les logins avec des chiffres et idem pour les mots de passes.
Et les données sont elles aussi très biens enregistrées puisqu'on peut se connecter avec les logins et passwords avec chiffres.
Lorsque l'on se connecte à la page des membres, la fonction qui control les caractères alphanumériques, accepte très bien les mots de passes avec des chiffres idem pour les logins.
Et lorsque j'envoie le mot de passe : ' or 1=1--, là j'ai une alerte qui me dit que le mot de passe doit être alphanumérique.
Toutes les alertes de mauvais mot de passe ou mauvais login fonctionne très bien.
<?php
session_start();
/*** Ici on Vérifie que le les champs sont biens été remplis ***/
if(!isset( $_POST['username'], $_POST['password'], $_POST['form_token']))
{
$message = 'Please enter a valid username and password';
}
/*** Verifier que la session est valide - on envoie une alerte si ce n'est pas le cas ***/
elseif( $_POST['form_token'] != $_SESSION['form_token'])
{
$message = 'Soumission Invalide du formulaire';
}
/*** Vérifier la longueur du nom d'utilisateur ***/
elseif (strlen( $_POST['username']) > 20 || strlen($_POST['username']) < 6)
{
$message = "La longueur du nom d'utilisateur est incorrect";
}
/*** Vérifier la longueur du mot de passe ***/
elseif (strlen( $_POST['password']) > 20 || strlen($_POST['password']) < 6)
{
$message = "La Longueur du Password est incorrect";
}
/*** Vérifier que le nom d'utilisateur comporte que de caractères alphanumériques ***/
elseif (ctype_alnum($_POST['username']) != true)
{
/*** Si ce n'est pas le cas, une alerte est envoyée ***/
$message = "Le Nom d'utilisateur doit être alpha numérique";
}
/*** Vérifier que le mot de passe comporte que de caractères alphanumériques ***/
elseif (ctype_alnum($_POST['password']) != true)
{
/*** Si ce n'est pas le cas, une alerte est envoyée ***/
$message = "Le Password doit être alpha numérique";
}
else
{
/*** Si tout va bien, c'est que les informations sont valides, nous pouvons les inscrire dans la base de données ***/
$username = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
$password = filter_var($_POST['password'], FILTER_SANITIZE_STRING);
/*** Maintenant, nous pouvons chiffrer le mot de passe ***/
$password = sha1( $password );
/*** CES DEUX LIGNES QUI PROTEGENT LES DONNEES INSEREES ***/
/*** Ici on protège les informations ***/
$username = mysql_escape_string($username);
$password = mysql_escape_string($password);
$mysql_hostname = '***';
$mysql_username = '***';
$mysql_password = '***';
$mysql_dbname = 'membres_test';
try
{
$dbh = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
/*** $message = Nous informe de la bonne connection à la base de données ***/
/*** Ici on fixe le mode des erreurs et excptions ***/
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
/*** Préparation à l'insertion ***/
$stmt = $dbh->prepare("INSERT INTO membres_users (username, password ) VALUES (:username, :password )");
/*** Ici on fait la liaison des paramètres ***/
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':password', $password, PDO::PARAM_STR, 40);
/*** Ici on exécute la requête préparée ***/
$stmt->execute();
/*** Ici on défini les variables de session ***/
unset( $_SESSION['form_token'] );
/*** On confirme la bonne insertion du nouvel utilisateur ***/
$message = 'Nouvel utilisateur ajouté';
}
catch(Exception $e)
{
/*** Ici on vérifie si le nom d'utilisateur existe déjà ***/
if( $e->getCode() == 23000)
{
$message = 'Cet utilisateur existe déjà';
}
else
{
/*** Si on a un problème avec la base de données ou avec le serveur ***/
$message = "Nous ne pouvons pas traiter votre demande. S'il vous plaît essayer à nouveau plus tard";
}
}
}
?>
<html>
<head>
<title>Insertion d'un nouvel utilisateur</title>
</head>
<body>
<p>
<?php echo $message; ?>
</p>
</body>
</html>
Jack Bocar