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

integration scripts utilisateur


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    373
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 373
    Points : 512
    Points
    512
    Par défaut integration scripts utilisateur
    je souhaite pouvoir faire executer des scripts definis par les utilisateurs,
    sans affecter la securite du serveur.
    j'avais pensé et cherché à inclure du lua. mais j'arrive pas à grand chose.
    je voudrais qu'ils puissent manipuler des chaines de caracteres, faire des calculs, avoir acces aux tableaux, les fonctions conditionnelles et de boucles, pouvoir programmer un peu, mais sans leur permettre d'interferer avec le serveur lui meme.
    je sais pas trop comment faire la chose. ni meme s'il existe quelque chose qui me permette de le faire.
    est-ce qu'il existe un eval en php qui limite la portée ou les capacites de la fonction evaluée.??
    merci d'avance.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Tiens ça me rappelle quelque chose

    est-ce qu'il existe un eval en php qui limite la portée ou les capacites de la fonction evaluée.??
    Non pas à ma connaissance. En revanche il est possible de définir des règles pour interdire l'usage de certaines fonction en PHP, peut être pourrais-tu t'en servir pour créer ta sandbox...

    Tu n'est pas arrivé à intégrer Lua à ta plateforme ?? Sur quoi as-tu bloqué ?

  3. #3
    Membre confirmé
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    373
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 373
    Points : 512
    Points
    512
    Par défaut lua
    ben comme ce forum bouffe les reponses, tu pourras pas lire la belle reponses complete et tout que j'avais fait, c'est dommage.
    j'avais bien pris 10 minutes pour la reflechir et la taper, inclure des references, etc.. mais les admins considerent qu'il faut ecrire et valider comme si on avait la chiasse.

  4. #4
    Membre confirmé
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    373
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 373
    Points : 512
    Points
    512
    Par défaut lua
    mais en bref, j'ai pas trouve de solutions sous windows, je suis pas un specialiste apache , ni linux.
    les bidouillages proposés le sont a chaque fois par des pages de blog ou autres, partielles, incompletes, et t'as jamais d'exemple ou de procedure complete d'install. ca doit s'installer par magie dans leur esprit.

    bref ca marche pas..
    un luaforwindows fonctionne tres bien, j'ai pu installer des mods sous apache, mais ca serait trop simple de faire comme ca..
    j'ai pas trouve un seul truc ou ils disent comment faire pour l'installer.
    t'as toujours quelques bouts de code qui trainent, mais sans contexte, bref, c'est la merde, du n'importe quoi..

  5. #5
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    mais en bref, j'ai pas trouve de solutions sous windows
    Ah parce que tu déploies sous Windows Server ?

    les bidouillages proposés le sont a chaque fois par des pages de blog ou autres, partielles, incompletes, et t'as jamais d'exemple ou de procedure complete d'install. ca doit s'installer par magie dans leur esprit.
    Il doit y avoir un package dans un repos YUM ou APT (suivant la distro).
    Sur mon serveur par exemple (Ubuntu 10.10):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    delespierre@leonidas:~$ lua
    The program 'lua' can be found in the following packages:
     * lua5.1
     * lua40
     * lua50
    Try: sudo apt-get install <selected package>
    Tout simplement.

    Ensuite, tu peux utiliser le client lua avec un bête exec.
    Tout simplement

  6. #6
    Membre confirmé
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    373
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 373
    Points : 512
    Points
    512
    Par défaut oui dans certains cas.
    oui, en effet, on peut faire générer une partie ou une page complète par un script lua.
    le seul hic, c'est que c'est pas ce que je veux faire.
    je ne veux pas que les utilisateurs puissent toucher au rendu de la page,
    mais simplement effectuer des calculs ou des opérations sur des données, limitées, et pouvoir récupérer ces données modifiées en retour.
    en clair, c'est pour permettre, pour chaque user, la personnalisation de données d'impression de codes barres spécifiques, à partir des infos présentes.

    c'est vraiment limité, et en même temps, ce doit être facilement intégrable dans du php, puisqu'ensuite, j'utilise la librairie GD pour créer et dessiner les codes barres et ce qui va autour.

    j'ai trouvé ça qui semble fonctionner, mais il y a encore trop de fonctions dangereuses, type ouvrir et ecrire un fichier sur disque...
    http://xoops.net.br/2008/12/apache-l...er-windows.php

  7. #7
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Sûrement qu'en faisant un chroot dans un répertoire spécifique et protégé on peut s'affranchir de ce problème... Enfin là je suis à court d'idées.

  8. #8
    Membre confirmé
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    373
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 373
    Points : 512
    Points
    512
    Par défaut hum..
    il semble que je commence à tenir le bon bout.

    le lien de mon, message precedent semble plus prometteur..
    j'ai pu avoir un serveur local avec execution de script lua.
    c'est pas encore tout à fait ce que je voulais. (en clair, dans un .php, je voudrais pouvoir inclure des scripts lua comme ca.. <?lua mon script; ?>
    ca serait le top.

    sur ce lien, http://xoops.net.br/2008/12/apache-l...er-windows.php

    vous pouvez télécharger une install complete qui fonctionne.
    pour ceux comme moi qui aiment bien qu'on explique les choses.
    décompressez le dans un repertoire, si wampserveur ou autre serveur web est en route, arrêtez le, et lancez xoopserver depuis son emplacement.
    il crée un disque virtuel, servant de stockage et racine au serveur web.
    ensuite, lancer le navigateur, comme d'hab, allez à http://localhost/

    ca devrait vous afficher la version du serveur apache, php et lua installé.
    un peu comme ca.
    Apache, mySQL, PHP e Lua 5.1; todos instalados e operantes...

    Visite: Comunidade Lua no Orkut
    maintenant, petit problème, le script en question peut avoir accès aux fonctions dangereuses pour la sécurité.
    j'ai testé ceci , et ca a malheureusement fonctionné..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	 file=io.open("d:/Test.txt","w");
    	if (file==nil) then
    		print("erreur ouverture");
    	else
    	   print("fichier ouvert");
    	   file:write(cgilua.QUERY.coucou);
    	   file:close();
    	end;
    cela m'a affiché fichier ouvert et créé et rempli le fichier d:\test.txt avec patatra , l'argument passé en lien.
    http://localhost/?coucou=patatra

    donc, si ca marche il reste plus qu'à circonscrire les possibilités.
    un post trés utile.http://stackoverflow.com/questions/1...re-lua-sandbox

    ou comment limiter les possibilités d'un script.
    j'ai donc repris le principe et modifié le fichier index.lua dans le repertoire www de xoopserver comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    function orkocuma(numero, nome) -- un petit test
    sLinkHTML = "<a title=\"" .. nome .. "\" href=\"http://www.orkut.com.br/Main#Community.aspx?cmm=" .. numero .. "\">" .. nome .. "</a>";
    cgilua.put(sLinkHTML);
    end
    cgilua.htmlheader()
    cgilua.put("<html><head><title>Hello Brave New World!</title></head>")
    cgilua.put("<body><strong>Apache, mySQL, PHP e " .. _VERSION .. "; todos instalados e operantes...</strong><br /><br />Visite: ");
    orkocuma("80740", "Comunidade Lua no Orkut");
    cgilua.put("</body></html>");
    -- meu orkut: http://www.orkut.com.br/Main#Profile.aspx?uid=15440532260129226492
     
    gets=cgilua.QUERY;
    if (cgilua.QUERY.coucou~=nil) then 
    print("<br>parametre:"..cgilua.QUERY.coucou.."<br>");
    end;
     
    if (cgilua.QUERY.sec~=nil) then
    -- ci aprés les restrictions à appliquer pour securiser le reste du script.
    	debug.debug=nil
    	debug.getfenv=getfenv
    	debug.getregistry=nil
    	dofile=nil
    	io={write=io.write}
    	loadfile=nil
    	os.execute=nil
    	os.getenv=nil
    	os.remove=nil
    	os.rename=nil
    	os.tmpname=nil
    	package.loaded.io=io
    	package.loaded.package=nil
    	package=nil
    	require=nil
    end
     
     
    if (cgilua.QUERY.coucou~=nil) then 
    	 file=io.open("d:/Test.txt","w");
    	if (file==nil) then
    		print("erreur ouverture<br>");
    	else
    	   print("fichier ouvert<br>");
    	   file:write(cgilua.QUERY.coucou);
    	   file:close();
    	end;
    end;
     
       print("temps passé: "..os.clock().."<br>");
    donc, du coup, simplement, en changeant les parametres d'appel de la page, on passe en securisé simplement en rajoutant &sec=

    en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/?coucou=patatra
    ca m'ecrit le fichier avec son contenu,
    et comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/?coucou=patatra&sec=
    la ca me sort des erreurs comme ceci.
    parametre:patatra
    Content-type: text/html index.lua:38: attempt to call field 'open' (a nil value)
    stack traceback:
    /usr/lib-lua/cgilua.lua:153: in function 'open'
    index.lua:38: in main chunk
    [C]: in function 'xpcall'
    /usr/lib-lua/cgilua.lua:161: in function
    (tail call): ?
    (tail call): ?
    (tail call): ?
    [C]: in function 'xpcall'
    /usr/lib-lua/cgilua.lua:161: in function 'pcall'
    /usr/lib-lua/cgilua.lua:606: in function
    (tail call): ?
    donc, on peut dire que ca fonctionne, sous windows, et que ca permet meme de remonter les erreurs..

    reste plus qu'à faire un mecanisme adapté pour stocker les scripts à executer dans une base de données par exemple..
    c'est à ce genre de chose que je voulais arriver. content.

    si vous testez la solution, dites moi ce que vous en pensez..

  9. #9
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Bien joué. Je vais garder ton tuto sous le coude, ça pourra peut-être servir un jour

  10. #10
    Membre confirmé
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    373
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 373
    Points : 512
    Points
    512
    Par défaut probleme transfert vers wamp
    ca marche avec xoopserver, alors j'ai essayé de porter la fonctionnalité sur le wampserver que j'utilise normalement, car je voulais utiliser CURL, et la je seche un peu, pas specialiste apache..
    quelqu'un sait comment faire.??
    j'ai porté quelques parametres,
    en particuliers ceux ci à partir de la config xoopserver, mais ca donne pas vraiment ce que je veux. ya un debut, le format est reconnu, mais il me reste un probleme d'autorisation que je ne sais pas comment regler.;

    j'ai rajoute ces parametres dans le httpd.conf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # essai integration lua 
     AddType	application/x-httpd-lua	.lua .lp
     ScriptAlias	/kepler/ "/bin/kepler/"
     Action application/x-httpd-lua "/kepler/cgi.exe"
    le seul hic, c'est que j'ai ca quand j'eesaie de me connecter au wampserver avec l'adresse http://localhost/index.lua
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Forbidden
    You don't have permission to access /kepler/cgi.exe/index.lua on this server.
    j'ai recopie le repertoire kepler wamp/bin/kepler
    et le lib-lua dans /wamp/lib-lua
    j'ai aussi modifie
    le fichier kepler_init.lua comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    -- Kepler bootstrap file
    -- Defines the default directories for Kepler
    --
    -- $Id: t_kepler_init.lua,v 1.14 2007/10/31 16:50:05 carregal Exp $
     
    -- Library extension used in the system (dll, so etc)
    local libext = [[dll]]
     
    -- Kepler applications directory
    KEPLER_APPS = [[/kepler/]]
     
    -- Kepler configuration directory
    KEPLER_CONF = [[/kepler/conf]]
     
    -- Kepler logs directory
    KEPLER_LOG = [[/kepler/logs]]
     
    -- Kepler C modules directory
    KEPLER_LIB = [[/kepler]]
     
    -- Kepler Lua modules directory
    KEPLER_LUA = [[/lib-lua]]
     
    -- Kepler temporary directory
    KEPLER_TMP = [[/tmp]]
     
    -- Kepler default web directory
    KEPLER_WEB  = [[/www]]   
     
    --------- end of parameters ------------
     
    -- Allowed globals for CGILua running under Rings
    RINGS_CGILUA_GLOBALS = {
        "KEPLER_APPS", "KEPLER_CONF", "KEPLER_LIB", "KEPLER_LOG", "KEPLER_LUA", "KEPLER_TMP", "KEPLER_WEB"
    }
     
    package.path = KEPLER_LUA..[[/?.lua;]]..KEPLER_LUA..[[/?/init.lua;]]..package.path
    package.cpath = KEPLER_LIB..[[/?.]]..libext..";"..package.cpath
    mais il doit encore y avoir quelque chose de pourri dans mon royaume de norvege..
    YORIK, ne vois tu rien venir??
    parceque la, trop de parametres interdependants pour arriver à ce que ca marche.. j'me sens comme un demineur belge

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/05/2011, 08h35
  2. [Batch] Script Utilisateur AD et Groupes
    Par Invité dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 28/04/2011, 17h48
  3. Integrer script javascript dans gwt
    Par fufu38 dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 09/03/2010, 19h37
  4. [Blog] Cherche Script webblog pour multi-utilisateurs
    Par moonwar dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 05/10/2005, 11h35
  5. script pour ajouter des utilisateurs postgres
    Par xopos dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 16/08/2004, 10h49

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