DraftBot-A-Discord-Adventure / DraftBot

A Discord adventure bot that speaks english and french
MIT License
228 stars 61 forks source link

Mécanisme de protection requêtes API #2702

Open Feiryn opened 1 month ago

Feiryn commented 1 month ago

Voilà mes réflexions pour le système de protection du boting pour l'API pour l'appli mobile :

Ainsi, ceci permet les choses suivantes :

Certes c'est de l'obfuscation, mais la complexité + le fait de devoir le faire à chaque mise à jour découragera un certain nombre de personnes. Combiné avec la surveillance active (ex : grafana) ou encore d'autres choses (captcha), on pourra éviter une partie du boting.

Après de toute façon, il n'y a aucun moyen d'éviter le boting, c'est toujours un jeu du chat et de la souris. Le but est de rendre le boting complexe et dissuadant.

Feiryn commented 1 month ago

Exemple

Compilation

Génération des nombres aléatoires pour les paquets

(à noter que les nombres feront 64 bits donc seront entre 0 et 9223372036854775807, pour éviter le brute force)

ping : 1234 report : 5678 shop : 9012

Génération des algorithmes des paquets

(à noter qu'il y aura en réalité sûrement plusieurs centaines d'opérations)

ping : add 5, multiply 8, modulo 2500 report : sub 50 shop : multiply 2, div 10

Calcul du résultat pour l'API

ping : (((1234 + 5) 8) % 2500) = 2412 report : (5678 - 50) = 5628 shop : (9012 2) / 10 = 1802

Envoi d'une requête par l'utilisateur

Contexte

timestamp : 1734016293 ID utilisateur : 8d4c5e02-03e3-476b-a58e-e835af9f97ad

Calcul du hash d'une commande ping

sha256(timestamp || ID user || nombre paquet) = sha256(17340162938d4c5e02-03e3-476b-a58e-e835af9f97ad2412) = 699c0ef266dc50800132e76df8bae76d5ca1766eb673eaa4c652c624958a32bd