Como armazenar documentos do cliente enviados com segurança no webapplication

5

Uma pequena empresa sem nenhuma habilidade de TI deseja executar um aplicativo da Web em que os clientes possam inserir vários dados e fazer o upload de PDFs. Os documentos consideram as especificações do produto e devem ser mantidos em segurança.

Eles têm um cara de TI que quer vender um aplicativo PHP para a tarefa. Ele quer armazenar os documentos diretamente no servidor da Web e sincronizá-los com o Google Drive, que eles usam para os documentos internos.

  • Há algum problema em armazenar os documentos no servidor ou isso cria um possível problema de segurança? Eu tenho a sensação de que eles não devem manter os arquivos no servidor após o upload, e que eles devem tirá-los do servidor da Web e em um domínio mais protegido logo após o envio ter ocorrido?

  • Não há problema em sincronizar esses arquivos confidenciais com uma conta do Google Apps for Business? As credenciais do Google devem ser conhecidas pelo aplicativo da web. Isso representa outro risco de segurança?

  • Você aconselharia contra o uso de PHP neste cenário?

  • Existe uma solução melhor para isso?

Muito obrigado! : -)

    
por Nordic 05.06.2016 / 09:29
fonte

3 respostas

2

Primeiro, você não deveria estar pensando em segurança em termos de um binário 'ok' ou 'not ok'. Cada escolha que você faz tem implicações de segurança que você quer entender.

Em relação a manter os arquivos na máquina do servidor da web, isso não é um problema típico para a maioria dos aplicativos comerciais. Você só precisa ter certeza de que eles não estão acessíveis através do servidor web. Armazená-los fora dos diretórios de documentos do servidor da Web é uma estratégia típica. E, claro, não negligencie a segurança no próprio servidor.

Colocar os arquivos em uma pasta do Google Drive deve ser bom. Outra opção é periodicamente rsync até a rede local. Mas isso realmente depende do que a empresa precisa. Outra opção é fornecer à empresa um sistema baseado na Web pelo qual os arquivos são acessados e acabar com a replicação de arquivos.

O PHP está bem. Raramente a escolha da linguagem é um fator importante. É muito mais provável que você encontre problemas de segurança no próprio código do aplicativo. Apenas mantenha o PHP atualizado. Mas isso é verdade para todas as linguagens do lado do servidor.

    
por 05.06.2016 / 09:59
fonte
2

Existem vários problemas potenciais aqui. Não há detalhes suficientes sobre a solução técnica para dizer com certeza, mas parece uma abordagem não distorcida.

Em vez de criticar a seleção de tecnologia, devemos estabelecer os critérios de segurança necessários para o aplicativo e perguntar como a solução alcança cada ponto.

por exemplo.

  • Os documentos devem ser armazenados criptografados e, em caso afirmativo, qual o nível de criptografia necessário?

  • Quem deve ter permissão para acessar os documentos e como o acesso não autorizado é evitado?

  • Por quanto tempo os documentos devem ser armazenados e como podemos garantir que eles sejam descartados corretamente.

No caso de um site php salvar os documentos em uma pasta e sincronizar com o google você parece cair em todos, se estas perguntas.

O documento não está criptografado. Se o servidor estiver comprometido, o invasor poderá ler os documentos.

Sincronizar com o Google Drive certamente requer alguma complexidade extra para definir as configurações de autorização por documento. Além disso, como as credenciais da unidade do Google são mantidas em segurança? Se eu pegar o código de upload, também posso baixar todos os documentos.

Por fim, a natureza de solicitação / resposta de um site não se presta à natureza de tarefa programada de excluir documentos antigos.

Tenha cuidado com as respostas do estilo "Mas não precisamos de ...".

--- editar

A resposta do GrandmasterB me levou a expandir minhas visões sobre o armazenamento dos arquivos no servidor da Web.

Minha opinião é que essa é uma prática muito ruim em geral e pode levar a vários problemas de segurança.

1: limpando o diretório.

Se você nunca realmente usar o diretório em si, em vez disso, sincronizar o drive do google ou qualquer outra coisa; então o diretório webserver pode ser esquecido como apenas uma etapa técnica do processo de obter o arquivo para o seu pc. Você acaba com um diretório de arquivos esquecidos pendurados na internet em algum lugar.

2: backups

Se você fizer backup do seu servidor da web, é provável que você também esteja fazendo o backup do seu diretório de arquivos. Mais uma vez, isso leva a uma cópia ou cópias esquecidas dos dados flutuando ao redor

3: web farms e terceiros

o modo comum de executar sites atualmente é ter mais de um servidor funcionando por vez. mesmo que seja apenas uma hot swap, agora você tem DOIS diretórios de arquivos para gerenciar e sincronizar. quer girar mais caixas para lidar com a carga? Alterar provedor? Atualizar? Cada um significa mais lugares em que os dados de seus clientes são armazenados

Além disso, quem hospeda seus próprios sites nos dias de hoje? Seu website provavelmente está "na nuvem" ou com um terceiro. Embora isso tenha suas próprias preocupações com a segurança, você não deseja vincular "as necessidades de segurança do código do meu site" às "necessidades de dados de segurança dos clientes", se puder ajudar.

Em resumo, minha opinião é que é mais provável que você perca o controle de seus dados e tenha um 'omg interno que tivemos que fazer uma revisão de segurança para um cliente e eles estão loucos por termos 10 cópias de seu documento secreto' a menos que você tem um único repositório de documentos de algum tipo, separado de outras preocupações

    
por 05.06.2016 / 09:45
fonte
0

Obrigado por todo o feedback fornecido!

Eu lhes darei o seguinte conselho:

Certifique-se de que o programador siga as diretrizes de codificação segura do OWASP.

Certifique-se de que as senhas sejam armazenadas criptografadas no banco de dados.

Não salve os documentos no servidor da web. Sincronize-os de uma só vez com o Google ou o Spideroak, se precisarem ser criptografados. Se a sincronização falhar, a transação inteira falhará.

Tenha um Firewall do aplicativo da Web na frente da webapp.

Pague por uma auditoria de scurity profissional e teste de penetração.

Mais alguma coisa? : -)

    
por 06.06.2016 / 09:08
fonte