Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2011, 13h36   #1
Membre éprouvé
 
Homme romain escudier
Développeur informatique
Inscription : juin 2011
Messages : 300
Détails du profil
Informations personnelles :
Nom : Homme romain escudier
Âge : 22
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : juin 2011
Messages : 300
Points : 471
Points : 471
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?
__________________
Pas de solution, pas de probleme

Une réponse utile (ou +1) le pouce vert
Une réponse à votre question

skeud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 14h51   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
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 :
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 *" ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 15h10   #3
Membre éprouvé
 
Homme romain escudier
Développeur informatique
Inscription : juin 2011
Messages : 300
Détails du profil
Informations personnelles :
Nom : Homme romain escudier
Âge : 22
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : juin 2011
Messages : 300
Points : 471
Points : 471
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?
__________________
Pas de solution, pas de probleme

Une réponse utile (ou +1) le pouce vert
Une réponse à votre question

skeud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 15h14   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
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 ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/07/2011, 15h31   #5
Membre éprouvé
 
Homme romain escudier
Développeur informatique
Inscription : juin 2011
Messages : 300
Détails du profil
Informations personnelles :
Nom : Homme romain escudier
Âge : 22
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : juin 2011
Messages : 300
Points : 471
Points : 471
Ok, donc pas de doute, la fonction Exec() est a bannir de nos codes source?
__________________
Pas de solution, pas de probleme

Une réponse utile (ou +1) le pouce vert
Une réponse à votre question

skeud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 15h45   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
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é.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 15h47   #7
Membre éprouvé
 
Homme romain escudier
Développeur informatique
Inscription : juin 2011
Messages : 300
Détails du profil
Informations personnelles :
Nom : Homme romain escudier
Âge : 22
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : juin 2011
Messages : 300
Points : 471
Points : 471
Ok merci bien pour ces informations
__________________
Pas de solution, pas de probleme

Une réponse utile (ou +1) le pouce vert
Une réponse à votre question

skeud est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h14.


 
 
 
 
Partenaires

Hébergement Web