Bonjour,
je travaille actuellement sur un projet (interne) pour lequel certaines fonctions php (type exec, system, etc) sont autorisées dans php.ini car utilisées dans le code, légitimement (essentiellement pour exécuter des scripts perl).
Dans le même projet, il y a une fonctionnalité permettant à un utilisateur de saisir un script shell dans un textarea ; ce contenu, stocké en bdd, sera ensuite exécuté sur une machine (autre que le serveur web) donc ne peut/doit pas être trop "nettoyé".
Devant un tel fonctionnement (qui, j'en ai bien conscience, est un trou de sécurité béant ^^), comment éviter au max les soucis de type injection php / shell / autre (quoi ?) ?
Je n'ai jamais touché à un système aussi délibérément "ouvert" et comme on nous rabâche les oreilles à propos de sécurité au niveau hiérarchique (ce que je trouve pertinent par ailleurs ^^), je voudrais bien faire un truc propre
l'enregistrement en bdd passe par des requêtes préparées mais ce n'est pas l'injection sql qui m'inquiète le plus dans ce cas précis
comment m'assurer du bon fonctionnement du formulaire ? que tester / nettoyer / transformer ?
j'ai essayé de mettre un truc du genredans le champ et ça ne fait rien mais ça me semble léger comme vérif ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part exec('whoami')
merci d'avance,
NB : il y a quand même plusieurs niveaux de protection avant d'arriver jusqu'à ce formulaire mais comme le dit notre CSSI "une chaîne a la force de son maillon le plus faible", je ne veux pas être le maillon faible
EDIT : projet développé sur un framework maison librement inspiré de Zend et Symfony
Partager