1. #1
    Membre du Club Avatar de kodo
    Inscrit en
    mars 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : mars 2006
    Messages : 257
    Points : 61
    Points
    61

    Par défaut executer un script à partir d'une application web

    Bonjour tout le monde,
    Je demande votre avis sur une demande exprimée par un client:
    il a un script shell qui le lance à partir de l'invite de commande, il veut que nous lui donnons la possibilité de le lancer depuis une application web que nous sommes en train de développer.
    D'un point de vue sécurité, est il conseillé d'avoir ce genre de fonctionnalité dans une application web ?
    Si c'est oui et à part ce que fait le script, de quoi nous devons faire attention ?

    Je vous remercie.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    novembre 2006
    Messages
    6 688
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 6 688
    Points : 8 775
    Points
    8 775
    Billets dans le blog
    1

    Par défaut

    Avant, on pouvait passer par une applet signée pour lancer un exe ou une commande sur le poste client.
    Maintenant, les dernières versions des navigateurs ne le supporte plus...
    Du coup, il faudrait peut-être s'orienter vers JNLP avec un petit programme java qui s'occupera de lancer la commande... mais bon, les théories des "grands penseurs" veulent qu'une application web ne fasse pas ça... dommage pour certains
    L'argument sécurité me fait plutôt sourire... une question au lancement d'une applet me paraît largement suffisant... l'insécurité vient des utilisateurs, avec leurs habitudes d'installer des programmes à partir du net en cliquant OK, OK, OK, etc...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    25 212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 25 212
    Points : 48 228
    Points
    48 228

    Par défaut

    A noter que si tu as un certain controle sur le poste client, tu peux simplement installer un custom protocol handler qui permet de lancer ton application depuis la page web. A titre d'exemple, steam le fait en enregistrant un protocole pour steam://, skype installe un handler pour tel:// etc.


    https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
    David Delbecq Java developer chez HMS Industrial Networks AB.     LinkedIn | Google+

  4. #4
    Membre du Club Avatar de kodo
    Inscrit en
    mars 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : mars 2006
    Messages : 257
    Points : 61
    Points
    61

    Par défaut

    Merci beaucoup pour vos retours.
    Après une discussion avec le client, il est sûr et insiste sur ce qu'il demande.
    Je vais travailler avec la bibliothèque Jsch (Java Secure Channel), elle permet d'exécuter des commandes shel sur un serveur distant via ssh.
    Voici le code que j'ai écrit, il marche très bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public void executerScript(String script) {
    		List<String> result = new ArrayList<String>();
    		try {
    			JSch jsch = new JSch();
    			Session session = jsch.getSession(USER, ADRESSE);
    			session.setConfig("StrictHostKeyChecking", "no");
    			session.setPassword(PASSWORD);
    			session.connect();
    			ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
    			InputStream in = channelExec.getInputStream();
    			channelExec.setCommand("sh " + script);
    			channelExec.connect();
    			BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    			String line;
    			while ((line = reader.readLine()) != null){
    				result.add(line);
    			}
    			channelExec.disconnect();
    			session.disconnect();
    		} catch (Exception e) {
    			System.out.println(e);
    		}
    		System.out.println(result);
    	}

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    25 212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 25 212
    Points : 48 228
    Points
    48 228

    Par défaut

    Ha tu veux dire exécutée de serveur web à serveur ssh? On avait compris que tu voulais exécuter ça sur le poste client du browser

    Alors du point de vue sécurité:

    tu n'utilise pas de mot de passe comme tu le fais mais une clé SSH. Ca permet d'attribuer une clé à ton serveur web et éviter que tous les services doivent être à changer si le mot de passe se perd dans la nature.

    Je ne passerais pas un script en paramètre de la commande. J'opterai plutôt pour une enum qui contient les scripts possible. Ca évite le risque que quelqu'un injecte n'importe quoi comme script. Tu deviens responsable de ce qui se passe avec ce compte alors autant que ce soit propre.
    David Delbecq Java developer chez HMS Industrial Networks AB.     LinkedIn | Google+

  6. #6
    Membre du Club Avatar de kodo
    Inscrit en
    mars 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : mars 2006
    Messages : 257
    Points : 61
    Points
    61

    Par défaut

    Merci beaucoup tchize_ pour ton retour

Discussions similaires

  1. Lancer script SAS à partir d'une application web
    Par Vincetouch dans le forum Outils BI
    Réponses: 5
    Dernier message: 16/04/2013, 17h21
  2. Scanner un document à partir d'une application web
    Par Dhafer82 dans le forum Sharpdevelop
    Réponses: 1
    Dernier message: 23/03/2013, 22h15
  3. Réponses: 1
    Dernier message: 17/07/2008, 18h05
  4. Redémarrer IIS à partir d'une application Web.
    Par gwadakillah dans le forum ASP.NET
    Réponses: 13
    Dernier message: 09/07/2008, 19h33
  5. [Print]Imprimer a partir d'une application web
    Par Chiabni dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 03/01/2006, 14h02

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