Sécuriser un guestbook

Discussion dans 'Web, design' créé par Xou, 3 Novembre 2005.

Statut de la discussion:
Fermée.
  1. Offline
    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.
    Xou, 3 Novembre 2005
    #1
  2. Online
    Jereck Procrastinateur
    Equipe GamerZ.be
    en utilisant les expressions régulières, tu invalide automatiquement tout commentaire contenant une adresse web?
    Jereck, 3 Novembre 2005
    #2
  3. Offline
    Xou I ♥ rien
    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 !
    Xou, 3 Novembre 2005
    #3
  4. Offline
    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
    Ezekiel !, 3 Novembre 2005
    #4
  5. Offline
    Spo0n Dr. Gonzo
    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.
    Spo0n, 3 Novembre 2005
    #5
  6. Offline
    Loetheri Absent
    Les pubs proviendraient d'un bot ou d'une personne réelle ?
    Si c'est un bot, tu sais le bloquer :p 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é.
    Loetheri, 3 Novembre 2005
    #6
  7. Offline
    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
    Xou, 3 Novembre 2005
    #7
  8. Offline
    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 :

    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
    }
    null, 3 Novembre 2005
    #8
  9. Offline
    Xou I ♥ rien
    Merci, je matterai un coup ça tout à l'heure plus amplement :)
    Xou, 3 Novembre 2005
    #9
Statut de la discussion:
Fermée.