begin process at 2012 05 28 22:53:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Faille XSS dans moteur de recheche


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Faille XSS dans moteur de recheche

mardi 27 juillet 2010 à 07:52:27 | Faille XSS dans moteur de recheche

hantise_2004

Bonjour,

J'ai découvert une faille de type XSS dans mon moteur de recherche j'ai essayer d'inclure HTMLentitie et htmlspecialchars mais ils me font planter mon moteur de recheche chaque fois que je les inclus dans mon fichier php.

pourriez vous m'aider SVP

Faille XSS dans moteur de recheche

mardi 27 juillet 2010 à 08:35:32 | Re : Faille XSS dans moteur de recheche

pysco68

Bonjour,

précise un peux plus, et donne nous du code comme ca on pourra t'aider,

Cordialement,
- Pysco68
mardi 27 juillet 2010 à 09:09:18 | Re : Faille XSS dans moteur de recheche

hantise_2004

Fichier resultats.php


<?php
$largeurTableau="95%"; // Largeur du Tableau
$NombreRepPages=10; // Nombre n d'intitulés de pages Web à afficher par pages de résultat
$NombreRepMax=200; // Nombre maximum de résultats à traiter par le moteur
$policeResultats="verdana"; // Police de caractères utilisée pour l'affichage des résultats
$couleurPoliceResultats="#000000"; // Couleur de la police de caractères utilisée pour l'affichage des résultats
?>

<html>
<head>
<title>Moteur de recherche - Résultats de la recherche</title>
</head>

<body bgcolor="#95B5CC">



