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

Java Discussion :

pb de passage de paramètres d'appli JSE en post caché vers une appli WEB servlet J2EE


Sujet :

Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Points : 181
    Points
    181
    Par défaut pb de passage de paramètres d'appli JSE en post caché vers une appli WEB servlet J2EE
    Bonjour

    Je me heurte à une grosse difficulté dans un programme JAVA, peut-être que quelqu'un a la solution.


    J'ai mon application JAVA JSE (pas de serveur d'application)
    qui lance un raccourci vers une page Web qui est sur un serveur J2EE.

    J'ai une url de ce genre :
    http://application.fr:9080/visu/rech...epersonne=toto

    Par contre, gros risque de sécurité, il ne faut pas passer mes paramètres dans l'url . codepersonne....

    Du coup, j'ai cherché une solution,
    je pensais avoir trouvé avec URL connection qui se connecte à l'url de ma servlet (à l'url http://application.fr:9080/visu/SinistresService), passe les paramètres
    puis ensuite fait le redirect.
    Mais non, le sendredirect abouti mais rien dans le navigateur.
    Comme vous voyez, j'ai essayé plusieurs méthode pour la redirection, rien n'y fait, le navigateur ne change pas d'url!!!

    Ci dessous mon code coté appli JSE :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    /**
     *
     */
     
    import java.awt.Desktop;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.URI;
    import java.net.URISyntaxException;
    import java.net.URL;
    import java.net.URLConnection;
     
    /**
     * @author slam
     *
     */
    public class EnvoiPost {
     
     
        public static void affichenavigateur() {
             //ouvrir l'url connectée sur le navigateur
     
                    try {
                        Desktop.getDesktop().browse(new URI("http://application.fr:9080/visu/SinistresService"));
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        System.out.println("Erreur ouvrir de afficheparametre.jsp sur le navigateur ");
                    } catch (URISyntaxException e) {
                        // TODO Auto-generated catch block
                        System.out.println("Erreur ouvrir de afficheparametre.jsp sur le navigateur ");
                    }
     
     
     
        }
     
         public static void main(String[] args) throws Exception {
     
              //Se connecter sur la servlet de l'interface Web
              //y écrire 3 paramètres en POST
              //URL url = new URL("http://application.fr:9080/visu/afficheparametre.jsp");
             URL url = new URL("http://application.fr:9080/visu");
                URLConnection conn = url.openConnection();
     
     
                //pour envoyer un post, mettre à true
                conn.setDoOutput(true);
                //conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.0 Safari/532.5");
                OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
     
     
     
                //..mettre l'ouverture navigateur avant ou après l'écriture de paramètre?
                //
                writer.write("codepersonne=156804&nom=toto&type=titi");
     
     
                writer.flush();
     
     
                // LIRE sur la connection : pas utile, je lis dans la servlet les paramètres
     
                String line;
                BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
     
     
     
                while ((line = reader.readLine()) != null) {
                  System.out.println(line);
     
                }
                reader.close();
     
     
     
                writer.close();
     
     
                if (conn != null) {
                    conn=null;
                }
     
                //essai run.getruntime
                 //String cmd = "rundll32 url.dll,FileProtocolHandler " + url; //eg http://...'
                 //Runtime.getRuntime().exec(cmd);
     
     
     
     
                affichenavigateur();   
     
     
     
     
              }
    }

    Ci-dessous ma servlet qui traite les demandes web
    package services;
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
    import java.awt.Desktop;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.net.*;
     
     
    import data.Extraitbeneficiaire;
    import data.Extraitdetaildossier;
    import data.Extraitsinistres;
     
     
    import beans.Utilisateur;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
     
    /**
     * Servlet implementation class SanteDataService
     * @author slam
     */
    public class SinistresService extends HttpServlet {
     
     
     
        private static final long serialVersionUID = 1L;
     
     
     
     
     
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
         *      response)
         */
        protected void doGet(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
            String typeParameter = request.getParameter("type");
            //http://application.fr:9080/
     
            //Récupérer 3 paramètres passés en post
            String codepersonne =request.getParameter("codepersonne");
            String nom = request.getParameter("nom");
            String typedecompte = request.getParameter("typedecompte");
     
     
            //controler le passage de paramètres
            System.out.println("codepersonne-->" + codepersonne);
     
     
            if (codepersonne !=null) {    
                //this.attcodepersonne = codepersonne;
            //response.sendRedirect("/visu/testjsp");
     
     
     
            //RequestDispatcher dispatcher=request.getRequestDispatcher("afficheparametre.jsp");
            //request.setAttribute("codepersonne",codepersonne);
            //dispatcher.forward(request, response);
     
                //parametrer la prochaine requete car request est gateux!
                request.setAttribute("codepersonne", codepersonne);
                response.sendRedirect("http://application.fr:9080/visu/afficheparametre.jsp");
     
                //RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/visu/afficheparametre.jsp");
                //dispatcher.forward(request, response);         
     
     
            }
     
            //response.sendRedirect("/visu/recherche.jsp");
     
            if (typeParameter != null) {
                response.setContentType("text/plain");
     
     
                if (typeParameter.equals("getBeneficiaires")) {
     
                    Extraitbeneficiaire Extract= new Extraitbeneficiaire();
                    response.getWriter().write(Extract.getfluxbeneficiaire(Integer.valueOf(request.getParameter("id")).intValue()));
     
                    } else if (typeParameter.equals("getSinistres")) {
     
                    Extraitsinistres Extract= new Extraitsinistres();
                    response.getWriter().write(Extract.getfluxsinistres(Integer.valueOf(request.getParameter("codesignataire")).intValue(), Integer.valueOf(request.getParameter("codebeneficiaire")).intValue(), request.getParameter("lettrecle"), request.getParameter("lettreclecomplt"), request.getParameter("datedebutsoins"), request.getParameter("datefinsoins"),request.getParameter("typedecompte")));
     
                } else if (typeParameter.equals("getDetaildossier")) {
     
                    Extraitdetaildossier Extract= new Extraitdetaildossier();
                    //789500, "20151113", "RA", "156804")
                    response.getWriter().write(Extract.getfluxdetaildossier(Integer.valueOf(request.getParameter("numsinistre")).intValue(), request.getParameter("codedossier"), request.getParameter("codestatut"), request.getParameter("codepersonne")));
                    //response.getWriter().write(Extract.getfluxdetaildossier(789500, "20151113", "RA", "156804"));
     
     
                }
            }
            response.getWriter().flush();
            response.getWriter().close();
     
        }
     
     
        protected void doPost(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
     
        }
     
     
    }
    ma jsp : afficheparametre.jsp sur le serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <body class="claro">
    <%=request.getAttribute("codepersonne") %> <!-- ==+> je le mettrai en hidden ensuite -->
    </body>
    </html>

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 553
    Points : 21 612
    Points
    21 612
    Par défaut
    Hello,

    il n'y a juste pas de protocole pour démarrer un navigateur sur une URL sans montrer absolument toutes les informations que le navigateur a reçues dans l'URL.

    URLConnection ne peut absolument pas parler au navigateur et ne te sera donc d'aucune utilité.

    Si on pouvait savoir en quoi c'est un problème de sécurité de voir les paramètres dans l'URL, on pourrait essayer de proposer des trucs.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Attention, utiliser un "codepersonne", c'est mal (à en juger par le nom) !!!
    C'est beaucoup trop simple et évident à hacker. En fait, il faudrait plutot utiliser une variable session. L'idée, c'est de générer un String aléatoire à chaque connexion qui reste actif pendant la session. Lorsque l'utilisateur navigue, tu balades la session (via l'url, un post ou ce que tu veux). Et c'est de la que tu recuperes l'id. Ca rend le hack plus difficile puisqu'il faut tomber sur le bon id pour usurper l'identité d'un autre utilisateur. Et si tu fais un lien entre l'IP du client et la session, tu commences à avoir une sécurité qui ressemble à quelque chose.
    Après, tu as le choix entre gérer ca à la main ou bien utiliser le framework pour gerer ca pour toi. Regardes du coté de la gestion des sessions pour avoir plus d'infos.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Drag & Drop : D'une application vers une appli java
    Par elfiestador dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 01/08/2007, 00h45
  2. Réponses: 25
    Dernier message: 07/07/2007, 21h36
  3. [VB6]déploiement d'une appli sur plusieurs postes
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/04/2006, 10h32
  4. Appli monoposte sous Access vers une appli Internet
    Par henryn dans le forum Access
    Réponses: 1
    Dernier message: 06/12/2005, 23h31
  5. Réponses: 1
    Dernier message: 23/08/2005, 14h07

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