Qu'est-ce que le sandboxing?

118

J'ai lu l'article de Wikipédia , mais je ne suis pas vraiment sûr de ce que cela signifie et à quel point il est similaire au contrôle de version .

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

Lazer
la source

Réponses:

266

entrez la description de l'image ici

Un bac à sable ou bac à sable est un conteneur 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 à de nombreux équipements de jeux, ils peuvent être construits facilement et à moindre coût. Un «bac à sable» peut également désigner une mine de sable à ciel ouvert.

Eh bien, un bac à sable logiciel n'est pas différent d'un bac à sable conçu pour qu'un 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 que nous ne voulons pas qu'il cause des problèmes aux autres. :) Quelle que soit la raison, nous voulons juste mettre des restrictions sur ce que l'enfant peut faire Security Reasons.

Arrivant maintenant à notre sandbox logiciel, nous laissons n'importe quel logiciel (enfant) s'exécuter (jouer) mais avec quelques restrictions sur ce qu'il (il) peut faire. Nous pouvons nous sentir en sécurité sur 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. Il met des restrictions sur ce que n'importe quel programme peut faire. Lorsqu'une activité malveillante est détectée, elle s'arrête et informe l'utilisateur que "cette application tente d'accéder à telle ou telle ressource. Voulez-vous autoriser?".

Téléchargez un programme nommé sandboxie et vous pourrez vous familiariser avec un 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 boîte intitulée Disque dur (pas de bac à sable) montre les modifications effectuées par un programme fonctionnant normalement. La boîte intitulée Disque dur (avec bac à sable) montre les modifications apportées par un programme s'exécutant 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 permet de les supprimer toutes en même temps.

entrez la description de l'image ici

Désormais, du point de vue du programmeur, sandbox restreint l'API autorisée à l'application. Dans l'exemple de l'antivirus, nous limitons l'appel système (API du système d'exploitation).

Un autre exemple serait les arènes de codage en ligne comme topcoder. Vous soumettez un code (programme) mais il s'exécute sur le serveur. Pour le safetyserveur, 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 exécuter votre programme à l'intérieur.

Si vous avez un sandox approprié, vous pouvez même exécuter un fichier infecté par un virus et 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 antivirus.

les griffes
la source
31

Cette définition du sandboxing signifie essentiellement avoir des environnements de test (intégration 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 souvent, j'ai vu le sandboxing faire référence à 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.

Kaleb Brasee
la source
1
d'accord, le sandboxing consiste essentiellement à tester un logiciel dans un environnement contrôlé avant de le mettre en service. droite? btw, pourquoi est-ce appelé «sandboxing»?
Lazer
>> pourquoi est-il appelé «sandboxing» @eSKay parce que les gens jouent avec des logiciels / matériels comme des enfants dans leur sandbox ( thefreedictionary.com/sandbox - définition # 3).
Darmen Amanbayev
Alors, quelle est la différence entre les environnements sandbox et staging?
Mohammad Jamal Dashtaki
15

Pour un exemple concret: supposons que vous ayez une application qui traite des transferts d'argent. 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 propose par exemple un tel environnement sandbox.

JRL
la source
6

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 similaire au contrôle de version. Mais une méthode de contrôle de version (en tant que branchement) peut aider à créer des sandbox.

Francis
la source
0

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


Quoi qu'il en soit, sandbox signifie souvent un environnement isolé . Vous pouvez faire tout ce que vous voulez dans le bac à sable, mais son effet ne se propagera pas en dehors du bac à sable. Par exemple, dans le développement de logiciels, cela signifie que vous n'avez pas besoin de jouer avec des éléments /usr/libpour tester votre bibliothèque, etc.

KennyTM
la source