Distribuisci il progetto PHP senza dare via il codice sorgente?

2

Sto lavorando allo sviluppo di una gamma di soluzioni software basate sul web. Ma il problema è che per alcuni client è necessario distribuire le applicazioni nella loro intranet locale. In una situazione del genere devo stare con Java come linguaggio di sviluppo, dato che non posso dare via il codice sorgente del progetto.

Ora, per attingere a più consumatori, mettiamo queste soluzioni online. Considerando ora il fatto che l'hosting Java è più costoso di PHP, non ci resta altra scelta che sviluppare nuovamente l'intera soluzione in PHP. Così finiamo per avere due versioni della stessa soluzione per la manutenzione e l'aggiornamento su piattaforme diverse.

Quindi qualsiasi punto ci può indicare una buona soluzione in cui possiamo avere la soluzione online e avere anche una versione distribuibile dell'applicazione in cui possiamo spedire l'applicazione senza il suo codice sorgente e allo stesso tempo abbiamo anche bisogno dell'applicazione essere redditizio dal punto di vista dell'hosting?

    
posta svg 21.05.2013 - 11:52
fonte

6 risposte

7

Hai considerato un'appliance della macchina virtuale? È così che GitHub lo fa per GitHub Enterprise, e come Microsoft lo fa per il loro software beta (in particolare beta della fase iniziale).

Questo offre alcuni vantaggi diversi:

  1. Limita l'accesso al codice da parte del client. Nel caso di GitHub, ciò significa che i loro componenti principali non open source rimangono fuori dalla vista dei clienti e non c'è alcun problema con le NDA o con ciò che accade. L'appliance viene distribuita, tutto viene eseguito automaticamente ed è tutto accessibile e gestito tramite le interfacce Web.
  2. Garantisce un ambiente di distribuzione stabile e controllato. Niente di più di un problema che implementare sul server di qualcun altro, solo per scoprire che stanno eseguendo una vecchia versione di PHP e non possono eseguire l'aggiornamento, o peggio , stanno eseguendo una vecchia versione di Windows Server che non consente affatto PHP. Distribuisci una macchina virtuale e hai pieno controllo su quell'ambiente.
  3. Sandbox l'installazione. Questo va di pari passo con il n. 2, ma in modo leggermente diverso. I beta di Microsoft sono un buon esempio del caso d'uso per questo. Il software beta è noto per essere soggetto a problemi di stabilità (è beta, vai a capire). Fornirlo in una macchina virtuale consente di bloccarsi e bruciare senza eliminare l'intero sistema dell'utente. Lo stesso vale per l'inverso - mantenere la tua applicazione in una macchina virtuale lo protegge da un altro pezzo di software che si blocca e brucia (ovviamente, se il sistema host nel suo complesso va giù, è un'altra questione, ma altre cose che funzionano sul la macchina host avrà un impatto minimo sul tuo software).
risposta data 21.05.2013 - 18:38
fonte
4

Perché teme di lasciare che i tuoi clienti guardino il tuo codice sorgente?

  • Quando temi di rubare il tuo codice e rivenderlo, puoi proteggerlo facilmente attraverso il contratto di licenza.
  • Quando temi di poter apportare semplici modifiche al supporto e quindi di escluderti dalle attività di consulenza e supporto, aggiungi una clausola al contratto che non deve apportare alcuna modifica e quando lo fanno non otterranno ulteriore supporto da parte tua.
  • Hai paura che possano rubare i tuoi "segreti commerciali"? Quando il tuo software sta davvero facendo qualcosa che è così rivoluzionario che altri non possono replicarlo senza vedere il tuo codice sorgente, brevettalo. Quando non vale la pena brevettare, molto probabilmente non vale nemmeno la pena di rubare.
  • O hai paura che la qualità del tuo codice non sia all'altezza delle aspettative dei clienti? Migliorare la qualità del codice dovrebbe essere comunque nel tuo interesse, indipendentemente da chi lo vede.

