首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

防止網頁內容被惡意采集:基於 HTTP Referer 的 ASP 防盜鏈與存取控制實作

     編輯:關於JSP

    問題背景

    網站內容容易被爬蟲、采集程式批量抓取,或被他站透過 <img>、<iframe> 直接引用(盜鏈),消耗頻寬與伺服器資源。傳統做法是在伺服端驗證 HTTP_REFERER 標頭,僅允許來自自有域名的請求通過。

    ASP/VBScript 實作範例

    以下程式碼置於每個需保護頁面的頂端(或包含檔中),攔截非法來源:

    <%
    '****************************************
    ' 防止內容被采集、防盜鏈、非法直接存取
    '****************************************
    Dim onlyURL, from
    onlyURL = "https://127.0.0.1/"   ' 允許的來源域名(含協定與結尾斜線)
    
    from = Trim(Request.ServerVariables("HTTP_REFERER"))
    
    If from = "" Then
        ' 來源為空:可能直接輸入網址、書籤、或爬蟲偽裝
        Response.Write "

    拒絕直接存取!!!" Response.Write "

    來源: " & from Response.Write "

    請訪問: " & onlyURL & "" Response.Write "

    " Response.Write "

    " & vbCRLF Response.End Else If InStr(from, onlyURL) <> 1 Then ' 非指定來源:疑似盜鏈或外站嵌入 Response.Write "

    拒絕盜鏈!!!" Response.Write "

    來源: " & from Response.Write "

    請訪問: " & onlyURL & "" Response.Write "

    " Response.Write "

    " Response.End Else ' 來源合法:繼續執行後續頁面邏輯 End If End If %>

    邏輯解析

    情境HTTP_REFERER處理方式
    直接輸入網址 / 書籤 / 爬蟲偽裝空字串輸出隱藏提示並用 JS 提交空表單導向首頁
    外部網站嵌入 / 盜鏈非自有域名開頭同樣阻擋並導向首頁
    自家頁面連結點擊以 onlyURL 開頭放行,正常顯示內容

    局限性與進階防護建議

    • Referer 可偽造:爬蟲可輕易偽造 Referer 標頭,此法僅能阻擋低階采集。
    • 隱私模式/防火牆會移除 Referer:導致合法用戶誤判。
    • 建議搭配:
      • IP 訪問頻率限制(如 Nginx limit_req、WAF 規則)
      • User-Agent 特徵分析與封鎖
      • 動態生成 CSS/JS 混淆、字體加密、Canvas 指紋驗證
      • 重要資料走 API + Token/簽名驗證,而非直接輸出 HTML

    現代替代方案(Java/JSP 範例)

    <%
    String referer = request.getHeader("Referer");
    String allowed = "https://www.yoursite.com/";
    if (referer == null || !referer.startsWith(allowed)) {
        response.sendRedirect(allowed); // 或回傳 403
        return;
    }
    %>
    
    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved