顯示具有 不安全的第三方鏈結 標籤的文章。 顯示所有文章
顯示具有 不安全的第三方鏈結 標籤的文章。 顯示所有文章

2025年7月18日 星期五

[研究][研究]黑箱 Web弱掃報告【不安全的第三方鏈結 (target="_blank")】弱點(二)

[研究][研究]黑箱 Web弱掃報告【不安全的第三方鏈結 (target="_blank")】弱點(二)

2025-07-18

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

續這篇

[研究]黑箱 Web弱點掃描報告【不安全的第三方鏈結 (target="_blank")】弱點(一)
https://shaurong.blogspot.com/2025/06/web-targetblank.html

********************************************************************************

它的檢測依據蠻明確的,誤判機率也低,修補方式也明確,危險等級有到【中】?

Default.aspx 修補前

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="WebApplication1.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <a href="https://example.com" target="_blank">外部連結</a>
    </form>
</body>
</html>

Default.aspx 修補後

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="WebApplication1.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <a href="https://example.com" target="_blank" rel="noopener noreferrer">外部連結</a>
    </form>
</body>
</html>

Default.aspx.cs

using System;

namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

********************************************************************************

HCL AppScan 10.8.1 掃描結果 (修補前)

HCL AppScan 10.8.1 掃描結果 (修補後)

********************************************************************************

OWASP ZAP 2.16.1掃描結果 (修補前)

OWASP ZAP 2.16.1掃描結果 (修補後)

********************************************************************************

Acunetix Web Vulnerability Scanner (AWVS) 25.5.25 掃描結果 (修補前)




********************************************************************************

OWASP ZAP 2.16.1沒有列【【不安全的第三方鏈結 (target="_blank")】】,認為【第三方鏈結 (target="_blank")】別說不算「中」,連「低」和「INFO」都排不上。

Acunetix Web Vulnerability Scanner (AWVS)也沒有列【不安全的第三方鏈結 (target="_blank")】。

(完)

相關




2025年6月25日 星期三

[研究]黑箱 Web弱點掃描報告【不安全的第三方鏈結 (target="_blank")】弱點(一)

[研究]黑箱 Web弱點掃描報告【不安全的第三方鏈結 (target="_blank")】弱點(一)

2025-06-25

HCL AppScan 10.8報告

不安全的第三方鏈結 (target="_blank")

嚴重性: 中

CVSS 評分: 5.3

CVSS 向量: AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N/E:X/RL:X/RC:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MPR:X/MUI:X/MS:X/MC:X/MI:X/MA:X

風險: 有可能說服無經驗而易受騙的使用者提供機密性資訊,如:使用者名稱、密碼、信用卡號碼、社會保險號碼等等

原因: 以 target=_blank 鏈結所鏈結到的頁面可以透過 window.opener 物件部分存取鏈結頁面視窗物件

修正: 將屬性 rel = "noopener noreferrer"  新增至 target="_blank" 的每一個鏈結元素

請問 rel = "noopener noreferrer" 的意義 ? 為何可以解決 "不安全的第三方鏈結 (target="_blank")" 問題 ?

********************************************************************************

ChatGPT 說:

一、rel="noopener noreferrer" 的意義

1.noopener:
  • 禁止新開的分頁透過 window.opener 存取開啟它的原始頁面(即父頁面)的 window 物件。
  • 防止 Reverse Tabnabbing 攻擊。
2.noreferrer

  • 禁止瀏覽器在點擊鏈結時,將 HTTP Referer 標頭傳送給目標網站,避免洩漏來源頁面的網址資訊。
  • 同時也隱含 noopener 效果(現代瀏覽器中)。

二、target="_blank" 的安全問題來源

  • target="_blank" 會在新分頁或新視窗打開鏈結。
  • 如果沒有搭配 rel="noopener":
    • 新開的頁面可以透過 window.opener 取得原本頁面的控制權。
    • 惡意站點可能透過 window.opener.location = 'http://phishing-site.com' 導致原頁面跳轉到釣魚或惡意網站。
    • 攻擊方式稱為 Reverse Tabnabbing。

三、為何 rel="noopener noreferrer" 可以解決?

  • noopener 讓新頁面無法透過 window.opener 操控原頁面,避免原頁面被重定向或注入惡意腳本。
  • noreferrer 進一步防止來源資訊洩漏,增加隱私性。

四、實際範例

不安全寫法:

<a href="https://example.com" target="_blank">外部連結</a>

安全寫法:

<a href="https://example.com" target="_blank" rel="noopener noreferrer">外部連結</a>

五、補充說明

  • 現代瀏覽器多已預設部分阻擋 window.opener,但為相容舊版瀏覽器或確保萬無一失,仍建議主動加入 rel="noopener noreferrer"。
  • 若只是連結到本站內部頁面,此問題較低,但對外部(不受信任)鏈結,強烈建議加上。

六、結論

rel="noopener noreferrer" 是解決 target="_blank" 安全隱患的標準做法,能有效防範:

  • ✔ 釣魚攻擊
  • ✔ 反向分頁劫持(Reverse Tabnabbing)
  • ✔ 敏感資訊洩漏(Referer)

實務建議:

只要有 target="_blank",一律搭配 rel="noopener noreferrer",尤其是鏈結到外部網站。


(完)