用自定义标签实现防盗链的操作

来源:互联网 发布:io域名注册 编辑:程序博客网 时间:2024/05/09 13:49

      添加简单防盗链操作即限制引用页,作用原理:获取用户提交信息的网站地址,然后和真正的服务端的地址相比较,如果一致则表明是站内提交,或者为自己信任的站点提交,否则视为盗链。

步骤:定义标签处理类;定义描述文件;在内容页面使用标签

部分代码:

定义标签处理类

PageContext pageContext = (PageContext) this.getJspContext();HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();HttpServletResponse response = (HttpServletResponse) pageContext.getResponse();//通过头信息得到站点信息String referer = request.getHeader("referer");System.out.println(referer);/*防盗链的具体操作处理类 * 判断是否为盗链 * 如果访问站点为空或访问站点不是site开头的*/if(referer == null || !referer.startsWith(site)){//如果是盗链,根据page属性值,将盗链重定向指向访问被盗链内容的正确页面String contextPath = request.getContextPath();System.out.print(contextPath);if(page.startsWith(contextPath)){response.sendRedirect(page);}else if(page.startsWith("/")){response.sendRedirect(contextPath+page);}else{response.sendRedirect(contextPath+"/"+page);}//抛出异常throw new SkipPageException();}


 

定义描述文件:

<tag>        <description>referer demo</description>        <name>referer</name>        <tag-class>cn.csdn.web.Tag.Referer</tag-class>        <body-content>empty</body-content>      <attribute>   <name>site</name>   <required>true</required>   <!-- 指定属性值是否在JSP运行时自动产生,true为自动产生,false为不自动产生 -->   <rtexprvalue>true</rtexprvalue>   </attribute>      <attribute>   <name>page</name>   <required>true</required>   <!-- 指定属性值是否在JSP运行时自动产生,true为自动产生,false为不自动产生 -->   <rtexprvalue>true</rtexprvalue>   </attribute>       </tag>


 

在内容页面使用标签:

<%@ taglib uri="http://cn.csdn.web.tag" prefix="tag"%><!-- 控制整个页面时无标签体,是单个标签声明 --><!--site:受信任站点,只允许次站点的请求page:正确的链接页面,发现盗链后将其自动转入此页面--><tag:referer site="http://localhost:8080/20111109" page="index.jsp"/>


 

原创粉丝点击