1. #1
    Membre du Club
    Inscrit en
    avril 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 78
    Points : 48
    Points
    48

    Par défaut Envoyer des scores à un serveur web de façon sécurisé

    Bonjour,

    J'aimerais connaitre les méthodes utilisées pour envoyer un score de jeu vidéo depuis une application PC vers un serveur web.

    La difficulté que je rencontré se situe au niveau de la tricherie. En effet, le jeu est open source et je veux une solution qui ne permette pas à un tricheur de créer un programme similaire au jeu, qui lui permette d'envoyer un score frauduleux.

    A vrai dire, je ne pense pas qu'il y ai de solution.

    Merci.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    18 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 18 561
    Points : 108 541
    Points
    108 541
    Billets dans le blog
    3

    Par défaut

    Bonjour,

    Il doit y avoir un moyen en envoyant assez d'informations sur la partie pour que le serveur calcul une estimation du score final.
    En passant, ces données doivent être chiffrées.
    Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi
    La rubrique a aussi un blog !

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre Expert Avatar de Djakisback
    Inscrit en
    février 2005
    Messages
    1 994
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 1 994
    Points : 2 150
    Points
    2 150

    Par défaut

    Salut,
    quelques pistes :
    - obfusquer au max les parties sensibles du code open source. Voir ne pas donner telle ou telle lib
    - fonctionner par sessions authentifiées ; ça protège rien mais tu peux conserver des logs
    - comme le dit LittleWhite tu peux aussi envoyer des informations ponctuelles lors de la partie et calculer/estimer sur le serveur à la fin
    Vive les roues en pierre

  4. #4
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    décembre 2006
    Messages
    1 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34

    Informations forums :
    Inscription : décembre 2006
    Messages : 1 640
    Points : 1 953
    Points
    1 953

    Par défaut

    Salut,

    une idée que j'avais eue fut un temps mais que j'ai jamais mise en pratique dans sa totalité est de calquer en quelque sorte le fonctionnement sur le serveur sur celui de la justice.

    A la fin de chaque partie, chaque client envoie ce qu'il estime être les 'bons' résultats au serveur, qui va les stocker et les transmettre à l'identique à l'ensemble des autres participants.

    Si l'ensemble des participants est d'accord avec les résultats publiés par les autres joueurs, tout va bien.

    Si par contre un participant s'estime lésé, il pourra 'porter plainte' auprès du serveur pour signifier qu'il estime que tel autre joueur ne respecte pas 'les règles'.

    A charge alors pour le serveur de stocker cette réclamation, les résultats envoyés par chacun et les logs de la partie pour constituer le 'dossier' de la plainte. Le serveur met alors la partie de côté et ne le prend pas en compte l'impact du résultat dans le classement général pour le moment.

    Quand le serveur a un peu de temps libre (= que la faible charge du serveur pour gérer les joueurs connectés lui permet de faire autre chose en tâche de fond), il réouvre le dossier et 'rejoue' la partie grâce aux logs qu'ils aura gardés (genre l'ensemble des communications échangées pendant la partie qu'il sauvegarde en cas de plainte pour alimenter le 'dossier').

    Une fois la partie rejouée par ses soins et son résultat 'objectif' calculé, le serveur émet alors un jugement en faveur du plaignant ou de la défense, et statue sur le résultat de la partie qu'il peut ensuite réintégrer et comptabiliser dans le classement général (et éventuellement réprimander le joueur de mauvaise foi, genre malus de points voir ban du compte).

    Cela me semble plutôt robuste et ne nécessite pas de mécanisme d'obfuscation qui -par nature- ne pourra finir par être déplombé tôt ou tard.

    Par contre, ça laisse encore le champ libre à un cas particulier: si deux joueurs qui sont de connivence s'accordent pour faire exprès de laisser gagner systématiquement un des deux joueurs. Mais:

    1- à la limite ce n'est pas mieux pas pire que le joueur qui lance deux clients et qui fait exprès de laisser perdre son joueur 1 et gagner son joueur 2.

    2- ce genre de problématique est minimisable si tu proposes un double système:

    2.1- les parties classées seront uniquement celles ou le serveur choisira au hasard les joueurs qui s'affrontent. Cela fait que la possibilité d'utiliser le biais des joueurs 'connivents' diminue d'autant que le nombre de joueurs connectés au serveur augmente.

    2.2- les autres parties sont celles ou les joueurs sont libre de choisir leurs adversaires et les parties ou le serveur suspecte un risque de connivence (par exemple parce que deux clients distincts ont la même IP). Ces parties sont déclarées comme étant des parties amicales (ou d'entraînement) et ne comptent tout simplement pas dans le classement.
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  5. #5
    Membre du Club
    Inscrit en
    avril 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 78
    Points : 48
    Points
    48

    Par défaut

    Dans le cas du système de justice et du système d'estimation du résultat, on est obligé d'inventer une solution individuelle pour chaque jeu. C'est embêtant.

    J'ai l'impression que la solution la plus fiable, dans un jeu vidéo multijoueur, serait de faire en sorte que le serveur sur lequel sont connectés les joueurs soit un serveur de confiance. Tout les calcules seraient fait sur celui-ci. Idéalement, il serait hébergé sur la machine sur laquelle est hébergé le serveur Web, ce qui n'est pas toujours possible.

    Si par exemple je veux faire un jeu bidon qui consiste à cliquer le plus grand nombre de fois sur un bouton en une minute, et que le score du joueur soit publié. Ça me parait très difficile de vérifier que le joueur n'ai pas triché sur le message envoyé au serveur.

  6. #6
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    décembre 2006
    Messages
    1 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34

    Informations forums :
    Inscription : décembre 2006
    Messages : 1 640
    Points : 1 953
    Points
    1 953

    Par défaut

    Citation Envoyé par Davidlouiz Voir le message
    J'ai l'impression que la solution la plus fiable, dans un jeu vidéo multijoueur, serait de faire en sorte que le serveur sur lequel sont connectés les joueurs soit un serveur de confiance. Tout les calcules seraient fait sur celui-ci.
    Je ne dis pas le contraire, mais cet idéal n'est pas toujours réalisable quand le calcul du deroulement du jeu en lui-même demande beaucoup de ressources (typiquement quand on commence à introduire de la physique), et que celles-ci sont limitées (notamment pour cause financière, dans le cas d'un développement amateur).

    D'où les solutions alternatives.
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

Discussions similaires

  1. Envoyer des requêtes à un serveur
    Par Qapoka dans le forum AJAX
    Réponses: 3
    Dernier message: 24/09/2009, 12h33
  2. cookie client envoyant des credentials au serveur
    Par nicorama dans le forum Sécurité
    Réponses: 0
    Dernier message: 19/06/2008, 11h46
  3. [Prototype] utiliser Json pour envoyer des donnees au serveur
    Par GandalfZeGrey dans le forum Prototype & Script.aculo.us
    Réponses: 3
    Dernier message: 14/02/2008, 17h16
  4. [SOAP] Envoyer des fichiers volumineux via web services
    Par kaboume dans le forum Services Web
    Réponses: 2
    Dernier message: 06/12/2007, 11h06
  5. Envoyer des informations à un service Web en javascript
    Par gingman dans le forum JavaScript
    Réponses: 6
    Dernier message: 16/03/2006, 10h46

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