Melhor maneira de proteger o código do aplicativo do site

5

Antecedentes

Eu tenho um aplicativo da web que hospedo em meu próprio servidor. Tenho clientes que usam o aplicativo como estão, mas alguns perguntaram se podem hospedar o aplicativo em seu próprio servidor. Isso permite que eles tenham seus próprios URLs ao invés do meu. O aplicativo só faz parte de seu site, então estou assumindo que não será possível para o meu servidor responder a uma chamada direta para seu domínio, etc.

Para dar alguns exemplos, atualmente tenho URLs como www.mydomain.com/profile , www.mydomain.com/index.php?option=someoption&view=someview&id=1 O que meus clientes querem é www.theirdomian.com/profile , www.theirdomian.com/index.php?option=someoption&view=someview&id=1 etc

Pergunta

A minha pergunta é: qual é a melhor maneira de permitir que eles usem seus próprios URLs com meu aplicativo, sem fornecer a eles todo o código-fonte de back-end e bancos de dados a serem instalados em seus servidores?

Uma maneira que pensei seria criar um arquivo router.php que fica em seu servidor. O roteador então pergunta ao meu servidor para gerar o html. Quando um link é clicado no site do cliente, o roteador recebe a solicitação e encaminha a solicitação para obter os dados do meu servidor, etc.

Esta é uma maneira efetiva de alcançar o que eu quero, ou está fora de questão?

    
por Gaz_Edge 12.12.2012 / 15:04
fonte

5 respostas

5

Existem algumas soluções técnicas para isso:

  • Peça-lhes que apontem o domínio para o servidor e configure o servidor para aceitar tais solicitações; essa é uma alteração simples de DNS, mas significa que o domínio inteiro agora é executado em seu servidor.
  • Peça-lhes que definam um proxy reverso que reescreva as solicitações desejadas no seu domínio. O Apache, por exemplo, tem módulos para isso (veja link ), incluindo filtros para reescrever URLs dentro os documentos que você atende; isso é meio chato de configurar, e não funciona para tudo, mas pode valer a pena dar uma chance - se funcionar, seu aplicativo será executado de maneira transparente sob o domínio deles, servido por meio de seus servidores, mas funcionando seus próprios servidores. A ideia básica é que o servidor corresponda as URLs de solicitação a um determinado padrão, encaminha-as para o servidor e, em seguida, altera as URLs na resposta recebida antes de enviá-las de volta ao cliente. (Basicamente, esta é a sua solução router.php, apenas no nível do servidor da Web, portanto, com menos problemas).
  • Peça-lhes para colocarem um iframe na sua página, onde apenas colocam a sua página. Se o iframe tiver 100% de largura e altura, o usuário não verá a diferença (exceto que a navegação não altera o URL visível). Esta é de longe a solução mais fácil.
  • Divida seu aplicativo em uma camada de serviço e um front-end. Entregue o front end, mas mantenha a camada de serviço no seu servidor. Desta forma, eles só podem fazer uso do seu serviço através do seu servidor; o front-end sem a camada de serviço é relativamente inútil.
  • Instale e mantenha um servidor (físico ou virtual) em sua rede que executa seu aplicativo; configurá-lo para que eles não possam acessá-lo (senhas strongs, criptografia de disco inteiro, etc.).
No entanto, o problema é social, não técnico, e a solução social apropriada é estabelecer um contrato adequado (dica: você precisa de um advogado para isso) que declara claramente o que pode ou não fazer com e entregue o código. Sim, você precisa confiar neles para não violar o contrato de maneira inteligente; mas isso é apenas o caminho do mundo.

Se você absolutamente não pode confiar que eles não sejam criminosos, então talvez você deva recusar a oferta e fazer seu dinheiro em outro lugar.

    
por 12.12.2012 / 21:27
fonte
1
  1. "www" é um subdomínio.
  2. foo.yourclient.com/profile < - se os links forem todos relativos à raiz, não há nada a configurar. Caso contrário, defina isso para o BASE HREF.

A solução simples é gerenciar subdomínios, hospedar o software e comercializá-lo como uma solução SaaS. O único obstáculo pode ser a remoção do código em uma base de subdomínio para corresponder ao site principal deles.

Ou você pode seguir o caminho excessivamente complexo em que precisa implantar código ofuscado / compilado em seus servidores, corrigir problemas com a configuração dos servidores, coordenar com o pessoal de TI para atualizar o software, lidar com problemas de banco de dados em seus servidores , etc.

Ou você pode converter seu software em uma API e criar uma camada RESTful que seus clientes possam usar em um site que eles criam e mantêm.

    
por 12.12.2012 / 16:50
fonte
0

Seria uma opção para eles usarem um subdomínio? Então:

Eles criam um subdomínio como: accounts.theirdomain.com e, no DNS, definem o IP do seu servidor. Você aceita essas solicitações e mostra os dados das contas deles.

Exemplo: link

    
por 12.12.2012 / 15:59
fonte
0

Você pode proteger seu código com uma ferramenta como o Zend Guard, o IonCube ou algo semelhante. A maioria dos hosts que eu vi suportam o uso de scripts protegidos.

    
por 12.12.2012 / 16:35
fonte
0

Distribua sua aplicação em uma máquina virtual que roda em VMWare ou VirtualBox ou algo semelhante. Tudo o que o seu cliente vê é um servidor virtual na sua rede. Tudo dentro só é acessível para você. Seu cliente precisa ser capaz de suportar a virtualização em seu ambiente de TI, mas isso está se tornando mais & mais comum nos dias de hoje.

Você terá que fazer alguma configuração extra, dependendo se eles suportam endereços IP fixos ou DHCP, se eles insistem em backups de dados e se eles precisam de certificados SSL instalados. Mas de qualquer forma, eles não precisam ver nada dentro da VM.

    
por 12.12.2012 / 16:50
fonte