Sobes.tech
Middle

Come puoi proteggere un'applicazione da input potenzialmente pericolosi dal lato client?

sobes.tech AI

Risposta dell'AI

Per proteggersi da input pericolosi:

  1. Sanificazione dei dati: Pulire l'input dell'utente da codice potenzialmente dannoso (HTML, JavaScript) prima di visualizzarlo sulla pagina.

    // Esempio di sanificazione con DOMPurify
    const cleanHtml = DOMPurify.sanitize(userInput);
    
  2. Escaping dell'output: Convertire i caratteri speciali nelle loro controparti sicure prima di mostrarli sulla pagina per prevenire l'esecuzione di codice.

    <!-- Esempio di escaping -->
    <p id="output"></p>
    <script>
      const userInput = "<script>alert('XSS')</script>";
      document.getElementById('output').textContent = userInput; // Uso di textContent per un output sicuro
    </script>
    
  3. Politica di sicurezza dei contenuti (CSP): Configurare l'intestazione HTTP Content-Security-Policy per limitare le fonti di contenuto che possono essere caricate ed eseguite dal browser.

    Content-Security-Policy: default-src 'self'; script-src 'self' https://cdnjs.cloudflare.com; style-src 'self' 'unsafe-inline';
    
  4. Validazione dei dati: Verificare l'input dell'utente per conformarsi al formato atteso, al tipo di dati e alla lunghezza, sia lato client che lato server.

    // Esempio di validazione lato client
    if (inputField.value.length > 100) {
      // Errore di validazione
    }
    
  5. Utilizzo di API e librerie sicure: Preferire API integrate e librerie affidabili per lavorare con il DOM, elaborare dati e prevenire l'uso diretto di innerHTML con dati non sanitizzati.

  6. Limitare i permessi dell'utente: Applicare il principio dei privilegi minimi, in modo che l'interfaccia utente non consenta di eseguire azioni potenzialmente pericolose senza autorizzazione appropriata.

  7. HTTPS: Utilizzare sempre HTTPS per cifrare i dati tra client e server.

  8. Protezione da CSRF (Cross-Site Request Forgery): Utilizzare token CSRF per verificare l'autenticità delle richieste inviate dal client.

    // Esempio di invio di un token CSRF
    fetch('/api/update', {
      method: 'POST',
      headers: {
        'X-CSRF-Token': csrfToken
      },
      body: JSON.stringify(data)
    });
    
  9. Flag HttpOnly per i cookie: Impostare il flag HttpOnly per i cookie di sessione per impedire l'accesso tramite JavaScript.

  10. Aggiornamenti regolari delle dipendenze: Mantenere aggiornate le librerie e i framework utilizzati per eliminare vulnerabilità note.