Sécuriser un guestbook

Statut
N'est pas ouverte pour d'autres réponses.

Xou

I ♥ rien
Une partie a été faite, empecher les injections SQL et les parties les plus chiantes.

Reste à proscrire les adresses de pub.
J'ai pensé aux cookies, mais c'est un moyen trop facilement contournable, suffit de l'effacer et on reprendre.
Un autre moyen serait d'empecher une ip de poster un message pendant X heures !

Bref, comment empecher d'avoir ceci : http://www.satylite.be/guestbook2.php et avoir www.satylite.be/guestbook.php à la place, sans se faire ch*** à bannir des ip ou virer les messages par une simple requete.
 

Jereck

Α & Ω
Staff
en utilisant les expressions régulières, tu invalide automatiquement tout commentaire contenant une adresse web?
 
1er
OP
Xou

Xou

I ♥ rien
Jereck a dit:
en utilisant les expressions régulières, tu invalide automatiquement tout commentaire contenant une adresse web?
mmmh, c'est une idée, mais d'un autre coté, je vais devoir faire aussi une expression permettant les adresses entre balises , et mon bbcode me permet de faire ...e voc, mais bon, ça risque de devenir lourd !
 

Ezekiel !

Elite
ben tout moyen est contournable mais tu peux coupler session + cookie + ip
Faut que le type ait vrmt envie de te faire chier :p
 
A

anon23T

ex membre
Ou alors tu enregistres son IP en même temps que son message, tu crées un .htaccess avec un accès interdit à telle IP.
 
Les pubs proviendraient d'un bot ou d'une personne réelle ?
Si c'est un bot, tu sais le bloquer ^^ via le .htacces
Si c'est une personne, il suffit garder son ip, et de lui "injecter" un cookie. Tu peux aussi vérifier que le dernier message (ou les 5 derniers) ne soit pas identique à celui posté.
 
1er
OP
Xou

Xou

I ♥ rien
Pour le .htaccess, j'avoue que je ne sais pas comment faire, pour éviter les bots :oops:

Par contre, l'idée des derniers messages est pas con, trouver un semblant de points communs, car ce n'est jamais vraiment les mêmes liens qui sont tapés :-(
Mais y'a toujours une partie commune dans l'URL
 

null

ose();
Tu enregistres les dates en "time" (par ex : 1131011811) dans la base de données.

A chaque validation, tu prends le dernier message avec l'IP du visiteur. Tu récupères la date, tu ajoutes le temps que tu veux entre chaque message, et tu compares avec la date en cours.

Je vais donner avec une exemple, ça sera plus clair :p

Dans ta table MySQL :

Pseudo : GrosBoulet
Date : 1131011811
Ip : 81.242.247.199
Message : ....
Ton code PHP :

tout décomposé pour bien comprendre mais tu peux mieux le faire ou alors geré directement via la requête MySQL

Code:
$intervalFlood = 60; // 60 secondes

$req = mysql_query("SELECT date FROM guestbook WHERE ip = '".$_SERVER['REMOTE_ADDR']."'");
$content = mysql_fetch_array($req);
 $date = $content['date'];
 
$date = $date2+$intervalFlood;

if($date < time())
{
	// ok
} //end if($date...

Pour ce qui est des pubs :

Code:
preg_match("#([\t\r\n ])([a-z0-9]+?){1}://([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i", $message, &$matches);
preg_match("#([\t\r\n ])(www|ftp)\.(([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i", $message, &$matches2);

if((count($matches) < 1) && (count($matches2) < 1))
{
	// ok
}
 
1er
OP
Xou

Xou

I ♥ rien
Merci, je matterai un coup ça tout à l'heure plus amplement :)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut