Como pode proteger uma aplicação contra entradas potencialmente perigosas do lado do cliente?
sobes.tech IA
Resposta da IA
Para proteger contra entradas perigosas:
-
Sanitização de dados: Limpar a entrada do utilizador de código potencialmente malicioso (HTML, JavaScript) antes de a exibir na página.
// Exemplo de sanitização com DOMPurify const cleanHtml = DOMPurify.sanitize(userInput); -
Escapamento de saída: Converter caracteres especiais nos seus equivalentes seguros antes de os mostrar na página para evitar a execução de código.
<!-- Exemplo de escapamento --> <p id="output"></p> <script> const userInput = "<script>alert('XSS')</script>"; document.getElementById('output').textContent = userInput; // Uso de textContent para uma saída segura </script> -
Política de Segurança de Conteúdo (CSP): Configurar o cabeçalho HTTP
Content-Security-Policypara limitar as fontes de conteúdo que podem ser carregadas e executadas pelo navegador.Content-Security-Policy: default-src 'self'; script-src 'self' https://cdnjs.cloudflare.com; style-src 'self' 'unsafe-inline'; -
Validação de dados: Verificar a entrada do utilizador para que cumpra o formato esperado, tipo de dados e comprimento, tanto no cliente como no servidor.
// Exemplo de validação no cliente if (inputField.value.length > 100) { // Erro de validação } -
Utilização de API e bibliotecas seguras: Preferir APIs integradas e bibliotecas confiáveis para trabalhar com DOM, processar dados e evitar o uso direto de
innerHTMLcom dados não sanitizados. -
Restrição de privilégios do utilizador: Aplicar o princípio de privilégios mínimos, de modo que a interface do utilizador não permita ações potencialmente perigosas sem a devida autorização.
-
HTTPS: Utilizar sempre HTTPS para encriptar os dados entre o cliente e o servidor.
-
Proteção contra CSRF (Cross-Site Request Forgery): Utilizar tokens CSRF para verificar a autenticidade das requisições enviadas pelo cliente.
// Exemplo de envio de token CSRF fetch('/api/update', { method: 'POST', headers: { 'X-CSRF-Token': csrfToken }, body: JSON.stringify(data) }); -
Flag HttpOnly para cookies: Configurar a flag HttpOnly para cookies de sessão para evitar acesso a eles via JavaScript.
-
Atualizações regulares de dependências: Manter as bibliotecas e frameworks utilizados atualizados para eliminar vulnerabilidades conhecidas.