Je suis en train de développer un système qui permet aux développeurs de télécharger des scripts groovy personnalisés et des modèles de freemarker. Je peux fournir un certain niveau de sécurité à un très haut niveau avec l'infrastructure de sécurité Java par défaut - c'est-à-dire empêcher le code d'accéder au système de fichiers ou au réseau, mais j'ai besoin de restreindre l'accès à certaines méthodes. Mon plan était de modifier les runtimes Groovy et Freemarker pour lire les annotations qui seraient soit en liste blanche ou noire de certaines méthodes, mais cela me forcerait à maintenir une version bifurquée de leur code, ce qui n'est pas souhaitable.Sandboxing Code Java/Groovy/Freemarker - Empêcher l'exécution de méthodes spécifiques
Tout ce que je dois essentiellement faire est d'empêcher l'exécution de méthodes spécifiques quand on les appelle depuis Groovy ou Freemarker. J'ai considéré un hack qui regarderait la pile d'appels, mais ce serait un énorme coup de vitesse (et c'est assez compliqué).
Est-ce que quelqu'un a d'autres idées pour implémenter cela?
Dans la plupart des cas, la classe sur laquelle la méthode est activée ne sera pas connue au moment de la compilation, donc l'analyse de l'AST ne fonctionnera pas vraiment. Pourtant, c'est la meilleure réponse ici, donc je vais cocher celui-ci. J'ai fini de trouver une solution décente en utilisant Metaclasses. –