Java中实现反盗链Filter
来源:互联网 发布:淘宝网站结构图 编辑:程序博客网 时间:2024/06/06 12:29
反盗链Filter实现这样一种效果,如果其他的网站引用本网站的图片资源,将会显示一个错误的图片。只有本站内的网页引用时,图片才会正确显示。即在图片实现之前对request进行验证,看客户请求是否来自本网站内,代码如下:
ImageRedirectFilter.java
package com.helloweenvsfei.filter;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 ImageRedirectFilter implements Filter { public void init(FilterConfig config) throws ServletException { } public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; // 禁止缓存 response.setHeader("Cache-Control", "no-store"); response.setHeader("Pragrma", "no-cache"); response.setDateHeader("Expires", 0); // 链接来源地址 String referer = request.getHeader("referer"); if (referer == null || !referer.contains(request.getServerName())) { /** * 如果 链接地址来自其他网站,则返回错误图片 */ request.getRequestDispatcher("/error.gif").forward(request, response); } else { /** * 图片正常显示 */ chain.doFilter(request, response); } } public void destroy() { }}
该Filter从request信息头中获取请求来自何方。Filter的配置代码如下:
<filter> <filter-name>imageRedirectFilter</filter-name> <filter-class> com.helloweenvsfei.filter.ImageRedirectFilter </filter-class></filter><filter-mapping> <filter-name>imageRedirectFilter</filter-name> <url-pattern>/images/*</url-pattern> <url-pattern>/upload/images/*</url-pattern></filter-mapping>
该Filter配置为仅对/images/与/upload/images/下的所有资源有效。运行效果如下图所示:
0 0
- Java中实现反盗链Filter
- java中filter实现用户登录管理
- Java Swing中实现对table的filter功能
- Java中filter
- java中Filter汇总
- java中常用的Filter
- java中filter的用法
- java中filter的用法
- Java中Filter、Servlet、Listener
- java中filter的用法
- java中Filter的用法
- Java中Filter、Servlet、Listener
- java中javax.servlet.Filter这个接口实现登陆验证之类得说明
- 关于在c#中实现directshow filter
- Python中filter实现计算素数
- Python中filter()实现找回文数字
- java 之 编码实现Filter学习示例
- java web filter 之一 基础实现
- Maven: 互联网开发常用的jar以及版本pom.xl文件
- 使用python开源组件yarn-api-client获取yarn信息
- 前端实战——完美解决文本框超出内容用“……”表示,鼠标滑过时显示隐藏内容
- 华为机试题:输入整型数组和排序标识,对其元素按照升序或降序进行排序
- 腾讯的职级系统 梁宁-闲花照水录
- Java中实现反盗链Filter
- Appium环境搭建步骤 For Mac
- http协议笔记
- POJ 1469 COURSES(二分图最大匹配)
- 产品经理的段位——说说腾讯的产品职级 梁宁-闲花照水录
- Arduino代码机制-avr/pgmspace.h
- Codeforces Round #287 (Div. 2) C. Guess Your Way Out!(线段树思想)
- Python yield 使用浅析
- Android Wear 进阶 - 1 Notification