Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

chaine : caracteres particuliers ?

13 réponses
Avatar
alainL
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= 'bonneadresse@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

10 réponses

1 2
Avatar
Olivier Miakinen
Bonjour,

J'ai un peu de mal à décrypter ta question. Voici quelques demandes de
précision.

Le 09/06/2010 00:39, alainL a écrit :

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 ?

...

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 ?

$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 ?

if ($pos === false) {
$to= '';



Une adresse en dur, c'est une bonne pratique.

} 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.

.......et envoi !
_____________________________________________________

Mais cette portion de chaîne $findme contient des caractères
particuliers et elle est refusée.



Quels caractères ?

(Je me demande aussi comment php "reçoit" ces caractères entrés par le
spammeur)



Ben... dans $_POST, non ???

Comment écrire la chaîne-test ???



Quelle chaîne-test ? Pour faire quoi ? Moi désolé, moi pas comprendre.

--
Olivier Miakinen
Avatar
Olivier Miakinen
Le 09/06/2010 00:56, je répondais à AlainL :

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
Avatar
alainL
Le 09/06/2010 00:56, Olivier Miakinen a écrit :
Bonjour,

J'ai un peu de mal à décrypter ta question. Voici quelques demandes de
précision.

Le 09/06/2010 00:39, alainL a écrit :

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.



$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 !



...
if ($pos === false) {
$to= '';



Une adresse en dur, c'est une bonne pratique.

} 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.

.......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
Avatar
Olivier Miakinen
Le 09/06/2010 16:37, alainL a écrit :

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.

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.

[...]

Oooops ! Je voulais me servir de cette ligne pour vérifier l'efficacité
du test



Rien compris.

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.

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
Avatar
Denis Beauregard
Le 09 Jun 2010 23:35:20 GMT, Olivier Miakinen <om+
écrivait dans fr.comp.lang.php:

Le 09/06/2010 16:37, alainL a écrit :

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
Avatar
alainL
Le 10/06/2010 01:35, Olivier Miakinen a écrit :
..........

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...
Avatar
Olivier Miakinen
Le 10/06/2010 12:51, alainL a écrit :

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.

[...]
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
Avatar
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.]

Le 10/06/2010 09:08, Denis Beauregard a écrit :

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 (); };



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).
Avatar
Denis Beauregard
Le 10 Jun 2010 14:43:22 GMT, Olivier Miakinen <om+
écrivait dans fr.comp.lang.php:

[Deuxième envoi, 4 heures plus tard. Merci de ne pas approuver les deux
articles si jamais le premier se décoinçait.]

Le 10/06/2010 09:08, Denis Beauregard a écrit :

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 (); };



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
Avatar
alainL
Le 10/06/2010 16:43, Olivier Miakinen a écrit :
..............
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.



.........
[...]
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
1 2