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 Perl Discussion :

Redéfinition de fonctions et de mots clés


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Redéfinition de fonctions et de mots clés
    Bonjour,

    j'ai un programme perl qui se décompose en plusieurs script/module:
    D'un côté un module sys.pm qui contient un ensemble de fonction système qui appelle des fonctions clients.
    De l'autre j'ai un script client.pl qui apelle le module sys.pm (use sys). Dans le script client.pl, on ne peut définir que certaines fonctions qui sont limitées au niveau utilisation. Dans le module sys.pm, j'appelle pas mal de modules (threads,Handle,...). Je souhaite bloquer dans le script client.pl pas mal de fonctions prédéfinies telles que system exec open ... Pour cela, j'ai redéfini dans ces fonctions dans un module appelé redef.pm que j'apelle dans client.pl.
    Ce qui donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    use sys; #system non bloqué
    use redef;
     
    sub client1{
    ....# system bloqué
    }
     
    while(1){};
    A priori, j'arrive à utiliser la vrai fonction system dans sys.pm et system redéfinie dans client.pl. Je voudrai savoir si cette méthode est fiable.

    D'autre part, je voudrai que dans le script client.pl, après use et use redef, le mot clé use soit bloqué. Tout simplement pour pas qu'une personne puisse appelé un module dans son code par la suite.
    Du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    use sys; #system non bloqué
    use redef;
    #use inpossible!!!!!
     
    sub client1{
    ....# system bloqué
    }
     
    while(1){};
    voilà.
    Merci par avance

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Bonjour,

    Je n'ai pas la réponse au problème posé, et je n'ai pas essayé ce qu'il décrit, mais toutefois, l'énoncé m'amène quelques questions complémentaires ?

    Avec cette redéfinition d'éléments intrinsèques du langage, comment se comporte le script vis-à-vis de l'usage du module "strict", par exemple ?

    Le module "strict" va t'il crier au scandale s'il est utilisé avant le module "redef" ?

    Si tu arrives à bloquer l'usage du "use", il restera possible de le faire avant l'inclusion de ton module d'interdiction, non ?

    Inlterdire aux utilisateurs de ton module de l'utiliser conjointement à leurs autres modules est peut être un peu limitatif, non ?


    En fait, si tu fais tout cela dans un but d'accroître la sécurité de tes scripts/modules, j'ai peur que ce ne soit pas la meilleure voie ... Mieux vaut s'assurer de ce que l'on envoie aux fonctions "system" et autres, par filtrage des saisies utilisateur (ou éviter d'envoyer une donnée utilisateur à de telles fonctions), que de bloquer l'usage de celles-ci.


    Bon courage pour la suite.

    [Edit]
    Correction d'horribles fautes de grammaire
    [/Edit]
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 47
    Points : 56
    Points
    56
    Par défaut
    Pour aller dans le sens de 2eurocents, même si tu réussis à supprimer system() -- et encore, meme en redéfinissant les builtins perl, il y a des moyens de les retrouver, je n'ai pas la syntaxe sous la main, mais je sais qu'elle existe -- que fais-tu par exemple de "backticks"? Ton hacker peut toujours écrire:
    par exemple.

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    De plus il lui suffit d'ajouter "CORE::" devant ses fonctions pour revenir aux fonctions par défaut... Ton problème me paraît bizarrement posé : quel est ton but réel et pourquoi ces mesures radicales ?

    --
    Jedaï

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    ha oui c'est pas con ça. j'avais pas pensé aux backquotes . C'est possible de les redéfinir?

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    En fait mon but c'est que dans le script client.pl écrit comme son nom l'indique par un client, on ne puisse pas faire de conneries: je souhaite que le client utilise le stict minimum des fonctions. La fonction system du Perl est elle définit dans un .pm? parce que je pourrai à la rigueur l'enlever des biblios par défaut.

  7. #7
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Je persiste à croire que ce n'est pas la bonne approche ...

    Un client est client pour enrichir ses possibilités, pas pour les limiter ...

    Tout ce que tu peux faire, et que je recommande, c'est blinder ton module pour que lui n'accepte pas de faire des bétises, quoi que le client demande.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

Discussions similaires

  1. Extraction de mots clés
    Par Olive1808 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 01/02/2016, 20h49
  2. Recherche et sélection de PJ en fonction de Mots clés
    Par laurence.giannoli dans le forum Access
    Réponses: 16
    Dernier message: 24/04/2015, 17h26
  3. Fonction recherche par mots clés
    Par Mall0x dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/10/2013, 20h53
  4. [AC-2007] Recherche sur plusieurs mots clés fonction ET
    Par Kromai dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 22/06/2011, 09h21
  5. fonctions synchronisées mots clés ?
    Par Watier_53 dans le forum Flash
    Réponses: 1
    Dernier message: 21/04/2008, 12h21

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