Briseadh Iframe: Conas Stop a chur le hIframáil Neamhúdaraithe Do Ábhar
Chuir cuairteoir ar mo shuíomh in iúl dom uair amháin nuair a chliceáil sé ar cheann de mo naisc ar Twitter; tugadh go dtí mo shuíomh é le aníos mór agus rabhadh cód mailíseach. Is leor sin chun eagla a chur ar dhuine éigin, agus mar sin thosaigh mé ag déanamh roinnt tástála. Ní raibh aon rud cearr le mo shuíomh - ba í an nasc an fhadhb.
Tháirg an nasc ar shuíomh eile barra uirlisí in airde a spreag daoine le cliceáil ar nasc mailíseach agus mo shuíomh á lódáil in iframe thíos. D'fhormhór na ndaoine, d'fhéadfadh an chuma ar mo shuíomh go bhfuil cód mailíseach á scaipeadh. Ní déarfainn gur maith liom suíomh ar bith a lódálann mo shuíomh laistigh d’iframe, agus mar sin rinne mé an rud a dhéanfadh geek réasúnta ar bith… lódáil mé briseadh fráma.
Ní i gcónaí mailíseach a dhéantar do shuíomh a chur i bhfeidhm, áfach. Roinneamar uirlis le déanaí, Snip, chun glaoch chun gnímh a chur leis (CTA) chuig aon nasc gréasáin a roinneann tú. Déanann sé é seo trí do shuíomh ar fad a neadú in iframe agus div a chur i bhfeidhm ar d’ábhar leis an nglao chun gnímh.
Ach táim go háirithe faoi m’ábhar agus faoin iarracht atá déanta agam Martech Zone, mar sin níl mé ag iarraidh ar aon duine m'ábhar a iframe, fiú le hardán nasc-roinnte. Agus roinnt taighde á dhéanamh, tá go leor bealaí ann chun é seo a láimhseáil.
Conas d'Ábhar a Stopadh le JavaScript
Seiceálann an cód JavaScript seo an bhfuil an fhuinneog reatha (self
) nach í an fhuinneog is airde (top
). Mura bhfuil, ciallaíonn sé seo go bhfuil an leathanach i bhfráma, iframe, nó a mhacasamhail, agus atreoraíonn an script an fhuinneog is airde chuig an URL den fhuinneog reatha. Seo go héifeachtach briseann amach den iframe.
<script type='text/javascript'>
if (top !== self) top.location.href = self.location.href;
</script>
Tá roinnt míbhuntáistí ag baint leis an gcur chuige seo:
- Ag brath ar JavaScript: Má tá JavaScript díchumasaithe ag an úsáideoir, ní oibreoidh an modh seo.
- Moill: Is féidir go mbeidh moill bheag ann sula n-imrítear an JavaScript, agus d'fhéadfadh leagan frámaithe do shuíomh a bheith fós le feiceáil lena linn.
- Srianta Tras-Thionscnaimh: I gcásanna áirithe, féadfaidh an Beartas um Thionscnamh Comhionann cosc a chur ar an script seo oibriú mar a bhí beartaithe. Má tá an doiciméad tuismitheora ar fhearann eile, seans nach mbeidh sé in ann rochtain a fháil air
top.location.href
. - Poitéinseal do Mhúineadh Frámaí: Tá scripteanna ann freisin (ar a dtugtar fráma-busting-busters) ar féidir leo cosc a chur ar scripteanna briseadh frámaí oibriú.
Is é an cur chuige is fearr ná ceanntásca freagartha HTTP a úsáid.
X-Frame-Options agus Ábhar-Slándáil-Polasaí
An dá X-Frame-Options
agus Content-Security-Policy
(CSP) is ceanntásca freagartha HTTP iad a úsáidtear chun slándáil láithreáin ghréasáin a fheabhsú. Feidhmíonn gach ceann acu cuspóirí beagán difriúil agus tá leibhéil éagsúla solúbthachta acu.
X-Frame-Options
Is ceanntásc HTTP níos sine é atá deartha go sonrach chun a rialú an féidir do shuíomh a neadú in a <frame>
, <iframe>
, <embed>
, Nó <object>
ar shuíomh eile. Tá trí threoir fhéideartha ann:
DENY
– Ní féidir an leathanach a thaispeáint i bhfráma, beag beann ar an suíomh atá ag iarraidh é sin a dhéanamh.SAMEORIGIN
– Ní féidir an leathanach a thaispeáint ach i bhfráma ar an mbunús céanna leis an leathanach féin.ALLOW-FROM uri
– Ní féidir an leathanach a thaispeáint ach i bhfráma ar an mbunús sonraithe.
Mar sin féin, X-Frame-Options
teoranta sa mhéid is nach féidir leis cásanna níos casta a láimhseáil, mar shampla frámaí a cheadú ó iliomad bunús éagsúil nó úsáid a bhaint as saoróga le haghaidh fofhearainn. Ní thacaíonn gach brabhsálaí leis an ALLOW-FROM
Treoir.
Content-Security-Policy
, ar an láimh eile, tá ceanntásc HTTP i bhfad níos solúbtha agus níos cumhachtaí. Cé gur féidir é a dhéanamh gach rud X-Frame-Options
is féidir a dhéanamh agus i bhfad níos mó, is é a phríomhchuspóir ná raon leathan ionsaithe instealladh cód a chosc, lena n-áirítear scripteáil tras-láithreáin (XSS) agus cliceáiljacking. Oibríonn sé trí liosta bán d'fhoinsí iontaofa ábhar a shonrú (scripteanna, stíleanna, íomhánna, etc.).
Chun frámaí a rialú, úsáideann CSP an frame-ancestors
treoir. Is féidir leat foinsí iolracha a shonrú, lena n-áirítear fearainn iolracha agus fofhearainn saoróg. Seo sampla:
cssCopy codeContent-Security-Policy: frame-ancestors 'self' yourdomain.com *.domain2.com;
Ligeann sé seo an leathanach a fhrámú ar a shuíomh féin ('self'
), Ar yourdomain.com
, agus ar aon fhofhearann de domain2.com
.
Tá CSP á mholadh mar ionadach do X-Frame-Options
, ós rud é gur féidir leis gach rud a láimhseáil X-Frame-Options
is féidir a dhéanamh, agus i bhfad níos mó. Cé go dtacaíonn formhór na mbrabhsálaithe nua-aimseartha le CSP, d’fhéadfadh go mbeadh roinnt seanbhrabhsálaithe nó brabhsálaithe nach bhfuil chomh coitianta sin ann nach dtacaíonn go hiomlán leo.
Conas Do Ábhar a Stopadh le HTML
Tá meitea-chlib Beartais Inneachair-Slándála ann anois is féidir a imscaradh a dhíchumasaíonn an cumas d’inneachar a leagan amach:
<meta http-equiv="Content-Security-Policy" content="frame-ancestors 'self' yourdomain.com">
Tá éifeachtacht an chlib mheite HTML teoranta toisc nach bhfuil meas ag gach brabhsálaí ar an Content-Security-Policy
nuair a shocraítear ag baint úsáide as meta tag.
Conas d'Ábhar a Stopadh le Ceanntásca HTTP
Is fearr na ceanntásca HTTP a úsáid X-Frame-Options
or Content-Security-Policy
chun frámaíocht a rialú. Tá na roghanna seo níos iontaofa, agus níos sláine, agus oibríonn siad fiú má tá JavaScript díchumasaithe. Níor cheart an modh JavaScript a úsáid ach mar rogha dheireanach mura bhfuil smacht agat ar an bhfreastalaí chun ceanntásca HTTP a shocrú. I gcás gach sampla, cuir in ionad yourdomain.com
le d'fhearann iarbhír.
Apache - Athraigh do .htaccess
comhad mar a leanas:
Header always set X-Frame-Options SAMEORIGIN
Header always set Content-Security-Policy "frame-ancestors 'self' yourdomain.com"
Nginx - Athraigh do bhloc freastalaí mar a leanas:
add_header X-Frame-Options SAMEORIGIN;
add_header Content-Security-Policy "frame-ancestors 'self' yourdomain.com";
IIS – déan é seo tríd an méid seo a leanas a chur le do web.config
Saghas comhaid:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="frame-ancestors 'self' yourdomain.com" />
</customHeaders>
</httpProtocol>
</system.webServer>
WordPress – déan é seo tríd an gcód seo a chur le do chomhad functions.php:
function add_security_headers() {
header('X-Frame-Options: SAMEORIGIN');
header("Content-Security-Policy: frame-ancestors 'self' yourdomain.com");
}
add_action('send_headers', 'add_security_headers');
Ní cheadóidh na cumraíochtaí seo do leathanach a neadú ach amháin laistigh de iframes ar an bhfearann beacht a shonraíonn tú, ní ar aon fhofhearainn. Más mian leat fofhearainn áirithe a cheadú, beidh ort iad a liostáil go sainráite, mar shampla subdomain1.yourdomain.com
subdomain2.yourdomain.com
, Agus mar sin de.
Ceadaigh d'Ábhar a Dhéanamh ó Ilfhearainn
Is féidir leat fearainn iolracha a shonrú leis an gceanntásc freagartha HTTP Ábhar-Slándála-Polasaí agus an treoir fráma-sinsear. Ba cheart spás a scaradh ó gach fearann. Seo sampla:
Content-Security-Policy: frame-ancestors 'self' domain1.com domain2.com domain3.com;
Apache - Athraigh do .htaccess
comhad mar a leanas:
Header always set X-Frame-Options SAMEORIGIN
Header always set Content-Security-Policy "frame-ancestors 'self' domain1.com domain2.com domain3.com"
Nginx - Athraigh do bhloc freastalaí mar a leanas:
add_header X-Frame-Options SAMEORIGIN;
add_header Content-Security-Policy "frame-ancestors 'self' domain1.com domain2.com domain3.com";
IIS – déan é seo tríd an méid seo a leanas a chur le do web.config
Saghas comhaid:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="Content-Security-Policy" value="frame-ancestors 'self' domain1.com domain2.com domain3.com" />
</customHeaders>
</httpProtocol>
</system.webServer>
Ceadaigh d'Ábhar a Dhéanamh ó Fhearann Saorchárta
Is féidir leat saoróg a shonrú freisin do gach fofhearann leis an Content-Security-Policy
Ceanntásc freagartha HTTP agus an treoir fráma-sinsear. Seo samplaí de na Content-Security-Policy
cód nach mór a nuashonrú:
Content-Security-Policy: frame-ancestors 'self' *.yourdomain.com;
Apache - Athraigh do .htaccess
comhad mar a leanas:
Header always set Content-Security-Policy "frame-ancestors 'self' *.yourdomain.com"
Nginx - Athraigh do bhloc freastalaí mar a leanas:
add_header Content-Security-Policy "frame-ancestors 'self' *.domain1.com *.domain2.com *.domain3.com";
IIS – déan é seo tríd an méid seo a leanas a chur le do web.config
Saghas comhaid:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="frame-ancestors 'self' *.yourdomain.com" />
</customHeaders>
</httpProtocol>
</system.webServer>