zoukankan      html  css  js  c++  java
  • Java防盗链机制

    对于防盗链技术,网上提供了很多很多的相关技术,但是不是特别复杂就是效果不好。

       这里在网上找到一种思路,就是关于HTTP协议响应头中包含的Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。所以我们可以通过得到响应头中包含的referer来判断其请求来自哪里,如果不是本系统页面的请求则可能是盗链。

       在ASP中request有ServerVariables("HTTP_REFERER")方法直接给我们提供类似防盗链的方式。可是我们的Java不直接提供支持,所以对referer来源的判断则只有我们自己实现了。

       我们知道referer包含的是请求发过来的源页面,而对于浏览器地址栏直接发送的请求referer为空。

       所以我们可以实现一个Filter对特定请求实现监听,并且有:

       public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

                throws IOException, ServletException {
                HttpServletRequest req = (HttpServletRequest) request;
                HttpServletResponse resp = (HttpServletResponse) response;
                String referer = req.getHeader("referer");
                if(null != referer && referer.trim().startsWith("http://localhost:8080/baidu")){
                     System.out.println("正常页面请求");
                     chain.doFilter(req, resp);
                }else{
                     System.out.println("盗链");
                     req.getRequestDispatcher("/html/error.html").forward(req, resp);
                }
     } 

  • 相关阅读:
    iOS 有用的代码片段
    iOS 限制软盘输入法
    UIlabel 遇到\n 换行iOS
    关于delegate 与 protocol 的理解 iOS
    ios 跳转到app store
    iOS 上下左右滑动手势
    求某段程序运行的高精度时间
    转载——GDB中应该知道的几个调试方法
    文章翻译——使用 GNU 的 GDB调试器,内存布局和栈——01
    第十章扩展——__cdecl 的压栈方式——printf
  • 原文地址:https://www.cnblogs.com/master-zxc/p/4645829.html
Copyright © 2011-2022 走看看