DEV Community

Hanniel Vieira
Hanniel Vieira

Posted on

WebSecurity e a sua importância

Definição de websecurity

Antes de começarmos, vamos definir o que é WebSecurity. WebSecurity refere-se à prática de proteger websites e aplicações web contra várias ameaças e vulnerabilidades que podem comprometer a integridade, confidencialidade e disponibilidade. Implantando medidas para proteger contra acessos não autorizados, violações de dados, malware e outros ataques cibernéticos.

Principais ataques:

SQL Injection (Injeção de SQL)

Nesse tipo de ataque, os invasores inserem código SQL em campos de entrada de um site para manipular o banco de dados, acessar, modificar ou excluir dados não autorizados.

Cross-Site Scripting (XSS)

Os ataques de XSS ocorrem quando os invasores inserem scripts em páginas web, que são então executados nos navegadores dos usuários, permitindo o roubo de informações, cookies ou controle da sessão.

Cross-Site Request Forgery (CSRF)

Nesse ataque, os invasores enganam os usuários para que executem ações indesejadas em sites nos quais estão autenticados, explorando a confiança do site no usuário para realizar ações maliciosas em nome deles.

Injeção de Código (Code Injection)

Esse tipo de ataque envolve a inserção de código nos sistemas da web, incluindo linguagens de script (PHP e JavaScript como exemplo) ou comandos de sistema, aproveitando brechas de segurança para executar comandos arbitrários.

Distributed Denial Of Service (DDoS)

Os ataques DDoS visam sobrecarregar um servidor ou sistema com um grande volume de tráfego falso, tornando-o inacessível para usuários legítimos, causando a interrupção do serviço.

Man-in-the-Middle (MitM)

Nesse tipo de ataque, um invasor intercepta e monitora a comunicação entre duas partes sem o conhecimento delas, possibilitando a leitura, modificação ou até mesmo inserção de dados na comunicação.

Phising

Embora não seja estritamente um ataque técnico, o phishing envolve enganar os usuários por meio de e-mails, mensagens ou sites falsos que se passam por legítimos para obter informações confidenciais, como senhas, números de cartão de crédito, etc.

Clickjacking

Esses ataques ocultam elementos enganosos em páginas da web, fazendo com que os usuários cliquem em links ou botões sem o seu consentimento, direcionando-os para ações não intencionadas.

Brute Force Attack (Ataque de Força Bruta)

Nesse tipo de ataque, os invasores tentam adivinhar combinações de login e senha repetidamente para acessar sistemas protegidos.

Eavesdropping (Espionagem)

Os invasores podem interceptar e monitorar a comunicação entre um cliente e um servidor para obter informações sensíveis, como dados de login, se não estiver criptografada.

Como se defender de ataques:

Aqui estão alguns exemplos de como se defender de alguns ataques, elas podem ser melhoradas e alteradas de acordo com o projeto e o perfil da empresa.

Como se defender de um ataque SQL Injection

  • Usar parâmetros e Consultas Parametrizadas:  Utilizar consultas parametrizadas em vez de concatenar strings para formar consultas SQL pode prevenir a injeção de SQL.
  • Validação e Sanitização de Dados de Entrada:   Validar e sanitizar rigorosamente os dados de entrada para garantir que apenas os tipos de dados esperados sejam aceitos.
  • Utilizar Stored Procedures: Armazenar procedimentos no banco de dados que são invocados pela aplicação, limitando a exposição direta das consultas ao banco de dados.

Como se defender de um Cross-Site Scripting (XSS)

  • Codificação Adequada de Dados: Implementar a codificação correta(escaping) para dados dinâmicos inseridos na página da web, impedindo a execução de scripts maliciosos.
  • Utilização de Headers de Segurança: Configurar e utilizar headers de segurança como Content Security Policy (CSP) para restringir a execução de scripts em uma página.
  • Validação e Sanitização de Dados: Realizar validação e sanitização de todos os dados de entrada para evitar a inserção de scripts maliciosos.

