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

Langage Java Discussion :

sécuriser la diffusion de son appliacation


Sujet :

Langage Java

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Par défaut sécuriser la diffusion de son appliacation
    Bonjour,

    je voudrais savoir la meilleur facon de diffuser publiquement un programme java de facon a ne laisser aucun acces a mon code ou derriver son utilisation en chargeant certaine classe.

    Je m'explique, je sais pas trop comment java gere tout ca, mais je vois dans les jar les fichiers .class donc je me suis demandé si on pouvait pas simplement ajouter mon application a un autre programme et apres faire un import de mes classes pour les utiliser?

    J'ai vu qu'il existait des utilitaires de reversse ingeneering de .class java j'espere que c'est pas au point ou qu'il existe un moyen d'eviter ca?

    C'est surement des questions bete de parano mais c'est aussi pour savoir mieux comment c'est géré pour pas laisser bettement des failles.

    Merci

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par Liiscar
    Bonjour,

    je voudrais savoir la meilleur facon de diffuser publiquement un programme java de facon a ne laisser aucun acces a mon code ou derriver son utilisation en chargeant certaine classe.

    Je m'explique, je sais pas trop comment java gere tout ca, mais je vois dans les jar les fichiers .class donc je me suis demandé si on pouvait pas simplement ajouter mon application a un autre programme et apres faire un import de mes classes pour les utiliser?

    J'ai vu qu'il existait des utilitaires de reversse ingeneering de .class java j'espere que c'est pas au point ou qu'il existe un moyen d'eviter ca?

    C'est surement des questions bete de parano mais c'est aussi pour savoir mieux comment c'est géré pour pas laisser bettement des failles.

    Merci
    Tu peut en effet décompiler des fichiers .class et c'est au point. Pour passer par dessus ça, il existe des obfuscateurs de code qui permettent de modifier le code à ce qu'il ne soit plus décompilable, mais après, tu peux encore déobfusquer le code...

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Par défaut
    et j'ai vu que il y avait les jar signé, j'ai lu quelques trucs dessu mais est ce que ca empeche pas ca? On peut pas faire une sorte de boite noir de son programme?

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par Liiscar
    et j'ai vu que il y avait les jar signé, j'ai lu quelques trucs dessu mais est ce que ca empeche pas ca? On peut pas faire une sorte de boite noir de son programme?
    C'est tout autre chose, un jar signé est une applet qu'on a signé avec un certificat pour qu'elle puisse être éxécutée par un navigateur.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Par défaut
    donc en gros ta reponse c'est non, quoique je fasse quelqu'un motivé pourra toujours recuperer mon code si je le diffuse?

    On en parle jamais de ca dans les inconvenients de java.

  6. #6
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    Citation Envoyé par Liiscar
    donc en gros ta reponse c'est non, quoique je fasse quelqu'un motivé pourra toujours recuperer mon code si je le diffuse?

    On en parle jamais de ca dans les inconvenients de java.
    Il y a le même problème pour n'importe quel autre langage, c'est juste connu en java.

    De plus ce n'est pas un inconvénient en soit du langage. Ce n'est pas un bug et ce n'est pas une limitation .

    Après constatation personnel, il y a peu de code qui mérite plus que de l'obfuscation de code.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut
    Citation Envoyé par Liiscar
    donc en gros ta reponse c'est non, quoique je fasse quelqu'un motivé pourra toujours recuperer mon code si je le diffuse?

    On en parle jamais de ca dans les inconvenients de java.
    Et c'est vrai pour absolument n'importe quel langage. Donc, non ca n'est pas un inconvenient de java par rapport aux autres langages

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Par défaut
    oui bon je suis d'accord pour la recuperation du code brut. Encore que en C++ par exemple le reverse est pas super convainquant.

    Mais il reste le probleme de l'utilisation des classes. La je viens de tester vite fait avec un prog j'ai pris tout le package public donc que des .class j'ai bettement zip et renomé en .jar j'ai ajouté ca a mon build path et ben voila quoi j'avais acces a toute l'appli en utilisation et donc je peux la derouter pour en faire autre chose.

    Pour etre plus precis je code un jeu web la. Bon j'avoue faut le vouloir ca se fait pas comme ca, mais quelqu'un pourrait utiliser mon client pour detourner les regles du jeu.

    Heureusement par principe j'avais prevu le coup je me suis assez cassé la tete pour optimiser les transfer de donnés et le client ne recoit a peine plus d'information que ce qu'il a le droit de connaitre normalement. Par contre les actions du joueur je peux faire le choix de revérifier tout ce qu'il envoie et perdre en performance coté serveur ou laisser ca au client et risqué un abus.

    Je joue a des mmorpg, je commence a comprendre les problematiques de ces jeux avec les cheats lol.

    Pour en revenir a java il doit bien exister un moyen de bloquer l'utilisation de ses class. Y a beau dire dans d'autre langage ca se fait pas aussi facielement que ca, enfin je crois.

  9. #9
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    En fait la tu reportes sur le langage un problème de conception.

    Si tu est en client/serveur, c'est ton serveur qui doit avoir la maîtrise de tes données pas ton client.

    Au mieux normalement il ne devrait pouvoir refaire qu'un client sans pouvoir tricher.

    Dans le cadre d'un jeu, ton client ne doit envoyer que des ordres simples et c'est ton serveur qui gère l'action.

  10. #10
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    Citation Envoyé par Liiscar
    Y a beau dire dans d'autre langage ca se fait pas aussi facielement que ca, enfin je crois.
    Une dll est rarement restrictive..

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Par défaut
    Je programme plus par plaisir et pour apprendre, je fais evidement pas le jeu revolutionnaire qu'on voudra pirater. Faudrait deja que je le finisse qu'apres on y joue et encore apres que il y ai quelqu'un qui n'ai rien d'autre a faire que ca lol. Mais le probleme est pas la, je me renseigne pour savoir et sortir les problematiques.

    En tout cas merci de vos reponses. Je suis quand meme currieux de savoir si il y a moyen de bloquer l'utilisation de mes class?

  12. #12
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut
    Citation Envoyé par Liiscar
    Mais il reste le probleme de l'utilisation des classes. La je viens de tester vite fait avec un prog j'ai pris tout le package public donc que des .class j'ai bettement zip et renomé en .jar j'ai ajouté ca a mon build path et ben voila quoi j'avais acces a toute l'appli en utilisation et donc je peux la derouter pour en faire autre chose.

    Pour etre plus precis je code un jeu web la. Bon j'avoue faut le vouloir ca se fait pas comme ca, mais quelqu'un pourrait utiliser mon client pour detourner les regles du jeu.

    Heureusement par principe j'avais prevu le coup je me suis assez cassé la tete pour optimiser les transfer de donnés et le client ne recoit a peine plus d'information que ce qu'il a le droit de connaitre normalement. Par contre les actions du joueur je peux faire le choix de revérifier tout ce qu'il envoie et perdre en performance coté serveur ou laisser ca au client et risqué un abus.

    Je joue a des mmorpg, je commence a comprendre les problematiques de ces jeux avec les cheats lol.

    Pour en revenir a java il doit bien exister un moyen de bloquer l'utilisation de ses class. Y a beau dire dans d'autre langage ca se fait pas aussi facielement que ca, enfin je crois.
    Voila tout le problème des jeux en ligne. S'assurer que le client ne "triche" pas. Pour t'assurer au maximum de ca, il faut que ton client ai uniquement les informations qui lui sont nécessaire et soit le plus "passif" possible, toutes les actions qu'il effectue doivent être contrôlé par ton serveur.
    Dans l'idéal, ton serveur doit connaitre toutes les réponses que doit pouvoir envoyer le client au message que le serveur lui a envoyé.

  13. #13
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    Citation Envoyé par Liiscar
    Je programme plus par plaisir et pour apprendre, je fais evidement pas le jeu revolutionnaire qu'on voudra pirater. Faudrait deja que je le finisse qu'apres on y joue et encore apres que il y ai quelqu'un qui n'ai rien d'autre a faire que ca lol. Mais le probleme est pas la, je me renseigne pour savoir et sortir les problematiques.

    En tout cas merci de vos reponses. Je suis quand meme currieux de savoir si il y a moyen de bloquer l'utilisation de mes class?
    C'est encore un autre problème, la décompilation de la classe, et l'utilisation de la classe compilé dans un autre contexte.
    Personnellement je ne vois pas comment, peut-être en restreignant le scope de certaine classe en private et en protected...

  14. #14
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Liiscar
    Je suis quand meme currieux de savoir si il y a moyen de bloquer l'utilisation de mes class?
    Il existe un moyen : crypter ses classes et utiliser un ClassLoader personnalisé qui se chargera de les décrypter avant de les passer à la JVM...

    Mais le problème se retrouve alors au niveau de la clef d'encodage (il ne faut pas que d'autres applications puissent l'utiliser pour décrypter les classes).

    a++

  15. #15
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Par défaut
    Dans le principe on peut coder quelque chose qui verifie tout et envoie les infos au compte goute.
    Dans la pratique utiliser les performences machine des utilisateurs est bien pratique pour decharger le serveur. Typique un deplacement je vais pas verifier si il marche bien sur la terre ou si il marche sur l'eau a chaque deplacement d'une case. Et les données envoyé je peux pas envoyer les données case par case de ce qu'il detecte j'envoie une zone autour de lui meme si celle ci depasse ce qu'il est censé voir. J'ai fait fluide mais en fait mon joueur recoit les infos de sa zone ca me permet de diviser la taille de l'univers.
    Enfin je m'egare ca devient plutot de l'ordre du forum sur les jeux, en tout cas ca me passionne tout ces problemes

Discussions similaires

  1. Diffusion du son dans une page web
    Par marouanenet dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 07/05/2012, 21h30
  2. Diffuser un son sur plusieurs SWF recept.
    Par delavega dans le forum Flex
    Réponses: 0
    Dernier message: 12/06/2009, 17h59
  3. Diffuser le son de flash sur carte son spécial
    Par bjacque2 dans le forum Flash
    Réponses: 4
    Dernier message: 11/08/2008, 01h18
  4. Diffuser un flux radio sur son site
    Par stanley dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 07/04/2008, 15h03
  5. Réponses: 20
    Dernier message: 06/12/2005, 16h19

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