Thierry
2007-01-20 13:41:40 UTC
Bonjour,
Je cherche la moins mauvaise solution pour permettre aux visiteurs d'un
site de publier un commentaire ou un petit article, et surtout pour
valider cette publication en évitant les problèmes.
1) Le contexte :
Le formulaire est construit, les données sont enregistrées dans une base
de données, et les données à priori correctement validées et protégées:
- Toutes les entrée du formulaire passent par htmlentities puisqu'elles
seront affichées en html (sauf l'adresse mail).
- Les données sont diversement validées selon le contenu attendu ;
l'entrée email passe par l'expression régulière trouvé dans le faq de ce
forum.
- Toutes les données sont ensuite passées dans une fonction
anti_injection qui les protègent par le biais de mysql_real_escape_string;
- Une entrée permet de publier une (et une seule) photo pour accompagner
l'article. Seul le format jpeg est autorisé (max 800ko), et le format
est vérifié par getimagesize.
- Un dispositif simple permet d'être raisonnablement certain qu'un
humain est bien à l'origine de la publication : un nom d'une espèce
d'oiseau (c'est un des principaux sujet du site) est tiré au hasard et
affiché, l'utilisateur doit simplement noter les initiales du nom de
l'espèce. (sûrement facile à contourner, mais comme il s'agit d'un petit
site, c'est probablement suffisant - sauf cas décrit plus bas ?).
2) Le problème de la validation :
A partir du moment où l'utilisateur clic sur "envoyer", j'ai pensé à
plusieurs solutions pour éviter les problèmes :
- Le plus restrictif : la modération à priori, c'est à dire qu'un des
responsable du site lit le texte et autorise ou non sa publication.
Problèmes : l'article n'est pas immédiatement publié (parfois seulement
après 48h voir un peu plus), et il reste un risque d'usurpation (aucun
moyen de vérifier si l'auteur prétendu est l'auteur réel).
- Moins restrictif : la modération à posteriori, c'est à dire que
l'article est immédiatement publié, mais il peut être supprimé par un
des responsable du site s'il s'agit d'une pub alacon. Le risque
d'usurpation existe là aussi, mais il n'y a plus de délai de
publication. Il y a par contre dans ce cas un risque de publication de
pub alacon pendant quelques heures.
- La validation par l'auteur lui même : le clic sur le bouton "envoyer"
déclenche l'envoi d'un mèl à l'adresse fournie par l'auteur (seulement
si les entrées du formulaire sont correctement validées), ce mèl
contient un lien vers une page du site, avec un identifiant unique. Ce
lien déclenche la publication de l'article s'il est cliqué par le
distinataire du mèl.
Cette troisième et dernière solution a ma préférence : la publication
est immédiate et une éventuelle usurpation sera détectée.
3) Ma principale question :
Le gros problème de cette "La validation par l'auteur lui même" c'est
que j'imagine qu'il devient possible à un spammeur d'utiliser le
dispositif pour spammer : un robot remplit le formulaire
automatiquement, avec une adresse mèl volée, et envoi le texte et
éventuellement l'image de son choix au destinataire de son choix, puis
recommence autant de fois qu'il le souhaite avec d'autres adresses volées.
La seule solution que j'imagine est de limiter très fortement le nombre
d'envoi possible par une même origine : par exemple un seul envoi par
jour. Le système devient alors à priori sans intérêt pour les spammeur.
Mais alors, comment détecter à coup sûr que deux tentatives d'envoi ont
la même origine ? J'ai bien pensé à l'adresse IP via
$_SERVER['REMOTE_ADDR'], mais j'ai vu que cette donnée n'est pas fiable.
Alors, comment faire, et est-ce possible de résoudre ce problème ?
Merci,
Je cherche la moins mauvaise solution pour permettre aux visiteurs d'un
site de publier un commentaire ou un petit article, et surtout pour
valider cette publication en évitant les problèmes.
1) Le contexte :
Le formulaire est construit, les données sont enregistrées dans une base
de données, et les données à priori correctement validées et protégées:
- Toutes les entrée du formulaire passent par htmlentities puisqu'elles
seront affichées en html (sauf l'adresse mail).
- Les données sont diversement validées selon le contenu attendu ;
l'entrée email passe par l'expression régulière trouvé dans le faq de ce
forum.
- Toutes les données sont ensuite passées dans une fonction
anti_injection qui les protègent par le biais de mysql_real_escape_string;
- Une entrée permet de publier une (et une seule) photo pour accompagner
l'article. Seul le format jpeg est autorisé (max 800ko), et le format
est vérifié par getimagesize.
- Un dispositif simple permet d'être raisonnablement certain qu'un
humain est bien à l'origine de la publication : un nom d'une espèce
d'oiseau (c'est un des principaux sujet du site) est tiré au hasard et
affiché, l'utilisateur doit simplement noter les initiales du nom de
l'espèce. (sûrement facile à contourner, mais comme il s'agit d'un petit
site, c'est probablement suffisant - sauf cas décrit plus bas ?).
2) Le problème de la validation :
A partir du moment où l'utilisateur clic sur "envoyer", j'ai pensé à
plusieurs solutions pour éviter les problèmes :
- Le plus restrictif : la modération à priori, c'est à dire qu'un des
responsable du site lit le texte et autorise ou non sa publication.
Problèmes : l'article n'est pas immédiatement publié (parfois seulement
après 48h voir un peu plus), et il reste un risque d'usurpation (aucun
moyen de vérifier si l'auteur prétendu est l'auteur réel).
- Moins restrictif : la modération à posteriori, c'est à dire que
l'article est immédiatement publié, mais il peut être supprimé par un
des responsable du site s'il s'agit d'une pub alacon. Le risque
d'usurpation existe là aussi, mais il n'y a plus de délai de
publication. Il y a par contre dans ce cas un risque de publication de
pub alacon pendant quelques heures.
- La validation par l'auteur lui même : le clic sur le bouton "envoyer"
déclenche l'envoi d'un mèl à l'adresse fournie par l'auteur (seulement
si les entrées du formulaire sont correctement validées), ce mèl
contient un lien vers une page du site, avec un identifiant unique. Ce
lien déclenche la publication de l'article s'il est cliqué par le
distinataire du mèl.
Cette troisième et dernière solution a ma préférence : la publication
est immédiate et une éventuelle usurpation sera détectée.
3) Ma principale question :
Le gros problème de cette "La validation par l'auteur lui même" c'est
que j'imagine qu'il devient possible à un spammeur d'utiliser le
dispositif pour spammer : un robot remplit le formulaire
automatiquement, avec une adresse mèl volée, et envoi le texte et
éventuellement l'image de son choix au destinataire de son choix, puis
recommence autant de fois qu'il le souhaite avec d'autres adresses volées.
La seule solution que j'imagine est de limiter très fortement le nombre
d'envoi possible par une même origine : par exemple un seul envoi par
jour. Le système devient alors à priori sans intérêt pour les spammeur.
Mais alors, comment détecter à coup sûr que deux tentatives d'envoi ont
la même origine ? J'ai bien pensé à l'adresse IP via
$_SERVER['REMOTE_ADDR'], mais j'ai vu que cette donnée n'est pas fiable.
Alors, comment faire, et est-ce possible de résoudre ce problème ?
Merci,
--
Thierry
Thierry