J'ai besoin d'un formulaire qui permet de passer une commande complète pour
imagemagick. Cette commande est récupérée par un script php qui le passe au
système via la fonction exec().
Donc j'ai une sorte de:
exec($_POST['command']);
JE SAIS QUE C'EST MAL !
Je vérifie déjà que le 1er mot de la commande issue du formulaire est bien
le nom d'un des binaires de imagemagick et je lui rajoute le chemin absolu
qui va bien.
Mais comment m'assurer que la commande passée est juste une commande
imagemagick et qu'il n'y a pas de pipe ou autre synthaxe qui permettrait de
passer d'autres commandes ?
Quels sont les opérateurs (genre | ) qui permetteraient d'enchainer d'autres
commandes ?
Quelles sont les synthaxes qui permetteraient d'enchainer d'autres commandes
?
Bref comment parser la commande issue du formulaire en étant sûr de ne rien
oublier ?
Ou alors, existe-t-il une commande particulière qui ne limiterait
l'exécution à la 1ère commande issue du formulaire ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
FAb
"seb" writes:
Salut,
J'ai besoin d'un formulaire qui permet de passer une commande complète pour imagemagick. Cette commande est récupérée par un script php qui le passe au système via la fonction exec().
Donc j'ai une sorte de: exec($_POST['command']);
JE SAIS QUE C'EST MAL !
très mal
Je vérifie déjà que le 1er mot de la commande issue du formulaire est bien le nom d'un des binaires de imagemagick et je lui rajoute le chemin absolu qui va bien.
Imagemagick c'est très lourd en temps cpu. La lib GD ne suffit-elle pas ?
Mais comment m'assurer que la commande passée est juste une commande imagemagick et qu'il n'y a pas de pipe ou autre synthaxe qui permettrait de passer d'autres commandes ?
filtrer.
Quels sont les opérateurs (genre | ) qui permetteraient d'enchainer d'autres commandes ? Quelles sont les synthaxes qui permetteraient d'enchainer d'autres commandes ?
`cmd` $(cmd) cmd1 & cmd2 cmd1 ; cmd2
Bref comment parser la commande issue du formulaire en étant sûr de ne rien oublier ?
Hmmm c'est pas gagné !! Tu veux vraiment coder un wrapper pour imagemagick ?
Ou alors, existe-t-il une commande particulière qui ne limiterait l'exécution à la 1ère commande issue du formulaire ?
Si tu veux vraiment sécuriser l'appel à ImageMagick à part paramétrer fortement l'appel et filtrer ces paramètres, je ne suis pas sûr.
FAb
"seb" <seb34@hotmail.com> writes:
Salut,
J'ai besoin d'un formulaire qui permet de passer une commande complète pour
imagemagick. Cette commande est récupérée par un script php qui le passe au
système via la fonction exec().
Donc j'ai une sorte de:
exec($_POST['command']);
JE SAIS QUE C'EST MAL !
très mal
Je vérifie déjà que le 1er mot de la commande issue du formulaire est bien
le nom d'un des binaires de imagemagick et je lui rajoute le chemin absolu
qui va bien.
Imagemagick c'est très lourd en temps cpu. La lib GD ne suffit-elle pas ?
Mais comment m'assurer que la commande passée est juste une commande
imagemagick et qu'il n'y a pas de pipe ou autre synthaxe qui permettrait de
passer d'autres commandes ?
filtrer.
Quels sont les opérateurs (genre | ) qui permetteraient d'enchainer d'autres
commandes ?
Quelles sont les synthaxes qui permetteraient d'enchainer d'autres commandes
?
`cmd`
$(cmd)
cmd1 & cmd2
cmd1 ; cmd2
Bref comment parser la commande issue du formulaire en étant sûr de ne rien
oublier ?
Hmmm c'est pas gagné !! Tu veux vraiment coder un wrapper pour imagemagick ?
Ou alors, existe-t-il une commande particulière qui ne limiterait
l'exécution à la 1ère commande issue du formulaire ?
Si tu veux vraiment sécuriser l'appel à ImageMagick à part paramétrer fortement
l'appel et filtrer ces paramètres, je ne suis pas sûr.
J'ai besoin d'un formulaire qui permet de passer une commande complète pour imagemagick. Cette commande est récupérée par un script php qui le passe au système via la fonction exec().
Donc j'ai une sorte de: exec($_POST['command']);
JE SAIS QUE C'EST MAL !
très mal
Je vérifie déjà que le 1er mot de la commande issue du formulaire est bien le nom d'un des binaires de imagemagick et je lui rajoute le chemin absolu qui va bien.
Imagemagick c'est très lourd en temps cpu. La lib GD ne suffit-elle pas ?
Mais comment m'assurer que la commande passée est juste une commande imagemagick et qu'il n'y a pas de pipe ou autre synthaxe qui permettrait de passer d'autres commandes ?
filtrer.
Quels sont les opérateurs (genre | ) qui permetteraient d'enchainer d'autres commandes ? Quelles sont les synthaxes qui permetteraient d'enchainer d'autres commandes ?
`cmd` $(cmd) cmd1 & cmd2 cmd1 ; cmd2
Bref comment parser la commande issue du formulaire en étant sûr de ne rien oublier ?
Hmmm c'est pas gagné !! Tu veux vraiment coder un wrapper pour imagemagick ?
Ou alors, existe-t-il une commande particulière qui ne limiterait l'exécution à la 1ère commande issue du formulaire ?
Si tu veux vraiment sécuriser l'appel à ImageMagick à part paramétrer fortement l'appel et filtrer ces paramètres, je ne suis pas sûr.
FAb
cedric
seb wrote:
exec($_POST['command']);
C'est quoi l'URL ? ~:-)
Le mieux est encore de ne pas exécuter de shell, en utilisant la fonction php pcntl_exec plutot qu'exec. Inconvénient, c'est qu'il faut un PHP récent ( >= 4.2.0 )
Sinon, s'il faut absolument utiliser exec, il y a la fonction escapeshellcmd. Je ne sais pas si c'est fiable.
seb wrote:
exec($_POST['command']);
C'est quoi l'URL ? ~:-)
Le mieux est encore de ne pas exécuter de shell, en utilisant la
fonction php pcntl_exec plutot qu'exec. Inconvénient, c'est qu'il faut
un PHP récent ( >= 4.2.0 )
Sinon, s'il faut absolument utiliser exec, il y a la fonction
escapeshellcmd. Je ne sais pas si c'est fiable.
Le mieux est encore de ne pas exécuter de shell, en utilisant la fonction php pcntl_exec plutot qu'exec. Inconvénient, c'est qu'il faut un PHP récent ( >= 4.2.0 )
Sinon, s'il faut absolument utiliser exec, il y a la fonction escapeshellcmd. Je ne sais pas si c'est fiable.