Bom dia meus amigos.
Estou respondendo esse tópico no lugar da Caroline.
Li as respostas dela aqui e para mim elas estão bem claras.
Vou reforçar:
Quando o cliente exige que o sistema fique em sua rede interna, enviamos a imagem de uma máquina virtual VMWare com Linux instalado, com apache, php e o banco de dados postgres ou mysql + ambiente de produção do Scriptcase + os aplicativos do sistema.
No linux dessa máquina virtual, não tem ftp instalado nem o samba. O Cliente não tem acesso SSH, nem ftp, nem via rede local.
No banco de dados é criado um usuário para acesso ao banco com permissão apenas de leitura. Para o cliente executar seus backups.
O Cliente sobe essa imagem da máquina virtual em seu servidor (geralmente hoje os servidores já vem virtualizados).
Isso significa que:
Os fontes ficam no HD do cliente? Sim, mas dentro da Máquina virtual a qual o cliente não tem acesso.
O Cliente tem acesso aos dados do Banco de Dados? Sim, mas apenas consegue fazer selects, não consegue alterar tabelas, fazer inserções nem deleções por fora do sistema.
É Seguro? Nada é 100% seguro, mas nos 4 anos que usamos esse recurso nunca tivemos problema.
Em nosso contrato se o cliente ousar a invadir a máquina virtual e alterar o código fonte do Scriptcase, ele pode sofre penalidades jurídicas.
Se caso o cliente consiga alterar o código fonte para não mais acessar a validação e liberação do uso do sistema, saberemos pois em nossos logs quando o cliente fica mais de 3 dias úteis sem realizar o registro já alertamos a ele das cláusulas contratuais, bloqueamos qualquer atualização para esse cnpj e já entramos entramos em contato com nosso departamento jurídico (Isso nunca aconteceu).
Quando a performance de ter uma conexão externa(quando falo conexão é conexão scriptcase), é praticamente transparente.
Essa foi a solução que adotei em minha empresa e esta funcionando bem até hoje, apesar de ser uma solução que não gosto de adotar, por isso o cliente que exigir o sistema na sua rede local vai pagar bem mais caro por isso.