博客
关于我
强烈建议你试试无所不能的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); %>

转载请注明出处:
你可能感兴趣的文章
linux文本文件按列合并
查看>>
[javascript] ajaxfileupload.js 跨域上传文件
查看>>
android raw与assets区别
查看>>
[整] Android Fragment 生命周期图
查看>>
can not connect to MySQL server on "10.30.48.153"(13)
查看>>
Tutorial: Getting Started with SignalR (C#) -摘自网络
查看>>
MSSQL数据库迁移到Oracle(二)
查看>>
S3C2440触摸屏控制总结
查看>>
视频文件格式
查看>>
文件异步上传方式(一)
查看>>
funny alphabet
查看>>
STL队列 之FIFO队列(queue)、优先队列(priority_queue)、双端队列(deque)
查看>>
Android压力测试工具——Monkey
查看>>
使用“DiskGenius”精确隐藏硬盘坏道
查看>>
我心中的核心组件(可插拔的AOP)~第十二回 IoC组件Unity
查看>>
Spring3系列4-多个配置文件的整合
查看>>
SQLServer2005重建索引前后对比【转】
查看>>
Inode详解
查看>>
jquery加入收藏代码
查看>>
7z命令行工具
查看>>