web-dev-qa-db-fra.com

Qu'est-ce que le sandboxing?

J'ai lu le article Wikipedia , mais je ne suis pas vraiment sûr de ce que cela signifie et de la similarité avec contrôle de version .

Il serait utile que quelqu'un puisse expliquer en termes très simples ce qu'est le sandboxing.

108
Lazer

enter image description here

Un bac à sable ou bac à sable est un récipient bas et large ou une dépression peu profonde remplie de sable dans lequel les enfants peuvent jouer. De nombreux propriétaires avec enfants construisent des bacs à sable dans leur arrière-cour car, contrairement à la plupart des équipements de terrains de jeux, ils peuvent être construits facilement et à moindre coût. Un "bac à sable" peut également désigner une mine de sable à ciel ouvert.

Un sandbox logiciel n’est pas différent d’un sandbox conçu pour que l’enfant puisse jouer. En fournissant un bac à sable à un enfant, nous simulons l'environnement d'un terrain de jeu réel (en d'autres termes, un isolated environment) mais avec des restrictions sur ce qu'un enfant peut faire. Parce que nous ne voulons pas que l'enfant soit infecté ou qu'il ne cause pas de problèmes à d'autres. :) Quoi qu'il en soit, nous voulons simplement imposer des restrictions à ce que l'enfant peut faire pour Security Reasons.

Venant maintenant à notre sandbox logiciel, nous laissons tout logiciel (enfant) exécuter mais avec quelques restrictions sur ce qu’il peut faire. Nous pouvons sentir en toute sécurité ce que le logiciel d'exécution peut faire.

Vous avez vu et utilisé un logiciel antivirus. Droite? C'est aussi une sorte de bac à sable. Cela impose des restrictions sur ce que tout programme peut faire. Quand une activité malveillante est détectée, elle s’arrête et informe l’utilisateur que "cette application tente d’accéder à tant de ressources. Voulez-vous autoriser?".

Téléchargez un programme nommé sandboxie et obtenez une expérience pratique du bac à sable. En utilisant ce programme, vous pouvez exécuter n’importe quel programme dans un environnement contrôlé.

Les flèches rouges indiquent les modifications apportées par un programme en cours d'exécution à votre ordinateur. La zone intitulée Disque dur (pas de bac à sable) indique les modifications apportées par un programme s'exécutant normalement. La zone intitulée Disque dur (avec bac à sable) affiche les modifications apportées par un programme exécuté sous Sandboxie. L'animation montre que Sandboxie est capable d'intercepter les modifications et de les isoler dans un bac à sable, représenté par un rectangle jaune. Cela montre également que le regroupement des modifications facilite la suppression de toutes les modifications en même temps.

enter image description here

Du point de vue du programmeur, le bac à sable limite l’API autorisée à l’application. Dans l'exemple antivirus, nous limitons l'appel système (API du système d'exploitation).

Un autre exemple serait celui des arènes de codage en ligne telles que topcoder. Vous soumettez un code (programme) mais il s'exécute sur le serveur. Pour le safety du serveur, ils doivent limiter le niveau d'accès de l'API du programme. En d'autres termes, ils doivent créer un bac à sable et y exécuter votre programme.

Si vous avez un sandox approprié, vous pouvez même exécuter un fichier infecté par un virus, arrêter toute activité malveillante du virus et voir par vous-même ce qu'il essaie de faire. En fait, ce sera la première étape d'un chercheur en antivirus.

249
claws

Cette définition du bac à sable signifie essentiellement avoir des environnements de test (intégration de développeur, assurance qualité, étape, etc.). Ces environnements de test imitent la production, mais ils ne partagent aucune des ressources de production. Ils ont des serveurs, des files d'attente, des bases de données et d'autres ressources complètement séparés.

Plus généralement, j'ai vu le sandboxing se référer à quelque chose comme une machine virtuelle - isoler du code en cours d'exécution sur une machine afin qu'il ne puisse pas affecter le système de base.

27
Kaleb Brasee

Pour un exemple concret: supposons que vous ayez une application qui traite des transferts de fonds. Dans l'environnement de production, de l'argent réel est échangé. Dans l'environnement en bac à sable, tout fonctionne exactement de la même manière, mais l'argent est virtuel. C'est à des fins de test.

Paypal offre un tel environnement en sandbox, par exemple.

12
JRL

Pour le "bac à sable" dans le développement logiciel, cela signifie développer sans déranger les autres de manière isolée.

Ce n'est pas semblable au contrôle de version. Cependant, certaines méthodes de contrôle de version (en tant que branche) peuvent aider à créer des sandbox.

5
Francis

Plus souvent, nous nous référons à l'autre sandbox .


De toute façon, le bac à sable signifie souvent un environnement isolé . Vous pouvez faire ce que vous voulez dans le bac à sable, mais son effet ne se propage pas en dehors du bac à sable. Par exemple, dans le développement de logiciels, cela signifie que vous n'avez pas besoin de manipuler des éléments dans /usr/lib pour tester votre bibliothèque, etc.

0
kennytm