Categorizator : Attention Sécurité (injection + html)

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par athoms, 8 Décembre 2007.

  1. athoms
    athoms WRInaute discret
    Inscrit:
    22 Avril 2004
    Messages:
    212
    J'aime reçus:
    0
    Bonsoir,

    Je viens de me rendre compte que dans la version standard de categorizator, il était possible lors de la soumission de sites, de placer dans les champs du code html et qu'il était vulnérable à une attaque de type injection. Sic. 8O

    Je viens donc de modifier le script, et vous livre la solution que j'ai adoptée afin de pouvoir vous protéger. Libre à vous de l'adapter, où de la modifier et vu le nombre de version de categorizators, yourphpannuaire, il y a de grande chance que vous devrez la modifier.

    Le problème avec ce superbe script, et qu'il est possible de placer du code html (du moins dans la version que je possède),et que dans l'interface d'admin on ne le voit pas...

    Voici donc ce que j'ai fait pour éviter cela.

    Pour éviter cela :

    Dans le fichier submit_site.php

    Remplacer
    Code:
    $nom_proprio = isset($_POST['nom_proprio']) ? $_POST['nom_proprio'] : '';
    	$email_proprio = isset($_POST['email_proprio']) ? $_POST['email_proprio'] : '';
    	$titre = isset($_POST['titre']) ? $_POST['titre'] : '';
    	$url = isset($_POST['url']) ? $_POST['url'] : '';
    	$url_image = isset($_POST['url_image']) ? $_POST['url_image'] : '';
    	$url_image = $url_image=='http://' ? '' : $url_image;
    	$description = isset($_POST['description']) ? $_POST['description'] : '';
    	$add2newsletter = isset($_POST['add2newsletter']) ? (int)$_POST['add2newsletter'] : 0;
    	$code = isset($_POST['code']) ? $_POST['code'] : '';*/
    
    Par

    Code:
    $nom_proprio = isset($_POST['nom_proprio']) ?  strip_tags ($_POST['nom_proprio']) : '';
    	$email_proprio = isset($_POST['email_proprio']) ?  strip_tags ( $_POST['email_proprio']) : '';
    	$titre = isset($_POST['titre']) ?  strip_tags ($_POST['titre']) : '';
    	$url = isset($_POST['url']) ?  strip_tags ($_POST['url']) : '';
    	$url_image = isset($_POST['url_image']) ?  strip_tags ($_POST['url_image']) : '';
    	$url_image = $url_image=='http://' ? '' : $url_image;
    	$description = isset($_POST['description']) ?  strip_tags ($_POST['description']) : '';
    	$add2newsletter = isset($_POST['add2newsletter']) ? (int)$_POST['add2newsletter'] : 0;
    	$code = isset($_POST['code']) ? $_POST['code'] : '';
    
    Cela aura pour effet de virer les codes html et javascript.

    Pour eviter les injections sql :trouver la requête d'insertion (dans le cas d'une validation manuelle. Faire de même pour la requette de validation automatique le cas échéant) :

    Code:
    $sql = "INSERT INTO $T_sites_in_wait (id_cat,titre,description,url,url_image,nom_proprio,email_proprio,date_soumission) VALUES ('$id_cat','$titre','$description','$url','$url_image','$nom_proprio','$email_proprio',CURRENT_DATE) ";
    la Remplacer par :

    Code:
    $sql = sprintf("INSERT INTO $T_sites_in_wait (id_cat,titre,description,url,url_image,nom_proprio,email_proprio,date_soumission) VALUES ('%s', '%s', '%s','%s','%s','%s','%s',CURRENT_DATE)",
                   mysql_real_escape_string($id_cat,$lk),
                   mysql_real_escape_string($titre,$lk),
                   mysql_real_escape_string($description,$lk),
                   mysql_real_escape_string($url,$lk),
                   mysql_real_escape_string($url_image,$lk),
                   mysql_real_escape_string($nom_proprio,$lk),
                   mysql_real_escape_string($email_proprio,$lk));
    
    Cela devrait empecher toute forme d'attaque par injection. J'ai testé, et chez moi ça fonctionne.

    Bon week end à tous.
     
  2. darmond.j
    darmond.j WRInaute discret
    Inscrit:
    18 Février 2007
    Messages:
    217
    J'aime reçus:
    0
  3. Victor BRITO
    Victor BRITO WRInaute occasionnel
    Inscrit:
    21 Décembre 2006
    Messages:
    332
    J'aime reçus:
    0
    Y compris des balises script enfermant du JavaScript susceptible d'être maléfique ? 8O
     
  4. laupie
    laupie WRInaute discret
    Inscrit:
    13 Mai 2007
    Messages:
    164
    J'aime reçus:
    0
    Reco! :) et merci!
     
  5. athoms
    athoms WRInaute discret
    Inscrit:
    22 Avril 2004
    Messages:
    212
    J'aime reçus:
    0
    Bonjour,

    J espère que cette modif vous sera utile,

    Oui... J'ai juste pour l'instant eu droit pour ma part à des petits malins qui mettaient de la pub ou des caractères gras, des couleurs... Il y a même un webmaster qui a placé une popub avec un effet retardateur :evil:

    Sinon concernant la sécurité de ce script, Je vous conseille de renommer la répertoire admin, et de le protéger par password avec un htpasswd.

    Les commentaires doivent être aussi protégés de la même manière que celle décrite plus haut.

    De plus j'ai fait une petite fonction pour interdire de placer une url dans les commentaires. cela permet d'éviter que les commentaires ne soient là que pour faire de la pub (libre à vous de l'utiliser ou non).

    Voici la fonction à intégrer par exemple dans functions.php:
    Code:
    function pas_http($champ,$message,$inc = false)
    
    {
    	$message .= "<br><br>";
    	$message .= "<a href=\"javascript:history.go(-1);\">Retour au formulaire</a>";
    	$champ = trim($champ);
    	if (ereg("http",$champ))
    	{
    		echo "<CENTER>$message</CENTER>";
    		if ($inc) //si il faut inclure le fichier de fin (-> submit_site)
    			include("after.php"); 
    		exit;
    	}
    	else
    		return false; }
    Puis placer après la ligne
    Code:
    est_vide($texte,"Veuillez entrer votre commentaire!");
    la ligne
    Code:
    pas_http($texte,"Pas d'adresse de sites accept&eacute;e dans le message!");
    Voila :)
     
  6. mrPringle
    mrPringle WRInaute occasionnel
    Inscrit:
    11 Mars 2006
    Messages:
    472
    J'aime reçus:
    0
    Merci, non pas pour categorizor en ce qui me concerne, mais je ne connaissais pas la fonction mysql_real_escape_string(), qui a l'air plutôt utile, ça évite de faire pareil à la main.
     
  7. j-mi
    j-mi WRInaute passionné
    Inscrit:
    17 Mai 2005
    Messages:
    1 753
    J'aime reçus:
    0
    merci athoms
    ta modif est bien plus simple que la mienne , moi je connaissait depuis 2 ans cette faille ^^ et la laisse meme ouverte car certains on plus facile a poster leurs sites en mode vrac :)
     
  8. keroin
    keroin WRInaute passionné
    Inscrit:
    29 Avril 2006
    Messages:
    1 501
    J'aime reçus:
    0
    Excellent, j'étais justement en train de rechercher ce type de script pour les commentaires :D
    Merci beaucoup ;)
     
  9. titiplanti
    titiplanti WRInaute occasionnel
    Inscrit:
    4 Novembre 2004
    Messages:
    358
    J'aime reçus:
    0
    Merci.

    (Il y a intérêt à vite faire la modif maintenant que tu as dévoilé la faille ^^)
     
  10. athoms
    athoms WRInaute discret
    Inscrit:
    22 Avril 2004
    Messages:
    212
    J'aime reçus:
    0
    de rien :)

    J'ai oublié de dire une chose, lors de l'affichage il faudra enlever les "\" dans le titre et la description, sinon ça ne fera pas très propre.

    Pas si évident en ce qui concerne l'injection de code mysql, ce n'est pas à la portée de tous et ça nécessite quand même de bien connaitre la structure des tables mysql utilisées sur ce script. Mais mieux vaut tout de même éviter les risques.
     
  11. alliax
    alliax WRInaute occasionnel
    Inscrit:
    30 Août 2005
    Messages:
    370
    J'aime reçus:
    0
    Salut, c'est cool d'apporter de la sécurité.
    Mais est-ce que cela pourrait être ajouté au script lui même?
    On m'a donné une page mais la dernière version semble dater d'aout 2005, est-ce possible que personne n'ai repris le script depuis pour y apporter quelques améliorations?

    Si oui sur quel page peut on le télécharger?

    Merci
     
  12. athoms
    athoms WRInaute discret
    Inscrit:
    22 Avril 2004
    Messages:
    212
    J'aime reçus:
    0
    bonjour,

    En fait il me semble que depuis il n'y ait plus de version officielle de ce script open source. Beaucoup de webmasters, l'ont intégré sur leur site, certains en se contentant de l'installer, d'autres en l'adaptant. Il me semblent que certains ont repris le travail et ont sorti des versions modifiées sous d'autres noms.

    Effectivement, ça pourrait être sympa d'avoir un package de categorizator corrigé avec de nouvelles améliorations mais ça demanderait pas mal de travail, sachant que la plupart des utilisateurs l'ont customizé pour qu'il réponde à leur besoin et s'intègre à leur site.
     
  13. freete
    freete Nouveau WRInaute
    Inscrit:
    23 Mai 2006
    Messages:
    25
    J'aime reçus:
    0
    Salut Athoms

    Merci mais tu dit :

    " J'ai oublié de dire une chose, lors de l'affichage il faudra enlever les "\" dans le titre et la description, sinon ça ne fera pas très propre. "

    est ce que tu pourrai précise la procédure pour enlever les "\"

    Merci
     
  14. NoGlob
    NoGlob WRInaute discret
    Inscrit:
    17 Septembre 2007
    Messages:
    143
    J'aime reçus:
    0
    Bonjour,

    la fonction stripslashes() retire les \
     
  15. athoms
    athoms WRInaute discret
    Inscrit:
    22 Avril 2004
    Messages:
    212
    J'aime reçus:
    0
    Bonjour,

    Désolé cela fait quelque temlps que je ne suis pas venu sur Webrank.
    Je ne pas fournir une version de categorizator, car je n'utlise plus que quelques gragments du code original..

    Merci Noglob de ta réponse, il y a aussi strreplace qui peux faire l''affaire.

    Bonne journée à tous.
     
  16. alliax
    alliax WRInaute occasionnel
    Inscrit:
    30 Août 2005
    Messages:
    370
    J'aime reçus:
    0
    J'ai depuis, vu qu'un script d'annuaire populaire s'appelle FREEGLOBES, par rapport à categorizator, vous en pensez quoi?
    Apparement il doit etre plus recent/mieux car j'en ai vu plusieurs qui commence de nouveaux annuaires avec freeglobes, je pense qu'ils doivent aussi connaitre categorizator et qu'ils ont fait le choix de freeglobes apres avoir reflechi
     
  17. athoms
    athoms WRInaute discret
    Inscrit:
    22 Avril 2004
    Messages:
    212
    J'aime reçus:
    0
    Salut,

    En ce qui concerne freeglobes, je le connaisun tout petit peu en tant qu'internaute (non testé sur un de mes sites), et effectivement il a l'air pas mal. Categorizator est excellent mais commence à dater. D'ailleurs beaucoup de webmasters, l'ont d'ailleurs re-écris partiellement ou complétement afin qu'il soit plus moderne ou plus efficace.

    Pour une personne possédant un annuaire avec une base de plus de 1000 sites, migrer sur freeglobe doit être faisable, mais pas si simple.

    Dans le cas d'un nouvel annuaire, ça pourrait je pense être un bon choix technique. Idem pour ceux qui n'y connaissent rien en php.

    Il y a aussi des hacks ou dérivés de categorizator, je ne me souviens plus de leur nom, qui ont l'air pas mal car ils integrent par défaut des modification apportées à categorizator.
     
  18. alliax
    alliax WRInaute occasionnel
    Inscrit:
    30 Août 2005
    Messages:
    370
    J'aime reçus:
    0
    un script qui est parti de categorizator aussi c'est CIGIEMA (drole de nom) adresse :
    http://forum.cigiema.fr/t1754-Script-V4R01.html pour la version 4R01

    je ne sais pas si c'est bien ou pas, j'imagine que c'est pas mal, puisque tenu a jour mais comparé a freeglobes je ne sais pas.

    Je n'ai essayé ni freeglobes ni cigiema, mais j'avais bien aimé categorizator bien que j'avais du faire beaucoup de modifs et surtout faire une page par site, page fiche car ca n'existait pas d'origine.
     
