Il clickjacking è un attacco dannoso in cui gli utenti vengono indotti con l'inganno a fare clic su link o elementi dell'interfaccia utente su un sito che sembra attendibile e familiare. In genere, questo viene ottenuto incorporando parte o tutto il sito attendibile nel sito dannoso utilizzando un <iframe>
.
L'intestazione X-Frame-Options
(XFO) e l'istruzione frame-ancestors
nell'intestazione Content-Security-Policy
(CSP) possono mitigare gli attacchi di clickjacking controllando la modalità di incorporamento di un sito in un <iframe>
.
Come non va a buon fine il controllo Lighthouse
Il controllo viene superato se l'intestazione XFO è impostata su SAMEORIGIN
o DENY
oppure se l'istruzione frame-ancestors
è impostata nell'intestazione CSP. Il controllo non andrà a buon fine se non è configurato nessuno di questi criteri di controllo dei frame.
Come impostare un criterio di controllo dei frame per ridurre il rischio di clickjacking
È necessario impostare un criterio di controllo dei frame nelle intestazioni HTTP della richiesta del documento iniziale. L'intestazione X-Frame-Options
e la direttiva frame-ancestors
in Content-Security-Policy
non funzioneranno se impostate su un elemento <meta>
.
Intestazione XFO
L'impostazione di DENY
o SAMEORIGIN
per l'intestazione XFO riduce gli attacchi di clickjacking:
X-Frame-Options: SAMEORIGIN
X-Frame-Options: DENY
La direttiva SAMEORIGIN
consente la visualizzazione della pagina solo se tutti i frame principali condividono la stessa origine della pagina stessa. Al contrario, la direttiva DENY
impedisce la visualizzazione della pagina in un frame, indipendentemente dall'origine del frame principale.
Intestazione CSP
La direttiva frame-ancestors
all'interno dell'intestazione CSP definisce i siti che possono incorporare la pagina specificata in un <frame>
, <iframe>
, <object>
o <embed>
. Analogamente a XFO, la direttiva CSP frame-ancestors
può essere utilizzata per mitigare gli attacchi di clickjacking impostandola su self
o none
:
Content-Security-Policy: frame-ancestors 'self';
Content-Security-Policy: frame-ancestors 'none';
Tuttavia, la direttiva frame-ancestors
è più flessibile di XFO perché può impostare origini principali specifiche che possono incorporare la pagina:
Content-Security-Policy: frame-ancestors 'self' https://example.com;