<?php
$fichierIndex="indexsite.dat";
$motsVides=" and or et ou le la les un une du de des a à au aux son sa ses ne ni non sauf ce ces cet je tu il elle on nous vous ils elles etc mon ma ton ta vos se y en ";
if(!file_exists("indexsite.dat")) {
print("Le site Web n'a pas encore été indexé : veuillez exécuter le <b>script d'indexation</b> avant d'effectuer votre première recherche.\n");
exit;
}
if(!$requete) {
print("<center>\n");
print("<font face=\"$policeResultats\" size=\"-1\" color=\"$couleurPoliceResultats\">\n");
print("Vous avez activé la recherche sans avoir préalablement saisi votre requête.<br>");
print("<a href=\"moteured.php\">Cliquez ici</a> pour effectuer une nouvelle recherche.<br>\n");
print("</font>\n");
print("</center>\n");
}
else {
$requete=trim(stripslashes($requete));
$requete1=$requete;
$expressions[]="Liste des expressions";
while($testExpress=ereg("[\"]([^\"]+)[\"]",$requete1,$corresExpress)) {
$exp=$corresExpress[1];
$expressions[]=$exp;
$requete1=ereg_replace($corresExpress[0],"",$requete1);
}
$nombreExpressions=count($expressions)-1;
function netGuil($term) {
if(ereg("^[\"]*([^\"]+)[\"]*$",$term,$corres)) {
$reps=$corres[1];
return $reps;
}
else {
return($term);
}
}
$requete2=$requete;
$motsCles[]="Liste des mots-clés";
$mot=trim(stripslashes(strtok($requete2," ")));
if(!(ereg("[ ]".$mot."[ ]",$motsVides))) {
$motsCles[]=netGuil($mot);
}
while($mot=trim(stripslashes(strtok(" ")))) {
if($mot and (!(ereg("[ ]".$mot."[ ]",$motsVides)))) {
$motsCles[]=netGuil($mot);
}
}
$nombreMotsCles=count($motsCles)-1;
$contenuIndex=file($fichierIndex);
$nlignesIndex=count($contenuIndex);
$nombreDocumentsIndexes=($nlignesIndex-1)/4;
for($compt=1;$compt<=$nombreDocumentsIndexes;$compt++) {
$cheminDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+1]));
$titreDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+2]));
$descriptionDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+3]));
$texteDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+4]));
}
for($compt=1;$compt<=$nombreDocumentsIndexes;$compt++) {
$score[$compt]=0;
if(eregi("(^|[ .,:;!?'()])".$requete."([ .,:;!?'()]|$)",$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;
for($a=1;$a<=$nombreExpressions;$a++) {
if(eregi("(^|[ .,:;!?'()])".$expressions[$a]."([ .,:;!?'()]|$)",$titreDocument[$compt])) $score[$compt]=$score[$compt]+2;
if(eregi("(^|[ .,:;!?'()])".$expressions[$a]."([ .,:;!?'()]|$)",$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;
}
for($b=1;$b<=$nombreMotsCles;$b++) {
if(eregi("([^*]*)
  • ",$motsCles
  • [$b],$corMotCle)) {
    if(eregi("(^|[ .,:;!?'()])".$corMotCle[1],$titreDocument[$compt])) $score[$compt]=$score[$compt]+2;
    if(eregi("(^|[ .,:;!?'()])".$corMotCle[1],$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;
    }
    else {
    if(eregi("(^|[ .,:;!?'()])".$motsCles[$b]."([ .,:;!?'()]|$)",$titreDocument[$compt])) $score[$compt]=$score[$compt]+2;
    if(eregi("(^|[ .,:;!?'()])".$motsCles[$b]."([ .,:;!?'()]|$)",$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;
    }
    }
    }
    $HiScore=max($score);
    arsort($score);
    $documentsCorrespondantsOrd[]=0;
    for(reset($score);$cle=key($score);next($score)) {
    if(current($score)>0) {
    $documentsCorrespondantsOrd[]=$cle;
    }
    }
    $nombreCorrespondances=count($documentsCorrespondantsOrd)-1;
    print("<table width=\"$largeurTableau\" border=\"0\" align=\"center\"> \n");
    print("<tr><td> \n");
    if($nombreCorrespondances<1) {
    print("<center> \n");
    print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
    print("Désolé, aucune page ne correspond à la recherche : '<b>$requete</b>'. <br><br> \n");
    print("</font> \n");
    print("</center> \n");
    }
    else {
    if(@ !$p) $p=1;
    if($nombreCorrespondances==1) {
    print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
    print("La requête '<b>$requete</b>' a donné <b>1</b> résultat. <br>\n");
    print("</font> \n");
    }
    else {
    if($nombreCorrespondances>=$NombreRepMax) {
    print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
    print("La requête '<b>$requete</b>' a donné plus de $NombreRepMax résultats. <br>\n");
    print("</font> \n");
    $nombreCorrespondances=$NombreRepMax;
    }
    else {
    print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
    print("La requête '<b>$requete</b>' a donné <b>$nombreCorrespondances</b> résultats. <br>\n");
    print("</font> \n");
    }
    }
    print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
    print("Liste des pages <b>".$p."</b> à <b>".(min(($p+$NombreRepPages-1),$nombreCorrespondances))."</b> :<br><br>");
    print("</font> \n");
    for($compt=$p;$compt<=min(($p+$NombreRepPages-1),$nombreCorrespondances);$compt++) {
    print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
    print("<b>$compt</b>. <a href=\"".$cheminDocument[$documentsCorrespondantsOrd[$compt]]."\"><b>".$titreDocument[$documentsCorrespondantsOrd[$compt]]."</b></a><br> \n");
    print($descriptionDocument[$documentsCorrespondantsOrd[$compt]]."<br><br> \n");
    print("</font> \n");
    }
    print("<center> \n");
    if(($p-$NombreRepPages)>0) {
    print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
    print("<a href=\"resultats.php?requete=".rawurlencode($requete)."&p=".($p-$NombreRepPages)."\">&lt;&lt; page précédente</a> &nbsp; \n");
    print("</font> \n");
    }
    if($nombreCorrespondances>$NombreRepPages) {
    print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
    for($a=1;$a<=(floor(($nombreCorrespondances-1)/$NombreRepPages)+1);$a++) {
    if((floor($p/$NombreRepPages)+1)==$a) {
    print("$a &nbsp; \n");
    }
    else {
    @ print("<a href=\"resultats.php?requete=".rawurlencode($requete)."&p=".(($a-1)*$NombreRepPages+1)."\">$a</a> &nbsp; \n");
    }
    }
    print("</font> \n");
    }
    if(($p+$NombreRepPages)<=$nombreCorrespondances) {
    print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
    @ print(" &nbsp; <a href=\"resultats.php?requete=".rawurlencode($requete)."&p=".($p+$NombreRepPages)."\">page suivante &gt;&gt;</a> \n");
    print("</font> \n");
    }
    print("</center> \n");
    }


    // **************************************************************************
    // Affichage du formulaire permettant d'effectuer une nouvelle recherche
    // **************************************************************************
    print("<form action=\"resultats.php\" method=\"post\"> \n");
    print("<table align=\"center\"> \n");
    print("<tr><td align=\"center\"> \n");
    print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
    print("Effectuer une nouvelle recherche: <br> \n");
    print("</font> \n");
    print("</td></tr> \n");
    print("<tr><td align=\"center\"> \n");
    print("<input type=\"text\" name=\"requete\" size=\"20\"> \n");
    print(" &nbsp; ");
    print("<input type=\"submit\" value=\"Chercher\"> \n");
    print("</td></tr> \n");
    print("</table> \n");
    print("</form> \n");
    print("<center><font face=\"$policeResultats\" size=\"-2\" color=\"$couleurPoliceResultats\">\n");
    print("</td></tr> \n");
    print("</table> \n");
    $idFiqReq=fopen("req.txt","a+");
    fputs($idFiqReq,$requete."\n");
    fclose($idFiqReq);
    }
    ?>





    fichier pour indexer mon site indexat.php

    <?php
    // ##################################################################################
    // Paramètres de configuration du module d'indexation : nom du répertoire principal à parcourir (rappelons que ses sous-répertoires sont parcourus de façon automatique)


    // === Localisation du répertoire principal à indexer === Note : le nom du répertoire ne doit pas être refermé par un slash
    // Entrez la valeur "." pour le répertoire courant, ".." pour le répertoire parent
    $cheminRepertoire="..";

    // === Renseignement sur les types de fichiers à indexer === Note : Entrez ici les différents formats de fichiers à indexer, séparés par une virgule
    // Rappel : les seuls formats acceptés pour l'instant sont htm, html et txt
    $listeFormatsFichiers="htm,html";

    ?>


    <html>
    <head>
    <title>Moteur de recherche - Module d'indexation</title>
    </head>
    <body>

    <?php
    if(!is_dir($cheminRepertoire)) {
    print("Erreur ! <b>".basename($cheminRepertoire)."</b> n'est pas un répertoire.");
    exit;
    }
    $formatsInterdits=" php php3 php4 ";
    $formatCourant=strtok($listeFormatsFichiers,",");
    do {
    if(eregi(" ".$formatCourant." ",$formatsInterdits)) {
    print("Rappel : les fichiers de format <b>$formatCourant</b> ne peuvent pas être indexés.<br> \n");
    $formatCourant=strtok(",");
    continue;
    }
    else {
    $formatFichiers[]=".".$formatCourant;
    $formatCourant=strtok(",");
    continue;
    }
    } while($formatCourant);
    function listeRecursiveFichiers($cheminRep,$extension) {
    global $tableauCorrespondances;
    static $formatsTraites;
    $idRep=opendir($cheminRep);
    while($objet=readdir($idRep)) {
    $formatObjet=strstr($objet,".");
    $cheminObjet=$cheminRep."/".$objet;
    if($objet=="." or $objet=="..") {
    continue;
    }
    if($formatObjet==$extension) {
    $tableauCorrespondances[]=$cheminObjet;
    }
    if(is_dir($cheminObjet)) {
    listeRecursiveFichiers($cheminObjet,$extension);
    }
    }
    closedir($idRep);
    }
    $nombreFormats=count($formatFichiers); // nombre de formats de fichiers à indexer
    for($compt=0;$compt<$nombreFormats;$compt++) {
    listeRecursiveFichiers($cheminRepertoire,$formatFichiers[$compt]);
    }
    $listeXFichiers=$tableauCorrespondances;
    print("<br>La liste des fichiers à indexer est la suivante :<br><br> \n");
    $nombreFichiersAIndexer=count($listeXFichiers);
    for ($compt=0;$compt<$nombreFichiersAIndexer;$compt++) {
    print($compt." / ".$listeXFichiers[$compt]."<br> \n");
    }
    print("<br> \n");


    // ****************************************************************************
    // Création du fichier indexsite.dat et enregistrement de différentes valeurs :
    // ****************************************************************************
    $idFicIndex=fopen("indexsite.dat","w+");
    // Ecriture d'un message d'avertissement sur la première ligne
    fputs($idFicIndex,"Fichier Index. Ne pas éditer ! \n");
    for($compt=0;$compt<count($listeXFichiers);$compt++) {
    $cheminFichierCandid=$listeXFichiers[$compt];
    if(!is_readable($cheminFichierCandid)) {
    continue;
    }
    $idFicCandid=fopen($cheminFichierCandid,"r");

    $titre="";
    $description="";
    $ligne="";
    $texte="";
    while(!feof($idFicCandid)) {
    $ligne=fgets($idFicCandid,10000);
    $ligne=str_replace("&nbsp;"," ",$ligne);
    $ligne=str_replace("&NBSP;"," ",$ligne);
    $ligne=trim($ligne);
    if (ereg("^[^<>]+$",$ligne)
    or ereg(">[^<>]+<",$ligne)
    or ereg(">[^<>]+$",$ligne)
    or ereg("^[^<>]+<",$ligne)
    ) {
    $ligne=$ligne." ";
    }
    $texte=$texte.$ligne;
    }
    fclose($idFicCandid);
    $texte=stripslashes($texte);
    if($testTitre=eregi("<title>(.*)</title>",$texte,$corresTitre)) {
    $titre=$corresTitre[1];
    }

    else {
    $titre="Document sans titre";
    }
    $testMeta=eregi("name=\"description\"[ ]*content=\"([^\"]*)\"",$texte,$corresDescript);
    if($testMeta) {
    $description=$corresDescript[1];
    $description=substr($description,0,150);
    }
    $texte=eregi_replace("<script.+/script>","",$texte);
    $texte=strip_tags($texte);
    $texte=substr($texte,0,8000);
    if(!$testMeta) {
    $description=substr($texte,0,150);
    }
    if(strlen($description)>140) {
    if($testFin1=ereg("(.*)[ ][^ ]*$",$description,$corresFin1)) {
    $description=$corresFin1[1];
    if($testFin2=ereg("(.*)[,;:.]$",$description,$corresFin2)) {
    $description=$corresFin2[1];
    }
    $description=$description."...";
    }
    else {
    $description=$description."...";
    }
    }
    fputs($idFicIndex,$cheminFichierCandid."\n"); // écriture du chemin du fichier (ligne N)
    fputs($idFicIndex,$titre."\n"); // écriture du titre (ligne N+1)
    fputs($idFicIndex,$description."\n"); // écriture de la description (ligne N+2)
    fputs($idFicIndex,$texte."\n"); // écriture du texte à indexer (ligne N+3)
    print("$compt / Le fichier $cheminFichierCandid a bien été indexé <br> \n");
    }
    fclose($idFicIndex);

    //**********************************************************************************
    // Vérification du résultat de l'indexation
    //**********************************************************************************

    $tabFicIndVerif=file("indexsite.dat");
    $nlignesEffectivementIndexees=(count($tabFicIndVerif)-1)/4;
    print("<br>\n");
    if($nlignesEffectivementIndexees==$nombreFichiersAIndexer) {
    print("L'indexation des fichiers contenus dans le répertoire \"<b>$cheminRepertoire</b>\" a atteint son terme et s'est déroulée correctement. \n");
    print("Pour effectuer une première recherche, <a href=\"moteured.php\">cliquez ici</a>.\n");
    }
    else {
    print("L'indexation des fichiers contenus dans le répertoire \"<b>$cheminRepertoire</b>\" n'a pas atteint son terme.<br>Ce problème est peut-être dû au nombre relativement important de fichiers à indexer. Afin de tous les englober dans le fichier indexsite.dat, vous devez recommencer l'opération d'indexation en ayant préalablement augmenté (si vous en avez la possibilité) la durée maximum d'exécution des scripts PHP, dans le fichier php.ini.");
    }
    ?>



    mardi 27 juillet 2010 à 09:14:51 | Re : Faille XSS dans moteur de recheche

    hantise_2004

    exemple de requette non filtrée par le moteur de recherche
    une attaque XSS toute simple <script>alert(document.cookie);</script> mon moteur de recherche l'exècute sans le bloquer

    mercredi 28 juillet 2010 à 16:25:10 | Re : Faille XSS dans moteur de recheche

    Seby63

    Ta essayer avec un mysql_real_escape_string()?

    Tu pourrais nous copier juste les lignes ou tu récupère le texte saisie par l'utilisateur?
    mercredi 28 juillet 2010 à 16:25:38 | Re : Faille XSS dans moteur de recheche

    Seby63

    Ou strip_tags()...
    jeudi 29 juillet 2010 à 08:34:58 | Re : Faille XSS dans moteur de recheche

    hantise_2004

    Je ne passe par par une base Mysql
    Je lance le fichier indexat.php qui index mon site et stocke les donnée dans un fichier texte indexsite.dat ou il enregistre tout les liens

    Le code pour appeler le moteur de recherche et

    <form action="Moteur_de_Recherche/resultats.php" method="post">
    <input type="text" name="requete" size="25" style="width: 90%">
    <table border="0"><tr><td></td></tr></table>
    <input type="submit" value="Chercher">
    jeudi 29 juillet 2010 à 08:35:42 | Re : Faille XSS dans moteur de recheche

    hantise_2004

    je ne connait pas la balise strip_tags()... tu pourrais me donner un exemple
    vendredi 30 juillet 2010 à 17:57:02 | Re : Faille XSS dans moteur de recheche

    RaftY

    Salut,

    google ou php.net sont tes amis.

    http://www.google.fr/search?sourceid=chrome&ie=UTF-8&q=strip_tags()


    ______oOOO________OOOo________

    RaftY, du code C commode!
    jeudi 5 août 2010 à 07:19:26 | Re : Faille XSS dans moteur de recheche

    hantise_2004

    Merci a tous problème resolus


    Cette discussion est classée dans : moteur, faille, recheche, xss


    Répondre à ce message

    Sujets en rapport avec ce message

    Faille XSS [ par Le13009 ] Bonjour, j'ai telecharger un script open source, c'est un script de gestion de cabinet medecin, mais je viens de m'appercevoir que le script contient Création de moteur de recherche. [ par developvbdebut ] Bonjour tout le mondeVoici mon problème, je souhaite créer un moteur de recherche de données, et que j'ai une erreur de Voici mon code. <FORM N Surligner mot moteur recherche [ par flopad ] Bonjour,j'utilise un moteur de recherche en php.Lorsque l'utilisateur effectue une recherche, il arrive sur une page avec un résumé des pages qui corr Conception d'un moteur de recherche [ par moniteur ] Bonjour,Je cherche à réaliser un moteur de recherche en php ( / mysql ? ) afin de rechercher dans des fichiers textes (pour simplifier). En faisant qu probleme moteur [ par fci80 ] j ai un probleme sur mon moteur de voiture de type ford fiesta 2ieme generation cause fuite d'huile au niveau de la courroie moteur essence donc si vo Qui est le moteur de template de joomla ? [ par wassimbik ] Bonjour,à tousQui est le moteur de template de joomla ?Pouvez vous me donner le code source du moteur de template de joomla  et m'aider à comprendre c moteur de recherche interne [ par aloalo93 ] Bonjour,je suis totalement débutant en php et je sohaiterait incorporer un moteur de recherche interne à mon site voici ou je voudrais l'intégrer :<a Moteur de recherche [ par Adasteriam ] Cher tous, bonsoir! Je n'ai jamais programmé car je m'en suis toujours sortis sans en "programmant" avec l'interface dreamweaver mais aussi en téléch moteur de recherche [ par moustaine84 ] salut je cherche un cript pour faire une recherche dans plusieur tableau dans une base de donnèe. merci a tous creation de moteur de recherche sans chargement de la page [ par jouiniatef ] Bonjour tout le monde,Je suis en train de développer un moteur de recherche comme celui www.promovacances.comMon probléme c'était comment faire pour c


    Nos sponsors


    Sondage...

    CalendriCode

    Mai 2012
    LMMJVSD
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   

    Consulter la suite du CalendriCode

    A découvrir



     
    Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
    CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
    CodeS-SourceS.com© est une marque déposée tous droits réservés

    Google Coop CodeS-SourceS Google Coop CodeS-SourceS
    Temps d'éxécution de la page : 0,764 sec (3)

    Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales