Permettre aux utilisateurs de télécharger des scripts Python pour exécution

StackOverflow https://stackoverflow.com/questions/818402

  •  03-07-2019
  •  | 
  •  

Question

Je comprends que laisser un utilisateur anonyme télécharger n'importe quel type de fichier peut être dangereux, surtout s'il s'agit de code. Cependant, j'ai une idée pour permettre aux utilisateurs de télécharger des scripts AI personnalisés sur mon site Web. Je fournirais le modèle afin que l'utilisateur puisse rivaliser avec d'autres IA dans un jeu Web en ligne que j'ai écrit en Python. Soit j'ai besoin d'une solution pour m'assurer qu'un utilisateur ne puisse compromettre aucun autre fichier ou injecter un code malveillant via son script téléchargé ou une solution pour l'exécution du jeu côté client. Aucune suggestion? (Je recherche une solution qui fonctionnera avec mes scripts Python)

Était-ce utile?

La solution

Disposez d’une API étendue pour les utilisateurs et supprimez tous les autres appels lors du téléchargement (tels que les instructions d’importation). En outre, supprimez tout ce qui a un rapport avec les entrées / sorties de fichiers.

(Vous pouvez effectuer plusieurs passes pour vous assurer de ne rien manquer.)

Autres conseils

Je ne suis aucunement associé à ce site et je ne le lie que parce qu'il tente d'obtenir ce que vous voulez obtenir: emprisonner du python. Le site est code pad .

Selon la page à propos, il est exécuté sous geordi et intercepte tous les systèmes appels avec ptrace. En plus d'être chrootés, ils se trouvent sur une machine virtuelle avec des pare-feu en place pour interdire les connexions sortantes.

Considérez cela comme un point de départ, mais je dois parler de tout le danger. Je dois CYA moi-même. :)

En utilisant PyPy, vous pouvez créer un sandbox Python. Le bac à sable est un environnement python distinct et supposé sécurisé, dans lequel vous pouvez exécuter leurs scripts. Plus d'infos ici

http://codespeak.net/pypy/dist/pypy/doc /sandbox.html

"En théorie, il est impossible de faire quelque chose de mal ou de lire un fichier au hasard sur la machine à partir de cette invite."

"Cette opération est sans danger même si script.py provient d'une source aléatoire non fiable, par exemple. s’il est effectué par un serveur HTTP. "

Outre d'autres garanties, vous pouvez également inclure une révision humaine du code. En supposant qu'une partie de l'expérience consiste à examiner les solutions des autres membres et que tout le monde est un développeur Python, n'autorisez pas l'activation de nouveau code jusqu'à ce qu'un certain nombre de membres l'aient voté. Vos utilisateurs ne vont pas approuver le code malveillant.

Oui.

Autorisez-les à écrire leur client, pas votre serveur.

PyPy est probablement un bon pari côté serveur, comme suggéré, mais je souhaiterais que votre back-end python fournisse des API et des formats de données bien définis et que les utilisateurs mettent en œuvre l'IA et la logique en Javascript pour qu'il puisse s'exécuter dans leur environnement. navigateur. Ainsi, l’interaction ressemblerait à ceci: Pour chaque correspondance / tour / etc, transmettez les données au navigateur dans un format bien défini, fournissez un modèle javascript qui reçoit les données et peut implémenter une logique, et fournissez des API Web pouvant être invoquées par le client. (navigateur) pour prendre les mesures souhaitées. Ainsi, vous n’aurez plus à vous soucier de la sécurité ni de l’alimentation du serveur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top