X-Frame-Options
impedirà al tuo sito di essere iFramed da altri domini. Sui browser che accettano la direttiva ALLOW-FROM
sei limitato a specificare solo una singola origine. Potresti utilizzare una direttiva CSP 2.0 frame-ancestors
per i moderni UA.
Detto questo, è possibile rendere dinamicamente un'intestazione di risposta in base al referente della richiesta e decidere quale tipo di X-Frame-Options
intestazione impostare nella risposta.
Ad esempio, per impostazione predefinita puoi servire X-Frame-Options: deny
e quindi a livello di controller eseguire il rendering di un deny
o semplicemente non inviare alcuna intestazione X-Frame-Options
per consentire a tale richiesta di essere iFramed.
Pseudo codice:
referer_host = request.referer
if allowed_origins.includes(referer_host)
response.headers['X-Frame-Options'] = '' # Remove header from response
else
response.headers['X-Frame-Options'] = 'deny'
end
Questo meccanismo di sicurezza può essere sconfitto? È possibile che un dominio controllato da un utente malintenzionato forgi il valore di referer
che l'unità UA invierà attraverso alcuni hackery di javascript?