D'altra parte, dare al cliente il tuo codice sorgente (anche con pesanti catene di licenze) ha anche dei vantaggi che puoi usare come punto vendita:

  • Mostra al cliente che ti fidi di loro
  • Mostra al cliente che può fidarsi di te che non ci sono backdoor nascoste nel tuo software
  • Semplifica la risoluzione dei problemi da parte dei clienti prima di contattarti, fornendoti segnalazioni di bug più significative
risposta data 28.05.2013 - 09:48
fonte
1

Per i tuoi clienti online hai guardato il modello SAAS?

Ciò ti consentirebbe di ospitare tutti i tuoi client Web sui tuoi server.

    
risposta data 21.05.2013 - 19:12
fonte
1

Ho esperienza nell'implementare una soluzione simile, ospitando in-house e in locale. Per l'hosting in-house, naturalmente, è necessario eseguire il codice così com'è, e per la distribuzione locale ho utilizzato prodotti di codifica PHP ( ionCube e Zend Guard ).

Sono entrambi praticamente equivalenti. Per questo prodotto siamo passati a Zend Guard solo perché abbiamo standardizzato la distribuzione in locale su Zend Server, che viene fornito con il supporto per il caricatore Zend Guard, pronto all'uso.

Alcune riflessioni su queste soluzioni:

  • Devi installare l'estensione loader sulla macchina su cui stai ospitando, quindi questo potrebbe essere un rompicapo per scenari di hosting a basso costo in cui non hai alcun controllo sul server.
  • Il supporto della versione di PHP è sempre in ritardo. Zend Guard solo poche settimane fa ha fornito una versione che supporta 5.4 e 5.5 è proprio dietro l'angolo.
  • Ci sono bug ogni tanto specifici per la versione codificata, specialmente quando si usano caratteristiche esoteriche (ad esempio su PHP 5.2 non è possibile usare reflection per recuperare i commenti di docblock in zend guard). Non è un grosso problema, ma è qualcosa di cui essere a conoscenza.
  • Ci sono problemi di compatibilità con alcune altre estensioni, in particolare xdebug. Di nuovo, non necessariamente un grosso problema ma qualcosa di cui essere a conoscenza.
  • Non ho alcun impatto sulle prestazioni che potrei dire.
  • Queste soluzioni hanno il supporto integrato per le licenze utilizzando le chiavi di licenza. Dovresti controllare le abilità se sei interessato a questo tipo di cose.
risposta data 28.05.2013 - 10:05
fonte
0

La mia azienda crea un prodotto: un'appliance di rete con software PHP crittografato con SourceGuardian. I nostri clienti non sono realmente interessati all'hacking, quindi non siamo preoccupati che li decifrano. Per il cliente medio, questo potrebbe funzionare per voi - ma devono utilizzare un ambiente di hosting che consenta l'esecuzione del servizio di protezione del codice sorgente (o che sia già incluso nel servizio di hosting - molti di essi supportano IonCube).

    
risposta data 28.05.2013 - 08:13
fonte
0

Ci sono molti modi per proteggere il tuo codice, anche se nessuno di questi può virtualmente renderti a prova di pallottola, ma fanno un ottimo lavoro.

Nella mia esperienza, sviluppiamo e distribuiamo diverse applicazioni Web scritte in PHP per i clienti finali, utilizziamo i seguenti due prodotti per proteggere il nostro lavoro:

  1. Cifriamo il nostro codice utilizzando l'Encoder PHP IonCube - link
  2. Usiamo il componente aggiuntivo per le licenze di WHMCS - link

Usando i due prodotti sopra puoi fare il seguente

  • Proteggi e autorizza il tuo codice prima della distribuzione.
  • Il tempo limita la tua applicazione web per proteggere le copie di valutazione
  • Proteggi i tuoi script contro l'uso non autorizzato bloccando su macchine specifiche
  • Limita l'accesso a determinati IP, dominio e directory.

Spero che questo aiuti.

    
risposta data 04.06.2013 - 23:30
fonte

Leggi altre domande sui tag