IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Sécurité JS/JQuery renvoi de données


Sujet :

jQuery

  1. #1
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut Sécurité JS/JQuery renvoi de données
    Bonjour à tous/toutes,

    Voilà, j'aimerai parler un peu des possibilités du JQuery.

    Mon raisonnement est le suivant :
    imaginons un site de jeux développés en JS, bon. Le joueur débute avec ses statistiques, ses points etc. Qu'est-ce qui empêche ce joueur d'utiliser un plugin tel que FireBug pour modifier le code JS et, par exemple, gagner la partie, s'ajouter des points etc? Bref, modifier des champs afin de les renvoyer au serveur, qui va enregistrer les points piratés..

    Voilà, je me posais la question, est-ce une technologie adaptée pour l'utiliser en ce sens? L'ActionScript est-il plus adapté à ce niveau, échange de données entre le client et le serveur?

    Merci de participer à cette discussion.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    personne n'a jamais dit que javascript était sur ...
    Bien au contraire !!!
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Les outils du développeur permettent de modifier uniquement la version locale.

    Avant d'envoyer des informations au serveur, il doit toujours y avoir des contrôles de vraisemblance coté JS, mais les contrôles sérieux doivent se trouver côté serveur. Il faut toujours prendre ce qui arrive du "client" avec beaucoup de prudence.

    Un jeu se déroule par étape et pour franchir chaque étape certaines conditions doivent être remplies et chaque étape nécessite une durée minimale de jeu. Il est donc assez facile de contrôler la vraisemblance à chaque étape, tant sur le client que sur le serveur.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut
    Merci pour vos réponses.

    Et entre cette solution qui est de vérifier les conditions du joueur, qu'ils ne dépassent pas les possibilités du jeu, et les possibilités avec l'AS/Flash, est-ce que le Flash est plus sûr de ce côté? Qu'en pensez-vous?

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    AS est également coté client ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre confirmé Avatar de Squalthor
    Homme Profil pro
    Autodidacte
    Inscrit en
    Juillet 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Juillet 2006
    Messages : 179
    Par défaut
    L'avantage de l'AS c'est avant tout de pouvoir gérer "facilement" clavier et animations non ?

    Je projete de faire un portail de jeux (site basé entèrement sur ajax) et n'ayant pas de connaissance en AS je compte aussi passer par le js pour offrir aux joueurs une certaine ergonomie (gestion des touches, sourie, animations à la pelle).

    Ma question va sûrement paraitre stupide mais... un joueur peut modifier des valeurs en mémoire ?

  7. #7
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut
    D'accord, ce qui implique que l'application pourrait être modifiée par le client et renvoyer au serveur des données compromises.

    Hmmm intéressant. Ce que je vais faire; tester les deux possibilités, voir laquelle des deux me convient le mieux niveau communication avec le serveur et, bien sûr, l'implémentation de la sécurité pour chacune. Je choisirai ensuite.

    Si des membres ont des ressources qui pourraient être susceptibles d'améliorer la qualité de développement sur ces supports, je suis preneur bien entendu.

  8. #8
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut
    Squalthor,

    si tu browse via Firefox, tu peux essayer d'installer le plugin "Firebug" qui permet de parcourir et de modifier les éléments d'une page, le code JS, CSS et même HTML. Mais comme l'a dit daniel, c'est une copie locale qui est modifiée, en aucun cas un autre client ne pourra obtenir le résultat, que tu auras créé, dans son navigateur.

    Donc, le problème que je voulais évoquer se trouve bien au niveau du serveur recevant les paramètres du client. Il doit vérifier de manière efficace que le jeu s'est déroulé correctement, et qu'il a abouti à une fin d'exécution prévue, avant de mettre à jour les données de l'utilisateur, comme le score.

    Je prends un exemple, imagines un jeu de puzzle, le but est de modifier les emplacements des parties pour qu'elles reforment l'image de base.
    Imagines qu'une variables JS contienne un indice qui vaut 0 quand le puzzle n'est pas terminé et 1 quand il est complet. Imagines que cet index soit envoyé au serveur à 1 dés le début de partie, le serveur reçoit l'index qui lui informe que le joueur à réussi et il lui augmente ses points.

    Comme le suggérait Daniel, un scheduler pourrait être le bienvenu pour vérifier que le joueur n'a pas triché.

    Imaginons un autre exemple, un jeu qui décompte des points gagnés suivant ... hmmm ... un nombre de blocs détruits par exemple! Si ce nombre de points est stocké dans un variable JS, le joueur peut modifier ce nombre et le renvoyer au serveur. Le serveur reçoit le nombre (9999999) et hop le joueur est le premier du classement!

    Fin voilà, c'est l'intuition qui m'a poussé à venir poster dans le forum. C'est juste que beaucoup de jeux, développés en Flash, m'ont l'air plus "sécurisé" dans le sens où les interactions ont l'air "encadrées" par le langage.

  9. #9
    Membre confirmé Avatar de Squalthor
    Homme Profil pro
    Autodidacte
    Inscrit en
    Juillet 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Juillet 2006
    Messages : 179
    Par défaut
    Bonjour Arkham55.

    Cette discution m'intérresse d'autant plus que je suis en train de coder un site entièrement en Ajax.
    Donc je dois être bien attentif à la sécurité du site.

    J'utilise également Firebug, mais après brièvement cherché je n'ai rien vu qui me permettais de modifier le code javascript... j'ai mal regardé ?


    Je suis un amateur, donc il est sûr que je ne cerne pas tout ce que ça peut englober... Par contre effectivement je pars du principe que la sécurité de base se trouve dans les contrôles php.

    Enfin, mon projet n'est et ne sera probablement jamais terminé...
    Mais c'est très intérressant dans le principe !

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Membre confirmé Avatar de Squalthor
    Homme Profil pro
    Autodidacte
    Inscrit en
    Juillet 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Juillet 2006
    Messages : 179
    Par défaut
    Très mal regardé même...
    Bon effectivement, traiter des variables sur le client est vraiment dangereux... Pour ma part j'avais anticipé ceci, ouf !

    Donc je m'auto-répond, quand même: on peut modifier les variables en mémoire avec Firebug...

    Pour un jeu en js il faut donc rester sur l'action js avec vérification php.

  12. #12
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    À toutes fins utiles, je vous rappelle l'existence des forums dédiés aux Jeux. Voir http://www.developpez.net/forums/f66...nt-2d-3d-jeux/.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  13. #13
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut
    Oh super, j'avais pas connaissance de cette partie des forums! Merci Daniel ^^

    Mais pour rester dans le JQuery, je n'ai que quelques notions d'ajax et je me renseigne sur les bonnes pratiques.
    L'objet ajax permet de faire des XMLhttpRequest, l'intuition, comme je l'ai comrpise, est d'envoyer des messages/demandes/fichiers xml au serveur, d'attendre sa réponse (le site n'est pas bloqué durant ce laps de temps, libre choix au développeur je suppose) et de traiter sa réponse dans le navigateur client, dans le code JS, et d'afficher le résultat (s'il y en a) afin de ne pas devoir charger toute la page.

    Cela permettrait, à l'aide d'un bouton par exemple, de demander au serveur d'effectuer une action dans la BD, sans pour autant charger la page, mais une petite partie qui affichera un résultat suivant la réponse du serveur.

    Les fichiers XML servent à l'envoi d'informations très rapidement (cela peut même être de simples fichiers textes à ce que j'ai lu) entre client et serveur.

    On peut donc imaginer que le client envoi une demande au serveur, qui la reçoit la traite et la renvoie, pendant ce laps de temps, la page affiche au client quelque chose comme une petite image de chargement.

    De manière asynchrone, pour un site, c'est très avantageux =)

    Oula brainstorming les amis! ^^

  14. #14
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Avant toute chose, si vous voulez vraiment utiliser jQuery, je vous conseille la lecture de la FAQ jQuery. Vous y trouverez certainement quelques réponses à vos questions. Vu votre intérêt pour AJAX, je vous conseille de commencer par les chapitres "introduction" et "requête ajax".

    Rendre une action synchrone, AJAX ou autre, c'est bloquer la page web et mécontenter l'utilisateur dans 99 % des cas.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  15. #15
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut
    Tu n’exagères pas un peu? Dans le cas d'un jeu, il y a toujours des chargements, c'est normal quand même que les ressources mettent du temps à être téléchargées. Merci encore.

  16. #16
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    On peut toujours demander à l'utilisateur d'attendre avec un GIF animé, mais par expérience il ne faut pas plus de 5 secondes avant que 50 % aille voir ailleurs. Si l'utilisateur voit que le page se construit devant ses yeux, s'il a quelque chose à lire ou quelque chose à faire, alors il prend patience une quinzaine de secondes.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  17. #17
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut
    Oui tes statistiques sont bonnes, tu as raison. Mais c'est sûr qu'il ne pourra pas attendre 5 minutes à ne rien faire, c'est vrai..
    Merci encore pour les ressources partagées.

Discussions similaires

  1. [JSP - JS] popup qui renvoie des données
    Par spk4ever dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/06/2006, 15h52
  2. [JSP] Pop up qui renvoie des données
    Par spk4ever dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 12/06/2006, 13h09
  3. Réponses: 2
    Dernier message: 05/06/2006, 08h54
  4. Réponses: 4
    Dernier message: 11/11/2005, 14h46
  5. Fichier de sécurité de la Base de données
    Par JF.Stachera dans le forum Sécurité
    Réponses: 2
    Dernier message: 12/10/2005, 11h44

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