HttpServletRequest通过Referer实现简单防盗链

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 HttpServletRequest通过Referer实现简单防盗链,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

        我们知道在http中请求头中有一个referer来表示请求来自于哪里,于是我们就可以通过这个请求来判断是不是应该非法的请求,例如没有登录就直接进行访问。下面用Referer来实现应该简单的防盗链。

        我们首先创建登录界面,然后再创建一个Servlet来接收登录请求,如果直接访问这个Servlet那么就重定向到登录界面,如果链接来自于登录界面,那么就输出访问成功,代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<form action="http://localhost:8080/servlet/referer" method="post">
    用户名:<input type="text" name="username"><br>
    密 码:<input type="password" name="password"><br>
    <input type="submit" value="登录">
</form>

</body>
</html>
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/referer")
public class RefererServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取Referer
        String referer = request.getHeader("Referer");
        //设置响应的MIME和编码
        response.setContentType("text/html;charset=utf-8");
        //判断是不是来自登录界面
        if ("http://localhost:8080/servlet/login_request.html".equals(referer)){
            //获取输出流写出数据
            PrintWriter writer = response.getWriter();
            writer.write("<h1>访问成功</h1>");
        }else {
            //重定向到登录界面
            response.sendRedirect("http://localhost:8080/servlet/login_request.html");
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
    }
}

        我们首先正常流程进行登录访问,发现访问成功

HttpServletRequest通过Referer实现简单防盗链

        那么现在我们再来尝试直接访问这个Servlet,发现重定向到了登录界面

HttpServletRequest通过Referer实现简单防盗链


        上面就是一个最简单的防盗链,我们通过Referer就能实现对请求的控制,对哪些请求做出正确的响应,对哪些非法请求做出拒绝 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/140319.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!