Upload Seguro de Arquivos em Aplicação Backend com Spring Boot, ClamAV e JWT

Neste artigo, veremos como criar uma aplicação backend utilizando Spring Boot, ClamAV e JWT, que visa reforçar a segurança de upload de arquivos. Para tanto, serão descritos conceitos importantes, discussão sobre alguns tipos de ataque a sessões de upload de arquivo e demonstração didática da aplicação com segurança reforçada.

[ Hits: 8.501 ]

Por: André em 16/12/2020


Introdução



Upload de arquivos estão se tornando cada vez mais populares nas aplicações cotidianas. Quando criamos uma conta no banco, comumente temos que enviar uma foto que comprove nossa identidade, de modo que ela também pode conter um documento de identificação; se estamos fazendo parte de um processo seletivo, o envio do currículo por vezes é necessário, geralmente no formato pdf.

Entretanto, se o servidor que recebe estes arquivos não possuir controles de segurança contra ataques a sessões de upload de arquivos, o sistema ou seus usuários podem estar expostos a grandes riscos.

Diante disso, serão descritos neste artigo:
  • Introdução de conceitos.
  • Discussão sobre tipos de ataque de envio de arquivos.
  • Demonstração didática de uma aplicação backend utilizando SpringBoot, ClamAV e JWT, com segurança reforçada contra:
    • Upload de arquivos em sessões sem autorização.
    • Upload de arquivos grandes.
    • Upload de arquivos maliciosos.
    • Upload de arquivos com formatos não permitidos.

Observação: referências anotadas com * são escritas em inglês.

Conceitos importantes

Compreende-se como backend a representação de um servidor, cujo papel é fornecer os recursos para um agente cliente, chamado de frontend. É proveniente da arquitetura Cliente-Servidor. O papel do backend é fazer com que a complexidade das aplicações seja separada do agente cliente.

Compreende-se como ClamAV* um antivírus Open Source feito especialmente para o Linux, contando com versões para MacOS e Windows.

Compreende-se como autenticação a verificação de que uma entidade ou objeto são válidos. No contexto de usuários, consta a validação de que o usuário existe com as credenciais fornecidas no passo de autenticação.

Compreende-se como autorização a verificação de privilégios de uma entidade ou objeto autenticados.

Compreende-se como JWT um método de autenticação de duas partes definido no RFC 7519.

Conceitos sobre Segurança da Informação

Segundo as normas NBR 27001 e NBR 27002, sintetizadas no livro Gestão da Segurança da Informação (COELHO, Flávia; ARAÚJO, Luis; BEZERRA, Edson, 2014), compreende-se como:

Ativo: qualquer coisa que tenha valor para organização e para seus negócios. Exemplo: pessoas, servidores, computadores, software, etc.

Ameaça: qualquer evento que explore vulnerabilidades.

Vulnerabilidade: qualquer fraqueza que pode ser explorada e comprometer a segurança de sistemas ou informações. Exemplo:
  • Risco: combinação da probabilidade (chance da ameaça se concretizar) de um evento ocorrer e de suas consequências para a organização.
  • Ataque: qualquer ação que comprometa a segurança de uma organização.
  • Modelo de ataque: *Interrupção :: quando um ativo fica indisponível ou é destruído. Exemplo: ataque distribuído de negação de serviço (DDoS).
Linux: Upload Seguro de Arquivos em Aplicação Backend com Spring Boot, ClamAV e JWT

*Interceptação: quando um ativo é acessado por um agente não autorizado, de modo que não há modificação. Exemplo: Spoofing.
Linux: Upload Seguro de Arquivos em Aplicação Backend com Spring Boot, ClamAV e JWT

*Modificação: quando um ativo é acessado por um agente não autorizado, de modo que há modificação. Exemplo: Dns hijacking; redirecionamento de DNS.
Linux: Upload Seguro de Arquivos em Aplicação Backend com Spring Boot, ClamAV e JWT

*Fabricação: quando um ativo tem algum dado falsificado inserido. Exemplo: crackear um software pago.

Forma de ataque:
Linux: Upload Seguro de Arquivos em Aplicação Backend com Spring Boot, ClamAV e JWT

*Ativa: quando ocorre inserção ou deleção de dados em um ativo. Exemplo: ataque de negação de serviço.

*Passiva: quando ocorre somente escuta dos dados de um ativo, sem modificação. Exemplo: ataques de keylogger.

*Incidente de segurança: qualquer evento contrário à segurança. Exemplo: serviço de e-mail atacado por negação de serviço.

Controles de segurança: são medidas ou um conjunto de medidas adotadas para tratar vulnerabilidades e reduzir riscos de incidentes de segurança da informação.

A seguir, veremos alguns tipos de ataques e suas classificações.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Tipos de ataque / Testes
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Gerando Números Aleatórios

Entendendo POO (História e conceitos)

As novidades do Java 1.5

Programação orientada a objetos e o Java (parte 5)

Java no Ubuntu 12.04 - Instalação à moda antiga

  
Comentários
[1] Comentário enviado por maurixnovatrento em 16/12/2020 - 19:13h


Muito Bom.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts