2011-08-23 26 views
5

Ci sono alcuni siti Web (come questo one) che consentono agli utenti di inviare codice in lingue diverse e il sistema compila ed esegue casi di test su di essi. Come sviluppatore, sono curioso di sapere come lo fanno e come supportano più linguaggi (PHP, Python, C, .NET, javascript)?Come compilare ed eseguire il codice dinamicamente?

Non è possibile che il codice inviato possa essere dannoso compromettendo così l'ambiente su cui eseguono il codice?

Grazie.

risposta

0

Non riesco a parlare per quel particolare sito, ma di solito creano un ambiente limitato, chiamato sandbox. All'interno di questo ambiente possono ulteriormente limitare la disponibilità di funzioni ai programmi eseguiti lì. Questo potrebbe anche essere fatto bloccando alcune chiamate API all'interno della lingua.

Chroot su * nix è un modo per creare una sandbox.

+0

C'è un modo per creare una sandbox in un ambiente Windows? – Nick

+0

In cima alla mia testa posso pensare a una soluzione di macchina virtuale come VirtualBox o VM Ware e Google lo ha trovato come primo collegamento per sandboxing + windows - http://downloadsquad.switched.com/2009/03/11/five -sandboxing-apps-to your-finestre-proteggere-computer / – arunkumar

3

Sono curioso di sapere come lo fanno e come supportano più lingue (PHP, Python, C, .NET, javascript)?

Semplice: avere installato più installazioni di lingua e richiamare quello corretto per l'input specificato (che è ovviamente fornito dall'utente).

Non è possibile che il codice inviato possa essere dannoso mettendo a repentaglio l'ambiente su cui eseguono il codice?

Sì, certo. Tuttavia, esistono innumerevoli contromisure potenziali. Sandboxing il processo in alcune delle varie forme sviluppate nel corso degli anni, uccidendo il processo dopo un determinato periodo di tempo, impedendo l'accesso a funzionalità potenzialmente pericolose, ecc. Vedere Codepad's about page per ciò che un vero sito che fa questo ha da dire al riguardo.

Problemi correlati