摘要:同步自我的博客最近梳理團(tuán)隊(duì)時(shí),在的配置中發(fā)現(xiàn)了這么一項(xiàng)官方文檔的介紹大概是這樣的如果你需要用標(biāo)簽打開一個(gè)標(biāo)簽頁(yè)時(shí),你會(huì)使用這個(gè)屬性,此時(shí)你需要添加這就讓人很迷惑了,這倆屬性是干什么的呢,一下方才知道,它是為了解決安全問題。
同步自我的博客
最近梳理團(tuán)隊(duì) eslint 時(shí),在 airbnb 的配置中發(fā)現(xiàn)了這么一項(xiàng)
"react/jsx-no-target-blank": 2
官方文檔的介紹大概是這樣的
如果你需要用 a 標(biāo)簽打開一個(gè)標(biāo)簽頁(yè)時(shí),你會(huì)使用 target="_blank" 這個(gè)屬性,此時(shí)你需要添加 rel="noreferrer noopener"
這就讓人很迷惑了,這倆屬性是干什么的呢,google 一下方才知道,它是為了解決安全問題。
當(dāng)你使用 target="_blank" 打開一個(gè)新的標(biāo)簽頁(yè)時(shí),新頁(yè)面的 window 對(duì)象上有一個(gè)屬性 opener,它指向的是前一個(gè)頁(yè)面的 window 對(duì)象,因此,后一個(gè)頁(yè)面就獲得了前一個(gè)頁(yè)面的控制權(quán),so 可怕!!
比如的 a 標(biāo)簽是這樣 打開連接 ,打開后在控制臺(tái)輸入 window.opener.alert(1) 看看?
甚至在跨域的情況下他也可以生效,比如打開 鏈接后,你可以使用 window.opener.location.replace 更改前一個(gè)頁(yè)面的 url。
那么,為了避免這種情況,就需要咱們的主角登場(chǎng)了!
比如你的鏈接現(xiàn)在變成了這樣 鏈接 ,再打開后你會(huì)發(fā)現(xiàn) window.opener 已經(jīng)被置為了 null,如果是一些舊的瀏覽器,可以使用 rel=noreferrer,它不僅禁用了 window.opener,后一個(gè)頁(yè)面也無法獲取到 referrer,再不行,可以利用 js 來打開新的頁(yè)面,之后將 opener 置為 null 來完成這個(gè)功能
var otherWindow = window.open(); otherWindow.opener = null; otherWindow.location = url;
參考文檔
https://html.spec.whatwg.org/...
https://mathiasbynens.github....
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/50909.html
摘要:惡意網(wǎng)站根據(jù)來偽造一個(gè)足以欺騙用戶的頁(yè)面,并展示出來期間還可以做一次跳轉(zhuǎn),使得瀏覽器的地址欄更具有迷惑性。而如果在鏈接中加入了,則此時(shí)兩個(gè)標(biāo)簽頁(yè)將會(huì)互不干擾,使得原頁(yè)面的性能不會(huì)受到新頁(yè)面的影響。 在網(wǎng)頁(yè)中使用鏈接時(shí),如果想要讓瀏覽器自動(dòng)在新的標(biāo)簽頁(yè)打開指定的地址,通常的做法就是在 a 標(biāo)簽上添加 target等于_blank 屬性。然而,就是這個(gè)屬性,為釣魚攻擊者帶來了可乘之機(jī)。 s...
摘要:惡意網(wǎng)站根據(jù)來偽造一個(gè)足以欺騙用戶的頁(yè)面,并展示出來期間還可以做一次跳轉(zhuǎn),使得瀏覽器的地址欄更具有迷惑性。而如果在鏈接中加入了,則此時(shí)兩個(gè)標(biāo)簽頁(yè)將會(huì)互不干擾,使得原頁(yè)面的性能不會(huì)受到新頁(yè)面的影響。 在網(wǎng)頁(yè)中使用鏈接時(shí),如果想要讓瀏覽器自動(dòng)在新的標(biāo)簽頁(yè)打開指定的地址,通常的做法就是在 a 標(biāo)簽上添加 target等于_blank 屬性。然而,就是這個(gè)屬性,為釣魚攻擊者帶來了可乘之機(jī)。 s...
摘要:惡意網(wǎng)站根據(jù)來偽造一個(gè)足以欺騙用戶的頁(yè)面,并展示出來期間還可以做一次跳轉(zhuǎn),使得瀏覽器的地址欄更具有迷惑性。而如果在鏈接中加入了,則此時(shí)兩個(gè)標(biāo)簽頁(yè)將會(huì)互不干擾,使得原頁(yè)面的性能不會(huì)受到新頁(yè)面的影響。 在網(wǎng)頁(yè)中使用鏈接時(shí),如果想要讓瀏覽器自動(dòng)在新的標(biāo)簽頁(yè)打開指定的地址,通常的做法就是在 a 標(biāo)簽上添加 target等于_blank 屬性。然而,就是這個(gè)屬性,為釣魚攻擊者帶來了可乘之機(jī)。 s...
Background Today eslint reports an error when I introduce eslint-plugin-react error Using target=_blank without rel=noopener noreferrer is a security risk: see https://mathiasbynens.github.io/rel-noo...
摘要:當(dāng)一個(gè)外部鏈接使用了的方式,這個(gè)外部鏈接會(huì)打開一個(gè)新的瀏覽器。此時(shí),新頁(yè)面會(huì)打開,并且和原始頁(yè)面占用同一個(gè)進(jìn)程。筆者的總結(jié)這是一篇很短的文章,主要介紹了在使用標(biāo)簽打開一個(gè)新窗口過程中的安全問題。 本文首發(fā)于公眾號(hào): 符合預(yù)期的CoyPan本文章翻譯于:https://medium.com/front-end-weekly/prevent-sending-http-referer-hea...
閱讀 1053·2023-04-25 17:51
閱讀 2858·2021-11-23 09:51
閱讀 1483·2021-11-08 13:21
閱讀 2457·2021-09-22 15:14
閱讀 1522·2019-08-30 12:48
閱讀 1086·2019-08-29 12:44
閱讀 1146·2019-08-26 12:21
閱讀 1403·2019-08-26 10:47