现在的位置: 首页 > 综合 > 正文

防盗链

2013年12月11日 ⁄ 综合 ⁄ 共 1300字 ⁄ 字号 评论关闭

盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。

解决途径之一——限制引用页

这种防盗链原理是,服务器获取用户提交信息的网站地址,然后和真正的服务端的地址相比较,如果一致则表明是站内提交,或者为自己信任的站点提交,否则视为盗链。

目标:要开发的标签

<class3g:referer site="http://drinkeye:8080"page="/index.jsp"/>

site:受信任站点,只允许次站点的请求

page:正确的链接页面,发现盗链后将其自动转入此页面

标签处理类

   private String site;

   private String page;

  

   public void setSite(String site) {

     this.site = site;

   }

 

   public void setPage(String page) {

     this.page = page;

   }

 

   @Override

   public void doTag() throws JspException, IOException {

     PageContext pageContext = (PageContext)this.getJspContext();   

     HttpServletRequest request =(HttpServletRequest)pageContext.getRequest();

    

     String referer = request.getHeader("referer");

  

     if(referer == null|| !referer.startsWith(site)){

        HttpServletResponse response = (HttpServletResponse)pageContext.getResponse();

       

        String contextPath = request.getContextPath();

        if(page.startsWith(contextPath)){

          response.sendRedirect(page);

        }else if(page.startsWith("/")){

          response.sendRedirect(contextPath + page);

        }else{

          response.sendRedirect(contextPath +"/" +page);

        }

       

        throw new SkipPageException();

     }

 

   }

在内容页面使用标签

<class3g:referersite="http://localhost:8080"page="/20111109/demo1.jsp"/>

 

 

 

抱歉!评论已关闭.