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 :

Fonction Exec() interdite?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut Fonction Exec() interdite?
    Bonjour a tout le monde, une petite question me taraude l'esprit:

    Pourquoi la fonction Exec() est-elle critiquée par beaucoup de personnes?

    J'ai lu de nombreux post, et souvent il est conseillé de ne pas utiliser Exec, pourquoi?

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    En raison de sa dangerosité évidente. exec() permet d'executer des commandes et de lancer des programmes. Du coup la moindre faille d'injection dans le script PHP permet à un utilisateur malicieux d'executer des commandes en tant que x.apache sur la plateforme, lancer des CGI ou des scripts shell par exemple ou tout simplement créer et exécuter des scripts malicieux. Tout est permi.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec("/var/www/unprogramme -b {$_POST['c']}");
    Qu'est ce qu'il se passerait si quelqu'un mettait $_POST['c'] à "test; cd /var/www/; rm -rfv *" ?

  3. #3
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Hormis pour cette raison, je ne vois pas pourquoi on ne devrait pas l'utiliser, si elle a été créer, c'est qu'il y a des cas ou on ne peut pas faire autrement que de l'utiliser?

    Le souci c'est que je ne vois pas vraiment de cadre d'utilisation sans passer des variable dedans, ou de cas dans lesquels la fonction exec() est indispensable?

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    D'un point de vue technique, cette fonction est bâtarde. Tout ce que tu fais dans un exec() tu dois être techniquement capable de le faire en PHP - sauf cas particulier, c'est pour ça qu'elle existe. De plus, tout ce qui va se passer dans exec() échappe au contrôle de PHP, ce qui est potentiellement dangereux car tu ne sais pas ce qui s'est réellement déroulé. Par exemple: un script fait un traitement et renvoie 1 en cas d'erreur et 0 en cas de succès. Bien. Mais comment va-t'on savoir quelle erreur est survenue ? Ou pire, le programme s'est terminé normalement mais une erreur masquée est survenue, comment savoir ?

  5. #5
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Ok, donc pas de doute, la fonction Exec() est a bannir de nos codes source?

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Non car parfois tu ne peux vraiment pas faire autrement.

    Mais la plupart du temps c'est vrai elle est utilisée à tord. Je me souviens d'un script shell qui était appelé par exec pour seul motif que "shell est -soi disant- plus rapide que PHP"... J'ai refais l'algorithme du script shell en PHP, je l'ai optimisé et il à tourné 2x plus vite, le contrôle en plus.

    Mais par exemple dans un autre cas, je devais démarrer un daemon écrit en C, là j'avais pas tellement le choix.

    Il ne faut donc pas la bannir mais l'utiliser avec parcimonie. Ah et puis un détail, la plupart des hébergeurs interdisent purement et simplement l'usage de cette fonction dans php.ini pour des raisons de sécurité.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système] Probleme de PATH avec la fonction exec
    Par Sylvain71 dans le forum Langage
    Réponses: 11
    Dernier message: 16/07/2006, 17h04
  2. [Système] Fonction exec dans un lien et synthaxe
    Par mLk92 dans le forum Langage
    Réponses: 6
    Dernier message: 13/07/2006, 11h45
  3. [Système] problème avec la fonction exec
    Par SegmentationFault dans le forum Langage
    Réponses: 1
    Dernier message: 30/06/2006, 17h59
  4. [Système] Problème avec la fonction exec()
    Par ben_harper dans le forum Langage
    Réponses: 13
    Dernier message: 28/06/2006, 11h32
  5. [VISUAL 6] Fonction exec
    Par Nelmo dans le forum MFC
    Réponses: 2
    Dernier message: 04/06/2006, 23h01

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