`
yjian84
  • 浏览: 40098 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 防盗链 referer 疑问-如何真正防盗链

阅读更多
看了一点文章,apache和ngix 等防盗链也是使用referer 这个参数,怎么能真正的防盗链呢?

防盗链的做法不说了,可能大部分都是使用的referer这个参数,以前面试的时候有个人问我怎么防止用户登录了,但是这个用户就想在打开浏览器输入地址访问后台的action 怎么办?
我说在action后加点长的东西,让他没心情输入,他说如果这个用户比较有耐心还是给你输入了,怎么能让他在浏览器里输入的地址不能访问到action呢?当时没回答上来,一直都没在意过这个问题。今天看http协议突然发现referer这个参数,试着弄了一下,果然在输入地址是访问不到action了。可是我新的疑问又来了:
1:如果我自己写个java的方法,通过httpconnection 或者别的连接设置了这个参数,你怎么办?
2:我显然可以通过javascript 开发工具ie--->>F12 修改你别的链接为要访问的action啊,这你怎么控制呢?
3:这个参数是在客户端生成的,也不安全啊。不知道apache的防盗链,或者ngix的防盗链是怎么实现的。有待研究一下。
刚在网上看到的:
如何实现防盗链
要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件。换句话说,通过referer,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址。有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返回指定的页面。
如果想对自己的网站进行防盗链保护,则需要针对不同的情况进行区别对待。如果网站服务器用的是apache,那么使用apache自带的Url Rewrite功能可以很轻松地防止各种盗链,[color=green]其原理是检查refer,如果refer的信息来自其他网站则重定向到指定图片或网页上。

如果服务器使用的是IIS的话,则需要通过第三方插件来实现防盗链功能了,现在比较常用的一款产品叫做ISAPI_Rewrite,可以实现类似于apache的防盗链功能。另外对于论坛来说还可以使用“登录验证”的方法进行防盗链。
[color=green]如何突破防盗链
针对检查refer的方式,可以在页面中间件里面先进入目的地址的另外一个页面在转到目的页面即可,这样页面的refer就是目的站点自己的,如此,即做到突破。这方面可以使用的工具很多,尤其是成熟的web项目测试包,如HtmlUnit,直接在请求中设置refer都是可以的。
[/color]



[/color]

下面把我做的实验奉上,简单的实现了一下:
@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		HttpServletResponse response = (HttpServletResponse) arg1;
		HttpServletRequest request = (HttpServletRequest) arg0;
		String requestAddress = request.getRequestURL().toString();
		String requestHeader = request.getHeader("referer");
		if (requestAddress.indexOf("/css/")<0 && requestAddress.indexOf("/js/")<0
				&& requestAddress.indexOf("/images/")<0
				&& requestAddress.indexOf("/pages/")<0) {
			if (!requestAddress
					.equals("http://localhost:8089/cms/html/renderlink.html")) {
				if (!requestAddress.equals("http://localhost:8089/cms/login")) {

					if (!StringUtils.isEmpty(requestHeader)) {
						if (!requestHeader.startsWith("http://localhost:8089")
								|| !requestHeader
										.startsWith("http://localhost:8089")) {
							response.sendRedirect(request.getContextPath()
									+ "/html/renderlink.html");
						}
					} else {
						response.sendRedirect(request.getContextPath()
								+ "/html/renderlink.html");
					}

				}
			}
			
		}
		

		arg2.doFilter(arg0, arg1);
	}



<filter>
		<filter-name>renderFilter</filter-name>
		<filter-class>com.cms.filter.RenderFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>renderFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
分享到:
评论

相关推荐

    java 防盗链详解及解决办法

    java 防盗链详解及解决办法 Java 防盗链的概念 防盗链的概念是指在自己的服务器上,通过技术手段将其他网站的内容(比如一些音乐、图片、软件的下载地址)放置在自己的网站中,通过这种方法盗取其他网站的空间和...

    Java防盗链在报表中的应用实例

    本文将深入探讨Java防盗链技术在报表系统中的应用实例,尤其以FineReport报表软件与决策系统结合的情况来分析。 首先,我们得了解什么是防盗链。防盗链技术是一种旨在防止网站上的资源被未经授权的方式获取和传播的...

    Java爬虫小例子,爬取小网站,突破防盗链下载图片

    - **防盗链处理**:常见的防盗链策略有检查Referer字段,可以伪造Referer或使用代理IP绕过限制。 - **缓存机制**:为了节省网络带宽和提高下载速度,可以使用本地缓存,避免重复下载。 4. **文件操作**: - **...

    java防盗链代码和jar

    Java防盗链技术是一种重要的网络安全措施,主要用于保护服务器资源不被未经授权的第三方非法访问或滥用。在Web应用中,常见的资源如图片、视频、音频文件等可能会成为盗链的目标。Java防盗链代码通常会结合HTTP头部...

    网站防盗链(IIS7.0与IIS7.5配置防盗链)

    网站防盗链技术是一种防止其他网站未经许可盗用你服务器上资源的方法,比如图片、视频或文件等。在IIS(Internet Information Services)7.0和7.5版本中,可以通过设置HTTP响应标头和URL筛选器来实现防盗链功能。...

    互联网视频防盗链的研究(referer,Token防盗链) - 简书.webarchive

    关于IPv6很详尽的描述,介绍了各种基本知识,包括1Pv6 编址、ICMPv6 与邻居发现协议、1Pv6 路由、DHCPv6 等内容,并详细讨论了包括双枝、 隧道、转换在内的各种1Pv4 向1Pv6 迁移的过渡技术。

    request.getHeader("referer")防盗链

    总的来说,"request.getHeader("referer")"在Java Web开发中是实现防盗链功能的重要工具,通过检查来源URL,服务器可以有效控制资源的访问权限,保障网站权益。但同时,开发者也需要考虑到隐私保护和安全策略的平衡...

    文件防盗链的实现(射雕英雄java传系列)

    标题中的“文件防盗链的实现(射雕英雄java传系列)”指的是通过编程技术来防止他人未经许可盗用网站上的文件,如图片、音频或视频等。在这个特定的上下文中,我们可能关注的是Java语言实现的防盗链技术。防盗链是为了...

    采集破解防盗链图片显示的方法

    4. 跳过`Referer`检查:某些服务器可能有更复杂的防盗链机制,比如检查用户的IP地址或使用特定的Session ID。这时,`getimg.php`可能包含了破解这些机制的逻辑,如模拟合法的Session ID或模仿合法IP。 5. 重定向...

    飞鸟简单图片管理系统(带图片防盗链功能) -ASP源码.zip

    【飞鸟简单图片管理系统】是一款基于ASP编程语言开发的轻量级图片管理解决方案,主要针对个人或小型企业网站,提供方便快捷的图片上传、展示、管理和防盗链功能。这款系统可以帮助用户有效地组织和保护自己的在线...

    RealServer防盗链插件(UUReal防盗链)

    《RealServer防盗链插件(UUReal防盗链)详解及应用》 在互联网内容分发领域,服务器的安全和资源管理至关重要。RealServer防盗链插件,即UUReal防盗链,是一种针对RealServer流媒体服务器而设计的专业防盗链解决...

    nginx利用referer指令实现防盗链配置

    本文将详细介绍如何利用 Nginx 的 `referer` 指令进行防盗链配置。 `Referer` 字段在 HTTP 请求头中用于指示用户是从哪个 URL 跳转到当前请求的页面的。在图片防盗链的场景下,如果 Nginx 服务器接收到一个请求,其...

    防盗链filter

    "防盗链filter"是一种常见的Java技术,用于防止网站的资源(如图片、视频、音频等)被其他未经授权的网站非法引用,即“盗链”。本篇文章将深入探讨Java防盗链filter的工作原理、实现方式以及其在实际应用中的重要性...

    IIS防盗链附带防盗链效果 for phpwind.rar

    标题"IIS防盗链附带防盗链效果 for phpwind.rar"涉及到的是互联网服务器技术中的一个关键概念,即IIS(Internet Information Services)防盗链功能,并且是针对PHPWind论坛系统的。PHPWind是一款流行的开源社区建站...

    如何快速解决图片防盗链问题

    ### 如何快速解决图片防盗链问题 在互联网时代,内容创作和分享变得异常便捷,但同时也带来了版权保护的问题。其中一个常见的问题是图片防盗链。对于个人博客、SEO优化者、网站管理员以及内容创作者来说,遇到防盗...

    apach防盗链配置

    Apache防盗链配置是一种重要的服务器安全策略,用于防止他人未经许可盗用网站资源,尤其是对于拥有大量图片、视频或下载文件的网站来说更为关键。通过设置防盗链,可以避免服务器带宽被恶意消耗,保护网站内容的版权...

    C# MVC HttpModule 防盗链和图片304缓存

    在本文中,我们将深入探讨如何使用C# MVC中的HttpModule实现网站防盗链功能以及优化图片的304缓存机制。HttpModule是ASP.NET框架的一部分,它可以捕获HTTP请求并在处理之前或之后进行操作,因此它是实现这些功能的...

    流媒体服务器防盗链插件

    - Java实现:UrlVerify-Java1.0.tar和UrlVerify-Java1.0.zip可能包含一个用Java编写的防盗链插件源代码。Java版本的插件可以利用Java Servlet或Filter技术,在请求到达流媒体资源之前进行拦截和验证。 - ASP实现:...

    破解图片防盗链servlet

    1. **防盗链的概念**:防盗链(Hotlink Protection)是指网站为了防止其他站点未经允许直接链接自己的资源(如图片、视频等),采取的一种技术手段,用以避免资源被非法使用导致的带宽消耗。 2. **防盗链的实现方式...

    java防盗链在报表中的应用实例(推荐)

    Java防盗链技术在报表系统中的应用主要涉及到网络安全和权限控制,尤其是对于在线报表工具如FineReport而言,确保数据安全和防止非法访问至关重要。本文将详细介绍如何利用Java实现防盗链功能,并提供一个具体的应用...

Global site tag (gtag.js) - Google Analytics