在java 的web应用中除了web-inf目录下的文件不能通过url直接访问外,其他在webapp root下的文件都能通过url直接或者间接下载下来,如css image js等文件,通过url去直接下载别人的js应该是很常见的事了。
对js等文件的下载都是偶尔现象,不会对服务器造成太大压力,但是像mp3、rmvb等大文件就会给服务器造成很大压力,加上baidu google sogou等搜索网站的搜索 被别人大量盗链的数量非常大,这就会导致这些盗链占用很多的带宽,从而导致整个网站变慢。那么怎样能够防止别人盗链呢?
先来介绍一个Http请求头 叫
referer,通过下面这句可以取到他的值
String referer = request.getHeader("referer");
referer是干什么的呢? referer可简单的理解为记录了上一个页面的url,直接从url访问一个页面时它的referer为null。
我们就是通过判断referer中的值来决定要不要让这个客户下载我们的资源,可能大家已经想到了 filter可以很简单的完成这个任务 可简单的由下面代码实现
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = request = (HttpServletRequest) req;
HttpServletResponse response = response = (HttpServletResponse) resp;
String referer = request.getHeader("referer");
if(referer == null || isLegalUrl(referer)){
chain.doFilter(req, resp); //合法referer可继续执行
}else{
System.out.println("非法请求来源,转到首页"); //转到登录页面或首页
}
}
很简单的一个过滤器 在web.xml中配置一下, 马上试试吧
<filter>
<filter-name>ResourceAccessFilter</filter-name>
<filter-class>com.redgateonline.daren.web.filter.ResourceAccessFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ResourceAccessFilter</filter-name>
<url-pattern>*.mp3</url-pattern>
</filter-mapping>
启动两个web app 在 webapp1 webapp2, 在webapp1中加一个超链接 下载webapp2的文件
<a href="http://localhost:8080/webapp2/sss.mp3">下载</a>
ok 准备工作都做好了 点击 ‘下载’。。。
令人惊讶的是居然弹出了下载对话框, 难道拦截器没起作用,看了一下输出:
非法请求来源,转到首页
就是说拦截器起作用了, 侥幸心理让我点击下载对话框的‘保存’,没准在在保存的时候会失败呢 嘿嘿
结果是令人失望的-----保存成功了。
问
题出在哪儿呢? 忽然想到文件下载对话框的弹出并不是由我们程序控制的,所以应该在更靠前的地方去拦截请求,至少应该在ie或者ie之前 自然而然想到了apache,apache是直接对端口进行监听的 所有的请求进来后遇到的第一个关卡就是apache,所有在这儿对请求进行拦截应该没有错, 有错没错 试试再说 :)
见四楼
分享到:
相关推荐
在这个压缩包中,包含了Apache 2.2的安装程序以及中文手册,这对于在中国使用或管理Apache服务器的用户来说尤其方便。 一、Apache 2.2安装过程 1. 下载:首先,你需要从官方或可靠的源下载Apache 2.2的安装包。在...
Apache 2.2中文手册是针对Apache HTTP Server 2.2版本的一份详尽的中文文档,旨在帮助用户更好地理解和配置这个广泛使用的Web服务器。Apache HTTP Server是互联网上最流行的开源HTTP服务器,它以其稳定性、可扩展性...
默认情况下,Apache将记录错误日志和访问日志,这些日志可以帮助诊断问题和分析网站流量。通过修改`httpd.conf`,你可以自定义日志格式、位置,甚至实现日志分割和轮换。 性能优化方面,可以通过调整各种指令来改善...
Apache 2.2 是一款广泛使用的开源Web服务器软件,它为用户提供了一个稳定、高效且可扩展的平台来托管网页和应用程序。Apache 2.2 中文参考手册是针对这款服务器的详细指南,旨在帮助中文用户更好地理解和配置Apache...
该文件版本为Apache 2.2.31,包含两个安装包,httpd-2.2.31-x64-r6(64位系统可用),httpd-2.2.31-x86-r6(32位系统可用),解压缩后可用,将解压缩后的文件夹,放到你想要存放的位置,运行cmd,定位到该文件夹的...
这个中文使用手册提供了关于如何安装、配置、管理和优化Apache2.2的详细指南,对于开发者和系统管理员来说是宝贵的资源。以下是手册中可能包含的一些关键知识点: 1. **安装Apache2.2**: - Windows、Linux、Mac ...
《Apache2.2环境下的mod_python模块与Python2.5集成详解》 在Web开发领域,Apache HTTP Server作为最流行的开源Web服务器,广泛应用于各种规模的网站和应用程序。而Python作为一门强大且易学的编程语言,也因其丰富...
7. **日志管理**:Apache服务器的日志功能强大,可以自定义日志格式,方便分析服务器行为和排查问题。 8. **代理功能**:`mod_proxy`模块可以将Apache配置为反向代理,用于负载均衡或隐藏后端服务器。 9. **...
"WLSPlugin12.2.1.4.0-Apache2.2-Apache2.4-Linux_x86_64-12.2.1.4.0.zip" 是一个包含WebLogic Plugin的压缩包,适用于Apache 2.2和2.4版本,且专为Linux x86_64架构设计。 **WebLogic Plugin**: WebLogic Plugin...
在IT行业中,构建高效、可扩展的Web服务是至关重要的,而Apache2.2和Tomcat的组合在处理高并发请求时常常被用作负载均衡和集群解决方案。本主题主要探讨的是如何在Apache2.2和Tomcat-6.0.18环境下实现负载均衡与集群...
1. 下载Apache2.2的安装包(例如`apache_2.2.msi`)。 2. 运行安装程序,并选择合适的安装路径(如`D:\Apache2`)。 **步骤2:配置Apache** 1. 打开Apache安装目录下的`conf`文件夹,找到`httpd.conf`文件并用文本...
Apache2.2与Tomcat5.5的整合配置是一个常见的任务,特别是在那些希望利用Apache作为前端服务器处理静态内容,而将动态请求转发给Tomcat处理的环境中。这种配置可以提高服务器性能并优化资源分配。 首先,我们需要...
使用Apache2.2+mod_wsgi搭建django站点,将apache和mod_wsgi打包提供下载,默认情况下,apache和站点平行放在D盘根目录,如果不会设置,可以看我的博文:http://blog.csdn.net/samed/article/details/50453353,有...
1. **下载和安装Apache2.2**:首先,你需要从Apache官方网站下载适用于Windows的Apache2.2安装包。安装过程中,你可以选择自定义安装路径,并根据需要配置端口号、服务名等。 2. **配置Apache2.2**:安装完成后,...
本手册将深入探讨Apache 2.2的配置、管理和优化,帮助用户充分利用这一强大的开源工具。 一、Apache 2.2安装与配置 1. 安装过程:在不同的操作系统上(如Linux、Windows、Mac OS)安装Apache 2.2的步骤有所不同。...
这个“apache2.2.rar”压缩包包含了使用VC9(Visual C++ 2008)编译器构建的Apache 2.2版本,这意味着它是针对Windows平台的,并且使用了微软的编译工具链进行优化,以提高在Windows环境下的性能和兼容性。...
在IT行业中,集成Apache2.2与Tomcat6是一个常见的任务,这主要涉及到Web服务器与应用服务器的联合部署,以实现动态和静态内容的高效分发。Apache2.2是一个强大的HTTP服务器,常用于处理静态内容,而Tomcat6则是一个...
1. 获取软件包:Apache 2.2的安装包可以从Apache官方网站的历史版本中下载,确保选择对应操作系统的版本,例如Linux、Windows或Mac OS。 2. 解压文件:下载完成后,解压文件到合适的目录,如在Linux中,通常会放在 `...
这个压缩包文件`httpd-2.2.16-win32-x86-openssl-0.9.8o.msi`包含了在Windows环境下运行Apache 2.2所需的所有组件,包括SSL/TLS加密支持,这通过集成OpenSSL库0.9.8o实现。 **Apache 2.2的主要特点:** 1. **模块...