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é] on a piraté mon site


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut [Sécurité] on a piraté mon site
    bonjour à tous, en rentrant chez moi, comme d'habitude, je consulte mon site pour savoir s'il y'a de nouveaux membres, etc.. mais cette fois, quelqu'un c'est bien inscrit mais en ayant comme pseudo une instruction javascript apriori. cette instruction ouvre plusieurs alert(""); inutiles ...

    pour voir par vous meme : http://publicannonces.com .

    Comment empecher quand un membre s'inscrit d'entrer dans la bdd ce genre de script ? je veux dire par la, vaut il mieux qu'apres l'envoi du formulaire je remplace avec php les codes par des lettres ou un message d'ereur, oubien y'a t'il une autre methode pour empecher ce genre de choses?

    Je viens de regarder ma bdd et la table correspondante aux membres, et effectivement cela vient du pseudo de cette personne .

    Merci pour votre aide .

    Ps, je pourrais supprimer ce membre de ma bdd, je suis sure que sa resoudrai le probleme, mais je le laisse pour que vous constatiez par vous meme l'action de cette intrusion.

    Merci encore

  2. #2
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut
    merci pour ces liens que je vais consulter avec grande intention

    Enfaite, cette intrusion avait été faite par un modo quelqu'un de ce site pour me rappeler que je n'avais pas securisé mes codes, merci encore

  4. #4
    Membre actif Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Points : 254
    Points
    254
    Par défaut
    Attention à l'injection de code SQL et compagnie. Je me suis fait une petite fonction qui résoud sommairement ce genre de problèmes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    /**
     * S'assure que la veriable peut être insérée dans une requête sans erreur et la modifie au besoin
     * Paramètres : mixed $var
     **/
    function mysql_safe($var) {
      if((is_bool($var))||(is_numeric($var))) return $var;
      elseif(is_array($var)) {
        //Variables de type array() non supportée par la fonction mysql_safe()
        return NULL;
      }
      else return "\"".addslashes(htmlspecialchars($var))."\"";
    }
    Ensuite, rien a faire pour l'insertion dans la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $maVar = mysql_safe('"; DROP DATABASE maBD;');
     
    $query = "INSERT INTO maTable (monTexte) VALUES (".$mavar.")";
    Pensez à la balise

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 35
    Points : 16
    Points
    16
    Par défaut
    slt

    Y a une erreur dans le mot oeil surla page d'accueil de ton site. "" oeil ""

    Bonjour et bienvenue sur Publicannonces.com . Ce site est encore en cours de construction, mais merci de revenir y jetter un coup d' oeuil de temps en temps car beaucoup de nouveautés y sont ajoutées chaque jours .

    Si je peux me rendre utile

  6. #6
    Inactif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 179
    Points : 202
    Points
    202
    Par défaut
    Qu'est-ce que c'est que ce mélange aléatoire de fonctions en tout genre pour protéger une requête SQL ?

    mysql_real_escape_string est faîte pour ça et suffit à elle seule (il faut juste mettre les valeurs entre quotes dans la requête).

    C'est à l'affichage qu'il faut utiliser htmlspecialchars (ou autre du même genre) pour afficher une donnée provenant de l'utilisateur, ou que l'on ne contrôle pas.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par sielfried Voir le message
    Qu'est-ce que c'est que ce mélange aléatoire de fonctions en tout genre pour protéger une requête SQL ?

    mysql_real_escape_string est faîte pour ça et suffit à elle seule (il faut juste mettre les valeurs entre quotes dans la requête).

    C'est à l'affichage qu'il faut utiliser htmlspecialchars (ou autre du même genre) pour afficher une donnée provenant de l'utilisateur, ou que l'on ne contrôle pas.
    Je suis entièrement daccord, merci à toi

    referenceur-tv: merci pour la correction !

  8. #8
    Membre actif Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Points : 254
    Points
    254
    Par défaut
    Je ne connaissait pas cette fonction.

    Quoi qu'il en soit ce mélange de fonction "aléatoire" ne m'as jamais posé problème et je ne vois pas pourquoi ça en causerait si on utilise toujours la même fonction lors de la création d'une requête MySQL. Je donnerai une place à mysql_real_escape_string dans ma fonction au "mélange aléatoire" mais je trouve toujours pratique de laisser ma fonction mettre les quotes elle même, ça allège le code d'un festival de ."\", \"". et facilite la lecture de la requête.
    Pensez à la balise

  9. #9
    Inactif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 179
    Points : 202
    Points
    202
    Par défaut
    Sauf que addslashes, ça ne sécurise pas (complètement) une requête MySQL. Quant à htmlspecialchars, non seulement ça n'y change pas grand chose, mais ça implique que tu stockes du HTML brut dans ta base de données. Si tu veux afficher ça dans autre chose qu'une page web, et que tu veux pas de HTML, ben tu peux pas (à moins de refaire le traitement inverse avec html_entity_decode, mais c'est moche).

  10. #10
    Membre actif Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Points : 254
    Points
    254
    Par défaut
    Effectivement, j'ai remplacé mes deux fonctions par mysql_real_escape_string car ça fait plus de sens maintenant que je connais cette fonction. Reste qu'il ne reste plus grand chose (et non rien sutout) de bien dangereux dans une string une fois passé à travers addslashes et html_special_chars à mon avis.
    Pensez à la balise

  11. #11
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2
    Points : 4
    Points
    4
    Par défaut
    il a été découvert il y a quelques temps une fille de sécurité majeure dans addslashes().

    Ensuite mysql_real_escape_string() te protège ta variables comme il le faut pour la simple est bonne raison qu'elle a été crée dans ce but là uniquement.
    Ensuite, le htmlspecialchars() ne sert que lors de l'affichage afin d'éviter que si l'utilisateur a entré du code html celui-ci ne vas pas complètement dénaturer ton design (au passage, elle sert a se protéger des failles XSS).

    Il ne vaut mieux pas mélanger la protection des données lors de leur collecte et de leur traitement et la protection des données lors de leur affichage. Par exemple l'utilisation de htmlspecialchars() vas rajouter un nombre conséquent de caractères à ta chaines, ce qui n'est pas vraiment conseillés lorsque tu l'insère dans une base de données.

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

Discussions similaires

  1. [ODBC] Fonctions de sécurité de base à appliquer à mon site web.
    Par polux31 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/05/2011, 14h22
  2. Sécurité lors de l'inscription à mon site
    Par ned-flanders dans le forum Sécurité
    Réponses: 1
    Dernier message: 25/03/2007, 20h55
  3. [Sécurité] évoluer la sécurité de mon site
    Par jack_1981 dans le forum Langage
    Réponses: 2
    Dernier message: 11/12/2006, 11h32
  4. [Sécurité] Sécurité de mon site
    Par bat2504 dans le forum Langage
    Réponses: 1
    Dernier message: 04/10/2006, 15h45
  5. Réponses: 13
    Dernier message: 20/06/2006, 19h11

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