Se rendre au contenu

SandBox

La sécurité avant tout
4 novembre 2025 par
Administrator

Sandbox


Un bac à sable (de l'anglais sandbox) est un mécanisme de sécurité informatique se basant sur l'isolation de composants logiciels, de logiciels ou de groupes de logiciels par rapport à leur logiciel ou système d'exploitation hôte. L'isolation a pour rôle de permettre l'exécution du ou des composants logiciels en diminuant les risques liés à cette exécution pour l'hôte. Les mécanismes de bac à sable peuvent être utilisés pour exécuter du code non testé pouvant potentiellement affecter le système, du code potentiellement malveillant sans lui donner accès au système, ou dans le cadre de l'exécution d'un serveur logiciel qui pourrait être compromis et autrement laisser un accès complet au système à l'attaquant.

Le terme sandbox est aussi utilisé dans un sens plus large pour faire référence à un environnement de test pour logiciels ou sites web.

Une fois que vous avez configuré, votre site Web prendrait la source de code, l'enverrait sur ajax à votre serveur Web, et le serveur exécuterait le code dans un sous-processus d'une instance de python sablé. Vous seriez également en mesure de tuer le processus si cela prenait plus de temps que 5 secondes. Ensuite, vous retournez la sortie en réponse au client.

Voir ces liens pour obtenir de l'aide sur un bac à sable PyPy:

http://doc.pypy.org/en/latest/sandbox.html

http://readevalprint.com/blog/python-sandbox-with-pypy.html

Créer une REPL entièrement interactive serait encore plus impliqué. Vous devrez garder un interprète en vie pour chaque client sur votre serveur. Ensuite, acceptez ajax "lignes" d'entrée et exécutez-les à travers l'interp en communiquant avec le processus d'exécution, et retournez la sortie.

Dans l'ensemble, pas trivial. Vous auriez besoin de compétences de développement solides pour le faire confortablement. Vous pouvez trouver cette tâche un peu décourageante si vous êtes juste en train d'apprendre.

Il y a plus à faire ici que vous ne le pensez.

Le problème majeur est que vous ne pouvez pas laisser les gens exécuter du code Python arbitraire sur votre serveur Web. Par exemple, que se passe-t-il s'ils le font

import os
os.system("rm -rf *.*")

Donc clairement, vous devez exécuter ce code Python en toute sécurité. Mais alors vous avez le problème de sécuriser Python, ce qui est fondamentalement impossible en raison de sa dynamique. Et donc vous devrez probablement exécuter la coque Python dans une machine virtuelle, qui vient avec ses propres maux de tête.


Source:

https://fr.wikipedia.org/wiki/Sandbox_(s%C3%A9curit%C3%A9_informatique)

https://stackoverflow.com/questions/11264918/how-to-embed-a-python-interpreter-on-a-website#11265347