High Score de sécurité

  • dudeking
  • Student
  • Student
  • Avatar de l’utilisateur
  • Inscription: Juil 30, 2006
  • Messages: 95
  • Loc: UK, Middlands
  • Status: Offline

Message Juillet 12th, 2009, 9:20 am

Okay, j'ai écrit quelques jeux utilisant JavaScript, et pour les scores élevés J'ai utilisé Ajax pour envoyer la note vers une page PHP qui stocke le score d'une base de données. J'ai de la sécurité va bien donc, l'utilisateur doit être connecté, il n'y a aucun moyen de altère les partitions pour les autres utilisateurs, mais quand vous êtes connecté, il est toujours possible d'injecter des scores.

Code: [ Select ]
if($_GET['sessionID'] == $user->data['session_id'])
    {
        $score = $_GET['score'];
        $username = $user->data['username_clean'];
    
        if($username != 'anonymous')
        {
            $sql = "SELECT score FROM games_batball WHERE username = '$username' ORDER BY score DESC";
            $result = mysql_query($sql);
            $row = mysql_fetch_assoc($result);
            if($row['score'] < $score)
            {
                $sql = "INSERT INTO games_batball (username, score) VALUES ('$username', '$score')";
                $result = mysql_query($sql);
                $message = 'Your Score Was Added';
            }
            else
            {
                $message = 'Your older score of '.$row['score'].' was higher.';
            }
        }
    }
  1. if($_GET['sessionID'] == $user->data['session_id'])
  2.     {
  3.         $score = $_GET['score'];
  4.         $username = $user->data['username_clean'];
  5.     
  6.         if($username != 'anonymous')
  7.         {
  8.             $sql = "SELECT score FROM games_batball WHERE username = '$username' ORDER BY score DESC";
  9.             $result = mysql_query($sql);
  10.             $row = mysql_fetch_assoc($result);
  11.             if($row['score'] < $score)
  12.             {
  13.                 $sql = "INSERT INTO games_batball (username, score) VALUES ('$username', '$score')";
  14.                 $result = mysql_query($sql);
  15.                 $message = 'Your Score Was Added';
  16.             }
  17.             else
  18.             {
  19.                 $message = 'Your older score of '.$row['score'].' was higher.';
  20.             }
  21.         }
  22.     }


J'utilise PHP à passer l'ID de session dans le jeu et puis quand ajax envoie la partition, il transmet aussi l'ID de session qui est utilisé pour assurer l'utilisateur est connecté et qui ils sont. Mais ils pourraient potentiellement altérer encore la javascipt...

Code: [ Select ]
xmlhttp.open("GET", "score.php?score=" + score + "&sessionID=" + id, true);


et changer le score variable à ce qu'ils souhaitent, comment puis-je obtenir cela?


Merci, Eddie
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Juillet 12th, 2009, 9:20 am

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Juillet 12th, 2009, 1:18 pm

Il n'ya qu'une seule façon de vraiment jeu scores. Ne pas exécuter les jeux de logique dans le navigateur. Tant que le navigateur fait même un calcul utilisée pour déterminer le score, le score peut être manipulé.

Le navigateur ne peut pas dire le serveur de n'importe quoi, il ne peut demander le serveur de ce qu'il devrait montrer à l'acteur.
Strong with this one, the sudo is.
  • dudeking
  • Student
  • Student
  • Avatar de l’utilisateur
  • Inscription: Juil 30, 2006
  • Messages: 95
  • Loc: UK, Middlands
  • Status: Offline

Message Juillet 12th, 2009, 1:27 pm

Hummm...okay...I guess Ill suffit d'essayer de cacher les fichiers et les variables dans le code JavaScript pour rendre plus difficile à élaborer.

Afficher de l'information

  • Total des messages de ce sujet: 3 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 85 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC