后端必备知识链盗&&链盗防止
2020-08-10 11:40
337 查看
链盗
在实际开发中,经常会使用Referer 头字段,例如,一些站点为了吸引人气并且提高站点访问量,提供了各种软件的下载页面,但是它们本身没有这些资源,只是将下载的超链接指向其他站点上的资源。而真正提供了下载资源的站点为了防止这种“盗链”,就需要检查请求来源,只接受本站链接发送的下载请求,阻止其他站点链接的下载请求。接下来通过一个案例,分步骤讲解如何利用Referer请求头防止“盗链”。
先写一个DownMangerServlet类
package com.tomcat.servlet; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; @WebServlet("/down") public class DownManagerServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); String referer = req.getHeader("referer"); //获取referer头的值 String sitePart = "http://"+req.getServerName(); //获取访问地址 if (referer == null&&referer.startsWith(sitePart)){ //处理下载请求 out.print("处理中 ......."); }else { RequestDispatcher rd = req.getRequestDispatcher("/download.html"); out.print("正在去下载。。。。"); //非法下载返回到download.html页面 } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
HTML代码部分
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Download</title> </head> <body> <a href="/down">Download</a> </body> </html>
1 2
运行原理
- 图1是对应的download.html界面内容,这是因为第一次请求DownMangerServlet类时,请求消息不含refeer请求头,所以,DownMangerServlet将下载时请求转给download.html页面
- 单击download连接后,重新访问DownMangerServlet,这时,由于请求状态消息中含有referer头字段,并且其值与DownMangerServlet位于同一个服务器web站点,因此DownMangerServlet接受下载请求,浏览器如图2所示。
相关文章推荐
- 后端开发必备的 RestFul API 知识
- 一篇文章普及各种ios基本知识(防止奸商忽悠、鉴别假冒翻新机、知识入门必备)
- 六大BaaS产品推荐:移动开发必备的后端云服务
- java后端入门必备书籍
- 前后端分离,防止接口被篡改
- 后端架构师必备技能
- 后端必备的Linux知识
- 前后端必备开发工具分享
- Java后端工程师必备书单(从Java基础到分布式)
- 后端程序员必备:索引失效的十大杂症
- iOS开发者必备:四款后端服务工具
- 后端程序员必备:书写高质量SQL的30条建议
- 前后端分离,如何防止接口被其他人调用或恶意重发
- 前后端分离必备的接口规范,十分接地气!
- 【猪猪-后端】过滤IP格式工具类,将IP地址格式化,开发必备工具。
- 六大BaaS产品推荐:移动开发必备的后端云服务
- 六大BaaS产品推荐:移动开发必备的后端云服务
- 后端程序猿必备的linux命令(一)—— ps 命令的使用
- 语言开发必备:PHP如何防止XSS攻击
- iOS开发者必备:四款后端服务工具