WebSecurity e a sua importância
Tags: security, webdev, development, cybersecurity
Published: 2024-01-17 18:40:43

# 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.