J'ai travaillé lentement sur un projet de personnel pour exécuter un jeu comme webmud en utilisant extjs comme mon frontend. L'un des choix de conception que j'ai fait était de permettre le code évalué généré par l'utilisateur pour la logique du jeu. Ainsi, lorsque le joueur pénètre dans une nouvelle "salle", un certain nombre de scripts d'état seraient appelés comme suit: "Le joueur a-t-il déjà été là? Devrait-il être là? A-t-il un objet d'inventaire?" De plus, les «actions» de base de la pièce seraient codées en dur (aller N/S/E/W), mais les actions avancées seraient disponibles sous la forme des mêmes scripts évalués par l'utilisateur. A l'origine j'allais être fainéant et j'utilisais PHP pour cette logique, mais mon sens paranoïaque est là. Donc les deux alternatives que j'ai trouvées sont runkit_sandbox mais il ne supporte pas un échange d'objets entre le primaire thread et le bac à sable (juste des types de données simples et des tableaux) OU en utilisant ecmascript comme ma logique de jeu http://ejohn.org/blog/spicing-up-embedded-javascript/. Le pour et le contre des deux est que avec runkit, je peux verrouiller le script assez fort à un coût énorme pour accélérer alors que l'interpréteur ecma me permettrait de lier sélectivement des variables, des fonctions, et éventuellement des objets au javascript l'espace de course mais son état encore en bêta et je n'ai pas encore vu comment il fonctionne.Recommandations pour sandboxing dans PHP5 ou des alternatives?
Est-ce que c'est pour les options ou est-ce qu'il y a autre chose que je ne connais pas qui pourrait être un meilleur choix? Environnement: linux, PHP-CGI 5.3 ou en tant que moteur d'application google.
J'ai développé une classe de bac à sable sous licence BSD dans ce but. Il utilise la bibliothèque PHPParser pour analyser le code en sandbox, le vérifier par rapport à des listes blanches et des listes noires configurables par l'utilisateur, et dispose d'un large éventail d'options de configuration ainsi que de paramètres par défaut sains. Le projet comprend également une boîte à outils sandbox (à utiliser uniquement sur votre machine locale!) Qui peut être utilisée pour tester les paramètres du sandbox, ainsi qu'une documentation complète sur les manuels et les API. https://github.com/fieryprophet/php-sandbox –