Je travaille sur un grand produit logiciel ASP.NET. Nous souhaitons autoriser les utilisateurs à saisir des expressions plutôt que des constantes pour certains champs. En général quelque chose comme:Est-il sûr d'exécuter des expressions entrées par l'utilisateur comme IronPython
(Price * 1.175) + 25
La solution la plus évidente semble être d'intégrer IronPython, créer une étendue, passer le « prix » (et d'autres) les variables puis exécutez le code ci-dessus comme IronPython.
Cependant, il n'y aurait rien qui empêche les utilisateurs d'entrer:
1/0
ou
def func1():
func1()
func1()
ou
import System.IO
File.Delete(....)
Mais si je prends toutes les exceptions et exécuter le code IronPython dans un domaine d'application avec le jeu d'autorisations Internet, suis-je sûr?
Juste une pensée, si l'utilisateur entre "0;}/* code mal ici */fonction dummyFunc() {return 0" Ne pourraient-ils pas alors vous exécuter? leur code maléfique? – d4nt
Non. Le script lui-même n'est pas exécuté. Mon code n'appelle que la fonction generated123 – mfeingold