java web中Filter防盗链学习笔记

【备注】知识点很简单主要是想尝试下markdown

目录

防盗链Filter

网站A中有一资源,其地址为URL,要保证只有本网站的页面通过下载链接才能下载。其他网站链接该URL或是直接访问均不能获取该资源。

实验过程

现有页面
  • getHeader_referer.jsp
  • getHeader_referer1.jsp
  • getHeader_referer2.jsp
页面主要内容
  • getHeader_referer.jsp
<%
    String str=request.getHeader("referer");
    String serverName=request.getServerName();
%>
<%=str %>
<%=serverName %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>original page</title>
</head>
<body>
<br>
this is original page.<br>
<a href="getHeader_referer1.jsp">page1</a>
</body>
</html>
  • getHeader_referer1.jsp
<%
    String str=request.getHeader("referer");
    String serverName=request.getServerName();
%>
<%=str %>
<%=serverName %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>page 1</title>
</head>
<body>
<br>
this is original page.<br>
<a href="getHeader_referer2.jsp">page2</a>
</body>
</html>
  • getHeader_referer2.jsp
<%
    String str=request.getHeader("referer");
    String serverName=request.getServerName();
%>
<%=str %> 
<%=serverName %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<br>
this is page 1.<br>
<a href="getHeader_referer.jsp">origin page</a>
</body>
</html>
页面关系

实验过程中页面间会有如下链接关系:0

Created with Raphaël 2.1.0 getHeader_referer.jsp getHeader_referer.jsp getHeader_referer1.jsp getHeader_referer1.jsp getHeader_referer2.jsp getHeader_referer2.jsp 通过page1链接跳转 通过page2链接跳转 跳转最初页面 通过origin page链接跳转
执行过程
  • 访问origin page
    origin page
  • 点击page1链接
    page1页面
  • 点击page2链接
    page2页面
  • 点击origin page链接
    origin page页面

    分析过程

    <%=str %> //输出request.getHeader("referer")值—页面跳转前的页面
    <%=serverName %> //服务器名

    当直接访问某url时,str为null.
    通过链接访问时则会打印跳转前页面url—本页面的参考页面。因此,当资源请求时,利用Filter先获取来源地址url,【1】直接访问为url=null 【2】网站链接访问资源时url=来源地址,当来源地址中不包含本站serverName,即资源请求从非本站发出。*【1】【2】均为非法不允许访问,可以直接导向错误页面资源。*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值