IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Empêcher les click() automatiques


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut Empêcher les click() automatiques
    Bonjour,

    J'ai un petit soucis de "conception".
    Je réalise une page web, tout ce qu'il y a de plus basique, avec une question et 4 réponses possibles.
    J'aimerais m'assurer que le clic sur l'une des réponses est bien faite par un utilisateur et non par un script.

    Du coup, je me demande s'il y a une possibilité de désactiver de manière fiable la possibilité de jouer la méthode "click()" d'un élément ?

    L'ajout de Captcha n'étant pas une solution fiable (les robots arrivant désormais à lire ces derniers mieux que nous )

    J'ai beau creuser dans tous les sens, je n'arrive pas à trouver de solution à mon problème, d'où ma question, qui est un peu la solution la moins "dégueulasse".

    Merci d'avance pour vos retours.

  2. #2
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    Question bête, pourquoi ne pas demander de recopier la bonne réponse ?

    Sinon tu as le doubleclick mais pas dispo sur smartphone et tablette.

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonjour

    On peut regarder la structure de l'événement, voir : http://api.jquery.com/category/events/event-object/

    event.which also normalizes button presses (mousedown and mouseupevents), reporting 1 for left button, 2 for middle, and 3 for right. Use event.which instead of event.button.
    event.originalEvent contient tous les renseignements voir les outils du développeur dans Chrome ou Firefox.

    Exemple :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <button id="btn01">Btn 1</button>
    <button id="btn02">Btn 2</button>
    <button id="btn03">Btn 3</button>
    <button id="btn04">Btn 4</button>

    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $( function(){
     
        $( "[id^='btn0']" ).on( "click", function( event ){
            console.log( event.which, event.originalEvent );
        });
     
        setTimeout( function(){
            $( "#btn02" ).trigger( "click" );
        }, 2000);
     
        setTimeout( function(){
            $( "#btn01" ).trigger( "click" );
        }, 4000);
     
    });

    trigger() produira le résultat : undefined undefined
    alors qu'un mouseclick produira : 1 [object MouseEvent]

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Alors c'est peut-être moi qui comprends pas, mais, à partir du moment où on veut se prémunir des gens qui auraient programmé leur bot pour passer le captcha,

    Qu'est-ce qui les oblige à faire du JavaScript et tenir compte du JavaScript du site ? Le bot a qu'à envoyer les réponses qui lui chantent par requête HTTP, sans aucun clic, sans aucun JavaScript.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    J'ai uniquement répondu à la question : comment peut-on distinguer un événement "mouse click" et d'un trigger( "click" ) ?

    Pour les questions de sécurité, il faut voir les experts : http://www.developpez.net/forums/f81...-web/securite/

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Alors c'est peut-être moi qui comprends pas, mais, à partir du moment où on veut se prémunir des gens qui auraient programmé leur bot pour passer le captcha,

    Qu'est-ce qui les oblige à faire du JavaScript et tenir compte du JavaScript du site ? Le bot a qu'à envoyer les réponses qui lui chantent par requête HTTP, sans aucun clic, sans aucun JavaScript.
    Parce que là, des vérifications peuvent être fait, c'est un bot qui enverrait la réponse et non plus mon serveur.
    Donc je peux déceler qq chose.
    Si c'est mon serveur qui m'envoie la réponse comme n'importe quel autre utilisateur, comment savoir si c'est un utilisateur ou un JS qui a cliqué ?

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Piolet Voir le message
    Parce que là, des vérifications peuvent être fait, c'est un bot qui enverrait la réponse et non plus mon serveur.
    Donc je peux déceler qq chose.
    Si c'est mon serveur qui m'envoie la réponse comme n'importe quel autre utilisateur, comment savoir si c'est un utilisateur ou un JS qui a cliqué ?
    Je comprends pas ce que tu dis, mais, typiquement, un bot se substitue à l'ensemble utilisateur ET navigateur de l'utilisateur. Normalement ton site web ne discute qu'avec le navigateur, qui réagit aux actions de l'utilisateur, et qui lui affiche ce que tu lui demandes d'afficher.
    Un bot se ferait simplement passer pour un navigateur qui réagit aux actions de l'utilisateur, et communiquerait avec ton site web, exactement de la même manière et de façon indécelable.

    Quelles vérifications espères-tu faire ? En quoi un bot voudrait envoyer une réponse qui serait normalement envoyée par ton serveur ? C'est l'inverse bien évidemment.

    Citation Envoyé par Piolet Voir le message
    si c'est côté client, c'est aussi modifiable non ?
    Ben oui, évidemment ! C'est pour ça que ça a pas de sens de vouloir "détecter si c'est vraiment un clic", puisque le clic est côté client.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut
    Citation Envoyé par danielhagnoul Voir le message
    Bonjour

    On peut regarder la structure de l'événement, voir : http://api.jquery.com/category/events/event-object/



    event.originalEvent contient tous les renseignements voir les outils du développeur dans Chrome ou Firefox.

    Exemple :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <button id="btn01">Btn 1</button>
    <button id="btn02">Btn 2</button>
    <button id="btn03">Btn 3</button>
    <button id="btn04">Btn 4</button>

    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $( function(){
     
        $( "[id^='btn0']" ).on( "click", function( event ){
            console.log( event.which, event.originalEvent );
        });
     
        setTimeout( function(){
            $( "#btn02" ).trigger( "click" );
        }, 2000);
     
        setTimeout( function(){
            $( "#btn01" ).trigger( "click" );
        }, 4000);
     
    });

    trigger() produira le résultat : undefined undefined
    alors qu'un mouseclick produira : 1 [object MouseEvent]
    Merci, c'est peut-être une solution à envisager, je vais regarder ce que cela donne.
    mais là, comme ça, je me dis que la vérification ne pourra se faire que côté client, vu que c'est un event jquery.
    si c'est côté client, c'est aussi modifiable non ?

  9. #9
    Membre éclairé Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Par défaut
    Citation Envoyé par Geoffrey74 Voir le message
    Question bête, pourquoi ne pas demander de recopier la bonne réponse ?

    Sinon tu as le doubleclick mais pas dispo sur smartphone et tablette.
    Parce que copier la réponse, c'est aussi faisable en JS, donc mordage de queue

Discussions similaires

  1. BOV.5 empêcher les liens automatiques
    Par antakini dans le forum Débuter
    Réponses: 7
    Dernier message: 12/02/2013, 17h39
  2. Réponses: 2
    Dernier message: 15/04/2008, 10h55
  3. Comment désactiver les actions automatiques de Windows ?
    Par j-phi dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 06/01/2005, 12h53
  4. Réponses: 4
    Dernier message: 16/03/2004, 18h03
  5. [AppMessage] Comment empêcher un click de la souris ?
    Par altahir007 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/10/2003, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo