成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五種常見實現防盜鏈功能的方案

安全 應用安全
過濾器中通過比對Referer中的來源,如果它不是我們允許的來源,那么就直接拒絕請求。其實攻擊者依然可以偽裝Referer,所以還是無法徹底解決資源被盜取的問題。

    在熱門平臺上有許多的熱點新聞,熱門的圖片、視頻等資源,每天都吸引大量的用戶觀看和下載。于是就有攻擊者通過爬蟲等一系列技術手段,把熱門平臺上的資源拉取到自己的網站然后呈現給用戶,從而攻擊者達到了即不用提供資源也能賺錢的目的,如下圖所示盜取資源的過程圖:

圖片圖片

    為此,熱門平臺為了防止其他的小站點盜取其資源,于是就使用防盜鏈來保護自身資源不被竊取。下面我們聊聊常見的幾種防盜鏈實現方案。

1、Nginx實現方案

    在HTTP協議頭里有一個Referer的字段,Referer可以告訴服務器該網頁請求是從哪里鏈接過來的,如下的請求頭截圖:

圖片圖片

    那么可以利用請求頭上的Referer攜帶的值,使用Nginx在網關層做防盜鏈,這個也是最簡單的實現防盜鏈功能的方式之一。

    Nginx通過攔截訪問資源的請求,通過valid_referers關鍵字定義的白名單,校驗請求頭中Referer地址是否為本站,如不是本站請求,那么就拒絕這個請求的訪問,Nginx的配置如下所示:

location ~*\.(gif|jpg|png|jpeg)$ {
    root /web;
    valid_referers none blocked www.longxiabiancheng.com;
    if($invalid_referer){
        return 403;
    }
}

    Nginx的方式可以限制大多數普通的非法請求,但不能限制有針對性的攻擊請求,因為攻擊者可以通過偽造Referer信息來繞過Nginx的檢查。

2、SpringBoot的過濾器實現方案

    過濾器同樣是使用Referer的原理,在SpringBoot中聲明一個過濾器,然后獲取到當前請求頭當中的Referer,如下代碼所示:

public class MyResourceFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        //獲取referer
        String referer =request.getHeader("Referer");
        //指定通過的域名
        String allowedDomain = "https://www.longxiabiancheng.com";
        //如果不是可以通過的域名,直接返回
        if(StringUtils.isEmpty(referer) || !referer.startsWith(allowedDomain)){
            response.getWriter().write("longxiabiancheng");
            return;
        }
    }
}

    過濾器中通過比對Referer中的來源,如果它不是我們允許的來源,那么就直接拒絕請求。其實攻擊者依然可以偽裝Referer,所以還是無法徹底解決資源被盜取的問題。

3、token驗證的實現方案

圖片圖片

    用戶登錄之后服務器通過生成一個token,然后每次用戶請求后端都需要將token攜帶給服務器,如果請求中沒有token或者token解析失敗,就直接拒絕請求的訪問。

    但是這種方式攻擊者依然可以通過先請求我們的登錄接口拿到token后,然后把token放在請求頭上,繼而達到偽裝成正常的用戶請求,這樣就繞過token驗證。

4、時間戳驗證方案

    正常的用戶打開一個網頁之后總會停留一定的時間,即使此用戶停留的再短也會比其他的竊取工具(如爬蟲)停留的時間長,利用這個特點在每次響應客戶端的時候,后端給客戶端響應一個時間戳,然后前端攜帶這個時間戳請求后端接口,后端拿到時間戳后與當前的時間做比對,核心的代碼如下所示:

private boolean checkTime(HttpServletRequest request, HttpServletResponse response) {
        //獲取時間戳
        String timestampStr = request.getParameter("timestamp");


        try {
            //時間戳不存在,直接拒絕訪問
            if (timestampStr == null) {
                response.getWriter().write("不可以繼續訪問哦");
                return false;
            }


            long timestamp = Long.parseLong(timestampStr);
            long currentTimestamp = new Date().getTime();
            //如果停留的時間大約指定的時間  就認為不是機器
            if (Math.abs(currentTimestamp - timestamp) < 500) {
                response.getWriter().write("不可以繼續訪問哦!");
                return false;
            }
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    請求種的時間戳與當前的時間計算差值,如果差值大于設定的值,我們就認為是正常用戶的請求,反之認定為盜竊用戶請求,則拒絕訪問。時間戳的方式也存在一定的誤判,用戶可能確實就在網頁上停留很短的時間。

5、圖形驗證碼的實現方案

    圖形驗證碼是一種比較常規的限制辦法,在下載資源,瀏覽關鍵信息的時候,都必須要求用戶手動操作驗證碼,典型的圖形驗證碼如下所示:

圖片圖片

    使用圖形驗證碼使得一般的爬蟲工具無法繞過校驗,從而起到保護資源的目的。

    防盜鏈其實不是百分之百可以防住資源被盜竊的問題,它只能增加破解的難度,因為只要網站的數據能夠正常訪問,那攻擊者就能偽裝成正常用戶來竊取數據。在一些大公司中,他們會去結合大數據分析用戶的行為,將一些不正常的用戶行為定義到黑名單中,然后在黑名單上的用戶請求會被攔截。

責任編輯:武曉燕 來源: 龍蝦編程
相關推薦

2011-05-31 14:57:17

PHP盜鏈

2019-08-25 07:15:47

Nginx防盜鏈Linux

2017-03-22 14:41:43

2025-02-04 10:05:16

SpringForbiddenReferer?

2024-07-18 09:19:17

Nginx圖片安全性

2020-06-15 09:41:47

網絡安全數據技術

2024-01-31 23:27:50

盜鏈Node.js

2020-09-01 16:56:58

華為云

2023-05-26 07:19:49

Spring聲明式事務

2022-12-13 10:05:27

定時任務任務調度操作系統

2025-05-07 08:21:01

2025-04-25 08:55:00

Pod運維

2014-03-11 11:33:21

2009-09-17 12:58:52

2016-11-27 19:21:05

2025-03-11 08:10:00

加密數據安全數據保護

2012-03-29 09:57:06

jQuery

2015-04-24 10:29:31

OpenStackCloudFoundrPaaS

2019-08-30 13:00:12

MySQL高可用數據庫

2011-05-23 09:32:43

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久精品 | 国产精品久久国产精品 | 全部免费毛片在线播放网站 | 国产精品区二区三区日本 | 在线视频91| 国产精品亚洲一区 | 国产精品日韩一区二区 | 亚洲一区二区高清 | 亚洲精品黄色 | 国产精品一区二区久久 | 国产成人精品久久 | 精精国产xxxx视频在线播放7 | 看av电影| 成人一区二区三区视频 | 国产精品夜夜夜一区二区三区尤 | 毛片一区二区三区 | 中文字幕在线观看视频网站 | 国产精品乱码一区二三区小蝌蚪 | 中文字幕av色 | 亚洲天堂精品一区 | 国产日韩欧美在线观看 | 久草视频网站 | 麻豆changesxxx国产 | 亚洲精品不卡 | 91在线电影 | 97色伦网| 欧美精品在线一区 | 岛国毛片 | 一区二区在线不卡 | 久久久久久成人 | 毛片一区 | 在线只有精品 | 日本男人天堂 | 国产精品久久久久久久久大全 | 久久精品综合 | 精品一区二区三区在线播放 | 91视视频在线观看入口直接观看 | 国产视频一区二区 | 国产一区视频在线 | 国内精品一区二区 | 在线免费看黄 |