vérifier et comprendre ma page de connexion

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 : vérifier et comprendre ma page de connexion

Re: vérifier et comprendre ma page de connexion

par or 1 » 04 juin 2021, 18:28

$_SESSION['user'] = array('id'=>$data['id'], 'pseudo'=>$data['pseudo'], 'email'=>$data['email']) ;
//je crée deux nouvelles variables
$_SESSION['pseudo'] = $data['pseudo'];
$_SESSION['email'] = $data['email'];
le pseudo, l'email sont dans 2 variables différentes, ce qui n'est pas une bonne idée.
soit l'on a 3 variables avec l'id dans $_SESSION['userid']
soit une seule variable $_SESSION['user'] = array('id'=>$data['id'], 'pseudo'=>$data['pseudo'], 'email'=>$data['email']) ;

pour moi, il ne faut pas insérer la variable transformée par htmlspecialchars dans la table, car les données peuvent ne pas être utilisée dans une page html, mais dans du texte brut, dans le sujet d'un email ...
c'est quand on veux afficher la variable dans une page html qu'il faut utiliser htmlspecialchars.

$titre = $_GET['titre']; // avec $_GET['titre'] = "<a href='//domaindespammer.com'>sujet</a>"
mail("[email protected]", $titre, "test"); // le code html contenu dans le sujet n'est pas génant
echo "l'email $titre a été envoyé"; // le code html va faire qu'il y aura un lien vers le site du spammeur dans la page
echo "l'email ".htmlspecialchars($titre)." a été envoyé"; // pas de lien html

Re: vérifier et comprendre ma page de connexion

par flexi2202 » 04 juin 2021, 16:43

ah oui pas mal merci pour le lien

Re: vérifier et comprendre ma page de connexion

par Shadowwera » 04 juin 2021, 15:56

Ce cours sur OpenClassrooms traite plutot bien de ce sujet et d'autre chose

Re: vérifier et comprendre ma page de connexion

par flexi2202 » 04 juin 2021, 15:48

merci pour la reponse
ah oui donc rendre plus complet le formulaire de connexion ...
existe il des tutos simple pour ajouter cela a mon code

oui juste j avais oublie le '

ca present que mon site se termine je vais pouvoir m atteler au détail

Re: vérifier et comprendre ma page de connexion

par Shadowwera » 04 juin 2021, 15:37

Tu devra faire une vérification par toi même avec du JS ou du PHP. Avec un régex, tu vérifie que l'utilisateur n'a pas mis de caractères interdit. S'il la fait, tu bloque la création et lui affiche un message du style "Oh, tu crois je sais pas ce que tu essaye de faire petit vilain ? oO " #-o

Peut être sont t'il allergique à la sécurité ou au travaille supplémentaire ? 8-|

Oui ( attention au manque d'un ' ), renseigne toi sur les Session, ça te sera extrêmement utile en PHP !

Re: vérifier et comprendre ma page de connexion

par flexi2202 » 04 juin 2021, 15:15

merci pour ton avis c est gentil
et surtout pour toutes ces explications

donc si l utilisateur se voit refuser l entrée a la base de donnée car il essaye de rentrer n importe quoi comme caractère que va t il ce passer ?

pourquoi certains webmaster sont allergiques a htmlspecialchars ?

si je voudrais passer l ID dans les autres pages je suppose que je dois juste ajouter cela

Code : Tout sélectionner

$_SESSION[ID'] = $data['ID'];

Re: vérifier et comprendre ma page de connexion

par Shadowwera » 04 juin 2021, 10:10

Oui le reste est bon

Pour le htmlspecialchars, il sert a convertir les balises de code en entités HTML (par exemple < deviens &lt;), de cette façon tu évite l'injection de code dans ton script. Il est selon moi indispensable de sécurisé TOUTES les données envoyé par un utilisateur !

Si tu veux éviter que ça "empêche" la connexion de certaines personnes, il va falloir que tu interdise les caractère spéciaux tel que < > ' " & etc. lors de la création de l'identifiant ! Car en effet, si une personne à un pseudo comme abc<def alors il sera traduit en abc&ltdef par htmlspecialchars, et donc ne matchera pas avec ta base de données !

Re: vérifier et comprendre ma page de connexion

par flexi2202 » 04 juin 2021, 09:40

salut Shadowwera

merci pour la réponse et surtout bien expliquée c est cela le plus important
pour le reste mon raisonnement est bon ??

une autre question
beaucoup de personnes disent que htmlspecialchars ne peux pas exister dans un formulaire de connexion

Re: vérifier et comprendre ma page de connexion

par Shadowwera » 04 juin 2021, 08:49

Salut,
if(!empty($_POST['pseudo']) && !empty($_POST['password']))
vérifie s'ils ne sont PAS vide. Le ! devant une fonction veux dire que l'on veux son contraire. En gros, !empty (n'est pas vide) peut être l'équivalent de isset (existe)

Du coup la même chose pour !empty($data), qui vérifie que $data n'est pas vide, et donc que la requête query à bien récupéré les données.

password_verify est utilisé pour comparer 2 mots de passes et retourne true/false s'il correspond/ne correspond pas. Attention, il sert à comparer un mot de passe classique (saisie utilisateur) avec un mot de passe haché (crypté) avec password_hash

Le premier else n'est pas "en cas d erreur du pseudo" mais si les mots de passe ne correspond pas (et que password_verify à retourner false)

Le deuxième else lui est appelé lorsque la variable $data est vide, est donc que les informations n'ont pas était récupéré en base de données

vérifier et comprendre ma page de connexion

par flexi2202 » 04 juin 2021, 08:08

bonjour a tous


je souhaiterais pouvoir comprendre ma page de connexion qui ne vient pas de moi
j ai mis des commentaires si quelqu'un peux corriger ou pux etre modifier mes commentaires

Code : Tout sélectionner

<?php session_start(); // je me connecte a ma base require_once 'config.php'; //je verifie si peusdo et password sont vides if(!empty($_POST['pseudo']) && !empty($_POST['password'])) { //si ils sont vides alors on leurs donnes des valeurs que l utilisateurs vient d entrer $pseudo = htmlspecialchars($_POST['pseudo']); $password = htmlspecialchars($_POST['password']); //je prépare la table pour rechercher les infos entrees $check = $bdd->prepare('SELECT pseudo, email,id, password FROM utilisateurs WHERE pseudo = ?'); $check->execute(array($pseudo)); $data = $check->fetch(); //je verifie si data est vide if(!empty($data)) { //je compare le password_verify avec le password entrer et celui dans la base de donnée if(password_verify($password, $data['password'])) { //si tout est bon je crée une variable $session ['user'] avec le pseudo ; l email et l id $_SESSION['user'] = array('id'=>$data['id'], 'pseudo'=>$data['pseudo'], 'email'=>$data['email']) ; //je crée deux nouvelles variables $_SESSION['pseudo'] = $data['pseudo']; $_SESSION['email'] = $data['email']; // je me connecte au site header('Location: accueil-peche-perle.php?pseudo='.$_SESSION['pseudo']); die(); //en cas d erreur du pseudo }else{ header('Location: connexion-site.php?login_err=password'); die(); } //en cas d une autre erreur }else{ header('Location: connexion-site.php?login_err=already'); die(); } }