Chargement...
Similar Threads - Categorizator Attention Sécurité Forum Date
Redirection Arfooo / Categorizator Netlinking, backlinks, liens et redirections 26 Mai 2010
Mot de passe avec categorizator Développement d'un site Web ou d'une appli mobile 26 Décembre 2009
Obliger 300 caractères dans du Categorizator Débuter en référencement 4 Novembre 2009
Meta description differente Categorizator Débuter en référencement 2 Novembre 2008
Erreur d'affichage (é=>?) categorizator rewrité Développement d'un site Web ou d'une appli mobile 18 Mai 2008
Categorizator = page rank zero Crawl et indexation Google, sitemaps 7 Mai 2008
Categorizator : une fiche par site Développement d'un site Web ou d'une appli mobile 6 Avril 2008
Problème de connexion à mysql (annuaire categorizator) Développement d'un site Web ou d'une appli mobile 9 Mars 2008
categorizator - problème description site collé à vignette Développement d'un site Web ou d'une appli mobile 30 Janvier 2008
Categorizator - problème Méta automatique Développement d'un site Web ou d'une appli mobile 13 Décembre 2007
Catégorizator, page blanche dans admin.php????? Développement d'un site Web ou d'une appli mobile 13 Novembre 2007
categorizator Annuaires et moteurs 5 Octobre 2007
cherche Categorizator modifié Développement d'un site Web ou d'une appli mobile 25 Septembre 2007
categorie principale categorizator Développement d'un site Web ou d'une appli mobile 22 Septembre 2007
aide Categorizator myphp Développement d'un site Web ou d'une appli mobile 29 Août 2007
/!\ Admins Categorizator /!\ Développement d'un site Web ou d'une appli mobile 17 Août 2007
Question categorizator Développement d'un site Web ou d'une appli mobile 24 Juin 2007
[réglé] Petite modif de nouveaute.php de categorizator ? Développement d'un site Web ou d'une appli mobile 28 Mai 2007
Admin catégorizator Développement d'un site Web ou d'une appli mobile 20 Mai 2007
Créer des liens RSS pour script catégorizator Développement d'un site Web ou d'une appli mobile 18 Mai 2007