OVH Community, votre nouvel espace communautaire.

empêcher l'exécution d'un script CGI-BIN depuis l'extérieur


Nicolas_75
18/11/2006, 09h39
OK. C'est maintenant très clair. Merci beaucoup d'avoir pris le temps de me répondre.

Nicolas

Homer Jay
18/11/2006, 09h09
Citation Envoyé par Nicolas_75
Depuis mes pages HTML, j'appelle le script de la façon suivante :


Je souhaiterais éviter que n'importe quel internaute utilise ce script
Compris. Hélas, la réponse à ta question est «c'est impossible», puisque, dans tous les cas, c'est le client qui appelle le script CGI (quand tu mets l'appel dans un tag img, c'est le client qui doit aller chercher la page).

Donc le plus proche que tu pourrais faire, à mon avis, est de regarder, dans ton script, le referer: s'il est fourni et que ce n'est pas ton propre site, refuse la requête. Il est important de ne pas refuser la requête si referer est absent, car certain clients l'omettent.

La manière concrète de faire ça va dépendre du langage dans lequel ton script est écrit; mais ce qu'il faut savoir est que le serveur te fournit une variable d'environnement (HTTP_REFERER, je crois), qui dit où se trouvait le lien qui a provoqué la requête. La solution est imparfaite, car c'est une information fournie par le client dans sa requête.

(Il doit y avoir moyen de faire ça assez facilement avec des .htaccess: http://news.softpedia.com/news/Apach...de-37531.shtml)

Nicolas_75
18/11/2006, 08h57
Bonjour,

Merci pour ta réponse. J'ai peur de ne pas avoir complètement saisi la nuance entre les deux.

Pour être plus clair, le script est mimetex.cgi qui transforme une formule mathématique "x\to +\infty" en image représentant la formule ("x --> +oo", sous forme de belle image).
(EDIT) Le script est stocké dans le répertoire cgi-bin, situé au même niveau que www, sous droits 705.

Depuis mes pages HTML, j'appelle le script de la façon suivante :

ou


Tout marche bien.

(EDIT) En examinant le source de la page HTML, n'importe qui peut découvrir l'existence et la localisation de ce script.

Je souhaiterais éviter que n'importe quel internaute utilise ce script (et donc mon serveur) pour afficher des formules mathématiques sur son propre Browser, ou dans ses pages Web, par un :
_http://www.monsite.net/cgi-bin/mimetex.cgi?x\to%20+\infty

Aujourd'hui, malheureusement, c'est possible.

Merci encore,

Nicolas

Homer Jay
18/11/2006, 08h25
Citation Envoyé par Nicolas_75
Est-il possible d'empêcher cela, et de faire en sorte que ce script ne soit utilisable que depuis les pages générées sur mon serveur ?
Est-ce que tes autres pages web vont faire des requêtes vers le serveur web pour exécuter ce script CGI? Dans ce cas, un .htaccess te permettra de limiter les accès par numéro IP par exemple (Google ou les guides pour les détails).

Sinon, si tes autres pages exécutent directement ce script, il te suffit de le placer hors de l'espace servi (au-dessus ou à côté de /www et /cgi-bin, par exemple).

Nicolas_75
18/11/2006, 08h11
Bonjour,

J'ai installé un script CGI dans mon répertoire cgi-bin (droits 705, conformément au guide OVH).
Le script marche parfaitement.
Le problème réside dans le fait que tout le monde peut l'utiliser, en tapant :
http://www.monsite.net/cgi-bin/monscript.cgi?etc
Est-il possible d'empêcher cela, et de faire en sorte que ce script ne soit utilisable que depuis les pages générées sur mon serveur ?

Merci d'avance pour votre aide,

Nicolas