今天在羣裏看到一個朋友的企業站點的 友鏈目標站點 被篡改後,點擊友鏈目標站點致使當前頁面被劫持了的問題,而後在網上搜索了一下。瀏覽器
總結以下:
默認狀況下當在頁面中打開新頁面的時候,新的瀏覽上下文會對來源頁窗口有控制權限 window.opener
,經過該屬性能夠實現跳轉來源頁窗口的地址。oop
A頁面代碼:code
<a href="B頁面地址" target="_blank" >連接</a>
B頁面代碼:blog
if (window.opener) { window.opener.location = "https://www.cnblogs.com/dykimy"; }
當用戶從A頁面跳轉到B頁面的時候,A頁面將會自動跳轉到 https://www.cnblogs.com/dykimy 這就實現了某些黑帽的目的。文檔
如何應對這種流氓的B頁面呢?
只須要將A頁面代碼改成以下便可get
<a href="B頁面地址" target="_blank" rel="noopener">連接</a>
noopener 做用:指示瀏覽器打開連接而不授予新的瀏覽上下文對打開它的文檔的訪問權限-經過在打開的窗口中不設置 window.opener
屬性(返回 null
)。it
參考網址(HTML 連接類型):https://developer.mozilla.org/zh-CN/docs/Web/HTML/Link_types
參考網址(stackoverflow相關問題討論):https://stackoverflow.com/questions/50709625/link-with-target-blank-and-rel-noopener-noreferrer-still-vulnerable/50709760io