0

J'ai un événement clic JavaScript lié à un lien d'ancrage qui soumet des données utilisateur sur un clic via Ajax. Ce lien ne va nulle part, c'est juste un poste Ajax.Y at-il un moyen de différencier entre un clic JavaScript et un clic réel de l'utilisateur

Le problème est que l'utilisateur peut écrire un script pour envoyer rapidement des spams. Existe-t-il un moyen d'empêcher JavaScript de déclencher l'événement click?

Je peux mettre un contrôle d'inondation dessus, mais je ne peux pas en utiliser un qui soit trop flagrant sans détruire la fonctionnalité de la salle de clavardage.

Merci

+0

Tous les navigateurs n'autorisent pas les clics simulés (jQuery le simule dans son propre modèle). De plus, d'autres informations d'événement (par exemple, la position de la souris) peuvent ne pas correspondre aux attentes, en supposant que le "clic" est le résultat d'une opération avec un bouton de la souris. –

+0

@pst grande suggestion merci. Pouvez-vous me dire comment vérifier le faux déclencheur de jquery? – Hipchan

Répondre

2

Le problème est que l'utilisateur peut écrire un script pour rapidement la soumission de spam

vous AFAIK ne pourra pas faire la différence entre un clic javascript et cliquez sur l'utilisateur. La meilleure chose sera de valider les données soumises.

0

Si vous voulez vraiment avoir une validation pour arrêter les soumissions d'automatisation, vous pouvez ajouter les vérifications d'image que font tous les sites Web.

L'utilisateur doit entrer l'image qu'il voit pour continuer furthur, je ne connais pas le nom technique de cette image.

Il peut arrêter l'utilisateur emplois automatisés

+0

Le nom technique d'un tel support est Captcha. – lalit

+0

@lalit merci beaucoup, une nouvelle chose de plus appris aujourd'hui de SO – kobe

+0

Merci, ne serait pas bon pour une salle de conversation si. – Hipchan

0

Si votre intention est d'empêcher les utilisateurs de faire des choses néfastes, il est une très mauvaise idée de faire les contrôles sur le côté client. Il y a toujours un moyen de contourner cela. Le seul moyen fiable est de vérifier sur le serveur.

Vous pouvez simplement avoir deux variables par utilisateur: un score de spam et un horodatage de la dernière publication. Chaque fois que l'utilisateur publie un nouveau message, calculez le temps écoulé depuis son dernier message et réduisez le score d'un bit pour chaque seconde, mais augmentez-le d'une valeur fixe pour chaque message envoyé. Une fois qu'il atteint un seuil, refusez les nouveaux messages jusqu'à ce qu'ils diminuent à nouveau.

+0

A droite, cela semble être une bonne chose à mettre en œuvre. Cependant, un script peut toujours obéir au seuil du spam mais reste abusif: s – Hipchan

0

Vous pouvez vérifier l'événement.qui propriété, qui doit contenir une clé (pour la souris, il s'agit généralement de 1, 2 ou 3) code pour la touche enfoncée. Si cette propriété n'existe pas, il est probable qu'il s'agisse d'un clic JavaScript plutôt que d'un clic de souris.

if (event.which != null) { 
    // likely was user click 
} 
+0

cela a fonctionné pour moi. Bien que je sois d'accord que ce n'est pas la solution pour éviter le spam, la solution DOIT être côté serveur. – droope