target="_blank"的安全缺陷
最近在多個地方看到有關 target="_blank" 的安全缺陷 文章,下面來簡單總結一下。
可能大家在寫網頁的時候經常給超鏈接加個屬性 target="_blank",意思就是在瀏覽器新的窗口打開此超鏈接,但是大多數人應該都注意不到這個屬性是有安全缺陷的。
具體說明下:比如說,當前網頁(即你現在所處的風飛揚博客的頁面)中有個a標簽的是
1
2
|
|
點擊后跳轉到的新的窗口的網頁(在這里是新的風飛揚博客中一個測試頁面)擁有了瀏覽器window.opener對象賦予的對原網頁(在這里是你現在所處的頁面)的部分權限。
對于這種正常的情況就不做demo演示了,此處不做特殊處理的話就是點擊超鏈接打開了2個普通的頁面罷了。
但是如果我在新打開的頁面上加上一句JavaScript就不一樣了, 上代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<script type= "text/javascript" > if (window.opener){ alert( "剛才的超鏈接是有安全隱患的!看一下前一個窗口的頁面是否發生了改變" ); } else { alert( "剛才的超鏈接是安全的!前一個窗口的頁面沒有任何變化!" ); } </script> |
請點擊此超鏈接測試有安全缺陷的情況:這是測試有安全隱患的超鏈接
這個安全隱患就可能被別有用心的人所利用,用戶可能很少注意地址欄的變化,這樣的話如果做個和正規網站一樣的界面可能就很容易以假換真,后果還是比較嚴重的。
那么逼逼了半天,該如何解決呢?
在target="_blank"后面再添加一個屬性 rel="noopener noreferrer"就行了,不用多說,相信明眼人一看就知道這個屬性的意圖了。如下所示:
1
2
|
再次測試一下沒有該安全缺陷的情況:這是測試沒有該安全隱患的超鏈接
總結一下:下次再做開發的時候別怕麻煩最好在target="_blank"后面添加一句 rel="noopener noreferrer"
posted on 2016-08-30 12:53 風飛揚(windfly) 閱讀(151) 評論(0) 編輯 收藏 所屬分類: 網絡安全與測試