`

Java 防盗链 Referer

 
阅读更多

 

public class HTTPWebAuthFilter implements Filter {

	@Autowired
	private CommonConfig commonConfig;
	
	@Autowired
	private HttpSession session;
	
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
				filterConfig.getServletContext());

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {

		HttpServletRequest httpRequest = (HttpServletRequest) request;
		
		// 防盗链
		String refer = httpRequest.getHeader("Referer");
		if(!WebTool1.isNull(refer)
				&& refer.indexOf(commonConfig.getLocalServerName()) < 0){

        	String str = "<script language='javascript'>alert('您的违规操作将被中止、记录并保留追溯权利!');"
                    + "window.top.location.href='"
                    + httpRequest.getContextPath()+"/bi/init"
                    + "';</script>";
        	response.setContentType("text/html;charset=UTF-8");// 解决中文乱码
            PrintWriter writer = response.getWriter();
            try {
                writer.write(str);
                writer.flush();
                writer.close();
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
            	writer.close();
            }
            return;
        
		}
		
		if(httpRequest.getRequestURI().endsWith("/login") ){
			if(WebTool1.isNull(session.getAttribute(commonConfig.getAccHeader()))){
				chain.doFilter(request, response);
			}else{
				
				if(!WebTool1.isNull(httpRequest.getParameterMap().get("account"))
						&& httpRequest.getParameterMap().get("account").length > 0){
					chain.doFilter(request, response);
				}else{
					request.setAttribute("roleModels", session.getAttribute("roleModels"));
					request.setAttribute("username", session.getAttribute("username"));
					request.getRequestDispatcher("/WEB-INF/jsp/welcome.jsp").forward(request, response);
					return;
				}
			}
		}else{
			chain.doFilter(request, response);
		}
	}

	@Override
	public void destroy() {
	}
}

 

分享到:
评论

相关推荐

    java 防盗链详解及解决办法

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

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

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

    java防盗链代码和jar

    Java防盗链代码通常会结合HTTP头部信息、Referer字段检查、IP白名单、令牌验证等多种策略来实现。 首先,我们来看看如何在Java中实现防盗链功能。核心思路是检查请求的来源,判断是否来自合法的源。一种常见的方式...

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

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

    request.getHeader("referer")防盗链

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

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

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

    防盗链filter

    本篇文章将深入探讨Java防盗链filter的工作原理、实现方式以及其在实际应用中的重要性。 首先,理解什么是"filter"。在Java Web开发中,Filter是Servlet API的一部分,它允许开发者在请求到达目标Servlet之前或之后...

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

    总结来说,Java防盗链技术在报表系统中的应用主要通过检查HTTP头部的`Referer`字段来实现,结合过滤器和权限控制,可以有效地保护报表资源,防止被非法访问。在实际应用中,开发者需要根据业务需求调整和优化防盗链...

    破解图片防盗链servlet

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

    流媒体服务器防盗链插件

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

    Java 通过设置Referer反盗链

    防盗链主要是通过检查HTTP请求头中的`Referer`字段来实现的。当用户从一个外部链接访问网站资源时,浏览器通常会在请求头中携带`Referer`字段,表明是从哪个页面发起的请求。如果`Referer`不在允许的列表内,网站...

    超全面javaweb教程28天第10天 12 request之使用Referer请求头完成防盗链

    超全面javaweb教程28天第10天_12_request之使用Referer请求头完成防盗链

    防盗链的方式借鉴.pdf

    虽然这种基于`Referer`的防盗链方法简单有效,但它存在一定的局限性: 1. **不安全**:`Referer`字段可以被浏览器禁用或者篡改,因此这种方法并非绝对可靠。 2. **忽略直接输入URL**:如果用户直接在浏览器地址栏...

    servlet高级应用过滤器、防盗链等一系列技术工具打包

    防盗链过滤器通常检查HTTP请求的来源(Referer头),如果发现请求并非来自预期的站点,就会阻止资源的访问,从而保护了服务器带宽和资源不被滥用。 然后,我们提到了“异常处理”。在Web应用中,良好的异常处理能够...

    【JavaWeb开发】Referer防盗链的详解

    1. 什么是Referer? Referer 是 HTTP 请求(requset) header 的一部分,当浏览器(或者模拟浏览器行为)向web 服务器发送请求的时候,头信息里就有包含 Referer 。 比如我在www.csdn.net里点击一篇博客,那么点击这...

    jsp实现防盗链的方法

    JSP(JavaServer Pages)作为流行的动态网页技术,提供了实现防盗链功能的手段。下面我们将详细探讨如何使用JSP实现防盗链。 首先,我们需要理解防盗链的基本原理。防盗链的核心是判断请求来源,通常我们希望只有从...

    java禁止直接url访问图片

    综上所述,Java禁止直接URL访问图片涉及多个方面,包括Web服务器配置、Java Servlet、权限验证、过滤器、防盗链技术以及CDN的使用等,这些都需要开发者深入理解和灵活运用。通过这些手段,我们可以有效地保护网络...

    httpservlet_request

    4. **防盗链(Anti-Linking或Referer Check)**:防盗链通常用于防止其他网站未经许可直接引用你的资源,如图片或视频。在Servlet中,可以通过检查HttpServletRequest的`getHeader("Referer")`方法来获取请求的来源...

    阿里云javaAPI

    7. **防盗链和Referer策略**:可以通过设置防盗链策略,限制Object的访问来源,保障数据安全。 8. **版本控制和多版本**:开启版本控制后,OSS会保存Object的所有版本,便于恢复误删除或覆盖的文件。 9. **事件...

    图片上传下载Java

    2. **防盗链**: 为了防止他人盗用你的图片资源,可以设置防盗链策略,如检查来源URL、设置Referer检查、使用令牌验证等。 3. **缓存控制**: 使用HTTP缓存策略(如`Cache-Control`,`ETag`,`Last-Modified`)来优化...

Global site tag (gtag.js) - Google Analytics