JSP防盗链

本文详细介绍了JSP防盗链的原理和实现方法,包括通过检查HTTP头部信息、设置 referer 检验、使用时间戳防止缓存等策略来防止他人非法引用网站资源。同时,还探讨了防盗链的优缺点以及可能的绕过手段,帮助读者全面理解网站资源保护的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:编写java文件代码
public class simpleFDL extends  SimpleTagSupport {
private String  site;     //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();     //(获取的是jspcontext,所以来强转为pagecontext,才能获取到request)
HttpServletRequest request=(HttpServletRequest) pagecontext.getRequest();     //注意获取的是ServletRequest,所以要强转为
HttpServletResponse response=(HttpServletResponse) pagecontext.getResponse();
//1.得到来访问者referer
String referer=request.getHeader("referer");    //"referer"是固定的名称,获取头
//2.判断来访者的页面是否是防盗链网站
if(referer==null||!referer.startsWith(site)){
     if(page.startsWith(request.getContextPath())){
            response.sendRedirect(page);
            //这里要return吗???
    } else if(page.startsWith("/")){
            response.sendRedirect(request.getContextPath()+page);
    }else{
            response.sendRedirect(request.getContextPath()+"/"+page);
    }
             throw new SkipPageException();
        }
    }
}  

第二步:编写tld文档
 <uri> /simpletTagFDL</uri>

        <tag>
                <name> SimpleFDL</name>
                <tag-class> cn.itcast.web.simpletag.simpleFDL</tag-class>
                <body-content>empty</body-content>
        
               <attribute>
         <name> site</name>
         <rtexprvalue>true</rtexprvalue>
              </attribute>
              <attribute>
             <name> page</name>
             <rtexprvalue>true</rtexprvalue>
              </attribute>
            </tag>  
 </taglib>  

第三步:JSP中的编写
<%@taglib uri="/simpletTagFDL" prefix="hhb" %>
<hhb:SimpleFDL site="http://localhost" page="/index.jsp"/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值