Is there any standard defense technique against it?
Come delineato nelle altre risposte, gli errori di bit durante l'esecuzione di query sui nomi di dominio potrebbero non rappresentare una minaccia realistica per la tua applicazione web. Ma supponendo che lo siano, allora Integrità con subunità (SRI) aiuta.
Con l'SRI stai specificando un hash della risorsa che stai caricando in un attributo integrity
, in questo modo:
<script src="http://www.example.org/script.js"integrity="sha256-DEC+zvj7g7TQNHduXs2G7b0IyOcJCTTBhRRzjoGi4Y4="
crossorigin="anonymous">
</script>
D'ora in poi, non importa se lo script viene prelevato da un dominio diverso a causa di un errore di bit (o modificato da un MITM) perché il browser rifiuterà di eseguire lo script se l'hash del suo contenuto non lo fa t corrisponde al valore di integrità. Quindi, quando un errore di bit, o qualsiasi altra cosa, ha reso l'URL risolvibile con dxample.org
controllato dall'aggressore, l'unico script che potevano iniettare con successo sarebbe stato quello corrispondente all'hash (cioè lo script che si intendeva caricare comunque).
Il caso d'uso principale per SRI è il recupero di script e fogli di stile da CDN potenzialmente non attendibili, ma funziona su qualsiasi scenario in cui si desidera garantire che la risorsa richiesta non sia modificata.
Tieni presente che l'SRI è limitato a script
e link
per ora, ma il supporto per altri tag potrebbe venire in seguito:
Note: A future revision of this specification is likely to include integrity support for all possible subresources, i.e., a
, audio
, embed
, iframe
, img
, link
, object
, script
, source
, track
, and video
elements.
(Dalla specifica)
(vedi anche questo bug ticket)