Il modo migliore per proteggere il codice dell'applicazione del sito web

5

Sfondo

Ho un'applicazione web che ospito sul mio server. Ho clienti che usano l'applicazione così com'è, ma alcuni hanno chiesto se possono ospitare l'applicazione sul proprio server. Ciò consente loro di avere i propri URL piuttosto che i miei. L'applicazione fa parte solo del loro sito Web, quindi presumo che non sarà possibile per il mio server rispondere a una chiamata diretta al loro dominio ecc.

Per dare alcuni esempi, al momento ho URL come www.mydomain.com/profile , www.mydomain.com/index.php?option=someoption&view=someview&id=1 Ciò che i miei clienti desiderano è www.theirdomian.com/profile , www.theirdomian.com/index.php?option=someoption&view=someview&id=1 ecc.

Domanda

La mia domanda è: qual è il modo migliore per me di consentire loro di utilizzare i propri URL con la mia applicazione, senza fornire loro tutto il back-end del codice sorgente e dei database da installare sul loro server?

Un modo in cui pensavo sarebbe quello di creare un file router.php che si trova sul loro server. Il router quindi chiede al mio server di emettere l'html. Quando viene cliccato un collegamento sul sito dei clienti, il router riceve la richiesta e inoltra la richiesta per ottenere i dati dal mio server, ecc.

È un modo efficace per ottenere ciò che voglio, o è un modo fuori dal segno.

    
posta Gaz_Edge 12.12.2012 - 15:04
fonte

5 risposte

5

Ci sono alcune soluzioni tecniche a questo:

  • Invitali a indirizzare il proprio dominio sul server e configurare il server in modo che accetti tali richieste; questa è una semplice modifica del DNS, ma significa che il loro intero dominio ora viene eseguito sul tuo server.
  • Fagli impostare un proxy inverso sul loro lato che riscriva le richieste desiderate al tuo dominio. Apache, per esempio, ha moduli per questo (vedi link ), inclusi i filtri per riscrivere gli URL all'interno i documenti che servi; questo è un po 'una seccatura da configurare, e non funziona per tutto, ma potrebbe valere la pena dare un colpo: se funziona, l'applicazione verrà eseguita in modo trasparente sotto il loro dominio, servita attraverso i loro server, ma funzionante i tuoi server. L'idea di base è che il loro server corrisponda agli URL di richiesta su un determinato pattern, li inoltra al server e quindi modifica gli URL nella risposta ricevuta prima di inviarlo al client. (Fondamentalmente, questa è la tua soluzione router.php, solo a livello di server web, quindi con meno problemi.)
  • Invitali a mettere un iframe nella loro pagina, in cui mettono semplicemente la tua pagina. Se l'iframe ha larghezza e altezza al 100%, l'utente non vedrà la differenza (eccetto che la navigazione non cambia l'URL visibile). Questa è di gran lunga la soluzione più semplice.
  • Suddividi l'applicazione in un livello di servizio e un front-end. Consegna il front-end, ma mantieni il livello di servizio sul tuo server. In questo modo, possono solo utilizzare il tuo servizio attraverso il tuo server; il front-end senza il livello di servizio è relativamente inutile.
  • Installare e mantenere un server (fisico o virtuale) sulla propria rete che esegue l'applicazione; configurarlo in modo che non possano accedervi (password complesse, crittografia a disco intero, ecc.).

Tuttavia, il problema è sociale, non tecnico, e la soluzione sociale corretta è quella di creare un contratto adeguato (suggerimento: per questo è necessario un avvocato) che indichi chiaramente cosa possono e non possono fare con e consegnare il codice. Sì, è necessario fidarsi di loro per non violare il contratto in modo intelligente; ma questa è solo la via del mondo.

Se non puoi assolutamente fidarti di loro per non essere dei criminali, allora forse dovresti rifiutare l'offerta e fare soldi altrove.

    
risposta data 12.12.2012 - 21:27
fonte
1
  1. "www" è un sottodominio.
  2. foo.yourclient.com/profile < - se i collegamenti sono tutti relativi alla radice, non c'è nulla da configurare. Altrimenti, impostalo per BASE HREF.

La soluzione semplice consiste nel gestire sottodomini, ospitare il software personalmente e commercializzarlo come soluzione SaaS. L'unico ostacolo potrebbe essere scucire il codice su una sottodominio in modo che corrisponda al loro sito principale.

Oppure puoi prendere il percorso eccessivamente complesso in cui devi distribuire codice compilato / offuscato sui loro server, correggere eventuali problemi relativi alla configurazione dei loro server, coordinare con il personale IT per aggiornare il software, gestire i problemi dei database sui loro server , ecc.

Oppure puoi convertire il tuo software in un'API e creare un livello RESTful che i tuoi clienti possano utilizzare da un sito Web da loro creato e gestito.

    
risposta data 12.12.2012 - 16:50
fonte
0

Sarebbe un'opzione per loro di usare un sottodominio? Quindi:

Crea un sottodominio come: accounts.theirdomain.com e in DNS imposta l'IP del server. Accetti queste richieste e mostra i dati per i loro account.

Esempio: link

    
risposta data 12.12.2012 - 15:59
fonte
0

Potresti proteggere il tuo codice con uno strumento come Zend Guard, IonCube o qualcosa di simile. La maggior parte degli host che ho visto supporta l'uso di script protetti.

    
risposta data 12.12.2012 - 16:35
fonte
0

Distribuisci la tua applicazione in una macchina virtuale che gira su VMWare o VirtualBox o qualcosa di simile. Tutto ciò che i tuoi clienti vedono è un server virtuale nella loro rete. Tutto dentro è accessibile solo a te. Il tuo cliente deve essere in grado di supportare la virtualizzazione nel proprio ambiente IT, ma questo sta diventando più e & più comune in questi giorni.

Dovrai eseguire alcune configurazioni aggiuntive a seconda che supportino DHCP o indirizzi IP fissi, se insistono sul backup dei dati e se hanno bisogno di certificati SSL installati. Ma in entrambi i casi, non devono vedere nulla all'interno della VM.

    
risposta data 12.12.2012 - 16:50
fonte

Leggi altre domande sui tag