Iframe Breaking: Ahoana no hampijanonana ny Iframe tsy nahazoana alalana amin'ny atiny
Nisy mpitsidika ny tranokalako indray mandeha nampahafantatra ahy rehefa nanindry ny iray amin'ireo rohiko izy Twitter; nentina tany amin'ny tranokalako izy niaraka tamin'ny popup lehibe sy fampitandremana kaody ratsy. Ampy hampatahotra olona iray izany, ka nanomboka nanao fitiliana aho. Tsy nisy diso ny tranokalako - ny olana dia ny rohy.
Ny rohy amin'ny vohikala iray hafa dia namokatra bara-fitaovana eo an-tampony izay nandrisika ny olona hanindry rohy maloto rehefa mampiditra ny tranokalako ao anaty iframe eo ambany. Ho an'ny ankamaroan'ny olona, toa manaparitaka kaody ratsy ny tranokalako. Tsy hilaza aho fa tiako izay tranonkala mametaka ny tranokalako ao anatin'ny iframe, noho izany dia nanao izay mety hataon'ny geek rehetra aho… Nametraka rindrankajy aho.
Tsy ratsy foana anefa ny fandrafetana ny tranokalanao. Nizara fitaovana izahay vao haingana, Sniply, hanampiana antso ho amin'ny hetsika (CTA) amin'ny rohin-tranonkala zarainao. Manao izany amin'ny alàlan'ny fampidirana ny tranokalanao manontolo amin'ny iframe izy ary mampihatra div amin'ny atiny miaraka amin'ny antso ho amin'ny hetsika.
Saingy tena manokana momba ny atiko sy ny ezaka nataoko aho Martech Zone, noho izany dia tsy tiako hisy olona hiframe ny atiny, na dia amin'ny sehatra fizarana rohy aza. Amin'ny fanaovana fikarohana sasany dia misy fomba vitsivitsy hiatrehana izany.
Ahoana ny fomba hampijanonana ny Iframe amin'ny votoatinao amin'ny JavaScript
Ity kaody JavaScript ity dia manamarina raha ny varavarankely ankehitriny (self
) dia tsy varavarankely ambony indrindra (top
). Raha tsy izany dia midika izany fa ao anaty frame, iframe, na mitovitovy ny pejy, ary ny script dia mamindra ny varavarankely ambony indrindra mankany amin'ny URL ny varavarankely ankehitriny. Izany dia mahomby mipoitra ny iframe.
<script type='text/javascript'>
if (top !== self) top.location.href = self.location.href;
</script>
Misy lasopy maromaro amin'ity fomba ity:
- Fiankinana amin'ny JavaScript: Raha manana JavaScript kilema ny mpampiasa dia tsy mandeha ity fomba ity.
- fahatarana: Mety hisy fahatarana kely alohan'ny hanatanterahan'ny JavaScript, izay mbola mety ho hita ny kinova voarafitra amin'ny tranokalanao.
- Fameperana Cross-Origin: Amin'ny toe-javatra sasany, ny Same Origin Policy dia mety manakana ity script ity tsy hiasa araka ny tokony ho izy. Raha any amin'ny sehatra hafa ny antontan-taratasin'ny ray aman-dreny dia mety tsy ho afaka miditra
top.location.href
. - Mety ho an'ny Frame-Busting-Busters: Misy ihany koa ny sora-baventy (antsoina hoe frame-busting-busters) izay afaka manakana ny fanoratana frame-busting tsy hiasa.
Ny fomba tsara kokoa dia ny fampiasana lohatenin'ny valinteny HTTP.
X-Frame-Options sy Content-Security-Policy
samy X-Frame-Options
ary Content-Security-Policy
(CSP) dia lohatenin'ny valinteny HTTP ampiasaina hanatsarana ny fiarovana ny tranokala. Samy manana tanjona samihafa izy ireo ary samy manana ny haavon'ny fahaiza-manaony.
X-Frame-Options
dia lohatenin'ny HTTP taloha natao manokana hifehezana raha azo ampidirina ao anaty a <frame>
, <iframe>
, <embed>
, na <object>
amin'ny tranokala hafa. Misy torolalana telo azo atao:
DENY
- Ny pejy dia tsy azo aseho amin'ny frame, na inona na inona tranonkala manandrana manao izany.SAMEORIGIN
– Ny pejy dia tsy azo aseho afa-tsy amina frame iray mitovy fiaviana amin'ny pejy.ALLOW-FROM uri
- Ny pejy dia tsy azo aseho afa-tsy amin'ny sary eo amin'ny fiaviana voatondro.
Na izany aza, X-Frame-Options
voafetra amin'ny hoe tsy mahazaka toe-javatra sarotra kokoa, toy ny famelana ny fandrafetana avy amin'ny fiaviana maro samihafa na ny fampiasana kara-tany ho an'ny zana-tohatra. Tsy ny navigateur rehetra no manohana ny ALLOW-FROM
toromarika.
Content-Security-Policy
, etsy ankilany, dia lohatenin'ny HTTP mora kokoa sy matanjaka kokoa. Na dia afaka manao ny zava-drehetra X-Frame-Options
sy ny maro hafa, ny tanjona voalohany dia ny hisorohana ny fanafihana fanindronana kaody isan-karazany, ao anatin'izany ny scripting cross-site (XSS) ary clickjacking. Izy io dia miasa amin'ny famaritana lisitra fotsy misy loharano azo itokisana (soratra, fomba, sary, sns.).
Ho an'ny fanaraha-maso ny frame, CSP dia mampiasa ny frame-ancestors
toromarika. Azonao atao ny mamaritra loharano maro, anisan'izany ny sehatra maro sy ny zana-tohatra wildcard. Ity misy ohatra iray:
cssCopy codeContent-Security-Policy: frame-ancestors 'self' yourdomain.com *.domain2.com;
Izany dia mamela ny pejy ho voarafitra amin'ny tranokalany manokana ('self'
), amin'ny yourdomain.com
, ary amin'ny zana-tohatra rehetra amin'ny domain2.com
.
CSP no atolotra ho solon'ny X-Frame-Options
, satria mahazaka ny zava-drehetra X-Frame-Options
azo atao, sy ny maro hafa. Na dia manohana ny CSP aza ny ankamaroan'ny navigateur maoderina, dia mety mbola misy mpitety tranonkala tranainy na tsy dia mahazatra loatra izay tsy manohana azy tanteraka.
Ahoana ny fomba hampitsaharana ny fametahana ny votoatinao amin'ny HTML
Efa misy meta tag votoaty-Security-Policy izay azo apetraka izay manakana ny fahafahana manamboatra ny atiny:
<meta http-equiv="Content-Security-Policy" content="frame-ancestors 'self' yourdomain.com">
Ny fahombiazan'ny HTML meta tag dia voafetra satria tsy ny navigateur rehetra no manaja ny Content-Security-Policy
rehefa napetraka mampiasa meta tag.
Ahoana ny fomba hampijanonana ny fametahana ny atiny amin'ny lohatenin'ny HTTP
Tsara kokoa ny mampiasa ny lohatenin'ny HTTP X-Frame-Options
or Content-Security-Policy
hifehy framing. Ireo safidy ireo dia azo ianteherana kokoa, ary azo antoka, ary miasa na dia tsy miasa aza ny JavaScript. Ny fomba JavaScript dia tokony hampiasaina ho fomba farany ihany raha tsy mahafehy ny lohamilina ianao hametraka lohapejy HTTP. Ho an'ny ohatra tsirairay, soloy yourdomain.com
miaraka amin'ny sehatra misy anao.
Apache - Ovao ny anao .htaccess
asio toy izao:
Header always set X-Frame-Options SAMEORIGIN
Header always set Content-Security-Policy "frame-ancestors 'self' yourdomain.com"
Nginx - Ovao ny sakana mpizara anao toy izao manaraka izao:
add_header X-Frame-Options SAMEORIGIN;
add_header Content-Security-Policy "frame-ancestors 'self' yourdomain.com";
II - Ataovy izany amin'ny fampidirana ireto manaraka ireto amin'ny anao web.config
file:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="frame-ancestors 'self' yourdomain.com" />
</customHeaders>
</httpProtocol>
</system.webServer>
WordPress – Ataovy izany amin'ny fampidirana ity code ity amin'ny rakitra functions.php anao:
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');
Ireo fanefena ireo dia hamela ny pejinao hiditra ao anatin'ny iframes amin'ny sehatra voafaritrao manokana, fa tsy amin'ny zana-tohatra rehetra. Raha te-hamela zana-tohatra sasany ianao dia tsy maintsy mitanisa azy ireo mazava tsara, toy ny subdomain1.yourdomain.com
subdomain2.yourdomain.com
, sy ny sisa.
Avelao Iframing ny votoatinao avy amin'ny sehatra maro
Azonao atao ny mamaritra sehatra maromaro miaraka amin'ny lohatenin'ny valin'ny HTTP Content-Security-Policy sy ny torolàlana momba ny razambe. Tokony hampisaraka ny sehatra tsirairay ny habaka. Ity misy ohatra iray:
Content-Security-Policy: frame-ancestors 'self' domain1.com domain2.com domain3.com;
Apache - Ovao ny anao .htaccess
asio toy izao:
Header always set X-Frame-Options SAMEORIGIN
Header always set Content-Security-Policy "frame-ancestors 'self' domain1.com domain2.com domain3.com"
Nginx - Ovao ny sakana mpizara anao toy izao manaraka izao:
add_header X-Frame-Options SAMEORIGIN;
add_header Content-Security-Policy "frame-ancestors 'self' domain1.com domain2.com domain3.com";
II - Ataovy izany amin'ny fampidirana ireto manaraka ireto amin'ny anao web.config
file:
<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>
Avelao Iframing ny atiny avy amin'ny sehatra Wildcard
Azonao atao koa ny manendry wildcard ho an'ny zana-tohatra rehetra miaraka amin'ny Content-Security-Policy
Lohatenin'ny valinteny HTTP sy ny torolalana momba ny razambe. Ireto misy ohatra amin'ny Content-Security-Policy
kaody mila havaozina:
Content-Security-Policy: frame-ancestors 'self' *.yourdomain.com;
Apache - Ovao ny anao .htaccess
asio toy izao:
Header always set Content-Security-Policy "frame-ancestors 'self' *.yourdomain.com"
Nginx - Ovao ny sakana mpizara anao toy izao manaraka izao:
add_header Content-Security-Policy "frame-ancestors 'self' *.domain1.com *.domain2.com *.domain3.com";
II - Ataovy izany amin'ny fampidirana ireto manaraka ireto amin'ny anao web.config
file:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="frame-ancestors 'self' *.yourdomain.com" />
</customHeaders>
</httpProtocol>
</system.webServer>