web頁面防盜鏈功能使用--request.getHeader("Referer")

來源:互聯網
上載者:User

標籤:判斷   調用   cli   技術分享   dog   load   news   應用程式   ade   

使用Request對象設定頁面的防盜鏈

所謂的防盜鏈就是當你以一個非正常渠道去訪問某一個Web資源的時候,伺服器會將你的請求忽略並且將你的當前請求變為按正常渠道訪問時的請求並返回到相應的頁面,使用者只有通過該頁面中的相關操作去訪問想要請求的最終資源。

例如,你有一個訪問某資源的網址,但是你事先不知道這個網址是有防盜鏈的,那麼當你輸入該網址時你可能會發現,並沒有馬上跳轉到你想要的資源頁面而是一些無關的資訊頁面,但是就是在這些資訊頁面中你發現有一個超連結或是其他動作可以跳轉到你所訪問的最終資源頁面。

 

1. 防盜鏈定義:所謂防盜鏈是指防止其他web網站頁面通過串連本網站的頁面來訪問本網站內容,這樣對於本網站來說侵犯了本網站的著作權

2.非法使用者: 常訪問本網站頁面的連結有三種出處:

   (1) 地址欄輸入連結地址。如地址欄上輸入www.csdn.com/news_100.jsp;

   (2)其他網站上的應用程式的頁面上通過連結本網站頁面資源。如(www.123.com/content.jsp頁面上有一連結指向www.csdn.NET/news_100.jsp);

   (3)本網站上的頁面資源串連到本網站的另外的頁面資源。如(www.csdn.com/mulu.jsp頁面上有一連結指向www.csdn.com/news_100.jsp);

這三類使用者中第一類和第二類通常是非法使用者,如果控制這些使用者不能訪問本網站頁面資源

 3.如何防盜鏈:通過調用request.getHeader("Referer");判斷訪問本頁面的連結來自哪裡。具體做法:

 

[java] view plain copy 
  1. package edu.request;  
  2.   
  3. import java.io.IOException;  
  4. import javax.servlet.ServletException;  
  5. import javax.servlet.http.HttpServlet;  
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8.   
  9. public class RefererServlet extends HttpServlet {  
  10.   
  11.      //防盜鏈  
  12.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  13.             throws ServletException, IOException {  
  14.         //referer為用戶端帶來的要求標頭         
  15.         String referer = request.getHeader("Referer");  
  16.         System.out.println(referer);  
  17.         //如果連結出自地址欄的輸入,則跳轉至本網站RequestAndResponse應用的首頁  
  18.         if (referer==null) {  
  19.             System.out.println("由於您訪問的內容著作權,您是地址欄上輸入的連結,即將跳轉至本站首頁...");  
  20.             response.sendRedirect("/RequestAndResponse/index.jsp");  
  21.             return ;  
  22.         }  
  23.         //如果連結出自本網站的RequestAndResponse應用的頁面,則正常顯示,如果是出自其他網站或本網站的其他應用,則跳轉至本網站RequestAndResponse應用的首頁  
  24.         if(!referer.startsWith("http://localhost:8080/RequestAndResponse")){  
  25.             System.out.println("由於您訪問的內容著作權,您是其他網站頁面的連結,即將跳轉至本站首頁...");  
  26.             response.sendRedirect("/RequestAndResponse/index.jsp");  
  27.             return ;  
  28.         }else {  
  29.             System.out.println("來自本站頁面的連結,合法使用者");  
  30.             request.getRequestDispatcher("content.jsp").forward(request, response);  
  31.         }  
  32.           
  33.           
  34.     }  
  35.   
  36.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  37.             throws ServletException, IOException {  
  38.          doGet(request, response);  
  39.     }  
  40.   
  41. }  

 

比如:通過http://localhost:8080/ServletDetail/index.jsp頁面的一個連結,連結至http://localhost:8080/RequestAndResponse/referer,則request中封裝這Referer要求標頭,其內容為http://localhost:8080/ServletDetail/index.jsp

:

點擊新聞後,控制台輸出:

 

web頁面防盜鏈功能使用--request.getHeader("Referer")

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.