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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Fonctions définies par les utilisateurs


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Fonctions définies par les utilisateurs
    Bonjour,

    J'aimerais permettre aux administrateurs d'une application PHP de configurer certaines méthodes de calculs, ou, autrement dit, de définir eux même quelques fonctions en PHP.

    Par exemple, on pourrait imaginer que la méthode pour calculer certains coûts change régulièrement et calculerCouts() passe régulièrement de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function calculerCouts($qt) {
      $prixUnitaire = 0.5;
      return $qt * $prixUnitaire;
    }
    à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function calculerCouts($qt) {
      if ($qt < 100)
        $prixUnitaire = 0.5;
      } else {
        $prixUnitaire = 0.3;
      }
      return $qt * $prixUnitaire;
    }
    Et je voudrais donc que ça soit les administrateurs qui rentrent ces fonctions via une interface.

    PHP met à disposition des fonctions pour interpréter du code depuis une chaîne de caractères comme eval() ou encore create_function(). Seulement voilà, ça me pose problème d'utiliser eval($_POST['ma_fonction']).

    Ce n'est pas une question de sécurité. Bien sûr que ça n'est pas sécure mais il s'agit d'une application intranet et de plus les utilisateurs qui auraient la possibilité de définir les fonctions sont admins et peuvent donc tout casser sans cette fonctionnalité.

    Non ce qui pose problème c'est que même sans mauvaises intentions, il est possible de perturber l'application avec, par exemple, des erreurs de syntaxe, des boucles infinies, de l'affichage, ou bien en étant pessimiste, une faute de frappe qui fait system('rm -rf /').

    Bref tout ça pour dire que je cherche une solution pour permettre aux utilisateurs de saisir des fonctions de manière sécurisée.

    J'imagine deux méthodes possibles : exécuter le code dans une sandbox ou bien alors utiliser un autre langage simple et très limité.

    Pour la deuxième solution je me demandais s'il existait pas déjà, à votre connaissance, des bibliothèques PHP interprétant un langage simple avec une liste de blanche de fonctions autorisées (pour limiter les accès au système de fichiers ou à la BDD). Parce que bon, je me vois pas créer un parser et tout.

    Même chose pour les sandboxs, je n'ai jamais utilisé ce genre de choses.

    Donc en gros je cherche quelqu'un qui pourrait me mettre sur une piste. Le mieux serait un retour d'une personne ayant déjà mis en place ce genre de fonctionnalité.

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 713
    Points : 519
    Points
    519
    Par défaut
    salut, ce que je vois c'est que tu peux faire un module d'écriture de script.
    De cette façon tu n'utilise pas l'éval mais l'exécution par php nomDeScript ou via une url.

    Tu dois définir une liste des fonctions que tu n'autorise pas pour permettre l'écriture du script ou non controlé par expression régulière. Si le mot cle détecte une fonction non autorisee, l'écriture du script et son execution ne se produisent pas.
    Aucun de nous n'est seul, Même l'air que nous expirons est inspirés par d'autres...

Discussions similaires

  1. SQL dynamique dans une fonction définie par l'utilisateur
    Par messalux dans le forum Développement
    Réponses: 7
    Dernier message: 11/11/2010, 09h25
  2. Réponses: 13
    Dernier message: 09/07/2006, 15h53
  3. Fonction défini par l'utilisateur
    Par m-mas dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/07/2005, 09h45
  4. SQL Server / Fonction définie par l'utilisateur
    Par borgfabr dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/03/2005, 15h14
  5. Fonctions définies par l'utilisateur
    Par DiGueDao dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/06/2003, 11h17

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