Discussion:
chaine : caracteres particuliers ?
(trop ancien pour répondre)
alainL
2010-06-08 22:39:44 UTC
Permalink
Bonsoir,
Je reçois souvent, de "visiteurs" se servant de mon formulaire, des
mails contenant des adresses bidon, adresses qui doivent être
considérées par Thunderbird comme des tags qu'il refuse de transmettre?
...

Je voudrais détecter ces adresses et annuler l'envoi. Voici la fin de
mon code de traitement et d'envoi
_________________________________________________
....................
$Souhait=$_POST['Souhait'];
$findme='<a href = "hptt://'
$pos = strpos($Souhait, $findme);
if ($pos === false) {
$to= '***@sfr.fr';
} else {
$to="";
.......et envoi !
_____________________________________________________

Mais cette portion de chaîne $findme contient des caractères
particuliers et elle est refusée.
(Je me demande aussi comment php "reçoit" ces caractères entrés par le
spammeur)
Comment écrire la chaîne-test ???
merci
alainL
Olivier Miakinen
2010-06-08 22:56:02 UTC
Permalink
Bonjour,

J'ai un peu de mal à décrypter ta question. Voici quelques demandes de
précision.
Post by alainL
Je reçois souvent, de "visiteurs" se servant de mon formulaire, des
mails contenant des adresses bidon, adresses qui doivent être
considérées par Thunderbird comme des tags qu'il refuse de transmettre?
Les visiteurs en question t'envoient des messages par courriel, ou bien
des adresses de courriel bidonnées dans un champ censé en contenir une
correcte ?
Post by alainL
...
Je voudrais détecter ces adresses et annuler l'envoi. Voici la fin de
mon code de traitement et d'envoi
_________________________________________________
....................
$Souhait=$_POST['Souhait'];
$findme='<a href = "hptt://'
« http » je suppose ?
Post by alainL
$pos = strpos($Souhait, $findme);
... ah, peut-être pas finalement.

$_POST['Souhait'] est censé contenir une chaîne que tu as positionnée
toi-même dans un champ 'hidden', avec exprès un « hptt » dedans pour
tromper l'ennemi ? Et l'une des vérifications que ce n'est pas un pirate
consiste à tester si cette chaîne se retrouve inchangée ?
Post by alainL
if ($pos === false) {
Une adresse en dur, c'est une bonne pratique.
Post by alainL
} else {
$to="";
Et là pas d'adresse du tout, ton formulaire ne peut donc pas servir à
spammer. C'est très bien il me semble.
Post by alainL
.......et envoi !
_____________________________________________________
Mais cette portion de chaîne $findme contient des caractères
particuliers et elle est refusée.
Quels caractères ?
Post by alainL
(Je me demande aussi comment php "reçoit" ces caractères entrés par le
spammeur)
Ben... dans $_POST, non ???
Post by alainL
Comment écrire la chaîne-test ???
Quelle chaîne-test ? Pour faire quoi ? Moi désolé, moi pas comprendre.
--
Olivier Miakinen
Olivier Miakinen
2010-06-08 23:07:55 UTC
Permalink
Post by Olivier Miakinen
Les visiteurs en question t'envoient des messages par courriel, ou bien
des adresses de courriel bidonnées dans un champ censé en contenir une
correcte ?
À tout hasard, si c'était le second cas, je me permets de rappeler ce
paragraphe de la FAQ : <http://faqfclphp.free.fr/#rub5.3>.
--
Olivier Miakinen
alainL
2010-06-09 14:37:39 UTC
Permalink
Post by Olivier Miakinen
Bonjour,
J'ai un peu de mal à décrypter ta question. Voici quelques demandes de
précision.
Post by alainL
Je reçois souvent, de "visiteurs" se servant de mon formulaire, des
mails contenant des adresses bidon, adresses qui doivent être
considérées par Thunderbird comme des tags qu'il refuse de transmettre?
Les visiteurs en question t'envoient des messages par courriel, ou bien
des adresses de courriel bidonnées dans un champ censé en contenir une
correcte ?
Les questions du formulaire sont telles que les champs ne doivent pas
contenir de <a href="http.., de [link] ou autres [url] comme en est
farci le mail que je reçois de temps en temps. Je voudrais détecter ces
en-têtes pour annuler l'envoi.
Post by Olivier Miakinen
Post by alainL
$Souhait=$_POST['Souhait'];
$findme='<a href = "hptt://'
« http » je suppose ?
fuis fatigué encore ! c'était pour tromper Thunderbird afin de te faire
passer la prose du spammeur !
...
Post by Olivier Miakinen
Post by alainL
if ($pos === false) {
Une adresse en dur, c'est une bonne pratique.
Post by alainL
} else {
$to="";
Et là pas d'adresse du tout, ton formulaire ne peut donc pas servir à
spammer. C'est très bien il me semble.
Post by alainL
.......et envoi !
_____________________________________________________
Mais cette portion de chaîne $findme contient des caractères
particuliers et elle est refusée.
Quels caractères ?
Oooops ! Je voulais me servir de cette ligne pour vérifier l'efficacité
du test

echo "La chaîne '$findme' n'a pas été trouvée dans la chaîne '$Souhait'";
mais j'ai écrit: echo "La chaîne '<a href="http://' n'a pas..."
et la ligne dans les deux cas s'arrêtait à la chaîne ' .... (smiley
:confus !!!)
Je note ton approbation pour les deux $to, j'hésitais !

Merci et bonne journée
Olivier Miakinen
2010-06-09 23:35:20 UTC
Permalink
Post by alainL
Les questions du formulaire sont telles que les champs ne doivent pas
contenir de <a href="http.., de [link] ou autres [url] comme en est
farci le mail que je reçois de temps en temps.
Ah. Et tu saurais décrire de façon *précise* et *exhaustive* ce que les
spammeurs peuvent mettre là-dedans et dont tu ne veux pas ? Je suis prêt
à parier un Spoutnik contre une cacahuette que tu ne le peux pas.
Post by alainL
Je voudrais détecter ces en-têtes pour annuler l'envoi.
La règle d'or du filtrage, c'est de tester non pas ce que tu veux
refuser (sois certain que quel que soit ton filtre les pirates auront
assez d'imagination pour inventer un truc que tu n'avais pas prévu),
mais ce que tu veux *accepter*. Décris de façon précise et exhaustive ce
que peut normalement contenir $_POST['Souhait'], et on pourra t'aider,
ici ou dans fr.comp.lang.regexp. Avant cela, ne compte pas sur moi pour
jouer les voyantes extralucides.
Post by alainL
[...]
Oooops ! Je voulais me servir de cette ligne pour vérifier l'efficacité
du test
Rien compris.
Post by alainL
echo "La chaîne '$findme' n'a pas été trouvée dans la chaîne '$Souhait'";
mais j'ai écrit: echo "La chaîne '<a href="http://' n'a pas..."
et la ligne dans les deux cas s'arrêtait à la chaîne ' .... (smiley
:confus !!!)
Rien compris non plus.
Post by alainL
Je note ton approbation pour les deux $to, j'hésitais !
Oui, j'approuve le fait de ne pas utiliser des données venant de
l'extérieur pour remplir un champ $to, c'est-à-dire vraisemblablement
pour envoyer un courriel. Je n'ai rien compris non plus à ce que tu veux
faire ici, mais au moins les lignes que tu montres ne comportent pas de
faille pouvant servir à spammer.
--
Olivier Miakinen
Denis Beauregard
2010-06-10 07:08:36 UTC
Permalink
Post by Olivier Miakinen
Post by alainL
Les questions du formulaire sont telles que les champs ne doivent pas
contenir de <a href="http.., de [link] ou autres [url] comme en est
farci le mail que je reçois de temps en temps.
Ah. Et tu saurais décrire de façon *précise* et *exhaustive* ce que les
spammeurs peuvent mettre là-dedans et dont tu ne veux pas ? Je suis prêt
à parier un Spoutnik contre une cacahuette que tu ne le peux pas.
J'avais un problème de spam dans mon wiki. Comme solution, j'ai
modifié le code pour ajouter ces lignes :

if (stristr($body, "href")) { exit (); };
if (stristr($body, "url")) { exit (); };
if (stristr($body, "http")) { exit (); };
if (stristr($body, "typing")) { exit (); };
if (stristr($body, "nice")) { exit (); };
if (stristr($body, "look")) { exit (); };
if (stristr($body, "www")) { exit (); };
if (stristr($body, "porn")) { exit (); };
if (stristr($body, "viagra")) { exit (); };


Dans certains cas, ce sont des mots-clés pour détecter une URL que le
wiki transformait automatiquement en lien, mais la plupart ne seraient
pas valides dans un courriel. Les autres viennent des spammeurs en
soi.

Pour un courriel, je dirais qu'il suffit de détecter http et www.

Et si on utilise mail(), il convient de faire d'autres tests pour
éviter qu'on introduise un To: à un endroit imprévu.

Par ailleurs, quand j'ai reçu ces attaques, j'ai examiné les adresses
IP et elles étaient toujours différentes, donc attaque par des pros
du spam via des machines vérolées. Il est sans doute impossible de
détecter quand il s'agit d'un spam. Par contre, je renommerais la
page PHP à chaque jour car ces robots à spammer doivent utiliser
une adresse fixe.


Denis
Olivier Miakinen
2010-06-10 14:43:22 UTC
Permalink
[Deuxième envoi, 4 heures plus tard. Merci de ne pas approuver les deux
articles si jamais le premier se décoinçait.]
Post by Denis Beauregard
J'avais un problème de spam dans mon wiki. Comme solution, j'ai
if (stristr($body, "href")) { exit (); };
if (stristr($body, "url")) { exit (); };
if (stristr($body, "http")) { exit (); };
if (stristr($body, "typing")) { exit (); };
if (stristr($body, "nice")) { exit (); };
if (stristr($body, "look")) { exit (); };
if (stristr($body, "www")) { exit (); };
if (stristr($body, "porn")) { exit (); };
if (stristr($body, "viagra")) { exit (); };
C'est un peu radical, comme solution. Rien que la séquence « url » se
trouve dans plein de mots en français (hurler, ourlet, surlouer,
burlesque, bourlinguer, entourloupe, peinturlurer, etc.) ; la séquence
« nice » se trouve bien sûr dans la ville du même nom, mais aussi dans
le mot « unicellulaire ». Seront aussi éliminés des messages avec le
verbe franglais relooker, et avec les villes de Pornic et de Pornichet.

Exemple : j'ai pas mal bourlingué de Nice à Pornic en passant par
Pornichet, je voulais aussi me faire relooker mais cette espèce
d'unicellulaire m'a entourloupé en me peinturlurant. Tu peux trouver
ça burlesque mais c'était à hurler !

Tout ceci sans oublier les fautes de frappe (exemple : Shrefk au lieu de
Shreck, le f étant juste à côté du c).
Denis Beauregard
2010-06-10 20:19:35 UTC
Permalink
Post by Olivier Miakinen
[Deuxième envoi, 4 heures plus tard. Merci de ne pas approuver les deux
articles si jamais le premier se décoinçait.]
Post by Denis Beauregard
J'avais un problème de spam dans mon wiki. Comme solution, j'ai
if (stristr($body, "href")) { exit (); };
if (stristr($body, "url")) { exit (); };
if (stristr($body, "http")) { exit (); };
if (stristr($body, "typing")) { exit (); };
if (stristr($body, "nice")) { exit (); };
if (stristr($body, "look")) { exit (); };
if (stristr($body, "www")) { exit (); };
if (stristr($body, "porn")) { exit (); };
if (stristr($body, "viagra")) { exit (); };
C'est un peu radical, comme solution. Rien que la séquence « url » se
trouve dans plein de mots en français (hurler, ourlet, surlouer,
burlesque, bourlinguer, entourloupe, peinturlurer, etc.) ; la séquence
« nice » se trouve bien sûr dans la ville du même nom, mais aussi dans
le mot « unicellulaire ». Seront aussi éliminés des messages avec le
verbe franglais relooker, et avec les villes de Pornic et de Pornichet.
C'est une page où il y a un commentaire valide par année. Alors, j'y
vais selon le spam, ici du spamdexing pour ajouter des liens vers un
site externe. Mais c'est vrai qu'on peut sophistiquer un peu les
mots utilisés, comme http: url: et www. les autres étant, dans mon
cas, typiques du spam.

Il s'agit d'adapter en fonction des attaques et de ce qui est attendu.


Denis
John GALLET
2010-06-12 15:13:08 UTC
Permalink
Bonjour,
Par contre, je renommerais la page PHP à chaque jour car ces robots à
spammer doivent utiliser
une adresse fixe.
Est-ce que tu peux développer cette idée STP ?

a++;
JGA
Denis Beauregard
2010-06-12 19:39:18 UTC
Permalink
Post by Olivier Miakinen
Bonjour,
Par contre, je renommerais la page PHP à chaque jour car ces robots à
spammer doivent utiliser
une adresse fixe.
Est-ce que tu peux développer cette idée STP ?
J'ai eu beaucoup d'attaques via une page précise de mon site. Je
suppose que quand une page mal protégée (dans mon cas, les
commentaires d'un wiki) est détectée, c'est cette adresse qui est
envoyée aux différents spambots qui viennent visiter le site et y
placer leur pub.

Sur un autre site, c'était toujours et uniquement la page index.php
qui était affectée (en gros, on avait eu le mot de passe en
interceptant un message, puis on lisait la page, on changeait la
ligne <body> pour y placer la peste, et on ré-écrivait la page. Selon
le script, cela se faisait en quelques secondes, trop vite pour une
intervention humaine.

Je conclus que si on change la page utilisée par le robot (il faut
regarder les logs pour la trouver), il suffirait de renommer celle-ci
pour que le robot ne fasse plus rien.

Dans mon cas, je n'ai pas eu à appliquer mon hypothèse vu que dans le
cas 1, j'ai mis des filtres (voir mon message précédent) et dans le
2e, j'ai changé le mot de passe et fait suivre le nouveau mot de passe
via 2 messages.


Denis

alainL
2010-06-10 10:51:05 UTC
Permalink
Le 10/06/2010 01:35, Olivier Miakinen a écrit :
..........
Post by Olivier Miakinen
Ah. Et tu saurais décrire de façon *précise* et *exhaustive* ce que les
spammeurs peuvent mettre là-dedans et dont tu ne veux pas ? Je suis prêt
à parier un Spoutnik contre une cacahuette que tu ne le peux pas.
Je vais faire mieux. En voici une copie intégrale... (en fichier cjoint,
TB refusant toujours de l'envoyer)

http://cjoint.com/?gkkjrHkNbE

Si j'ai gagné le Spoutnik, tu peux l'envoyer par mail, j'ai du mal à
installer des filtres...mais je regarde avec intérêt ce que me répond Denis.
Pour le contenu attendu, je te fais grâce des demandes de vieilles
photos du village, de renseignements généalogiques ou de précisions sur
les randos ou la flore locale...
Olivier Miakinen
2010-06-10 14:43:22 UTC
Permalink
Post by alainL
Post by Olivier Miakinen
Ah. Et tu saurais décrire de façon *précise* et *exhaustive* ce que les
spammeurs peuvent mettre là-dedans et dont tu ne veux pas ? Je suis prêt
à parier un Spoutnik contre une cacahuette que tu ne le peux pas.
Je vais faire mieux. En voici une copie intégrale... (en fichier cjoint,
TB refusant toujours de l'envoyer)
http://cjoint.com/?gkkjrHkNbE
C'est exhaustif ? Ok, il te suffit donc de filtrer les quatre
chaînes "http://kqaeslcizpyu.com", "http://jkzqvufwocwi.com",
"http://hkskcxvfynfs.com" et "http://njtwxsulfxhg.com", sans
aucun risque de faux positif (ces chaînes n'ont aucune chance de
se retrouver dans un message normal en français). Heureux homme.

J'ai quand même un doute sur le fait que les spammeurs n'aient pas
un jour l'idée de mettre une majuscule dans leur nom de domaine, ou
de passer en https, voire carrément (soyons fou) de créer un nouveau
nom de domaine, rien que pour outrepasser ton filtre. Ce n'est pas
que je rechigne à t'envoyer ton Spoutnik, mais j'ai bien envie d'une
cacahuette.
Post by alainL
[...]
Pour le contenu attendu, je te fais grâce des demandes de vieilles
photos du village, de renseignements généalogiques ou de précisions sur
les randos ou la flore locale...
Je ne demandais rien de plus que ce que tu viens de m'apprendre : qu'il
s'agit d'un texte libre concernant des demandes de vieilles photos ou
autres. Avant cela, j'avais imaginé qu'il pouvait s'agir d'une adresse
de courriel par exemple.

Cordialement,
--
Olivier Miakinen
alainL
2010-06-10 20:19:35 UTC
Permalink
Le 10/06/2010 16:43, Olivier Miakinen a écrit :
..............
Post by Olivier Miakinen
Post by alainL
http://cjoint.com/?gkkjrHkNbE
C'est exhaustif ? Ok, il te suffit donc de filtrer les quatre
chaînes "http://kqaeslcizpyu.com", "http://jkzqvufwocwi.com",
"http://hkskcxvfynfs.com" et "http://njtwxsulfxhg.com", sans
aucun risque de faux positif (ces chaînes n'ont aucune chance de
se retrouver dans un message normal en français). Heureux homme.
.........
Post by Olivier Miakinen
Post by alainL
[...]
Pour le contenu attendu, je te fais grâce des demandes de vieilles
photos du village, de renseignements généalogiques ou de précisions sur
les randos ou la flore locale...
Je ne demandais rien de plus que ce que tu viens de m'apprendre : qu'il
s'agit d'un texte libre concernant des demandes de vieilles photos ou
autres. Avant cela, j'avais imaginé qu'il pouvait s'agir d'une adresse
de courriel par exemple.
Donc il me serait difficile de filtrer pour garder directement le
positif. Je vais donc "interdire" les débuts de liens <a href égale
http:// , les [link] et les [url] dont je doute fort qu'un visiteur me
les demande !

A ton avis, qu'espère ce robot ou spammeur avec ces adresses et liens
bizarres?

alainL
Michael DENIS
2010-06-11 06:32:15 UTC
Permalink
Post by Olivier Miakinen
C'est exhaustif ? Ok, il te suffit donc de filtrer les quatre
chaînes "http://kqaeslcizpyu.com", "http://jkzqvufwocwi.com",
"http://hkskcxvfynfs.com" et "http://njtwxsulfxhg.com", sans
aucun risque de faux positif (ces chaînes n'ont aucune chance de
se retrouver dans un message normal en français). Heureux homme.
J'ai quand même un doute sur le fait que les spammeurs n'aient pas
un jour l'idée de mettre une majuscule dans leur nom de domaine, ou
de passer en https, voire carrément (soyons fou) de créer un nouveau
nom de domaine, rien que pour outrepasser ton filtre.
A mon avis, ces domaines sont très certainement à usage unique. Le coût
d'un domaine est négligeable sur ce genre d'opération et permet, mieux
que tout autre balise, JS ou autres de savoir comment les visiteurs sont
arrivés sur un site. Filtrer sur ce genre de domaines est à mon avis...
juste une perte de temps.
--
Michaël DENIS
Continuer la lecture sur narkive:
Loading...