1. 程式人生 > >黑帽來源頁劫持程式碼以及如何防範

黑帽來源頁劫持程式碼以及如何防範

今天在群裡看到一個朋友的企業站點的 友鏈目標站點 被篡改後,點選友鏈目標站點導致當前頁面被劫持了的問題,然後在網上搜索了一下。

總結如下:
預設情況下當在頁面中開啟新頁面的時候,新的瀏覽上下文會對來源頁視窗有控制權限 window.opener ,通過該屬性可以實現跳轉來源頁視窗的地址。

A頁面程式碼:

<a href="B頁面地址"  target="_blank" >連結</a>

B頁面程式碼:

if (window.opener) {
   window.opener.location = "https://www.cnblogs.com/dykimy";
}

當用戶從A頁面跳轉到B頁面的時候,A頁面將會自動跳轉到 https://www.cnblogs.com/dykimy 這就實現了某些黑帽的目的。


如何應對這種流氓的B頁面呢?
只需要將A頁面程式碼改為如下即可

<a href="B頁面地址"  target="_blank" rel="noopener">連結</a>

noopener 作用:指示瀏覽器開啟連結而不授予新的瀏覽上下文對開啟它的文件的訪問許可權-通過在開啟的視窗中不設定 window.opener 屬性(返回 null )。

參考網址(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/50709