2010-01-03 9 views
12

Voglio saperne di più su sandboxing. Non solo per questo. Voglio imparare così che sarò in grado di scrivere una sandbox semplice.Vuoi saperne di Sandboxing

Sorprendentemente, non ci sono informazioni disponibili da nessuna parte. Anche l'articolo di Wikipedia non è buono.

Qualcuno può suggerirmi un buon materiale. So che è un concetto di livello molto avanzato. Quindi, quali sono i prerequisiti per l'apprendimento del dominio &.

+1

http://stackoverflow.com/questions/1590337/using-the-google-chrome-sandbox – claws

+0

I membri di http://sandboxing.org possono avere qualche buon consiglio per te. –

+0

Leggi http://syprog.blogspot.in/2012/03/faking-kernel32dll-amateur-sandbox.html e http://www.fr33project.org/papers/p65_0x0a_phook%20-%20The%20PEB%20Hooker_by_Shearer%20e % 20Dreg.txt – claws

risposta

1

La risposta sarà probabilmente specifica per la lingua. Sfortunatamente la maggior parte delle lingue non ha funzionalità di sandboxing incorporate. Ma i linguaggi funzionali tendono ad essere abbastanza potenti da poter essere costruiti da zero senza estendere la lingua.

In Tcl il meccanismo di base è quello di creare interpreti schiavi:

interp create -safe sandbox 
interp eval sandbox $set_up_code 
set result [interp eval sandbox $unsafe_code] 
7

lettura su API di aggancio, ad esempio SandBoxie ganci kernel di Windows per filtrare tutte le chiamate API per filesystem e reindirizza risulta a sandbox, è potrebbe agganciare API e filtrarlo, passare solo i parametri validi, restituire gli errori per le chiamate non valide

per API aggancio troverete materiali abbondanza sulla rete, provare codeproject.com

+1

+1 per sandboxie, adoro quel programma ... Almeno, l'ho fatto, prima che avessi Win64 :( –

3

Una sandbox semplice sarebbe semplicemente un ambiente in cui si lascia 'qualcosa 'esegui', ma limita ciò che può fare.

In genere, questo "qualcosa" è un linguaggio già esistente, come Java, o JavaScript, o C# o codice nativo. Java ha apis 'sandboxing' per applet e così via, e .NET ha vari livelli di 'trust', JavaScript ha i limiti posti dagli interpreti (browser).

Quindi è un po 'strano "scrivere" la propria sandbox a meno che non si abbia anche una lingua che si desidera sandbox.

Hai un linguaggio del genere? Di cosa vuoi sapere, in particolare?

+0

ooooh .. Allora non sono a tutto si riferisce alla sandbox del linguaggio che pone restrizioni su ciò che gli utenti possono scrivere. Mi riferisco alla sandbox che è in chrome, che limita l'accesso alle risorse di sistema. Come una sandbox antivirus che consente all'applicazione di funzionare ma intercetta ogni tentativo malevolo e informa l'utente. – claws

+2

artigli: è la stessa cosa: l'antivirus cerca solo di capire quale funzione sta facendo l'app nativa e cerca di decidere se è "legittima" .Sai che cosa potresti trovare divertente; Programmazione. C# come "PostSharp", anche Java ha un framework. Ti consente di agganciare tutti i tipi di chiamate di funzione e quindi fare varie cose in quei punti. Potrebbe farti esplorare l'idea (ma non è una vera "sandbox"). Se vuoi conoscere il concetto di sicurezza (ad esempio esattamente come è fatto) controlla i livelli di trust di .NET (ma preparati a diventare molto annoiato: P). Spero che questo ti aiuti. –

2

Questo è molto dipendente da ciò che si desidera sandbox. Se si tratta di un sistema in piena regola con più interfacce/lingue disponibili, davvero non si vuole re-inventare la ruota, ma eseguire una macchina virtuale in VirtualBox, QEmu o some other alternative

In ogni caso, una sandbox IS, almeno a un certo livello una virtualizzazione del sistema che si suppone sia in esecuzione ...

Se occorrono applicazioni sandbox per un singolo linguaggio (interpretato), la modifica dell'interprete suona come un approccio ragionevole.

+0

'sandboxie' è il software che descrive esattamente ciò che avevo in mente. – claws

1

Ho scritto un overview of the ways of sandboxing within Linux l'altro giorno, che collega a molti riferimenti per le diverse tecniche. Metodi simili sono applicabili in altri sistemi operativi. Spero che sia d'aiuto - non sono riuscito a trovare molto documentato in modo completo.

+0

Grazie per questo link. – claws