Seguretat d'iFrames Incrustats: Millors Pràctiques per a Desenvolupadors Web (CA)
Els iFrames són eines potents per incrustar contingut, però introdueixen riscos de seguretat significatius si no es gestionen correctament. Aquesta guia proporciona les millors pràctiques essencials per assegurar iFrames.

Aïlla els teus iFrames amb SandboxUtilitza sempre l'atribut
sandboxper restringir les capacitats de l'iFrame, evitant que contingut no fiable executi scripts, accedeixi a l'emmagatzematge local o enviï formularis.Implementa una CSP RobustaUtilitza les capçaleres de Política de Seguretat de Contingut (CSP) per controlar quins recursos pot carregar i executar la teva pàgina, dirigint-te específicament als iFrames per prevenir problemes de contingut mixt i injecció de scripts.
Utilitza X-Frame-Options i CSP Frame-AncestorsProtegeix el teu lloc de clickjacking configurant
X-Frame-OptionsaDENYoSAMEORIGIN, i per als navegadors moderns, utilitza la directiva més granularframe-ancestorsa la teva CSP.Exerceix Precaució amb el Contingut ExternRevisa exhaustivament qualsevol contingut de tercers incrustat mitjançant iFrames, ja que estàs confiant implícitament en les seves pràctiques de seguretat. Prefereix solucions que ofereixin fortes garanties de seguretat o permetin el processament al costat del servidor.
L'Espasa de Doble Fil dels iFrames: Conveniència vs. Seguretat
Els iFrames (Inline Frames) són una part integral del desenvolupament web modern, permetent als desenvolupadors incrustar sense problemes contingut d'altres fonts a les seves pàgines web. Tant si es tracta d'un vídeo de YouTube, una passarel·la de pagament, un widget de xarxes socials o un flux de verificació d'identitat, els iFrames ofereixen una flexibilitat inigualable. No obstant això, aquest poder ve amb una advertència de seguretat significativa. Sense les precaucions adequades, els iFrames poden convertir-se en vectors per a diversos atacs, incloent clickjacking, cross-site scripting (XSS) i fuites de dades. A mesura que les aplicacions web es tornen més complexes i interconnectades, entendre i implementar les millors pràctiques de seguretat d'iFrames ja no és opcional; és una necessitat.
El repte principal amb els iFrames rau en el fet que bàsicament estàs permetent que el contingut extern s'executi dins del context de la teva pròpia pàgina. Aquest contingut extern podria no adherir-se als mateixos estàndards de seguretat que la teva aplicació, o fins i tot podria ser maliciós. Per tant, l'objectiu de la seguretat d'iFrames és aïllar aquest contingut incrustat tant com sigui possible, limitant el seu potencial per interactuar amb o comprometre el teu document pare i les dades de l'usuari.
Mesures Essencials de Seguretat d'iFrames: Sandboxing i CSP
1. L'Atribut sandbox: La Teva Primera Línia de Defensa
L'atribut HTML5 sandbox és, sens dubte, la característica de seguretat més crítica per als iFrames. Et permet aplicar un conjunt estricte de restriccions al contingut dins de l'iFrame, aïllant-lo de la resta de la teva pàgina. Per defecte, simplement incloure l'atribut sandbox sense cap valor aplica les restriccions més estrictes, tractant essencialment el contingut de l'iFrame com si provingués d'un origen únic i evitant que s'executin scripts, s'enviïn formularis i s'accedeixi a l'emmagatzematge local.
Tot i ser altament segur, el sandbox per defecte podria ser massa restrictiu per a molts casos d'ús. Pots aixecar selectivament les restriccions proporcionant paraules clau específiques com a valors a l'atribut sandbox:
allow-forms: Permet l'enviament de formularis.allow-modals: Permet que l'iFrame obri finestres modals (comalert(),confirm(),prompt()).allow-popups: Permet finestres emergents (per exemple,window.open()).allow-popups-to-escape-sandbox: Permet que els documents sandboxed obrin noves finestres sense heretar les restriccions del sandbox.allow-pointer-lock: Permet l'API de bloqueig del punter.allow-same-origin: Permet que el contingut de l'iFrame sigui tractat com si fos del mateix origen que el document pare, la qual cosa sovint és necessari perquè el contingut incrustat funcioni correctament (per exemple, accedir a galetes, emmagatzematge local). Utilitza amb extrema precaució.allow-scripts: Permet l'execució de JavaScript. Aquest és un permís potent i només s'ha de concedir a fonts de confiança.allow-top-navigation: Permet que l'iFrame navegui pel context de navegació de nivell superior (és a dir, canviï l'URL de la finestra pare).
Millor Pràctica: Utilitza sempre l'atribut sandbox. Comença amb el valor per defecte (sense valors) i només afegeix els permisos mínims necessaris. Per exemple, si estàs incrustant un formulari de pagament, podries necessitar allow-forms allow-scripts, però definitivament no voldries allow-same-origin tret que sigui absolutament necessari i hagi estat exhaustivament revisat.
<iframe src="https://trusted-payment-gateway.com/form" sandbox="allow-forms allow-scripts"></iframe>
2. Política de Seguretat de Contingut (CSP): Control del Carregament de Contingut
La Política de Seguretat de Contingut (CSP) és un potent mecanisme de seguretat que ajuda a mitigar diversos tipus d'atacs, incloent XSS i injecció de dades. En definir una CSP mitjançant una capçalera HTTP (Content-Security-Policy) o una etiqueta <meta>, pots especificar quines fonts de contingut estan permeses per ser carregades i executades pel navegador.
Per a la seguretat d'iFrames, la CSP és crucial de dues maneres principals:
- Protegir el Pare de l'iFrame: Una CSP forta a la teva pàgina pare pot evitar que un iFrame explotat carregui scripts o contingut maliciós a la teva aplicació principal.
- Protegir l'iFrame del Pare (i viceversa): La directiva
frame-srccontrola específicament les fonts vàlides per als iFrames. La directivaframe-ancestorsdicta quins orígens poden incrustar el recurs actual (la teva pàgina) en un iFrame, prevenint el clickjacking.
Exemple de Capçalera CSP:
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com; frame-src 'self' https://trusted-iframe-source.com; frame-ancestors 'self';
Aquesta CSP permet scripts només del teu propi origen i trusted-cdn.com, i permet iFrames només del teu propi origen i trusted-iframe-source.com. Crucialment, frame-ancestors 'self' assegura que la teva pàgina només pugui ser incrustada per ella mateixa, prevenint efectivament el clickjacking.
Protecció Contra el Clickjacking: X-Frame-Options i frame-ancestors
El clickjacking (revestiment d'interfície d'usuari) és un atac on un lloc web maliciós superposa un iFrame transparent del teu lloc sobre el seu propi, enganyant els usuaris perquè facin clic en elements del teu lloc mentre creuen que estan interactuant amb el lloc maliciós. Això pot conduir a accions no autoritzades, com fer compres, canviar configuracions o revelar informació sensible.
1. Capçalera HTTP X-Frame-Options
La capçalera HTTP X-Frame-Options és una manera tradicional de prevenir el clickjacking. Indica als navegadors si una pàgina es pot renderitzar en un <frame>, <iframe>, <embed> o <object>.
X-Frame-Options: DENY: La pàgina no es pot mostrar en un frame, independentment del lloc que intenti fer-ho. Aquesta és l'opció més segura.X-Frame-Options: SAMEORIGIN: La pàgina només es pot mostrar en un frame del mateix origen que la pròpia pàgina.
Millor Pràctica: Llevat que necessitis explícitament que la teva pàgina sigui incrustada per altres llocs (i si és així, utilitza frame-ancestors amb cura), configura X-Frame-Options: DENY per a totes les pàgines que gestionen accions d'usuari sensibles.
2. Directiva frame-ancestors de CSP
La directiva frame-ancestors dins de la Política de Seguretat de Contingut és una alternativa més moderna i flexible a X-Frame-Options. Et permet especificar múltiples orígens que estan permesos per incrustar el teu contingut.
Exemple:
Content-Security-Policy: frame-ancestors 'self' https://partner-site.com;
Això permet que la teva pàgina sigui incrustada per ella mateixa i per partner-site.com. Si tant X-Frame-Options com frame-ancestors estan presents, frame-ancestors generalment tindrà prioritat en els navegadors moderns. És una bona pràctica utilitzar ambdós per a una compatibilitat més àmplia amb els navegadors.
Gestió i Comunicació Responsables de Dades
Quan els iFrames necessiten comunicar-se amb la seva finestra pare (o viceversa), l'accés directe a JavaScript sol estar bloquejat per la Política del Mateix Origen. El mètode segur recomanat per a la comunicació entre orígens és window.postMessage().
Ús Segur de window.postMessage()
window.postMessage() permet que les finestres es comuniquin de manera segura entre si a través de diferents orígens. No obstant això, és crucial utilitzar-lo correctament per evitar vulnerabilitats.
- Verifica sempre l'origen del remitent: Quan rebis un missatge, comprova sempre la propietat
event.originper assegurar-te que el missatge prové d'una font esperada. - Especifica l'origen de destí: Quan enviïs un missatge, proporciona l'origen de destí exacte (per exemple,
iframeWindow.postMessage('hola', 'https://expected-origin.com');) en lloc de'*'. Utilitzar'*'significa que qualsevol finestra pot rebre el teu missatge, la qual cosa és un risc de seguretat. - Saneja les dades rebudes: Tracta qualsevol dada rebuda mitjançant
postMessage()com a entrada no fiable i saneja-la abans d'utilitzar-la per prevenir XSS.
Exemple (Pare que envia a iFrame):
const iframe = document.getElementById('myIframe');
iframe.contentWindow.postMessage('Hola des del pare!', 'https://trusted-iframe-source.com');
Exemple (iFrame que rep del pare):
window.addEventListener('message', (event) => {
if (event.origin !== 'https://parent-domain.com') {
// Missatge no de l'origen esperat, ignora o registra.
return;
}
console.log('Missatge del pare:', event.data);
// Processa les dades, però saneja-les primer!
});
Com Didit Ajuda amb Fluxos Incrustables Segurs
Didit, com a plataforma d'identitat tot en un, utilitza amb freqüència components incrustables per als seus fluxos de verificació d'identitat. El nostre enfocament es construeix amb la seguretat al seu nucli, entenent la necessitat crítica d'un aïllament robust d'iFrames i fluxos de treball. Didit proporciona enllaços de verificació allotjats segurs i SDKs web dissenyats per integrar-se sense problemes, tot adherint-se als més alts estàndards de seguretat.
- Enllaços de Verificació Allotjats: Didit genera URLs segures i úniques per a cada sessió de verificació. Aquests enllaços redirigeixen els usuaris a un entorn aïllat allotjat per Didit, separant completament el procés de verificació sensible del domini de la teva aplicació. Això elimina la necessitat d'un sandboxing d'iFrames complex per part teva per a la verificació principal.
- SDK Web amb Aïllament Fort: Per a escenaris que requereixen incrustació en context, l'SDK Web de Didit està dissenyat per operar dins d'un iFrame segur, aprofitant els atributs
sandboxmés estrictes necessaris. Gestionem les complexitats de la comunicació segura entre orígens utilitzantpostMessage(), assegurant que només les dades necessàries i sanejades s'intercanvien entre l'iFrame i la teva aplicació. - Compliment i Certificacions: Didit està certificat SOC 2 Tipus II i ISO 27001, i compleix amb el GDPR. La nostra infraestructura i processos estan construïts per gestionar dades d'identitat sensibles de manera segura, reduint la teva càrrega de compliment i el teu risc.
- Exposició Mínima de Dades: L'arquitectura de Didit es basa en la privacitat des del disseny. Per a la verificació biomètrica, les selfies es processen en memòria i s'eliminen, i la teva aplicació rep valors booleans (per exemple, 'verificat'), mai dades biomètriques en brut. Això minimitza la informació sensible gestionada dins de qualsevol component incrustable.
Utilitzant les solucions incrustables segures i preconstruïdes de Didit, les empreses poden integrar una verificació d'identitat avançada sense convertir-se en experts en seguretat d'iFrames, permetent-los centrar-se en el seu producte principal mentre garanteixen la confiança de l'usuari i la protecció de dades.
Preparat per Començar?
Assegurar els teus iFrames és un pas crític per construir una aplicació web resilient i fiable. Aplicant diligentment les pràctiques de sandboxing, CSP, X-Frame-Options i postMessage() segures, pots aprofitar el poder del contingut incrustat sense exposar els teus usuaris o la teva aplicació a riscos innecessaris. Explora les solucions de verificació d'identitat segures de Didit per veure com de fàcil és integrar una seguretat robusta als teus fluxos de treball.
Veure Preus de Didit | Explorar Docs de Didit | Provar una Demo