Compila ed esegui richieste di giudice online sullo stesso server o su un server separato?

-1

Ho intenzione di creare una piattaforma per giudici online.

Ho cercato per alcune piattaforme online di giudici su Internet per riferimento (intendo le piattaforme che hanno il codice sorgente disponibile e possono essere ospitate le mie altre, non qualcosa come Codeforces). Molti di loro hanno un'interfaccia web scritta in PHP (o qualcos'altro).

Quando gli utenti presentano le soluzioni dei problemi, le presentazioni vengono inviate a un altro programma (un programma lato server scritto in C ++, Java o altro), che è ospitato sullo stesso server o meno, attraverso il socket.

Qual è il vantaggio di questo design? Perché non farlo tramite PHP, con funzioni come exec() ? Quale disegno apprezzeresti di più?

    
posta qpalz 21.06.2013 - 10:42
fonte

1 risposta

0

Può essere fatto per sicurezza e per rilevare o prevenire imbrogli. Si chiama sandboxing .

Il tuo server principale ha probabilmente molte cose importanti su di esso: il tuo codice sorgente, il tuo database, l'accesso alle funzioni di posta elettronica, ecc. Al exec di codice arbitrario da un utente non fidato su quel server sta chiedendo problemi. Anche se hai disinfettato il loro codice (che è un grande se, poiché non puoi determinare esattamente come si comporterà un programma senza eseguirlo), potrebbe esserci un bug PHP che possono sfruttare per assumere il controllo del server.

Da lì possono fare qualsiasi cosa, dal download delle risposte ai problemi fino al furto di dati della carta di credito (se si raccolgono i pagamenti), cancellando il database o inviando spam.

Se sandbox ed esegui submission su un altro server, puoi limitare le autorizzazioni di quel server disattivando moduli come curl, mysql e sendmail. Puoi limitarlo alle funzioni più basilari di cui gli utenti avranno bisogno per risolvere i problemi di codifica.

    
risposta data 22.06.2013 - 00:09
fonte

Leggi altre domande sui tag