日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Java代码手段防止非法请求——防盗链

發布時間:2023/12/15 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 Java代码手段防止非法请求——防盗链 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java代碼手段防止非法請求,思路如下:
1. 獲取到當前請求的域名,如www.a.com
2. 獲取到請求資源的上一個地址
3. 判斷上一個地址是否為空,如果為空代表的是直接訪問的資源,非法
 還有一種情況就是B項目訪問時上一個地址www.b.com/xxx 不是資源所在地址,非法
 新建一個過濾器,實現邏輯,如果非法則顯示圖像,攔截return ,否則放行

過濾器:

 1 package com.chx;
 2 
 3 import java.io.IOException;
 4 
 5 import javax.servlet.Filter;
 6 import javax.servlet.FilterChain;
 7 import javax.servlet.FilterConfig;
 8 import javax.servlet.ServletException;
 9 import javax.servlet.ServletRequest;
10 import javax.servlet.ServletResponse;
11 import javax.servlet.annotation.WebFilter;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
14 
15 public class ImageFilter implements Filter{
16 
17     @Override
18     public void destroy() {
19         System.out.println("銷毀");
20     }
21 
22     @Override
23     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
24             throws IOException, ServletException {
25         System.out.println("dofilter");
26         //轉換成HttpServlet對象
27         HttpServletRequest httprequest=(HttpServletRequest)request;
28         HttpServletResponse httpresponse=(HttpServletResponse)response;
29         
30         //獲取上一個地址
31         String referer = httprequest.getHeader("Referer");
32         String serverName = httprequest.getServerName();
33         System.out.println(referer+"	"+serverName);
34         //如果地址為空,則有可能是直接訪問資源
35         //地址不正確,則是非法訪問請求
36         if(referer==null||!referer.contains(serverName)) {
37             //轉發到非法提示
38             request.getRequestDispatcher("/img/ffqq.png").forward(request, response);
39             return;
40         }
41         
42         //資源放行
43         chain.doFilter(request, response);
44         
45     }
46 
47     @Override
48     public void init(FilterConfig arg0) throws ServletException {
49         System.out.println("初始化");
50     }
51 
52 }

web.xml

 1 <!DOCTYPE web-app PUBLIC
 2  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 3  "http://java.sun.com/dtd/web-app_2_3.dtd" >
 4 
 5 <web-app>
 6   <display-name>Archetype Created Web Application</display-name>
 7   <filter>
 8     <filter-name>imgFilter</filter-name>
 9     <!--指向自己配置的過濾器類-->
10     <filter-class>com.chx.ImageFilter</filter-class>
11   </filter>
12   <filter-mapping>
13     <filter-name>imgFilter</filter-name>
14     <!--過濾img文件夾下的所有文件-->
15     <url-pattern>/img/*</url-pattern>
16   </filter-mapping>
17 </web-app>

執行結果

1.正常訪問——在本項目中通過請求訪問資源

2.非法訪問——直接訪問資源地址

3.非法訪問——通過其他項目訪問本項目資源

通過這種判斷上一個請求地址(Referer)的方式,就可達到過濾非法請求的目的。

總結

以上是生活随笔為你收集整理的Java代码手段防止非法请求——防盗链的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。