欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

防盗链过滤器

发布时间:2025/3/20 编程问答 30 豆豆
生活随笔 收集整理的这篇文章主要介绍了 防盗链过滤器 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

使用过滤器,防止通过其他URL地址直接访问本站资源
应用request对象的getHeader()方法获得信息头来源地址,若是来自其他网站就弹出错误图片

public String getHeader(String headerName) headerName:指定字符串类型的响应头名称

创建Filter过滤器的实现类ImageFilter,在doFilter()方法中对request进行验证,将图片显示在页面之前,验证客户端是否来自本网站

import java.io.IOException;import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class ImageFilter implements Filter {@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)throws IOException, ServletException {HttpServletRequest request=(HttpServletRequest)req; //request对象HttpServletResponse response=(HttpServletResponse)res; //response对象String imurl=request.getHeader("imurl"); //链接的来源地址if(imurl==null||!imurl.contains(request.getServerName())){ //判断访问来源request.getRequestDispatcher("/errorimage.gif").forward(request, response); //显示错误图片}else{chain.doFilter(request, response); //显示正确图片}}@Overridepublic void init(FilterConfig arg0) throws ServletException {} }

web.xml中配置Filter,该过滤器从request信息头中获取请求来源

<welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><filter><filter-name>imageFilter</filter-name><filter-class>com.cn.zj.ServletFilter.ImageFilter</filter-class></filter><filter-mapping><filter-name>imageFilter</filter-name><url-pattern>/images/*</url-pattern></filter-mapping>

Myfilter.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><base href="<%=basePath%>"><title>防盗链过滤器</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form action="" method="post" name="form1"><table background="pg.jpg" width="400" height="234" align="center"><Tr><Td>&nbsp;</Td></Tr></table><table align="center">来自本站地址访问图片<%request.getHeader("imurl"); %></table></form></body> </html>

总结

以上是生活随笔为你收集整理的防盗链过滤器的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。