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

JavaScript Discussion :

Masquer code Javascript


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Masquer code Javascript
    Bonjour,

    J'ai créé un site affichant des adresses sur une carte google map apiv3.

    Il y a plus de 2000 adresses qui s'affichent sur la même carte, ce qui fait que dans le code source, on peut voir les 2000 latitudes et longitudes ainsi que le nom car je dois le mettre dans une info bulle pour chaque adresse.

    Mais du coup, il est très facile de tout récupérer en une fois, et j'éviterais bien ça:-).

    Les adresses viennent d'une base de données, et affichées par PHP dans le script javascript
    Connaissez-vous un moyen de masquer cette partie du code source?

    Merci pour votre aide !!

    Marc-Etienne

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Bonjour, masquer le code javascript est impossible car le navigateur en a besoin.

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Oui hélas, c'est ce que j'avais vu.
    Et l'api v3 ne peut pas afficher des marqueurs autrement qu'en javascript ?

    Merci!

    ME

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par marcetienne Voir le message
    ...Les adresses viennent d'une base de données, et affichées par PHP dans le script javascript...
    Au lieu de faire d'abord appel à PHP pour écrire en clair dans le code JavaScript,
    je pense qu'il est possible de faire :
    -> une fonction JavaScript/AJAX
    -> qui appelle un fichier PHP externe (via AJAX , donc) qui va créer un array
    -> qui renvoie (json_encode()) un array à la fonction JavaScript
    -> qui traite les données contenues dans l'array json (et non écrites en clair dans le code)

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Bonjour, et merci pour votre aide.
    Oui ça me semble une très bonne idée!
    Pour la partie AJAX ok, mais je ne sais pas trop manipuler le JSON.
    Je vais regarder comment on l'utilise, et je testerai cette solution

    Mais le fichier Json n'est - il pas accessible dans le code source une fois généré?

    merci !

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Janvier 2012
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 325
    Points : 888
    Points
    888
    Par défaut
    A partir du moment où tu envois des données au client, quelque soit la méthode, il est impossible de l’empêcher de les copier.

    Le seul moyen d’empêcher la copie de données, de code ou de media c'est de ne pas les envoyer au client et de les utiliser uniquement côté serveur.

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    oui, et malheureusement on ne peut pas utiliser api google sans javascript, me trompe-je ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par marcetienne Voir le message
    Les adresses viennent d'une base de données, et affichées par PHP dans le script javascript
    Peux-tu montrer le code PHP qui génère cette partie du JavaScript ?

    Si, comme je le pense, c'est un array JavaScript qui est créé, il y a moyen de le créer via AJAX SANS qu'il soit affiché "en clair" dans le code source.

  9. #9
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    une autre question qui se pose est : est ce que tu as besoin de toutes les fonctionnalités de l'API car par exemple le marqueur une fois la map zoomée te renseignera plus que la lecture de la longitude/latitude.

    Tu pourrais également passer par des images static, il sera plus difficile de retrouver les détails.

    Mais la meilleur façon pour que ces détails n'apparaissent pas c'est de ne pas les mettre sur la toile .

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Bonsoir !

    Oui j'ai bien besoin de ces marqueurs, car c'est la base du système.
    J'ai conscience que de toute façon les adresses peuvent être lues en zoomant sur les marqueurs.
    Mais ce que je voudrais, c'est éviter que les adresses puissent être récupérées d'un seul script, avec des expressions régulières par exemple.

    voici le code pour générer les marqueurs :
    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
    <?php
    while($donnees=$req->fetch())
    {
    ?>
        latitude="<?php echo $donnees['lat'] ?>";
        longitude="<?php echo $donnees['lng'] ?>";
        address = new google.maps.LatLng(latitude,longitude);
        var marker<?php echo $i ?> = new google.maps.Marker({
        position : address,
        map      : map,
        title    : "<?php echo $donnees['nom'] ?>",
          });
    <?php
    }
    ?>
    Merci pour ton aide et le temps que tu me consacres ! :-)

  11. #11
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par marcetienne Voir le message
    J'ai conscience que de toute façon les adresses peuvent être lues en zoomant sur les marqueurs.
    Mais ce que je voudrais, c'est éviter que les adresses puissent être récupérées d'un seul script, avec des expressions régulières par exemple.
    Un script peut "zoomer sur les marqueurs" sans problème. Ils sont représentés par des objets JavaScript qui ne sont pas compliqués à récupérer tous en une fois avec un seul programme.
    Il te faudrait un système qui génère une vraie image unique au lieu d'une vue composite de plusieurs images. Mais, l'API de Google ne t'en donnera pas les moyens.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,



    1/ On crée un array PHP :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    // connexion à la BDD,...
    // requete......
    // création de l'array PHP
    $i = 0;
    while($donnees=$req->fetch())
    {
    	$coordonnees[$i]['lat'] = $donnees['lat'];
    	$coordonnees[$i]['lng'] = $donnees['lng'];
    	$coordonnees[$i]['nom'] = $donnees['nom'];
    	$i++;
    }
    ?>
    2/ On l'encode en json,
    Code mixte : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script>
      coordonnees = <?php echo json_encode($coordonnees); ?>;
    </script>
    3/ puis on construit les points :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for(var i=0; i<coordonnees.length; i++)
    {
        latitude = coordonnees.i.lat;
        longitude = coordonnees.i.lng;
        address = new google.maps.LatLng(latitude,longitude);
        var marker[i] = new google.maps.Marker({ 
            position : address,
            map      : map,
            title    : coordonnees.i.nom,
          });
    }
    N.B. je ne suis pas sûr de la syntaxe (notamment pour marker[ i ]), ni du bon fonctionnement du code JavaScript, mais il me semble que c'est réalisable.
    Dernière modification par Invité ; 17/09/2015 à 16h31.

  13. #13
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Mais... C'est dans les sources et très facile à récupérer avec un script -_-°.
    En fait je ne vois pas la différence avec la question de départ.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Invité
    Invité(e)
    Par défaut
    @thelvin Exact...
    J'avais lu le tuto mais pas testé...

    [EDIT] et via AJAX ? je persiste et signe... encore...
    (comme je l'avais suggéré au départ)

    Fichier PHP qui sera appelé par Ajax (via $.getJSON) :
    coordonnees-ajax.php
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    // connexion à la BDD,...
    // requete......
    // création de l'array PHP
    $i = 0;
    while($donnees=$req->fetch())
    {
    	$coordonnees[$i]['lat'] = $donnees['lat'];
    	$coordonnees[$i]['lng'] = $donnees['lng'];
    	$coordonnees[$i]['nom'] = $donnees['nom'];
    	$i++;
    }
    // on encode en json
    echo json_encode($coordonnees);
    Le JavaScript (ici jQuery) :
    Code javascript : 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
    <!-- Script initialisation jquery -->
    	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script>
    $(function(){
    	$.getJSON( './coordonnees-ajax.php', function( jsondata ) {
    		initMap(jsondata); // on récupère toutes les coordonnées dans un objet json, SANS que ces données soient visibles dans le code !
    	} );
    });
    	function initMap(coordonnees)
    	{
    		for(var i=0; i<coordonnees.length; i++)
    		{
    			latitude = coordonnees[i].lat;
    			longitude = coordonnees[i].lng;
    			address = new google.maps.LatLng( latitude, longitude );
    			var marker[i] = new google.maps.Marker({ 
    				position : address,
    				map      : map,
    				title    : coordonnees[i].nom,
    			  });
    		}
    		// ici, ajouter la suite du code...
    		// ...
    	}
     
    </script>
    Cette fois, les données "sensibles" ne s'affichent pas dans le code source de la page.

    N.B. Voici mon test (avec d'autres données issue d'une BdD).
    Dernière modification par Invité ; 17/09/2015 à 17h13.

  15. #15
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Elles sont toujours aussi facilement récupérable, à preuve
    - http://www.jerome-reaux-creations.fr.../test-ajax.php, référence que l'on trouve facilement en regardant le code source.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Pour ça, on peut protéger le fichier PHP pour qu'on ne puisse pas l'afficher directement.

  17. #17
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    via onglet NetWork -> response on peut lire ceci
    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
    [{
      "texte_question": "Comment se nomme ce scientifique ?",
      "choix_question": "1,2,3;2"
    }, {
      "texte_question": "Quel est le pr\u00e9nom cette personne?",
      "choix_question": "4,5,6;5"
    }, {
      "texte_question": "Qui est ce sportif ?",
      "choix_question": "7,8,9;9"
    }, {
      "texte_question": "Quel est ce jeu ?",
      "choix_question": "10,11,12;10"
    }, {
      "texte_question": "Quelle est cette plante ?",
      "choix_question": "13,14,15;14"
    }, {
      "texte_question": "Quel est cet animal ?",
      "choix_question": "16,17,18;16"
    }, {
      "texte_question": "7. Quel est cet appareil ?",
      "choix_question": "19,20,21;21"
    }]

  18. #18
    Invité
    Invité(e)
    Par défaut
    OK.
    Pas mieux.

    N.B. Au moins, elles ne sont pas visibles DANS le code source de la page.
    Ce qui répond déjà en partie à la demande.
    (on se rattrape comme on peut !)


    [EDIT] A moins de :
    • crypter les données (fonction PHP)
    • et de les décrypter à la volée (fonction JavaScript)...

    Mais là, on change de sujet...
    Dernière modification par Invité ; 17/09/2015 à 19h43.

  19. #19
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Il existe une alternative qui rend déjà beaucoup plus délicat la récupération, j'ai nommé les Fusion Tables Layer, pas regardé de près mais...

    About Fusion Tables

  20. #20
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Bonjour à vous !

    Je m'excuse de ne pas répondre ces jours ci, je suis en déplacement et c'est compliqué de me connecter :-)

    Je vous remercie pour vos réponses nombreuses, j'avoue que je sèche un peu sur ce problème...
    Je rentre d'ici deux jours, et je pourrais tester vos propositions, même si d'après ce que j'ai compris ça semble compliqué de résoudre l'affaire !

    A +

    Marc-Etienne

Discussions similaires

  1. masquer le code javascript
    Par madstrix dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/03/2010, 21h44
  2. Fermeture fenetre crée par code javascript
    Par Kerod dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 27/02/2010, 00h04
  3. Appel fonction php dans code javascript
    Par licorne dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/03/2008, 10h55
  4. pas moyen de trouver l'erreur de ce code Javascript !!!
    Par NATHW dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/11/2004, 21h47
  5. Deboggage de code Javascript...
    Par michel baily dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/11/2004, 16h32

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