- 原文地址:4 Security Concerns with iframes Every Web Developer Should Know
- 原文作者:Piumi Liyana Gunawardhana
- 譯文出自:掘金翻譯計(jì)劃
- 本文永久鏈接:github.com/xitu/gold-m…
- 譯者:jaredliw
- 校對(duì)者:Usualminds、KimYangOfCat
iframe 是 Web 開(kāi)發(fā)中最古老、最簡(jiǎn)單的內(nèi)容嵌入技術(shù)之一,時(shí)至今日仍被使用。然而,在實(shí)踐中使用 iframe 可能會(huì)帶來(lái)一些安全隱患,向攻擊者敞開(kāi)大門。
因此,在這篇文章中,我將討論使用 iframe 前需要注意的 4 個(gè)安全風(fēng)險(xiǎn)問(wèn)題。
1. iframe 注入
iframe 注入是一個(gè)非常常見(jiàn)的跨站腳本攻擊(XSS)。
iframe 使用多個(gè)標(biāo)簽在網(wǎng)頁(yè)上展示 HTML 文檔并將用戶重定向到其他的網(wǎng)站。此行為允許第三方將惡意的可執(zhí)行程序、病毒或蠕蟲(chóng)植入你的 web 程序中,并在用戶的設(shè)備上運(yùn)行。
我們可以通過(guò)掃描 Web 服務(wù)器發(fā)送的 HTML 來(lái)找出 iframe 的注入位置。你需要做的只是在你的瀏覽器中打開(kāi)一個(gè)頁(yè)面,然后啟用 view source
功能來(lái)查看 HTML。由于這些 iframe 通常指向原生 IP 地址,因此你應(yīng)該搜索 <iframe>
標(biāo)簽,而不是域名。
舉例來(lái)說(shuō),讓我們看看以下的代碼:
++++%23wp+/+GPL%0A%3CScript+Language%3D%27Javascript%27%3E%0A++++%3C%21–%0A++++document.write%28unescape%28%273c696672616d65207372633d27687474703a2f2f696e666
f736563696e737469747574652e636f6d2f272077696474683d273127206865696768743d273127207374
796c653d277669736962696c6974793a2068696464656e3b273e3c2f696672616d653e%27%29%29%3B%0A
++++//–%3E%0A++++%3C/Script%3E
它看起來(lái)很正常,似乎是和這個(gè)站點(diǎn)相關(guān)的代碼。實(shí)際上,它就是問(wèn)題的根源。如果你用 JavaScript 函數(shù)對(duì)其進(jìn)行解碼,輸出結(jié)果會(huì)是這樣的:
#wp / GPL
<Script Language=’Javascript’> <!–
document.write(unescape(‘3c696672616d65207372633d27687474703a2f2f696e666f73656369
6e737469747574652e636f6d2f272077696474683d273127206865696768743d273127207374796c653d
277669736962696c6974793a2068696464656e3b273e3c2f696672616d653e’));
//–> </Script>
同樣,這看起來(lái)也是合法的,因?yàn)楣粽呤褂昧?GPL
和 wp
并將語(yǔ)言設(shè)為 JavaScript
。這些數(shù)字和字母似乎是十六進(jìn)制的,所以接下來(lái)我們可以使用十六進(jìn)制解碼器來(lái)將其解碼,最終結(jié)果如下:
<iframe src='https://www.infosecinstitute.com/' width='1' height='1' style='visibility: hidden;'></iframe>
因此,當(dāng)你在 HTML 中找到一個(gè) iframe,并發(fā)現(xiàn)它不是你放置的,你應(yīng)該盡快調(diào)查原因并從網(wǎng)站或數(shù)據(jù)庫(kù)中移除它。
2. 跨框架腳本攻擊
跨框架腳本攻擊(XFS)結(jié)合 iframe 和 JavaScript 惡意腳本,用于竊取用戶的資料。
XFS 攻擊者說(shuō)服用戶訪問(wèn)由他所控制的網(wǎng)頁(yè),并通過(guò) iframe 引用一個(gè)結(jié)合了惡意腳本的合法站點(diǎn)。當(dāng)用戶在向 iframe 中的合法網(wǎng)站輸入憑據(jù)時(shí),JavaScript 惡意腳本將記錄他們的輸入。
通過(guò)在 Web 服務(wù)器配置中設(shè)置 Content-Security-Policy: frame-ancestors
和 X-Frame-Options
能防止此攻擊。
3. 點(diǎn)擊劫持
點(diǎn)擊劫持攻擊能誘騙用戶點(diǎn)擊隱藏的網(wǎng)頁(yè)元素。由此一來(lái),用戶可能會(huì)因此在無(wú)意中下載惡意程序,瀏覽惡意網(wǎng)站,提供密碼或敏感信息、轉(zhuǎn)賬或進(jìn)行網(wǎng)絡(luò)購(gòu)物。
攻擊者通常會(huì)通過(guò) iframe 在網(wǎng)站上覆蓋一個(gè)不可見(jiàn)的 HTML 元素來(lái)執(zhí)行點(diǎn)擊劫持。
用戶以為他點(diǎn)擊了顯示的那個(gè)頁(yè)面,然而,他所點(diǎn)擊的是覆蓋在其之上的隱藏元素。
有兩種主要策略可以保護(hù)自己免受點(diǎn)擊劫持:
- 客戶端中最流行的方法是 Frame Busting,但這并不是最好的解決方法,因?yàn)?iframe 只是被忽略了而已。
- 服務(wù)端中的最好辦法是使用
X-Frame-Options
。安全專家強(qiáng)烈地建議從服務(wù)端解決點(diǎn)擊劫持的問(wèn)題。
4. iframe 網(wǎng)絡(luò)釣魚(yú)
試考慮一個(gè)社交平臺(tái),它允許用戶和開(kāi)發(fā)人員使用 iframe 將第三方網(wǎng)頁(yè)合并到他們的粉絲頁(yè)面或其他的應(yīng)用程序中。
攻擊者經(jīng)常濫用這個(gè)功能來(lái)將 iframe 用于網(wǎng)絡(luò)釣魚(yú)攻擊。
在預(yù)設(shè)情況下,iframe 中的內(nèi)容能重定向頂級(jí)窗口。因此,攻擊者可能會(huì)利用跨站腳本(XSS)漏洞來(lái)將網(wǎng)絡(luò)釣魚(yú)的代碼當(dāng)作 iframe 植入到 Web 應(yīng)用程序中,引導(dǎo)用戶進(jìn)入釣魚(yú)網(wǎng)站。
作為示例,試思考以下代碼:
<html><head><title>Infosec Institute iFrame by Irfan</title></head><body><iframe src=”/user/piumi/” width=”1450″ height=”300″ frameborder=”0″></iframe><iframe src=”http://phishing.com/wp-login” width=”1450″ height=”250″ frameborder=”0″></iframe></body>
</html>
上方的代碼中包含一個(gè) iframe 嵌入的網(wǎng)絡(luò)釣魚(yú)站點(diǎn)。用戶會(huì)被重定向到那里,如果用戶沒(méi)注意網(wǎng)址欄,攻擊者將能輕松地獲取用戶憑據(jù)。
iframe 網(wǎng)絡(luò)釣魚(yú)攻擊者不能偽造網(wǎng)址欄,但他們能觸發(fā)重定向,操縱用戶之后所接收的內(nèi)容。
這個(gè)問(wèn)題可以通過(guò)替換 sandbox
中的 allow-top-navigation
屬性值來(lái)避免。
最后的一些看法
iframe 能提高用戶的互動(dòng)性。但是,當(dāng)你使用 iframe 的時(shí)候,你處理的內(nèi)容是來(lái)自于你無(wú)法控制的第三方。因此,iframe 經(jīng)常會(huì)對(duì)你的應(yīng)用程序造成威脅。
然而,我們不能因?yàn)榘踩檻]就停止使用 iframe。我們需要意識(shí)到這些問(wèn)題并采取防范措施來(lái)保護(hù)我們的應(yīng)用程序。
我認(rèn)為這篇文章能幫你識(shí)別使用 iframe 的安全問(wèn)題。在下方評(píng)論區(qū)讓我知道你的看法。
謝謝您的閱讀!
如果發(fā)現(xiàn)譯文存在錯(cuò)誤或其他需要改進(jìn)的地方,歡迎到 掘金翻譯計(jì)劃 對(duì)譯文進(jìn)行修改并 PR,也可獲得相應(yīng)獎(jiǎng)勵(lì)積分。文章開(kāi)頭的 本文永久鏈接 即為本文在 GitHub 上的 MarkDown 鏈接。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-486832.html
掘金翻譯計(jì)劃 是一個(gè)翻譯優(yōu)質(zhì)互聯(lián)網(wǎng)技術(shù)文章的社區(qū),文章來(lái)源為 掘金 上的英文分享文章。內(nèi)容覆蓋 Android、iOS、前端、后端、區(qū)塊鏈、產(chǎn)品、設(shè)計(jì)、人工智能等領(lǐng)域,想要查看更多優(yōu)質(zhì)譯文請(qǐng)持續(xù)關(guān)注 掘金翻譯計(jì)劃、官方微博、知乎專欄。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-486832.html
到了這里,關(guān)于每個(gè) Web 開(kāi)發(fā)人員都應(yīng)該知道的 4 個(gè) iframe 安全問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!