博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【JSP开发】一个防盗链的WEB小例子
阅读量:7025 次
发布时间:2019-06-28

本文共 2619 字,大约阅读时间需要 8 分钟。

有的资源你点出后会有广告,广告旁边是资源连接,有些人直接把资源连接发给别人,企图不看广告直接进入链接拿资源,为了防止盗链行为的发生,我们要检测用户访问url的情况来进行一系列措施。

需要实现的功能就是,当用户想要查看"机密文档"的时候,如果是直接输入机密文档的url,而不是广告的url,我们得先让他跳转到广告页面的url,看完广告后就可以让他看“机密文档”了。

模拟过程:用户输入机密文件的url(或者在其他网站),这时候进入Servlet,response的getHeader("referer")方法会得到来访地址,用此判断是否是从index.jsp网页的url来的,如果不是,跳入带广告的index.jsp,如果是就把机密文件的内容加载,然后显示给用户。

原理:

静态页面index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>            查看图书   
看广告
看机密文件

RequestDemo9.java:
package cn.edu.Request;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//防盗链public class RequestDemo9 extends HttpServlet {	public void doGet(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		response.setCharacterEncoding("UTF-8");		response.setContentType("text/html;charset=UTF-8");				//得到来访地址		String referer=request.getHeader("referer");				if(referer==null||!referer.startsWith("http://localhost")){			//此处为盗链的情况,这个时候要让用户去主页(或其他页面,让用户看广告或其它。。。。)			response.sendRedirect("/day06/index.jsp");			return;		}			    String data="机密文档";	    response.getWriter().write(data);	}	public void doPost(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {       doGet(request,response);	}}
RequestDemo6.java:
package cn.edu.Request;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class RequestDemo6 extends HttpServlet {	public void doGet(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {  	String data="XXXXXXX";       request.setAttribute("data",data);       request.getRequestDispatcher("/message.jsp").forward(request, response);       }	public void doPost(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {      doGet(request,response);	}}

message.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>              My JSP 'message.jsp' starting page    	
${data} <% String data=(String)request.getAttribute("data"); out.write(data); %>

转载请注明出处:
你可能感兴趣的文章
域名指的是这一级目录
查看>>
[Angular] Creating an Observable Store with Rx
查看>>
[转]Porting to Oracle with Entity Framework NLog
查看>>
chmod更改文件的权限
查看>>
oracle 10g/11g RAC 启停归档模式
查看>>
poj3461 Oulipo
查看>>
OAuth2.0学习(1-12)开源的OAuth2.0项目和比较
查看>>
Gitlab,这也就O了???
查看>>
2014 百度之星 1003 题解 Xor Sum
查看>>
Linux中在主机上实现对备机上文件夹及文件的操作的C代码实现
查看>>
iOS 块的简单理解
查看>>
idea中如何配置git以及在idea中初始化git
查看>>
关于JQuery Class选择器的一点
查看>>
POJ3264 Balanced Lineup
查看>>
redis-cli 连接远程服务器
查看>>
emlog通过pjax实现无刷新加载网页--完美解决cnzz统计和javascript失效问题
查看>>
sublime 之 vitage/emmet
查看>>
代码管理(四)SVN和Git对比
查看>>
python - hadoop,mapreduce demo
查看>>
mongodb常见管理命令
查看>>