Uno shim o polyfill non viene installato in un browser ma viene consegnato come parte di una pagina Web per fornire funzionalità per questa pagina.
È solo normale contenuto attivo (JavaScript, Flash ...) che viene chiamato solo come shim o polyfill perché serve allo scopo specifico descritto da questi nomi. Non ha permessi speciali o restrizioni rispetto ad altri contenuti attivi.
Poiché non è niente di speciale, viene incluso in una pagina Web allo stesso modo degli altri contenuti attivi, ad esempio utilizzando il tag script
in caso di JavaScript. E poiché uno shim non ha restrizioni rispetto ad altri contenuti attivi, può fare tutto ciò che altri contenuti attivi possono fare anche, manipolando l'albero DOM, catturando i tratti chiave, leggendo il contenuto dai campi di input, accedendo ai cookie per la pagina ecc. Ma ha anche tutte le restrizione di altri contenuti attivi, cioè che queste azioni sono soggette alla stessa politica di origine, ecc. Ciò significa che non può acquisire password da siti di terze parti, ma può acquisire password dal sito in cui è stato incluso lo shim.
Quando includi uno shim / polyfill di terze parti nel tuo sito web, devi essere consapevole che il contenuto dello shim è fuori dal tuo controllo. Non solo può svanire e quindi rompere il tuo sito, ma può anche essere modificato per includere funzionalità che non ti piacciono (come catturare le password). Questo può accadere perché la terza parte è malintenzionata da sola o viene violata. Questo vettore di attacco non è rilevante solo per gli shim ma per qualsiasi tipo di contenuto attivo che includi da una fonte di terze parti; Ad esempio, librerie Javascript come jQuery, annunci pubblicitari, pulsanti simili per i social network ecc.
Quindi se hai bisogno di uno shim è meglio copiarlo sul tuo sito in modo da avere il pieno controllo sulla disponibilità e le modifiche. Dovresti dare un'occhiata al codice per assicurarti che lo shim stesso non includa il codice di terze parti da solo perché allora avresti ancora le stesse vulnerabilità.