Partage
  • Partager sur Facebook
  • Partager sur Twitter

Protection des données

    25 octobre 2008 à 17:22:14

    Bonjour tous les zéros,
    On voit beaucoup d'outils fleurirent sur les navigateurs, comme la barre web developer, firebug.
    Ils permettent de modifier la page "en live", ce qui est assez pratique pour pas s'embeter avec le fpt entre autre.
    Le problème, c'est qu'on peut facilement s'en servir pour modifier des variables javascript entre autre.
    Par exemple, dans un jeu, je vérifie que le personnage ne puisse pas aller dans une cellule grace aux classes de la cellule. Le problème est que avec cet outil, on peut facilement modifier les classes et ainsi passer outre l'obstacle.
    Je pourrais citer beaucoup d'autres exemples (le nombre de pas restant, etc...), mais ma question est : Comment sécurisé tout le bazar ?
    A grand coup d'AJAX pour etre certain de la véracité de l'information ?
    N'y a t'il aucun risque avec cette méthode ?
    Comment faire sinon, tout en gardant l'avantage de javascript qui est de ne pas recharger la page ?

    Merci d'avance.
    Tim.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      25 octobre 2008 à 18:02:54

      Ne jamais faire confiance au données fournir par le client... toujours vérifier coté serveur ;)
      • Partager sur Facebook
      • Partager sur Twitter
        25 octobre 2008 à 18:04:46

        Ouai mais t'imagines, si a chaque deplacement, je dois faire une requete coté serveur.
        Surtout que je peux pas le faire asynchrone vu qu'il faut que je sache s'il peut y aller ou pas, donc il doit avoir la réponse avant de se déplacer.
        Ou alors, vérifier que les données n'ont pas été modifié toutes les x secondes, ca serait deja plus léger.
        Ou une autre méthode ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          25 octobre 2008 à 18:07:21

          Je suis pas sur qu'il y ai beaucoup d'autres solutions (mais je peux me tromper)

          tu peux faire ton jeux en flash, ce sera plus dur de tricher :p
          • Partager sur Facebook
          • Partager sur Twitter
            25 octobre 2008 à 18:11:26

            Ouai, mais j'aime pas trop flash.
            Sinon, on peut pas protéger le javascript.
            Si on fait tout en objet, et qu'on met les variables en privect, et si on veut modifier les valeurs avec les méthodes, ca passe par une requète serveur.
            Ca pourrait peut etre marcher ?
            • Partager sur Facebook
            • Partager sur Twitter
              25 octobre 2008 à 18:57:40

              pourquoi t'embêter avec le javascript, autant tout sécuriser en fesant des requête serveur. Si tu trouve que c'est trop long, vérifie aussi si ton mouvement est légal en javascript, si oui, tu bouge, ensuite lorsque tu reçois la réponse du serveur tu revalide le mouvement, s'il n'est pas valide, tu remet l'utilisateur à sa place où il devrait être (en gros tu synchronise le client et le serveur)
              • Partager sur Facebook
              • Partager sur Twitter
                25 octobre 2008 à 23:13:49

                Citation : Isra17

                pourquoi t'embêter avec le javascript, autant tout sécuriser en fesant des requête serveur. Si tu trouve que c'est trop long, vérifie aussi si ton mouvement est légal en javascript, si oui, tu bouge, ensuite lorsque tu reçois la réponse du serveur tu revalide le mouvement, s'il n'est pas valide, tu remet l'utilisateur à sa place où il devrait être (en gros tu synchronise le client et le serveur)


                Oui mais ce n'est qu'une partie de la protection qu'on peut faire.
                Imagine que l'utilisateur s'amuse a changer les variables contenants les coordonnées x,y ; ou contenant le nombre de pas. Si on applique ta méthode a tout, ca va pas faire trop lourd ?
                Et est ce que AJAX est vraiment sécurisé ? On peut pas trafiquer la reponse du serveur ?
                • Partager sur Facebook
                • Partager sur Twitter
                  26 octobre 2008 à 3:37:11

                  bah, même si il la trafic, il ne fera que se désynchroniser avec le serveur et le serveur devrait renvoyer des erreurs. AJAX n'est aucunement sûr. Mais, est-il possible de savoir le contexte de ton application?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 octobre 2008 à 4:22:54

                    La seule solution sécurisée est côté serveur. Il est possible de modifier les données envoyées comme les données reçues, tu ne peux faire confiance à aucune donnée transitant par un poste client :)
                    Il suffit de l'appliquer : Dans le cadre d'un déplacement, fais une requête au serveur en lui envoyant les nouvelles positions. Il vérifie alors que le déplacement est possible et renvoie la validation du déplacement, sinon il renvoie une erreur.
                    Intéresses-toi au fonctionnement de ce jeu si tu veux des exemples plus concrets, il fonctionne entièrement en Ajax ;)

                    Citation : seebz

                    tu peux faire ton jeux en flash, ce sera plus dur de tricher :p

                    Le Flash est logé à la même enseigne, s'il n'y a pas de vérification côté serveur il est presque aussi simple d'envoyer des données bidons.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 octobre 2008 à 13:14:47

                      Citation : V@ldun

                      La seule solution sécurisée est côté serveur. Il est possible de modifier les données envoyées comme les données reçues, tu ne peux faire confiance à aucune donnée transitant par un poste client :)
                      Il suffit de l'appliquer : Dans le cadre d'un déplacement, fais une requête au serveur en lui envoyant les nouvelles positions. Il vérifie alors que le déplacement est possible et renvoie la validation du déplacement, sinon il renvoie une erreur.
                      Intéresses-toi au fonctionnement de ce jeu si tu veux des exemples plus concrets, il fonctionne entièrement en Ajax ;)

                      Citation : seebz

                      tu peux faire ton jeux en flash, ce sera plus dur de tricher :p

                      Le Flash est logé à la même enseigne, s'il n'y a pas de vérification côté serveur il est presque aussi simple d'envoyer des données bidons.


                      Mais ne peux t-on pas tricher quand aux données renvoyées par AJAX ?
                      Et, comme je le disais, est ce que ça ne prend pas trop de ressources de vérifier pour chaque déplacement ?
                      Ou alors verifier moins souvent, mais si on voit que normalement, les déplacements effectués étaient impossibles, on kick le joueur ?

                      Pour Fallen Galaxie, je connaissais déja, c'est un jeu que j'adore niveau javascript.
                      Mais est ce que lors du jeu, on voit aussi les mouvements des autres joueurs ?
                      Parce que j'ai un moteur de déplacement assez élaboré (à la RPG maker) mais je me demande si je peux l'implémenter en MMO sans faire ramer monstrueusement la chose.

                      Merci de vos réponses.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 octobre 2008 à 15:30:41

                        Si, justement, on peut aussi tricher sur les données renvoyées :)
                        Tu ne peux pas non plus le kicker si les données sont fausses car il suffit d'un coup de lag pour lancer plusieurs fois la même action, même si elle n'est pas possible, il y aurait donc des kicks non-appropriés.
                        C'est pour ça qu'il est important que le serveur valide tout : peu importe que le client soit décalé si le joueur a volontairement modifié ses données, il se resyncronisera dès qu'il actualisera le jeu une fois qu'il aura fini de chercher les failles ;)

                        Maintenant pour savoir si ça prend des ressources ou pas, ne te pose même pas la question : si le serveur ne vérifie pas chaque action, alors il va y avoir des dérives.
                        A toi d'optimiser tes scripts et de surveiller la charge de ton serveur ;)

                        [ Oui sur FG on voit aussi les mouvements des autres joueurs ;) ]
                        • Partager sur Facebook
                        • Partager sur Twitter
                          26 octobre 2008 à 16:34:50

                          Tu peux aussi utiliser des requête avec les socket au lieu des requête HTTP, mais là ça risque d'être difficile d'implémenter pour que ce soit portable sur tout les navigateur. (Je me demande même si IE l'intègre).
                          Sinon voilà un algo sommaire:
                          LE PERSO AVANCE
                          ENVOIE UNE REQUETE AU SERVEUR AVEC LES NOUVELLE COORDONNÉ
                          CALCUL SI IL PEUT AVANCER
                          SI OUI, IL AVANCE SINON iL N'AVANCE PAS
                          RECOIS LA RÉPONSE DU SERVEUR
                          RECTIFIE LE MOUVEMENT SELON LA REPONSE DU SERVEUR

                          et du côté serveur:
                          RECOIS UNE REQUETE
                          VALIDE LE MOUVEMENT
                          VALIDE LE MOUVEMENT PAR RAPPORT AU DERNIER MOUVEMENT (Permet d'éviter que le joueur n'ait traficquer sa réponse et qu'il n'ait pas écouter les ordres du serveur)
                          RENVOiE LES COORDONNÉ


                          Voilà, si tu procède ainsi, sa peut fonctionner, mais comme tu le dit, sa fait une requête par mouvement.

                          EDIT: Voilà une idée géniale que je viens d'avoir: faire des pile de requete et les envoyer toutes en même temps, le serveur valide le tas de requetes et le valide entièrement.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 octobre 2008 à 16:45:04

                            Citation : V@ldun

                            Si, justement, on peut aussi tricher sur les données renvoyées :)
                            Tu ne peux pas non plus le kicker si les données sont fausses car il suffit d'un coup de lag pour lancer plusieurs fois la même action, même si elle n'est pas possible, il y aurait donc des kicks non-appropriés.
                            C'est pour ça qu'il est important que le serveur valide tout : peu importe que le client soit décalé si le joueur a volontairement modifié ses données, il se resyncronisera dès qu'il actualisera le jeu une fois qu'il aura fini de chercher les failles ;)

                            Maintenant pour savoir si ça prend des ressources ou pas, ne te pose même pas la question : si le serveur ne vérifie pas chaque action, alors il va y avoir des dérives.
                            A toi d'optimiser tes scripts et de surveiller la charge de ton serveur ;)

                            [ Oui sur FG on voit aussi les mouvements des autres joueurs ;) ]


                            Oui mais si on peut modifier les valeurs flux entrée et sortie, comment je fais pour protéger les mouvements.
                            Parce qu'il faut quand meme que le serveur sache quels mouvements le perso va faire pour pouvoir les modifier.
                            Donc a un moment, il te faut une liaison sécurisé quand meme, comment l'obtient tu ?
                            A moins qu'en fait, les flux entrées ne soient pas important, car on verifie quand meme niveau serveur ?
                            Fin, j'ai encore un peu de mal a voir comment vraiment sécurisé le machin quoi.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 octobre 2008 à 18:57:57

                              C'est exactement ça, tu vérifies du côté du serveur que le mouvement est valide : s'il peut y aller par rapport à sa position sur la carte, si la position demandée existe et, accessoirement selon le mode de déplacement de ton jeu, s'il n'est pas éloigné de plus d'une case par rapport à la position actuelle.
                              Le serveur renvoie alors une réponse validant dans un cas le déplacement, affichant un message d'erreur comme quoi l'action n'est pas valide dans l'autre.

                              En procédant de cette manière tout est sécurisé puisque le côté client ne fait que demander au serveur ce qu'il doit faire, toutes les communications peuvent donc être protégées.
                              Il n'y a pas de moyen simple d'obtenir de liaison sécurisée, ne jamais faire confiance aux données transitant sur un poste client, c'est la plus simple et la plus efficace des méthodes ^^
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Protection des données

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown