一、目录结构
二、输写DlFilter.java文件
package Daolian;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Properties;
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 DlFilter implements Filter {
// 限制访问地址列表
public static List urlNoAccess = new ArrayList();
// 允许访问列表
public static List urlAllow = new ArrayList();
// 错误地址列表
public static String urlError = "";
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
// 获取HTTP头文件
String requestAddress = httpRequest.getRequestURL().toString();
String requestHeader = httpRequest.getHeader("referer");
if(!requestAddress.startsWith(urlError))
{
//循环止访问列表
for (int i = 0; i < urlNoAccess.size(); i++) {
//如果(请求头为空 或者 请求头为禁访问目录)并且请求地址为禁止访问目录
//转向错误文件
if ((requestHeader == null || requestHeader.startsWith(urlNoAccess.get(i).toString().trim()))
&& requestAddress.startsWith(urlNoAccess.get(i).toString().trim())) {
if (urlError == null || urlError.equals("")) {
httpResponse.sendError(404);
} else {
httpResponse.sendRedirect(urlError.trim());
}
return;
}
//如果请求头为禁访问目录
if (requestAddress.startsWith(urlNoAccess.get(i).toString().trim())) {
boolean flog = true;
//如果请求头文件 不在允许请求范围内
if (urlAllow != null && urlAllow.size() > 0) {
for (int j = 0; j < urlAllow.size() && flog; j++) {
if (requestHeader.startsWith(urlAllow.get(j).toString().trim())) {
flog = false;
}
}
}
if (!flog) {
if (urlError == null || urlError.equals("")) {
httpResponse.sendError(404);
} else {
httpResponse.sendRedirect(urlError.trim());
}
return;
}
}
}
}
chain.doFilter(httpRequest, httpResponse);
}
public void init(FilterConfig fc) throws ServletException {
// TODO Auto-generated method stub
System.out.println("盗链起动");
try {
String fp = fc.getServletContext().getRealPath(
"/WEB-INF/classes/filter.properties");
File file = new File(fp);
Properties properties = new Properties();
properties.load(new FileInputStream(file));
// 限制访问地址
String urlfilter = properties.getProperty("url.noAccess");
if (urlfilter != null) {
String[] filter = urlfilter.split(",");
for (int i = 0; i < filter.length; i++) {
urlNoAccess.add(((String)filter[i]).trim());
}
}
// 根目录
String urlroot = properties.getProperty("url.allow");
if (urlroot != null) {
String[] allow = urlroot.split(",");
for (int i = 0; i < allow.length; i++) {
urlAllow.add(((String)allow[i]).trim());
}
}
// 文件错误地址
urlError = properties.getProperty("url.error");
} catch (Exception e) {
e.printStackTrace();
}
}
}
三、filter.properties配置文件
#url.noAccess 要过滤文件地址 多个文件以","隔开
url.noAccess=http://localhost:8080/filter/downloads
#url.allow 根目录文件列表 多个文件以","隔开
url.allow=http://127.0.0.1,http://localhost
#url.error 错误文件地址
url.error=http://localhost:8080/filter/error/error.jsp
四、web.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>daolian</filter-name>
<filter-class>Daolian.DlFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>daolian</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
- 大小: 12.2 KB
分享到:
相关推荐
本篇文章将深入探讨Java防盗链filter的工作原理、实现方式以及其在实际应用中的重要性。 首先,理解什么是"filter"。在Java Web开发中,Filter是Servlet API的一部分,它允许开发者在请求到达目标Servlet之前或之后...
使用 Java Filter 来实现防盗链的解决方案。 ```java public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest...
本项目为基于JavaScript的仓储管理系统WMS,重点实现了防盗链功能,采用Filter技术进行安全防护。项目源码包含165个文件,其中Java代码33个、HTML模板25个、JavaScript脚本20个、样式表文件(CSS, LESS, SCSS)共44...
流媒体服务器防盗链插件主要通过验证请求来源的合法性来实现其功能。当用户试图访问一个流媒体文件时,服务器会检查请求头中的某些信息,如HTTP Referer字段,该字段通常包含用户的上一个页面地址。如果Referer不是...
在当前的数字时代,数据安全和资源保护是企业必须面对的重要问题。特别是在网络环境中,如何防止资源被...FineReport报表软件与决策系统的结合使用,使得通过Java实现防盗链技术成为可能,增强了企业报表数据的安全性。
同时,通过对源码的修改和扩展,还可以实现更多定制化的防盗链需求,比如添加基于用户代理、时间限制等更复杂的过滤条件。 通过深入研究和实践LeechBlocker,开发者不仅能够掌握ISAPI编程的基本技巧,还能增强对...
在 Java 中,实现防盗链可以通过使用 Filter 来实现。Filter 是一种特殊的 Servlet,可以在 Servlet 请求前和响应后执行一些操作。在防盗链中,我们可以使用 Filter 来判断用户是否已经登录,如果没有登录,则重定向...
通过实现javax.servlet.Filter接口并配置在web.xml中,我们可以定义过滤规则,如字符编码转换、日志记录、权限验证等。例如,字符编码过滤器可以确保请求和响应的数据始终使用正确的字符集,避免乱码问题。 接着是...
二、Java实现防盗链 1. 创建自定义Filter 在Java Web应用中,我们可以通过实现Servlet API中的`Filter`接口来创建一个过滤器,用于拦截请求并检查`Referer`字段。以下是一个简单的`DaoLianFilter`示例: ```java ...
《小雨在线防盗链终结者:LinkFilter v1.0.0α的全面解析》 在互联网世界中,数据安全和资源保护是每个网站管理员必须面对的重要问题。盗链,即未经许可,其他网站直接引用你的资源,可能导致你的服务器负载过大,...
在Java中实现防盗链,通常需要自定义过滤器(Filter)。以下是一个简单的示例: ```java package com.fr.test; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Filter; import ...
headers-more-nginx-module是Nginx的增强型头部处理模块,允许更灵活地添加、删除或修改HTTP响应头,这在实现防盗链策略时非常有用。0.34是该模块的版本号,通常更新版本会修复已知问题并增加新功能。 【标签】:...
使用 ISAPI Filter 实现的限制 IIS 多线程访问程序。主要应用在下载系统,或者使用 IIS 做的流...程序稍加修改即可加入防盗链等等功能。小弟水平不高,还请各位大虾多多指点、交流。QQ:38307370MSN:ahthlkj@hotmail.com
上面的代码使用了 CSS 的 filter 属性来实现图片防盗技术。filter 属性可以将图片资源转换为另一种格式,从而防止图片盗用和盗链。 三、图片防盗技术的原理 图片防盗技术的原理是使用 CSS 的 filter 属性将图片...
使用 ISAPI Filter 实现的限制 IIS 多线程访问程序。主要应用在下载系统,或者使用 IIS 做的流媒体点播系统中,稍加修改可以使其具有认证功能。在程序中已经对 用户认证 事件做...程序稍加修改即可加入防盗链等等功能。
在实际应用中,Filter可以用来实现防盗链功能,防止其他网站盗用我们的资源。以下是一个简单的示例: 1. **准备**:首先在项目中添加两个图片文件,分别表示正常图片和错误图片。 2. **创建Filter**:在现有项目中...
通过自定义规则,可以实现诸如防盗链、禁止访问特定URL、设置Cache-Control等高级功能。 总之,URLRewriteFilter是一个强大的工具,能帮助开发者构建更加用户友好且SEO友好的Web应用。正确地配置和使用...
而是一款企业级的全方位应用安全防护产品,它是由一个多年从事安全产品的团队开发而成,功能上具备防黑客、防盗链、防下载等多种安全防护和管理能力,效率上在IIS内核中采用Filter Cache技术使得其具有瞬间的即时...
IISWALL采用最新的VC++.NET开发编制,基于最高效的ISAPIFilter技术实现,具有速度快效率高不占用CPU等特点,在IIS内核中实现真正意义上的全方位安全防护,是迄今为止解决IIS安全问题最完整的安全解决方案之一,已在...
综上所述,Java禁止直接URL访问图片涉及多个方面,包括Web服务器配置、Java Servlet、权限验证、过滤器、防盗链技术以及CDN的使用等,这些都需要开发者深入理解和灵活运用。通过这些手段,我们可以有效地保护网络...