Bonjour à tous.
Dans le cadre d'un projet en cours, j'ai développé plusieurs formulaires tous gérés par un seul fichier PHP.
J'utilise PDO et les requêtes préparées donc je m'inquiète moins pour les injections que pour les attaques de types XSS. J'ai un peu lu sur le net mais j'ai lu tout et son contraire et je voudrais une vision "à jour" de ce problème.
Je vous poste donc une partie du code, sachant qu'à chaque fois le principe est le même pour chaque formulaire. SI vous avez des conseils ça sera avec plaisir.
En vous remerciant d'avance :
Dans le cadre d'un projet en cours, j'ai développé plusieurs formulaires tous gérés par un seul fichier PHP.
J'utilise PDO et les requêtes préparées donc je m'inquiète moins pour les injections que pour les attaques de types XSS. J'ai un peu lu sur le net mais j'ai lu tout et son contraire et je voudrais une vision "à jour" de ce problème.
Je vous poste donc une partie du code, sachant qu'à chaque fois le principe est le même pour chaque formulaire. SI vous avez des conseils ça sera avec plaisir.
En vous remerciant d'avance :
if(isset($_POST['action']))
{
switch ($_POST['action'])
{
case 'inscription':
// préparation des données pour l'insertion
$tableau= array($_POST['civilite'], $_POST['nom'], $_POST['prenom'], $_POST['email'], $_POST['telephone'],$_POST['cp'],
$_POST['ville'], $_POST['login'],md5($_POST['password']),$_SERVER['REMOTE_ADDR'],date('Y-m-d'),date('Y-m-d'));
//Variables et requête pour vérification de l'adresse email et du login
$email = $_POST['email'];
$login = $_POST['login'];
$check="SELECT email,login FROM membre WHERE email LIKE '".$email."' OR login LIKE '".$login."'";
$res = $connexion->query($check);
// si un résultat est trouvé, on affiche un message d'erreur.
if($res->rowCount() !=0)
{
$smarty = new Smarty();
$smarty->assign('email',$email);
$smarty->assign('login',$login);
$smarty->display("{$base_dir}/html/inscription_NOK.html");
}
//sinon on insére les données dans la base de données
else
{
try {
// Requête préparée
$prepa = $connexion->prepare("INSERT INTO membre (civilite,nom,prenom,email,telephone,code_postal,ville,login,pass,ip,lastvisite,date_inscription) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)");
// exécution de la requête
$prepa->execute($tableau);
// Création d'un objet Smarty
$smarty = new Smarty();
//variables pour le message de confirmation
$smarty->assign(array('nom' => $_POST ['nom'],'prenom' => $_POST ['prenom']));
// affichage de la confirmation d'inscription
$smarty->display("{$base_dir}/html/inscription_OK.html");
}
// affichage d'un message d'erreur si l'insertion n'a pas fonctionné
catch (PDOException $erreur)
{
$smarty = new Smarty();
$smarty->display("{$base_dir}/html/error.html");
}
}
break;
}
}