Como se defender de um Cross-Site Request Forgery (CSRF)

  • Utilizar Tokens Anti-CSRF: Implementar tokens de solicitação aleatórios e únicos para cada solicitação, verificando-os no servidor para garantir a legitimidade da solicitação.
  • Headers Personalizados: Utilizar headers HTTP personalizados ou tokens específicos no cabeçalho das requisições para prevenir solicitações não autorizadas.

Como se defender de Injeção de Código (Code Injection)

  • Validação de Entrada de Dados: Realizar validação estrita e sanitização de todas as entradas de dados, restringindo e filtrando caracteres especiais e inesperados que possam ser usados para injetar código.
  • Escape de Caracteres Especiais: Utilizar funções ou métodos específicos para escapar (escapar significa tornar inofensivo) caracteres especiais, impedindo que sejam interpretados como parte do código.
  • Uso de Parâmetros Seguros: Ao trabalhar com linguagens que interagem com bancos de dados, usar consultas parametrizadas ou prepared statements para evitar a concatenação de strings que possam ser interpretadas como código.
  • Uso de whitelists: Em vez de listas negras(blacklists) que especificam o que não deve ser aceito, utilizar whitelists(listas brancas) para permitir apenas entradas específicas que são consideradas seguras.

Como se defender de um Contra Distributed Denial Of Service (DDoS)

  • Usar Serviços de Proteção DDoS: Contratar serviços especializados que oferecem proteção contra ataques DDoS para filtrar e mitigar.
  • Usar um Firewall para Gerenciar Conexões: Além de atuar como uma barreira de proteção contra conteúdos maliciosos, um Firewall também faz o controle e gerência todas as solicitações de conexão a um site.
  • Utilizar um Sistema reCAPTCHA: Um Sistema reCAPTCHA irá verificar se quem está enviando dados para um determinado formulário é realmente uma pessoa de verdade.

Como se defender de Phishing

  • Educação do Usuário: Treinar e educar os usuários para identificar e evitar links, e-mails ou sites suspeitos e sempre verificar a autenticidade.
  • Filtros de Email e Anti-Phishing: Utilizar filtros de e-mail e software anti-phishing para bloquear e identificar tentativas de phishing.

Como se defender de um Brute Force Attack

  • Política de Bloqueio de Conta: Implemente uma política de bloqueio de conta após um número específico de tentativas de login falhadas. Isso limita a eficácia de ataques de força bruta, pois um atacante teria que lidar com bloqueios temporários após várias tentativas malsucedidas.
  • Bloqueio de Endereços IP Suspeitos: Implemente uma lista negra de endereços IP que exibiram comportamento suspeito ou fizeram um número excessivo de tentativas de login. Esses endereços podem ser temporariamente bloqueados.
  • Autenticação de Dois Fatores: A autenticação de dois fatores é importante porque mesmo que os dados sejam comprometidos o invasor não terá sucesso no login.

Como se defender de um Eavesdropping

  • Criptografia de Ponta a Ponta (End-to-End Encryption): Use protocolos de criptografia robustos para garantir que os dados sejam criptografados no ponto de origem e só descriptografados no ponto de destino.
  • Protocolos Seguros (HTTPS, TLS/SSL): Sempre use HTTPS para comunicações web, especialmente ao transmitir informações sensíveis. Isso ajuda a proteger contra-ataques de interceptação ao criptografar a comunicação entre o navegador do usuário e o servidor.

Como prosseguir nos estudos de websecurity

Para aprimorar seus conceitos de websecurity e proteger melhor os seus projetos continue os estudos em: Fundamentos de Rede e Protocolos Web, Aprofundamento em Criptografia, ****Testes de Segurança e Penetração, Arquitetura de segurança, Tecnologias que facilitam a implementações entre vários outros.

Top comments (1)

Collapse
 
stherzada profile image
Sther

ótimo conteúdo e abordagem