Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/04/2011, 23h56   #1
Membre actif
 
christian
Développeur indépendant
Inscription : août 2004
Messages : 251
Détails du profil
Informations personnelles :
Nom : christian
Âge : 43
Localisation : France

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

Informations forums :
Inscription : août 2004
Messages : 251
Points : 184
Points : 184
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.
eomer212 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 09h29   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Tiens ça me rappelle quelque chose

Citation:
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é ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 12h11   #3
Membre actif
 
christian
Développeur indépendant
Inscription : août 2004
Messages : 251
Détails du profil
Informations personnelles :
Nom : christian
Âge : 43
Localisation : France

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

Informations forums :
Inscription : août 2004
Messages : 251
Points : 184
Points : 184
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.
eomer212 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 12h23   #4
Membre actif
 
christian
Développeur indépendant
Inscription : août 2004
Messages : 251
Détails du profil
Informations personnelles :
Nom : christian
Âge : 43
Localisation : France

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

Informations forums :
Inscription : août 2004
Messages : 251
Points : 184
Points : 184
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..
eomer212 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 12h37   #5
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Citation:
mais en bref, j'ai pas trouve de solutions sous windows
Ah parce que tu déploies sous Windows Server ?

Citation:
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 :
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
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 16h07   #6
Membre actif
 
christian
Développeur indépendant
Inscription : août 2004
Messages : 251
Détails du profil
Informations personnelles :
Nom : christian
Âge : 43
Localisation : France

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

Informations forums :
Inscription : août 2004
Messages : 251
Points : 184
Points : 184
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
eomer212 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 17h25   #7
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 18h04   #8
Membre actif
 
christian
Développeur indépendant
Inscription : août 2004
Messages : 251
Détails du profil
Informations personnelles :
Nom : christian
Âge : 43
Localisation : France

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

Informations forums :
Inscription : août 2004
Messages : 251
Points : 184
Points : 184
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.
Citation:
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 :
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 :
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 :
http://localhost/?coucou=patatra
ca m'ecrit le fichier avec son contenu,
et comme ca
Code :
http://localhost/?coucou=patatra&sec=
la ca me sort des erreurs comme ceci.
Citation:
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..
eomer212 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/04/2011, 23h14   #9
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Bien joué. Je vais garder ton tuto sous le coude, ça pourra peut-être servir un jour
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 01h10   #10
Membre actif
 
christian
Développeur indépendant
Inscription : août 2004
Messages : 251
Détails du profil
Informations personnelles :
Nom : christian
Âge : 43
Localisation : France

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

Informations forums :
Inscription : août 2004
Messages : 251
Points : 184
Points : 184
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 :
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 :
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 :
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
eomer212 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h04.


 
 
 
 
Partenaires

Hébergement Web