1. SQL Injection (SQLi)
La vulnerabilità SQL Injection si verifica quando un'applicazione web inserisce input utente non validati direttamente all'interno di una query SQL dinamica. Un utente malintenzionato può inserire comandi SQL personalizzati per manipolare la struttura logica della query originaria ed accedere, modificare o cancellare dati riservati nel database.
L'adozione di Prepared Statements (query parametrizzate) separa nettamente il codice strutturale della query dai dati inseriti dall'utente, neutralizzando qualsiasi tentativo di iniezione.
2. Cross-Site Scripting (XSS)
Il Cross-Site Scripting consente a un attaccante di iniettare script client-side malevoli (solitamente JavaScript) all'interno di pagine web visualizzate da altri utenti. Si distingue principalmente in:
- XSS Riflesso (Non persistente): Lo script maligno viene inserito direttamente in una richiesta HTTP (es. parametro URL) e riflesso immediatamente nella pagina di risposta.
- XSS Persistente (Stored): Lo script viene salvato in modo permanente sul server (es. in un database tramite un form di commenti) e viene eseguito ogni volta che un utente visita la pagina vulnerabile.
- XSS basato su DOM: La vulnerabilitĂ risiede interamente nel codice JavaScript lato client che manipola in modo insicuro il Document Object Model.
3. Tabella Comparativa: SQLi vs XSS
Confronto tecnico tra le due principali categorie di vulnerabilitĂ applicative:
| VulnerabilitĂ | Target Principale | Impatto Tipico | Metodo di Difesa |
|---|---|---|---|
| SQL Injection | Database e Backend | Furto o corruzione di dati, bypass autenticazione | Query parametrizzate e ORM sicuri |
| XSS (Cross-Site Scripting) | Browser dell'utente finale | Furto di cookie di sessione, dirottamento account | Sanitizzazione dell'input e CSP (Content Security Policy) |