Un moteur de recherche interne sécure...
1 message • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
- akinayotaka
- Nouveau WRInaute
- Messages: 47
- Inscription: Jeu Avr 26, 2007 2:00
Un moteur de recherche interne sécure...
Bonjour à tous et à toutes,
J'ai trouvé un petit script PHP qui permet d'installer un moteur de recherche sur un site en html sans l'utilisation de base de données. Je trouvais ce script super sympa jusqu'à ce qu'un FAI me dise ceci:
Bon, n'étant pas un crack de la sécurité, j'ai appelé mon FAI régulier et lui ai demandé ce qu'il en pensait. Il m'a répondu que l'utilisation des variables super Globales était mitigé. Que certains le préconisait comme OScommerce et d'autre s'y butait comme le premier FAI cité. Il m'a dit qu'essentiellement c'était une question de propreté de codage or, je ne connais pas le codeur et après 5 jours d'attentes concernant une réponse, je me tourne vers votre expertise.
Croyez-vous que ce code soit sécuritaire ? Et si non, en auriez-vous un de rechange ?
Un petit formulaire fait un POST vers cette page avec la variable search.
Dans les include on a ce fichier de configuration
Et puis le tout s'affiche dans cette page (temporaire car modifiable à souhait)
Le code provient de cet endroit :
http://homeproduction.free.fr/mysearchengine/index.htm
Merci infiniment pour vos réponses.
Yannick.[/code]
J'ai trouvé un petit script PHP qui permet d'installer un moteur de recherche sur un site en html sans l'utilisation de base de données. Je trouvais ce script super sympa jusqu'à ce qu'un FAI me dise ceci:
"Je peux vous confirmer que nos serveurs supporte votre application mais uniquement si vous respectez les consignes de sécurité de PHP.
Nous utilisons PHP 5 qui permet l’utilisation de variables globales en « ouvrant » cette possibilité.
Les serveurs supérieurs au nôtre utilisent PHP 6 et dans cette version il est « impossible » d’utiliser les variables globales tel qu’elle sont dans votre code.
Notre serveur réponds aux besoins des clients mais nous nous assurons aussi d’éviter les failles de sécurité afin de répondre aussi aux besoins futurs. Si vous désirez « vraiment » ouvrir cette brèche, des tâches différentes devront être envisagées."
Bon, n'étant pas un crack de la sécurité, j'ai appelé mon FAI régulier et lui ai demandé ce qu'il en pensait. Il m'a répondu que l'utilisation des variables super Globales était mitigé. Que certains le préconisait comme OScommerce et d'autre s'y butait comme le premier FAI cité. Il m'a dit qu'essentiellement c'était une question de propreté de codage or, je ne connais pas le codeur et après 5 jours d'attentes concernant une réponse, je me tourne vers votre expertise.
Croyez-vous que ce code soit sécuritaire ? Et si non, en auriez-vous un de rechange ?
Un petit formulaire fait un POST vers cette page avec la variable search.
- Code: Tout sélectionner
<?php
function resum($inputText,$mot)
{
$inputText=ereg_replace("\n","",$inputText);
$sauvegarde=$inputText;
$inputText=strtolower($inputText);
$position=strpos($inputText,$mot);
$sposition=$position;
while (substr($inputText,$position,1)!="."&&$position!=0)
{
$position--;
}
if ($position==0)
{$position=$sposition;
}
$token="....".ereg_replace(",","",substr($sauvegarde,$position,250))."...";
return($token);
}
include("conf-recherche.php");
if ($elapseTime=false) $elapseTime=0;
$search=trim(strtolower(stripslashes($search)));
while(substr($search,0,1)=="+"||substr($search,0,1)=="*"||substr($search,0,1)=="-")
{
$search=substr($search,1,strlen($search));
}
while(substr($search,strlen($search)-1,1)=="+"||substr($search,strlen($search)-1,1)=="*"||substr($search,strlen($search)-1,1)=="-")
{
$search=substr($search,0,strlen($search)-1);
}
$nombremot=0;
for($compteur=0;$compteur<=strlen($search);$compteur++)
{
$caractere=substr($search,$compteur,1);
if($ouvreguillemet==1)
{
if ( $caractere=="\"")
{
$guillemet=1;
$ouvreguillemet=0;
}
continue;
}
else
if ($caractere=="\"")
{
$debutmot=$compteur;
$ouvreguillemet=1;
}
if($caractere==" ")
{
if(substr($search,$compteur+1,1)==" "||substr($search,$compteur+1,1)=="+"||substr($search,$compteur+1,1)=="-"||substr($search,$compteur+1,1)=="*")
{
$search=substr($search,0,$compteur).substr($search,$compteur+1,strlen($search));
$compteur--;
continue;
}
if(substr($search,$compteur-1,1)==" "||substr($search,$compteur-1,1)=="+"||substr($search,$compteur-1,1)=="-"||substr($search,$compteur-1,1)=="*")
{
$search=substr($search,0,$compteur).substr($search,$compteur+1,strlen($search));
$compteur--;
continue;
}
else
{$caractere=$defaut;}
}
if($caractere=="+"||$caractere=="-"||$caractere=="*")
{
if($nombremot==0)
{
if($guillemet==1)
{
$motclef[0]=substr($search,1,$compteur-2);
$guillemet=0;
}
else $motclef[0]=substr($search,0,$compteur);
$operateur[0]=$caractere;
}
else
{
if($guillemet==1)
{
$motclef[$nombremot]=substr($search,$debutmot+1,$compteur-$debutmot-2);
$guillemet=0;
}
else $motclef[$nombremot]=substr($search,$debutmot+1,$compteur-$debutmot-1);
$operateur[$nombremot]=$caractere;
}
$debutmot=$compteur;
$nombremot++;
}
}
if($guillemet==1)$motclef[$nombremot]=substr($search,$debutmot+1,strlen($search)-$debutmot-2);
elseif($nombremot==0)$motclef[0]=$search;
else $motclef[$nombremot]=substr($search,$debutmot+1,strlen($search));
for($x=0;$x<$nombremot;$x++)
{
if($operateur[$x]=="+")$operateur[$x]="&&";
if($operateur[$x]=="-")$operateur[$x]="||";
if($operateur[$x]=="*")$operateur[$x]="&&!";
}
if($search==""||isset($search)==0)
{
include("index.html");
}
else
{
$CurrentTime=time();
$irep=0;
$nb=0;
for($x=0;$x<=$nombremot;$x++)
{
$motclef[$x]=htmlentities($motclef[$x]);
}
while ($repertoire[$irep])
{
$url=$repertoire[$irep];
$rep=opendir("$url");
while($dir = readdir($rep))
{
if ($dir == "." || $dir == "..") continue;
if($dir == "index.php" || $dir == "conf-recherche.php" || $dir == "lib-recherche.php") continue;
$iext=0;
$true=0;
while ($ext[$iext])
{
if(strpos($dir, ".".$ext[$iext].""))
{
$true=1;
}
$iext++;
}
if ($true==0) continue;
if(!($fichier = file($url.$dir)))
{
echo "<font face='Verdana' size='2'>Impossible d'ouvrir le fichier $dir</font>";
continue;
}
$fichier = implode($fichier, ",");
$debut_titre = strpos($fichier, "<title>") + 7;
$fin_titre = strpos($fichier, "</title>");
$longueur = $fin_titre - $debut_titre;
if ($fin_titre != "" && $longueur != 0)
{
$titre = substr($fichier, $debut_titre, $longueur);
}
else
{
$titre = $dir;
}
$fichier=strip_tags($fichier);
for($indexmotclef=0;$indexmotclef<=$nombremot;$indexmotclef++)
{
$text=strtolower($fichier);
$occurance[$indexmotclef]=-1;
if ($motclef[$indexmotclef]!="")
{
do
{
$text1=strstr($text,$motclef[$indexmotclef]);
$occurance[$indexmotclef]++;
$text=substr($text1,strlen($motclef[$indexmotclef]));
}
while ($text1!="");
}
}
$resultat=0;
if ($nombremot>=1)
{
$test="";
for ($x=0;$x<=$nombremot;$x++)
{
$test="$test$occurance[$x]$operateur[$x]";
}
$resultat="\$resultat=$test;";
eval($resultat);
}
else
{
if($occurance[0]>0)$resultat=1;
}
if($resultat==1)
{
$nb++;;
$total=0;
for ($x=0;$x<=$nombremot;$x++)
{
$total=$total+$occurance[$x];
}
$urldir=$url.$dir;
$score[$urldir]=$total;
$letitre[$urldir]=$titre;
$extrait[$urldir]=resum($fichier,$motclef[0]);
}
for ($x=0;$x<=$nombremot;$x++)
{
$occurance[$x]=0;
}
}
closedir($rep);
$irep++;
}
}
if ($nb>0)
{
arsort($score);
$titre=fopen("titre.txt","w");
$adresse=fopen("adresse.txt","w");
$resume=fopen("resume.txt","w");
for($x=reset($score);$x;$x=next($score))
{
fputs($titre,$letitre[key($score)]);
fputs($titre,"\n");
fputs($adresse,key($score));
fputs($adresse,"\n");
fputs($resume,$extrait[key($score)]);
fputs($resume,"\n");
}
fclose($titre);
fclose($adresse);
fclose($resume);
}
$debut=0;
$elapseTime=time()-$CurrentTime;
include("affichage.php");
?>
Dans les include on a ce fichier de configuration
- Code: Tout sélectionner
<?
/* $url[] est un tableau qui contient les chemins des repertoires dans lesquels vous **
** souhaitez que la recherche s'effectue (attention[!], vous **
** ne pouvez pas mettre une adresse de type http:// ou toute **
** autre adresse internet, mettez par rapport au répertoire **
** courant). Vous devez modifier ces paramêtres pour qu'ils correzspondent à la structure de votre site web */
$repertoire[0]= "../";
//$repertoire[1]="../mysearch/";
/* Indiquez ici le type de fichier dans lequel vous voulez **
** rechercher. (ex : 'htm') */
$ext[0]="htm";
$ext[1]="php";
$ext[2]="html";
/* defaut correspond au critere que représentera un espace entre deux mots clefs
il peut être égal à +pour "et", - pour "ou" et * pour "sauf". Ici il est égal à et*/
$defaut="+";
/* nombreresultats indique le nombre de résultat affichés par page*/
$nombreresultats=10;
?>
Et puis le tout s'affiche dans cette page (temporaire car modifiable à souhait)
- Code: Tout sélectionner
<HTML>
<HEAD>
<title>Résultats de le recherche</title>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META http-equiv="Content-language" content="fr">
<META name="Author" content="Serge Nicolas">
<META name="Copyright" content="Pharmacie du sablon">
<META name="Rating" content="general">
<META name="Revisit-after" content="7 days">
<META name="Robots" content="index, follow">
</HEAD>
<link rel="stylesheet" href="styles.css">
<BODY bgcolor="#CCFFCC">
<?
include("conf-recherche.php");
/*on recupere les données*/
if (!$elapseTime) $elapseTime=0;
$titre=file("titre.txt");
$adresse=file("adresse.txt");
$resume=file("resume.txt");
print"
<br>
<br>
<table width=100% bgcolor='339966'>
<tr >
<td align='left' class='lien'>
Recherche :$search
<td class='lien'>";
$affiche=$debut+1;
print"
Résultat";
if($nb>=2)print "s : $debut - "; else print": $debut - ";
if ($nb<$debut+$nombreresultats) print "$nb";
else {
$affiche=$debut+$nombreresultats;
print "$affiche";}
print"
</td>
<td class='lien'>
La recherche a pris $elapseTime seconde";
if ($elapseTime>=2) print"s."; else print".";
print"
</td>
</td>
<td align='right' class='lien'>
$nb";
if($nb>=2) print" Résultats trouvés"; else print" Résulat trouvé";
print"
</td>
</tr>
</table>
<br>
";
if($nb == 0)
{
print "<p class='corps'>Votre recherche -".$search."- ne correspond à aucun résultat.<br><br><ul><li class='corps'>Assurez vous d'orthographier correctement tous les mots.<li class='corps'>Essayez d'utliser moins de mots.<li class='corps'>Essayez d'utiliser des mots plus généraux.</ul><br></p>";
}
else
{
$affichei=$debut+1;
for ($i=$debut;$i<$debut+$nombreresultats;$i++)
{
if($titre[$i])
{
print("<span class='corps'><b>$affichei></b><a href='$url$adresse[$i]'>$titre[$i]</a></span> <br><font size='-2'>$adresse[$i]</font><br>");
print ("<span class='corps'<i>$resume[$i]</i></span><br><br>");
}
$affichei++;
}
print"
<center>
<table>
<tr>
<td align='right'>";
if($debut>0)
{
$precedent=$debut-$nombreresultats;
print"
<a href='affichage.php?nb=$nb&debut=$precedent' class='lien'><img src='images/precedent.gif' border='0'></a>
";
}
print"
</td>
<td align='center'>
<img src='images/search2.gif'>
</td>
<td align='left'>
";
if($debut+$nombreresultats<$nb)
{
$suivant=$debut+$nombreresultats;
print"
<a href='affichage.php?nb=$nb&debut=$suivant' ><img src='images/suivant.gif' border='0'></a>
";
}
print"
</td>
</tr>
<tr>
<td align='center'>
";
if($debut>0)
{
print"
<a href='affichage.php?nb=$nb&debut=$precedent' class='soustitre'>Précédents</a>
";
}
print "</td>
<td align='center'>";
$page=1;
for($i=0;$i<$nb;$i=$i+$nombreresultats)
{
print "
<a href='affichage.php?search=$search&debut=$i&nb=$nb' >$page</a>
";
$page++;
}
print"</td><td align='center'>";
if($debut+$nombreresultats<$nb)
{
$suivant=$debut+$nombreresultats;
print"
<a href='affichage.php?nb=$nb&debut=$suivant' class='soustitre'>Suivant</a>
";
}
print"
</td>
</tr>
</table>
</center>
";
}
print"
<br><br>
<center>
<span class='corps' fontsize='-1'><a href='../mysearch/accueil.htm'>A propos de la recherche </a> - <a href='astuces.php'> Astuces pour la recherche</a>
</center>
<br><br>
";
?>
Le code provient de cet endroit :
http://homeproduction.free.fr/mysearchengine/index.htm
Merci infiniment pour vos réponses.
Yannick.[/code]
1 message • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Overture en passe de racheter Altavista...
- Design de WRI version 3
- Organiser un bon netlinking interne : conseil n°8 en référencement
- Calcul du ratio de liens profonds vers un site web
- Recherche dans l'actualité WebRankInfo
- Alexa lance un moteur de recherche d'images
- Référencement : gestion des redirections par Yahoo
- Google Custom Search Engine (CSE) : le moteur personnalisable de Google
- Référencement : faut-il abandonner les balises META ?
- Ayez une bonne politique de format d'URL : conseil n°6 en référencement
- moteur de recherche interne ?
- moteur de recherche interne
- Moteur de recherche interne (résolu)
- Moteur de recherche interne au site
- optimiser un moteur de recherche interne
- Problème moteur de recherche interne
- Moteur de recherche interne mysql
- Script moteur de recherche interne
- Un moteur de recherche interne Exalead ?
- Moteur de recherche interne Google
- Moteur de recherche interne AdSense
- 01net. - moteur de recherche interne
- Recherche bon moteur interne
- pertinence d'un moteur de recherche interne
- Amélioration d'un moteur de recherche interne
Consultez la description détaillée des produits ou services de Google suivants : Google Secure Access, Google Custom Search Engine, Google SearchMash, Google mail
- Calculer le ratio de liens profonds
Cet outil vous permet de calculer le taux de liens profonds vers un site web. Un lien profond est un lien qui ne pointe pas vers la page d'accueil mais au contraire vers une page interne du site. Les sites dont l'essentiel du référencement vient de leurs inscriptions dans des annuaires ont un taux de liens profonds faible ; à l'inverse, les sites de référence ont souvent un taux de liens profonds plus important, signe que leur contenu a suscité de nombreux liens spontanés. - Logiciel d'analyse du positionnement
AgentWebRanking est un logiciel professionnel qui permet d'analyser le positionnement d'un ou plusieurs sites dans plus de 300 moteurs de recherche dans le monde. Vous pouvez ainsi analyser les performances du référencement pour de nombreux mots-clés. - Transformer des textes non cliquables en liens
Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

le forum