Protger mon formulaire ?

Eléphant du PHP | 372 Messages

07 janv. 2015, 19:57

Salu j'ai un formulaire qui marche et j'aimerais le sécurisé , comment procéder svp ?
Voici l'essentiel
 * Vérification du formulaire
*****************************************/
// Si le tableau $_POST existe alors le formulaire a été envoyé
if(!empty($_POST))
{
// Le login est-il rempli ?
if(empty($_POST['login']))
{
$message = 'Veuillez indiquer votre login svp !';
}
// Le mot de passe est-il rempli ?
elseif(empty($_POST['motDePasse']))
{
$message = 'Veuillez indiquer votre mot de passe svp !';
}
// Le login est-il correct ?
elseif($_POST['login'] !== LOGIN)
{
$message = 'Votre login est faux !';
}
// Le mot de passe est-il correct ?
elseif($_POST['motDePasse'] !== PASSWORD)
{
$message = 'Votre mot de passe est faux !';
}
else
{
// L'identification a réussi
$message = 'Bienvenue '. LOGIN .' !';
}
}

Mammouth du PHP | 688 Messages

07 janv. 2015, 20:02

je vois pas de faille dans ce code.

Eléphant du PHP | 372 Messages

07 janv. 2015, 20:38

j'ai entendu parler des htmlspecialchars ...

ViPHP
AB
ViPHP | 5818 Messages

07 janv. 2015, 20:53

On utilise htmlspecialchars pour protéger les variables à l'affichage dans le code html, typiquement derrière un echo
<div><?php echo htmlspecialchars($message);?></div>
A noter que dans les "dernières" versions de php on peut simplifier l'écriture en faisant
<div><?= htmlspecialchars($message);?></div>

Eléphant du PHP | 372 Messages

07 janv. 2015, 21:41

Enfait pour être plus clair la chose se présente ainsi dans mon formulaire
<label>email :</label>
     <input class="form-control" type="text" name="email" value="<?php echo  !empty($donnees['email']) ? $donnees['email'] : NULL;?>" />
Et de ce fait ne vois pas trop ou placer ce fameux htmlspecialchars ....

Merci à vous

ViPHP
AB
ViPHP | 5818 Messages

07 janv. 2015, 23:52

<label>email :</label>
     <input class="form-control" type="text" name="email" value="<?php echo  !empty($donnees['email']) ? htmlspecialchars($donnees['email']) : NULL;?>" />
et donc comme déjà dit on peut écourter un peu en faisant
<label>email :</label>
     <input class="form-control" type="text" name="email" value="<?= !empty($donnees['email']) ? htmlspecialchars($donnees['email']) : NULL;?>" />