Je crée une application de type corewars qui s'exécute sur django et permet à un utilisateur de télécharger du code python qui contrôlera son caractère. Maintenant, je sais que le réel répondre à cela est que tant que je prends des entrées de code d'utilisateurs non fiables, je vais avoir des failles de sécurité. J'essaie juste de minimiser le risque autant que possible. Voici quelques-uns qui viennent à l'esprit:Quelles fonctions intégrées ne doivent pas être exécutées par des utilisateurs non autorisés?
__import__
(je ferai probablement aussi une analyse de ast pour vous assurer qu'il n'y a pas de déclarations d'importation)open
file
input
raw_input
Y at-il d'autres éléments qui me manquent?
Oui, c'est la vraie réponse: "tant que je prends des entrées de code d'utilisateurs non fiables, je vais avoir des failles de sécurité." Cela ressemble à une reprise de "Comment puis-je analyser HTML avec des expressions régulières? Je sais que c'est faux." – hughdbrown
@hughdbrown - Dans le pire des cas, quelqu'un entrerait dans la base de données et gâcherait les parties de l'autre ou des deux personnes (au maximum) qui joueraient probablement au jeu ou bousilleraient quelque chose qui me forcerait à essuyer le serveur recommencer. Mon but est seulement de faire le prix de quelque chose de plus que la récompense potentielle pour le faire. Ce n'est qu'un projet parallèle que je fais pour m'amuser, pas quelque chose que je ferais dans un système de production. –