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

转载请注明出处:
你可能感兴趣的文章
PAT A1060 科学记数法经典例题(全string库解决)
查看>>
仿知乎分享界面
查看>>
最小外接矩形思路以及实现
查看>>
Python是什么?简单了解pythonp-入门
查看>>
利用ES6进行Promise封装总结
查看>>
ES10 特性的完整指南
查看>>
学习threejs走过的坑
查看>>
ThinkSNS+的 SPA(H5)安装教程
查看>>
C++回声服务器_5-多进程版本
查看>>
CSS外边距折叠引发的问题
查看>>
【LeetCode】贪心算法--划分字母区间(763)
查看>>
Android 抖音爆红的口红挑战爬坑总结
查看>>
怎么就没发现华为Mate20 pro有这么多神奇功能!这波黑科技盘它!
查看>>
vue-cli3.0 vue.config.js 配置详解
查看>>
EOSIO 指南(启动你的节点并设置)
查看>>
一文带你看懂cookie,面试前端不用愁
查看>>
Electron + Antd + Mobx 环境搭建
查看>>
我从来不理解JavaScript闭包,直到有人这样向我解释它...
查看>>
在CentOS7上安装RabbitMQ
查看>>
作为大众熟知的电商应用,京东如何构建风控体系架构?
查看>>