À ce stade, les activités de vote sont interminables dans WeChat Moments. Je pense que de nombreux étudiants sont déjà ennuyés par cela, car des personnes (parents, amis ou autre) viendront toujours de temps en temps pour vous demander de voter pour eux.
Cet article n'a pas l'intention d'explorer cette question d'un point de vue moral ou émotionnel. Ce qui m'intéresse est que la plupart des activités électorales actuelles présentent en fait des failles évidentes et que la « manipulation du vote » peut être réalisée par des moyens techniques simples.
Voici un exemple.
Un centre commercial de coiffure en ligne (ci-après dénommé S Mall) a organisé un événement de vote en ligne sur la plateforme WeChat. Les utilisateurs de WeChat peuvent accéder à la page de vote via le lien de l'événement et voter pour les travaux de leurs coiffeurs préférés. Chaque compte WeChat ne peut voter que pour Cast. 1 vote pour une seule œuvre.
La page d'activité de vote est présentée ci-dessous :
En apparence, S Mall a déjà mis en œuvre des mesures anti-triche sur les activités de vote, car chaque utilisateur de WeChat est limité à un seul vote par jour. Si les utilisateurs accèdent normalement à ce service de vote via WeChat pour voter, cela aura effectivement l'effet souhaité.
Cependant, si vous affichez l'adresse d'origine de la page de vote, c'est-à-dire maintenez la page enfoncée et faites-la glisser vers le bas, vous constaterez que « Cette page Web est fournie par XXX » s'affiche en haut de l'écran. que « XXX » ici n'est pas « mp.weixin. qq.com », mais le nom de domaine de S Mall. En d’autres termes, le programme de cette activité de vote s’exécute sur le serveur de S Mall.
Sur la base de l'analyse ci-dessus, on peut déduire que le diagramme de topologie du réseau des opérations de vote des utilisateurs devrait être le suivant :
Lorsqu'un utilisateur de WeChat accède à la page de vote, le serveur WeChat transmet uniquement la demande, et le décompte et la vérification spécifiques des votes sont effectués sur le serveur S Mall.
Alors, comment S Mall distingue-t-il les utilisateurs votants ?
Cela implique le concept de plate-forme publique WeChat OpenID
. L’explication officielle d’ OpenID
est la suivante : après avoir crypté l’ID WeChat, l’OpenID de chaque utilisateur pour chaque compte officiel est unique.
Il est facile de le vérifier. Il vous suffit d'utiliser plusieurs comptes WeChat pour voter, de capturer les paquets réseau pendant le processus de vote et de vérifier les paramètres dans le POST pour confirmer.
Sur cette base, la plate-forme publique WeChat inclura l' OpenID
de l'utilisateur dans le paramètre POST lors du transfert de la demande de vote ; une fois que S Mall aura reçu la demande de vote POST, elle pourra empêcher un seul vote en demandant si l' OpenID
actuel a voté ce jour-là. L'utilisateur a voté à plusieurs reprises.
Cependant, il y a ici une grosse lacune !
S Mall peut uniquement déterminer si OpenID
est dupliqué, mais il ne peut pas vérifier la validité de OpenID
car il ne peut pas appeler le serveur WeChat pour vérifier l' OpenID
.
Après avoir clarifié cette faille, il est très simple de réaliser un ticket brushing.
OpenID
et effectuez des requêtes POST répétées.Si vous souhaitez implémenter un traitement par lots de tickets ou des opérations automatisées de traitement de tickets, vous pouvez implémenter des demandes de traitement de tickets via des scripts Python, vous pouvez même utiliser LoadRunner.
Exécutez VoteRobot.py
, le journal de sortie est le suivant :
======== Start to vote zpid(38), Total votes: 3
1 tickets has been voted, the next ticket will be voted after 35 seconds.
2 tickets has been voted, the next ticket will be voted after 31 seconds.
3 tickets has been voted, the next ticket will be voted after 10 seconds.
======== Voting Ended!
Il convient de noter qu'il est généralement préférable d'avoir un intervalle de temps aléatoire lors de l'automatisation du brossage des tickets, et qu'il est préférable de simuler dynamiquement différents appareils, c'est-à-dire de modifier User-Agent
. Sinon, le serveur peut facilement identifier le comportement de triche.
Voyant cela, certains étudiants peuvent être secrètement heureux. Cette méthode peut-elle être utilisée pour « balayer les votes » lors des futurs votes ?
Malheureusement, bien sûr que non.
En fait, les lacunes dans le cas de cet article sont très faibles. Cependant, une grande partie des activités de vote utilisent ce modèle.
Il est également facile de savoir si une campagne électorale pourrait être frauduleuse de cette manière. En utilisant la méthode décrite dans cet article, si l'URL de l'événement n'est pas WeChat officiel et qu'il n'y a aucune vérification supplémentaire dans l'ensemble du processus de vote, alors la possibilité de tricherie est très élevée, puis capturez le paquet pour voir le processus d'interaction de communication, et utilisation Après avoir modifié les paramètres de l'outil de requête réseau et effectué une nouvelle demande, vous pouvez vérifier si la triche est vraiment possible.
En outre, certaines personnes voudront peut-être se demander s'il est impossible d'empêcher la « manipulation du vote » dans les activités de vote en ligne ?
La réponse est qu’il est en effet difficile de l’éliminer complètement. Avez-vous déjà entendu parler du scalpeur 12306 ? Avez-vous déjà entendu parler du classement professionnel des applications par l'Apple Store ? Avez-vous déjà entendu parler des « trolls Internet » et de la « 50 Cent Party » ?
Cependant, les organisateurs d’événements peuvent utiliser certains moyens pour augmenter considérablement le seuil de triche. Par exemple, de nombreuses activités actuelles utilisent les méthodes suivantes :
Quelle que soit la méthode utilisée, la méthode du « vote brushing » présentée dans cet article est totalement inefficace.