日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转载】target='_blank' 安全漏洞示例

發(fā)布時(shí)間:2024/8/26 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转载】target='_blank' 安全漏洞示例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

kayson

2016-08-29 23:09:31

推薦新文章

target='_blank' 安全漏洞示例

原文鏈接: dev.to

更新: Instagram已經(jīng)解決了這個(gè)問題, 很可能是因?yàn)檫@篇文章。Facebook和Twitter仍未解決。我用Instagram作為基本的例子,但主要結(jié)論是target="_blank"安全漏洞極為普遍。每個(gè)Web開發(fā)者應(yīng)該警惕它,瀏覽器也應(yīng)該考慮修改這個(gè)行為。

如果你在鏈接上使用 target="_blank"屬性,并且不加上rel="noopener"屬性,那么你就讓用戶暴露在一個(gè)非常簡(jiǎn)單的釣魚攻擊之下。為了告知來自于不受保護(hù)的站點(diǎn)的用戶,我們運(yùn)行一個(gè)利用了這個(gè)缺陷的腳本。

if (window.opener) {window.opener.location = "https://dev.to/phishing?referrer="+document.referrer; }

我相信絕大多數(shù)站點(diǎn)都沒有恰當(dāng)?shù)靥幚磉@個(gè)問題,但令我意外的是Instagram.com 也是其中一個(gè)。我們最近剛好創(chuàng)建了 @ThePracticalDev Instagram賬號(hào),然后就發(fā)現(xiàn)了這個(gè)問題。如果你在我們的資料頁點(diǎn)擊 dev.to 鏈接,然后回到原來的頁面,你就會(huì)明白我的意思。Twitter也沒有在Safari上防備這個(gè)安全漏洞,Chrome和Firefox也是。他們沒有用 rel="noopener",因此看起來他們用的安全腳本在Safari上并不起作用。

更新: 由于Instagram在這篇文章發(fā)表之后修復(fù)了這個(gè)問題,我把下面的例子改成了Facebook的頁面。

弄清原委

  • 訪問The Practical Dev Facebook page.
  • 在資料頁點(diǎn)擊dev.to鏈接。這會(huì)打開一個(gè)新的頁卡或窗口。
  • 注意,原來的頁面已經(jīng)跳轉(zhuǎn)到這個(gè)頁面.
  • 當(dāng)站點(diǎn)在鏈接中使用target="_blank"來打開新頁卡或窗口時(shí),該站點(diǎn)就通過window.opener API給了新頁面對(duì)原有窗口的訪問入口,并授予了一些權(quán)限。這其中的一些權(quán)限被跨域限制攔截了,但是window.location是漏網(wǎng)之魚。

    別急,還有更多

    這不僅存在釣魚攻擊的問題,還涉及到隱私問題,因?yàn)樾麓蜷_的站點(diǎn)對(duì)原有頁卡的瀏覽地址有著持續(xù)的訪問權(quán)。它可以輪詢這個(gè)信息,并得到結(jié)果。幸虧這個(gè)行為看起來被跨域限制阻止了,因此即便我或許可以持續(xù)訪問你不想讓我知道的信息,完整的規(guī)范里應(yīng)該包含健全的限制規(guī)則。

    更新: 在我最開始寫這個(gè)的時(shí)候,我提出了一種瀏覽器間諜場(chǎng)景,該場(chǎng)景中不良分子可以更徹底地偵測(cè)用戶瀏覽歷史。現(xiàn)在我覺得那并不準(zhǔn)確,因此我修改了表述。

    為了限制 window.opener的訪問行為,原始頁面需要在每個(gè)使用了target="_blank"的鏈接中加上一個(gè)rel="noopener"屬性。然而,火狐不支持這個(gè)屬性值,所以實(shí)際上你要用 rel="noopener noreferrer"來完整覆蓋。盡管某些預(yù)防措施可以通過腳本實(shí)現(xiàn),正如在Twitter上看到的,但這在Safari上并不起作用。

    var otherWindow = window.open(); otherWindow.opener = null; otherWindow.location = url;

    這段建議腳本來自于關(guān)于該主題的一篇好文章.

    這個(gè)問題并不知名,而且完全被低估了。它在Web Hypertext Application Technology Working Group郵件列表中被提出 在我看來,這個(gè)瀏覽器行為的風(fēng)險(xiǎn)遠(yuǎn)大于潛在的好處。不管怎樣,Facebook和Instagram也沒有理由忽視這個(gè)問題。

    未來我還會(huì)談?wù)摳啻祟愂虑椤?有興趣可以關(guān)注我的Twitter(@bendhalpern) 或 @ThePracticalDev。

    臉書 瀏覽器 火狐 前端 程序員

    版權(quán)聲明

    本譯文僅用于學(xué)習(xí)、研究和交流目的,歡迎非商業(yè)轉(zhuǎn)載。轉(zhuǎn)載請(qǐng)注明出處、譯者和眾成翻譯的完整鏈接。

    轉(zhuǎn)載于:https://www.cnblogs.com/InnerPeace-Hecdi/p/9428722.html

    總結(jié)

    以上是生活随笔為你收集整理的【转载】target='_blank' 安全漏洞示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。