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

Langage PHP Discussion :

[Sécurité] Remplacement des caractère spéciaux d'une chaine de carac^èr [Tutoriel]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut [Sécurité] Remplacement des caractère spéciaux d'une chaine de carac^èr
    Bonjour,

    J'ai un petit soucis tout con, j'aimerais savoir comment on pourrais modifier une chaine de caractère qui contient des éléments susceptible de perturber une insertion dans une base de donnée, etc.. Comme les guillemet, ou le 'dièze'.

    Merci d'avacne pour votre précieuse aide

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 234
    Points : 8 497
    Points
    8 497
    Billets dans le blog
    17
    Par défaut
    Salut !
    Vois mysql_real_escape_string( )
    (à préférer à addslashes( ))

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    Ah, ok merci bien. Mais je me suis fait une fonction pour tout ces problèmes de base de donnée. J'ai fait cette petite fonction, est-ce qu'elle est bien???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	$texte = nl2br($texte);
    	$texte = addslashes($texte);
    	$texte = htmlspecialchars($texte,ENT_QUOTES);
    merci d'avance

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 234
    Points : 8 497
    Points
    8 497
    Billets dans le blog
    17
    Par défaut
    Franchement, t'as réussi à condenser en une fonction tout ce qu'il ne faut *jamais* faire avant une insertion en BdD
    • nl2br( ) : Tu n'as pas à stocker de <br> en BdD. Le nl2br( ) doit être effectué à l'affichage. Ou alors si tu les stockes en BdD c'est que tu les as sciemment saisis et que tu sais ce que tu fais
    • addslashes( ) : Fais au moins un get_magic_quotes_gpc( ) pour savoir si ces saloperies de magic-quotes ont déjà fait leur sale boulot ou non, histoire de ne pas se retrouver avec du je t\'aime à l'affichage
    • htmlspecialchars( ) : Pareil que nl2br( ), c'est une fonction qui ne doit servir qu'à l'affichage, sinon t'auras l'air malin avec tes entités HTML le jour ou tu devras exploiter ta BdD sur un autre support que le web

    Non vraiment, en lieu et place de tout cela fait un mysql_real_escape_string( ), puis *à l'affichage* un htmlspecialchars( ) *suivi* éventuellement d'un nl2br( ) (et pas l'inverse sinon les <br> seront affichés).

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    Ah, ok ,mais il faut aussi faire l'inverse pour quand on reprend les valeures dans la base de données???

    Merci bien pour ton aide

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 234
    Points : 8 497
    Points
    8 497
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par krfa1
    Ah, ok ,mais il faut aussi faire l'inverse pour quand on reprend les valeures dans la base de données???
    Si tu suis ce que j'ai donné plus haut tu n'auras jamais à faire d'opération inverse, c'est là l'intérêt.

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    Ah, ok alors ouai, ça c'est pratique. Et pendant qu'on y est, a quoi faut il faire attention avec ces caractères spéciaux ou autre problème de se style, même sans qu'il y ait un rapport avec une base de donnée?

  8. #8
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    salut,

    ben pour moi, les caractères spéciaux, pas grand chose, a part le fait que le navigateur affiche n'importe quoi à la place et encore...ça dépend du jeu de charset
    Sinon si tu ne traites pas les données entrées par l'utilisateur avec htmlspecialchars() , le risque est de te retrouver avec des brides html dans l'affichage ( genre des marquee... ) ou encore (et surtout) en rapport avec l'affichage de balises javascript.

  9. #9
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    Oh fait, j'ai le get_magic_quotes_gpc( ) activé. Et j'aimerais le désactivé, mais je peux le faire comment? Merci ska root pour ton expliquation!

  10. #10
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    function stripArray(&$array)
    {
        foreach($array as $k => $v)
        {
             if(is_array($v))
             {
                  stripArr($array[$k]);
             }
             else
             {
                 $array[$k] = stripslashes($v);
             }
        }
    }
     
    if(get_magic_quotes_gpc())
    {
        stripArray($_GET);
        stripArray($_POST);
        stripArray($_COOKIE);
        stripArray($_REQUEST);
    }

  11. #11
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 234
    Points : 8 497
    Points
    8 497
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par loufoque
    Par exemple [...]
    Voilà, c'est le genre de truc à faire en haut de chaque page.

  12. #12
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    Ah ok, merci bien pour tous les conseilles.

    Je vais essayé déjà avec tout ça! Encore merci bcp! A bientot!

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/05/2005, 16h58
  2. Réponses: 17
    Dernier message: 12/04/2005, 15h28
  3. [MASM] Définir "ordre de remplacement" des macros
    Par Crisanar dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 24/11/2004, 16h35
  4. remplacer des espaces dans un champ par des zero
    Par yeep dans le forum Access
    Réponses: 4
    Dernier message: 08/10/2004, 09h41
  5. Fonction permettant de remplacer des caractères
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 06/09/2004, 15h48

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