• [^] # Re: Le spam, l'autre sens de la vie...

    Posté par . En réponse au journal Comment font les spammeurs de blogs ?. Évalué à 4.

    Je ne suis pas spécialiste du développement web, mais ce que je pense c'est :
    au chargement de la page par l'utilisateur, le site exécute du code php (ou autre) pour afficher les différentes infos (contenu du billet, affichage des commentaires existants, ...)
    Là on génère 5 clé :
    "AETQDG", correspondant à "nom",
    "13579", correspondant à "site",
    "azerty", correspondant au contenu du commentaire
    "foobar", correspondant au champ "ne pas changer 1"
    "blop", correspondant au champ "ne pas changer 2"

    De plus, on génère une clé (aléatoire, ou un index, disons "DLFP"). Toutes ces propositions changent aléatoirement. Dans une table de la base de donnée, appelée "antispam-map" par exemple, on à 7 colonnes : "clé", "nom", "site", "commentaire", "ne pas changer 1", "ne pas changer 2", "timestamp".

    Donc chaque fois qu'on génère la page, on crée un jeu de 6 identifiant, et on les place dans cette table, en rajoutant l'instant où ils sont crées.

    Dans la page en elle-même, on utilise ces nom comme nom des champs de formulaires. (la textaera "nom" s'appelle donc plutot "AETQDG") et ce pour les 5 noms cités.

    De plus, on introduit un champ "clé" caché, enfin, visible dans la source de la page, et sensé être renvoyé non modifié.

    Au submit, le navigateur renvoie donc clé="DLFP", AETQDG="yoda222", 13579="http://linuxfr.org", azerty="un commentaire passionnant", foobar="non modifié", blop="non modifié".

    Là sur le post ou get, le moteur php commence par vérifier la présence de la clé "DLFP" dans la table "antispam-map". Si elle n'existe pas, la requete est ignorée (c'est un spam, le robot à modifié la clé non visible)
    Si elle existe, on récupère les noms des champs (et leur correspondance avec "la réalité"), et on efface ce tuple. Ensuite, avec le nom des champs, on vérifie que les champs immuables sont restés identique à eux même. Si ils ont changé, c'est un spam, on ignore. Si ils n'ont pas changé, c'est un commentaire valable, on enregistre.

    Ensuite, à intervalle régulier, on fait un (c'est du sql imagé) "DELETE FROM 'antispam-map' where now-timestamp > 1 heure"

    Ainsi on efface les clés nom utilisées aant un temps limite (ici une heure). On a donc pas besoin de session, et c'est enregistré dans la BDD, et non pas en mémoire. Mais je rappelle que moi et le dev. web, c'est pas top ;-). Je ne sais pas si c'est faisable.