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

Conception Web Discussion :

Comprendre le principe d'un CGI ?


Sujet :

Conception Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut Comprendre le principe d'un CGI ?
    Bonjour,

    Je voudrais savoir si j'ai bien "compris" le fonctionnement d'un cgi.
    En gros, il s'agit de permettre à un programme de s'exécuter à distance et de renvoyer une réponse sur le serveur auxquels on a demandé une page html?
    Le programme s'il peut être compris peut faire n'importe quoi?
    Je peux dire, par exemple si on a un programme écrit en python, il suffit d'avoir un interpréteur python installée sur la même machine que le serveur et celui ci s'exécutera. Ou alors, il faut que cet interpréteur soit absolument intégré au serveur web, dans ce cas cela marche comment?

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    Oulàlà, y a encore des gens qui s'intéresse au CGI ? .... pourquoi pas, ça reste de la culture générale

    En fait, au début de web, le concept du CGI (Common Gateway Interface) a été mis en place pour répondre à un besoin très simple : construire des pages web à la volé. Pour cela, n'importe quelle langage pouvait faire l'affaire, à partir du moment où il était capable d'écrire du contenu sur la sortie standard.

    Le principe est le suivant :
    - Dans le serveur HTTP, on configure le script CGI en indiquant son emplacement sur le serveur et en le mappant à une URL (exemple : http://monsite/cgi/monprogramme.cgi)
    - Dès que cette URL est appelé, le serveur HTTP soustraite le traitement de la requête au script CGI en lui fournissant les différents paramètre transmis par l'utilisateur.
    - Le script s'exécute .... fait ce qu'il a faire .... et génère sur sa sortie standard le code HTML à retourner en réponse
    - le serveur HTTP récupère le contenu de la sortie standard du CGI et la retransmet au client.

    Mais ce mode de fonctionnement restait assez contraignant: coûteux en ressource, et pouvait causer de gros problème de sécurité et aussi de maintenance ....

    Aujourd'hui, les langages ont considérablement évolués et de nouvelles technos sont apparues pour répondre de manière plus simple, plus fiable et mieux adapté à la problématique du "web dynamique" (php, asp, j2ee, ruby ......). Les CGI ne sont quasiment plus utilisés, mise à part dans des milieux très précis et pour répondre à un besoin très très spécifique.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut
    D'accord. C'est pour cela par exemple que je ne peux pas exécuter des scripts cgi écrit en python sur n'importe quel serveur. Mais par exemple qu'il existe Zope, et que Zope restreint les fonctions python qui peuvent être appelée.
    Donc en fait, on écrit une sorte de programme qui parse le code dans un langage donné, et ensuite si le serveur web décide d'intégrer ce programme, on pourra exécuter nos scripts restreints, c'est bien cela?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut
    Si ce que j'ai déduit précédemment est correct, je peux vous poser encore une question? Pourquoi si les cgi sont si dangereux à cause de la sécurité, il est possible grâce au applet java de pouvoir modifier ou créer de nouveaux fichier sur le client ? Avec les applets java, on peut tous ce permettre?

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    C'est pour cela par exemple que je ne peux pas exécuter des scripts cgi écrit en python sur n'importe quel serveur. Mais par exemple qu'il existe Zope, et que Zope restreint les fonctions python qui peuvent être appelée.
    Faux. Un programme python peut être executé en CGI. Si le serveur HTTP permet l'execution de CGI (c'est le cas de la majorité des serveurs http du marché) et que ce dernier a accès à l'interpréteur python, il n'y a aucun problème.
    Comment configurer ça ? Mes derniers CGI datent d'y a plus de 10 ans, je suis pas forcément la bonne personne pour te fournir cette info ... et pour y répondre, faudrait savoir sur quel serveur http tu tournes.

    En ce qui concerne Zope, je ne connaissais pas. Je suis allé jeter un coup d'oeil par curiosité. D'après ce que j'ai vu, le serveur http fourni avec zope est un serveur propriétaire assez light à priori. Il est fort possible qu'il n'autorise pas les cgi .... mais ne connaissant pas cette techno, je ne me permettrai d'être affirmatif.

    Pourquoi si les cgi sont si dangereux à cause de la sécurité, il est possible grâce au applet java de pouvoir modifier ou créer de nouveaux fichier sur le client ? Avec les applets java, on peut tous ce permettre?
    Pourquoi les CGI peuvent être si dangereux ? Ce petit article t'aidera à comprendre : http://www.gchagnon.fr/cours/cgi/cours8.html

    Concernant la comparaison que tu fais avec les applets, détrompes toi. La sécurité est relativement bien gérée dans le monde de java. Une applet est exécutée à l'intérieur d'une machine virtuel java, et cette JVM gère l'aspect sécurité. En fait, par défaut les applets n'ont pas l'autorisation d'accéder aux ressources locales. Pour faire une telle chose, il est nécessaire de signer l'applet par le biais d'un certificat de sécurité (et certaines ressources nécessitent la présence d'un fichier contenant la politique de sécurité). Lorsque qu'un internaute accède à une page qui s'apprête à exécuter une applet signée, un message très explicite est fourni à l'utilisateur, l'informant que l'applet est susceptible d'accéder aux ressources de sa machine. A charge de l'utilisateur d'accepter ou non son exécution .... à lui d'avoir confiance ou non .... mais au moins il est obligatoirement informé du risque.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut
    Avec Zope, c'est bien ce que je voulais dire. En fait, si jamais ton serveur ne t'autorise pas à exécuter des cgi parce qu'il les considère dangeureux par exemple, il peut quand même permettre d'utiliser Zope. Puisque Zope est un interpreteur de script restreint (pareil que pour les applets, il n'autorise pas à accéder au ressource locale).

    Pour les applets, ça marche comment? C'est la même jvm que l'on utilise pour faire tourner des programmes locales?
    Qu'elle est la différence sinon avec le fait que l'on puisse accéder aux ressource locale seulement si on a signé un certif...?
    Je veux dire, cela débloque des fonctions?

    En tout cas merci pour les infos, j'ai lu le problème avec les cgi. Je comprends un peu mieux.

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    Pour les applets, ça marche comment? C'est la même jvm que l'on utilise pour faire tourner des programmes locales?
    Bien sûr !

    Qu'elle est la différence sinon avec le fait que l'on puisse accéder aux ressource locale seulement si on a signé un certif...?
    Je veux dire, cela débloque des fonctions?
    Il n'y a pas de notion de bloquer ou débloquer des fonctions. Il s'agit d'un contrôle de sécurité récurrent fait au niveau de la JVM. Toutes ressources (locales ou réseaux) est soumis à autorisation. Lorsque qu'une application java (pas seulement les applets) cherche à accéder à un fichier du disque par exemple, la JVM contrôle systématiquement si l'utilisateur système exécutant dispose des droits suffisants pour effectuer cette opération. Si ce n'est pas le cas, une AccessControlException est levée.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut
    D'accord, merci je comprends mieux pourquoi java et la sécurité vont plutôt de paire.
    Du coup, je crois que j'ai une dernière question. Pourquoi "seulement" java est capable de lancer des applets? Pourquoi par exemple d'autres langages interprétés ne permettent pas la même chose?

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    Pourquoi "seulement" java est capable de lancer des applets?
    C'est faux! Et les applications Flash alors ? ce sont aussi des applets

    Pourquoi par exemple d'autres langages interprétés ne permettent pas la même chose?
    Là je ne suis pas apte à te répondre, désolé. C'est plus une question à poser au W3C

Discussions similaires

  1. Business Intelligence : Comprendre le principe
    Par Shyre dans le forum Contribuez
    Réponses: 0
    Dernier message: 05/12/2014, 16h09
  2. [Débutant-Code Igniter] Comprendre le principe du MVC !
    Par Cromwell dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/04/2011, 15h26
  3. [LG] Comprendre mieux le principe des pointeurs
    Par maind5or dans le forum Langage
    Réponses: 4
    Dernier message: 04/10/2005, 01h06
  4. [Kylix] [cgi] ne trouve pas libsqlmy.so.1 !
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 04/07/2002, 15h15

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