IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

quelle protection utiliser pour protéger ma base de donnée sur le web


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut quelle protection utiliser pour protéger ma base de donnée sur le web
    Bonsoir à tous

    Je veux gérer une petite base de données sur le web.

    les adhérents peuvent remplir un formulaire d'inscription, avec leurs données et bien sûr un mot de passe.

    Je vais faire des requêtes préparées avec PDO.

    j'ai bien compris qu'il fallait se protéger des données de l'utilisateur.

    Mais si je vérifie chaque donnée du formulaire avec des expressions régulières ex le nom uniquement des Majuscules avec à l'occasion - et espace car dans le formulaire un script javascript transforme le nom en Majuscule et n'accepte que des lettres supprime les espace de début et fin. Donc il ne peut pas y avoir dans ce nom de possibilité d'injecter du code !

    Je ne comprends pas non plus pourquoi on sécurise les données POST avec htmlentities qui va transformer les <> en entités html et enregistrer la donnée transformée dans la base de donnée plutôt que de refuser cette donnée avec des chevrons?

    Je ne sais plus bien ce qu'il faut utiliser comme protection

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 671
    Par défaut
    Citation Envoyé par marco62118 Voir le message
    Je ne comprends pas non plus pourquoi on sécurise les données POST avec htmlentities qui va transformer les <> en entités html et enregistrer la donnée transformée dans la base de donnée plutôt que de refuser cette donnée avec des chevrons?
    ce n'est pas du tout une bonne idée de stocker du code html dans la base de données sauf dans des cas très particuliers qui n'ont rien à voir avec une sécurisation mais plutot une fonctionnalité.

    la base de données doit contenir une donnée brute.
    et ensuite la donnée sera peut-être mise en forme d'un côté avec des couleurs pour être affichée dans un terminal.
    et d'un autre côté la même donnée va être affichée dans du code HTML où on utilise par exemple "htmlspecialchars" pour la convertir en HTML et du code CSS pour la mettre en forme.

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    Bonjour

    je te remercie pour ta réponse, ma réponse un peu tardive car j'essaie de trouver comment sécuriser mon site!
    justement je ne comprends pas pourquoi "certain" explique qu'il faut à tout prix protéger les données provenant d'un formulaire comme ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $NOM = (htmlentities($_POST["nom"]));
    		$PRENOM = (htmlentities($_POST["prenom"]));
    mais si j'interroge la base de donnée comme ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $retours = $liaison->prepare("SELECT * FROM adherents WHERE NOM=:nom AND PRENOM=:prenom");
    		$retours->bindValue(':nom', $NOM);
    		$retours->bindValue(':prenom', $PRENOM);
    		$reussit=$retours->execute();
    Pour que la requête réponde favorablement il faut que nom et prenom soient enregistrés dans la base modifiés par htmlentitiesne serait ce que les apostrophes!
    ce qui fait bien que dans la base ne sont pas enregistrées les données brutes.
    Je ne comprends pas pourquoi simplement on ne filtre pas le nom ou le prenom avec une expression régulière ?

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    est ce que l'explication que je marque ici est relativement bonne

    <!-- utilisation de htmlentities
    ex: echo htmlentities('Damien Séguy & Philippe Gamache');
    le serveur envoi au navigateur de l'internaute le code équivalent à la fonction htmlentities
    c'est à dire : Damien S&eacute;guy &amp; Philippe Gamache
    le navigateur reçoit la ligne cidessus est en fait l'écho mais le navigateur interprête &eacute; comme étant la lettre é accent aigu
    le code &amp; comme le sigle &, le navigateur inscrit donc à l'écran la phrase : Damien Séguy & Philippe Gamache
    Mais si on regarde dans le code source de la page on voit bien la ligne résultat de la fonction htmlentities, envoyée par le serveur:
    <body> Damien S&eacute;guy &amp; Philippe Gamache1 </body>

    -->

  5. #5
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 671
    Par défaut
    Citation Envoyé par marco62118 Voir le message
    est ce que l'explication que je marque ici est relativement bonne
    oui ces explications ont l'air correctes.
    vous remarquerez qu'il est bien question du navigateur dans ce texte et ça ne parle pas de base de données.

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/10/2011, 17h38
  2. Réponses: 2
    Dernier message: 13/12/2010, 22h06
  3. Réponses: 42
    Dernier message: 07/08/2009, 21h11
  4. Réponses: 1
    Dernier message: 16/11/2007, 12h14
  5. Réponses: 3
    Dernier message: 23/04/2007, 09h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo