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 PHP Discussion :

Include distant


Sujet :

Langage PHP

  1. #21
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2010
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2010
    Messages : 77
    Points : 92
    Points
    92
    Par défaut autres solution
    ok autres solutions alternatives :

    Alors dans ce cas pourquoi ne pas passer par un fichier temporaire generé en php (qui genere le script js a partir des parametres) et inclus ensuite avec un file_get_contents ? nan?

  2. #22
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Car c'est beaucoup plus lourd !
    Mon fichier JS ne bouge jamais ! Il n'y a aucune modif à faire... Et encore une fois, si je généré le fichier JS en mettant les paramètres souhaitez dedans, qu'est-ce qui empêcherais encore une fois quelqu'un de faire le même script en modifiants ces paramètres ?

    Comme je sens que c'est assez compliquer et que c'est dure à expliquer, voilà mon fichier JS :
    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
     
    function gup(name){
    	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    	var regexS = "[\\?&]"+name+"=([^&#]*)";
    	var regex = new RegExp( regexS );
    	var results = regex.exec( window.location.href );
    	if( results == null )
    		return "";
    	else
    		return results[1];
    }
     
    var param1 = gup('param1');
    var param2 = gup('param2');
    var param3 = gup('param3');
    Donc si en PHP je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    include "http://site.com/fichier.js?param1=truc&param2=bidule&param3=chose";
    cela ne permet pas au visiteur de voir quels sont les paramètres...

    Seulement comme l'include ne marche pas j'ai essayé le fread mais sans résultat puisque ça ne marche pas...
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  3. #23
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2010
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2010
    Messages : 77
    Points : 92
    Points
    92
    Par défaut autre solution
    alors pourquoi ne pas faire ce code js (la fonction gup) en fonction php ?? recupere le résultat et place dans variable js : var param1, etc... le reultat de la fonction php .. ou toujours pas bon??

  4. #24
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Mais non...

    Regarde, si je fais une fonction php, voilà ce que cela va générer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var param1 = 'truc';
    var param2 = 'machin';
    var param3 = 'chose';
    Qu'est-ce qui empêche quelqu'un de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var param1 = 'tralala';
    var param2 = 'youhou';
    var param3 = 'pirate';
    ???

    Alors que là, comment pourrait-il le modifier ???
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  5. #25
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2010
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2010
    Messages : 77
    Points : 92
    Points
    92
    Par défaut
    on ne pourra pas inserer de parametres a notre fonction php il ne pourront pas non plus voir les parametres passé en parametres a cette fonction....!!! et le retour de resultat que tu vas inserer dynamiquement dans tes variable javascript seront toujours visible !!! mais ça c normal !! Dans ce cas c'est un autre probleme change de technologie car tous ce qui dit js dit accessibilité client de toute façon....

  6. #26
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Mais le pb n'est pas la, j'ai ma solution, je veux juste savoir pourquoi le php merde...
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  7. #27
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2010
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2010
    Messages : 77
    Points : 92
    Points
    92
    Par défaut
    quand tu parle de php qui merde tu parle de quoi car il n'y en a pas dans ton code... si tu parle de ça :
    include "http://site.com/fichier.php?truc=machin&bidule=chose";

    alors sache que cette ligne ne fais qu'inclure les ligne de code contenu dans ce fichier !! elle ne l'exécute pas ce fichier on peut pas lui passer des paramètres pour inclure le résultat qui aurait pu être généré par ce code avec ces paramètres......

    Ou alors tu a mal expliquer le pb ou je ne comprend pas désolé !!

  8. #28
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par FotoXe33 Voir le message
    Après test, cela ne marche pas. Voilà le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <script>
    <?php
    $handle = fopen("http://le-site.com/pt33.js?truc=machin&bidule=chose", "rb");
    $contents = stream_get_contents($handle);
    fclose($handle);
    ?>
    </script>
    Et le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <script>
    </script>
    Voilà le PB et je sais pour l'include puisqu'on me là déjà signifier (cf sabotage)
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  9. #29
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2010
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2010
    Messages : 77
    Points : 92
    Points
    92

  10. #30
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2010
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2010
    Messages : 77
    Points : 92
    Points
    92
    Par défaut
    ok mais c pareil pour le fopen... il n'exécute pas le code il ouvre juste ton fichier dans une variable . passer des paramètres est faux aux fichiers ne sert a rien !! cela ne marche pas comme ça !!!

    génère un fichier temporaire et inclue le ensuite tu le supprime (c pas si lourd que ça!!

  11. #31
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par fredd_75 Voir le message
    ok mais c pareil pour le fopen... il n'exécute pas le code il ouvre juste ton fichier dans une variable . passer des paramètres est faux aux fichiers ne sert a rien !! cela ne marche pas comme ça !!!

    génère un fichier temporaire et inclue le ensuite tu le supprime (c pas si lourd que ça!!
    je veux pas qu'il exécute le code ! il ne le pourrais pas en plus puisque c'est du js (donc côté client !!!)
    Je veux juste que le php affiche le code js dans la page, ensuite c'est au client de l'exécuter...
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  12. #32
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Bon j'ai réglé le pb, désolé, j'avais oublié qu'il fallait afficher le contenue après =_= Comme j'étais partis dans "include", je me suis dis que stream_get_content ferais de même...

    Enfin bref, merci à tous pour votre aide...
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  13. #33
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script>
    <?php
    $handle = fopen("http://le-site.com/pt33.js?truc=machin&bidule=chose", "rb");
    $contents = stream_get_contents($handle);
    fclose($handle);
    // On génère le code JS obtenu
    echo $contents;
    ?>
    </script>
    Il manque un echo.

    Mais il me semble qu'on t'a déjà expliqué qu'il est totalement inutile de "passer" des paramètres , car le code ne sera pas interprété, il sera juste récupéré, et uniquement ce qu'il y aura dans le fichier.


    S'il y a des variable JS dans ce fichier inclus (par exemple) qui demande à être initialisé, alors essai comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <script>
    var truc = "machin";
    var bidule = "chose";
    <?php
    $handle = fopen("http://le-site.com/pt33.js", "rb");
    $contents = stream_get_contents($handle);
    fclose($handle);
    // On génère le code JS obtenu
    echo $contents;
    ?>
    </script>
    Mais écupérer un fichier distant, qui est un manque de sécurité, est finalement contradictoire du faite que c'est l'objectif visé.
    Enfin, il me semble.

    Le plus simple est de l'importer dans la page HTML, qui est plus simple et plus sécurisé.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <script type="text/javascript">
    var truc = "<?php echo $var_php; ?>"; // Avec un contenu venant de Php
    var bidule = "chose";
    </script>
    <script type="text/javascript" src="http://www.site.com/fichier.js"></script>
    Ici, aucun paramètre de transmis, et pas de fichier distant non plus.
    Ce ne serait pas plutôt quelque chose comme ci-dessus que tu rechercherais à faire ?
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  14. #34
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script>
    <?php
    $handle = fopen("http://le-site.com/pt33.js?truc=machin&bidule=chose", "rb");
    $contents = stream_get_contents($handle);
    fclose($handle);
    // On génère le code JS obtenu
    echo $contents;
    ?>
    </script>
    Il manque un echo.
    En effet, je ne l'ai vu qu'après coup, merci

    Citation Envoyé par RunCodePhp Voir le message
    Mais il me semble qu'on t'a déjà expliqué qu'il est totalement inutile de "passer" des paramètres , car le code ne sera pas interprété, il sera juste récupéré, et uniquement ce qu'il y aura dans le fichier.
    Mais comment voulez-vous qu'un code JS soit interprété par du PHP Oo PHP c'est serveur, JS client, que voulez-vous dire par interprété ? C'est le client qui interprète le JS pas le serveur !!!

    Citation Envoyé par RunCodePhp Voir le message

    S'il y a des variable JS dans ce fichier inclus (par exemple) qui demande à être initialisé, alors essai comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <script>
    var truc = "machin";
    var bidule = "chose";
    <?php
    $handle = fopen("http://le-site.com/pt33.js", "rb");
    $contents = stream_get_contents($handle);
    fclose($handle);
    // On génère le code JS obtenu
    echo $contents;
    ?>
    </script>
    Mais écupérer un fichier distant, qui est un manque de sécurité, est finalement contradictoire du faite que c'est l'objectif visé.
    Enfin, il me semble.
    Faut. Enfin pas totalement. Si on fait comme tu dis à savoir var tuc = "machin"; n'importe qui pourras le modifier !!!
    Et quel est le pb d'inclure un fichier distant puisque de toute façon comme cela est fait en php c'est transparent pour le client ?
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  15. #35
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Faut. Enfin pas totalement. Si on fait comme tu dis à savoir var tuc = "machin"; n'importe qui pourras le modifier !!!
    Et bien non justement, ça serait grave sinon.
    Le code que je t'ai mis (donc le var = "machin") se trouve dans ton code, la page, ton fichier, et à part avoir les droits suffisants de le modifier (via FTP par exemple), personne d'autre ne pourra le faire.



    Mais comment voulez-vous qu'un code JS soit interprété par du PHP Oo PHP c'est serveur, JS client, que voulez-vous dire par interprété ? C'est le client qui interprète le JS pas le serveur !!!
    Oui, ça je sais.
    Toujours pour ce même code que je t'ai mis : var = "machin"; c'est du javascript non ?
    Il pourra alors interprété, exploité par ton code JS que tu importe,par exemple.
    De plus, rien empêche d'initialiser une variable JS par contenu généré par Php, c'est le cas que je t'es mis.

    Autre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $coucou = "Coucou, salut :-)";
    ?>
    <script>
    alert("<?php echo $coucou; ?>");
    </script>
    Une boite d'alerte JS affichera Coucou, salut :-).
    En somme, on génère du Javacript en Php, au même titre qu'on génère du HTML, du Css.
    Tout ceci sera après interprété par le navigateur.




    Et quel est le pb d'inclure un fichier distant puisque de toute façon comme cela est fait en php c'est transparent pour le client ?
    Pour ma part (donc à titre personnel), c'est un énorme manque de sécurité de permettre qu'un site distant puisse inclure des fichiers ce trouvant sur son espace d'hébergement.
    Si sur le site autorisant l'import distant contient des fichiers php genre config (hote Bdd, username Bdd, mot de passe Bdd, etc ... ce qui est quasi certain d'ailleurs) et bien n'importe qu'elle autre développeur pourra l'inclure dans son code, et donc obtenir son contenu.
    Autant dire qu'on pourra obtenir tout ce qu'on veut sur le site en question.
    Je ne sais si tu t'en rend compte, mais ça me semble hyper "passoire" comme type d'autorisation.

    Bref, les include() doivent s'arrêter à ce que seul Php sur le serveur soit autorisé à le faire, tout le reste, donc distant, ne pourra se faire que via HTTP, c'est le minimum je dirais.


    En tout cas, (et ne le prends pas mal surtout), la solution que tu as adopté ne renforce strictement rien en terme de sécurité par rapport à un import classique.
    En tout cas, je ne vois pas à quel niveau ça améliore.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  16. #36
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Et bien non justement, ça serait grave sinon.
    Le code que je t'ai mis (donc le var = "machin") se trouve dans ton code, la page, ton fichier, et à part avoir les droits suffisants de le modifier (via FTP par exemple), personne d'autre ne pourra le faire.
    Mais biensûre que non !
    Qu'est-ce qui t'empêche de faire une page, ou tu fais un script comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <script>
    var truc = "machin";
    </script>
    <script src="http://le-site.com/fichier.js"></script>
    ?
    Et donc le fichier "fichier?js" auras la variablr truc qui vaudras machin ! Donc gros pb de sécurité...

    Et bien sûre que si ça augmente la sécu puisque l'utilisateur même en regardant le code source ne sauras pas que tel ou tel var aura à l'intérieur...
    Donc niveau de sécu en plus
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  17. #37
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Et bien sûre que si ça augmente la sécu puisque l'utilisateur même en regardant le code source ne sauras pas que tel ou tel var aura à l'intérieur...
    Donc niveau de sécu en plus
    je réagissais tout particulièrement du terme "modifié" que tu disais.
    Ce code ne peu pas être modifié, mais vu, oui.
    Donc oui, sur le fond, mais dans la pratique non, car le code n'est pas interprété, donc les paramètres que tu tente de transmettre ne servent à rien.

    Du coup, c'est un peu retour à la case départ.
    Enfin, sauf erreur.
    Le seul moyen de rendre dynamique ce code javascript, c'est d'intégrer les variables JS dans le code source de ta page.

    Aussi, il ne faut pas perdre de vu que lorsque que tu auras fait le echo (le petit oubli en question) du contenu inclus, ce code sera visible dans la page HTML, au même titre que tous les autres codes HTML.
    Du coup, Je ne vois ou est le gain coté sécurité.


    Mais même en admettant que je me trompe, l'aspect sécurité que tu pense obtenir me semble démesuré par rapport à celui provoqué et (fortement) dégradé en activant allow_url_fopen.


    Et puis pour finir, un code Javascript c'est du coté client, il sera donc toujours visible quoi qu'on fasse.
    Donc si on manipule des données sensibles, il vaut mieux le faire autrement que via du JS.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [PHP 5.1] appel fonction sur include distant
    Par luccypher dans le forum Langage
    Réponses: 4
    Dernier message: 11/10/2010, 19h15
  2. [Système] Include fichier distant
    Par ChRom dans le forum Langage
    Réponses: 2
    Dernier message: 12/12/2007, 17h02
  3. Include de nouvelles classes distantes dans un jar
    Par klem86 dans le forum Langage
    Réponses: 4
    Dernier message: 09/01/2007, 12h35
  4. [EasyPHP] probleme include d'serveur distant au serveur local EasyPHP?
    Par jeff1985 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 04/04/2006, 11h14
  5. include fichier distant
    Par noarno dans le forum ASP
    Réponses: 2
    Dernier message: 05/04/2004, 16h47

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