<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    wuxiren123

    Java防盜鏈在報表中的應用實例

    今天我們來聊聊Java盜鏈,多說無用,直接上應用案例。

    這里所用的工具是報表軟件FineReport,搭配有決策系統(一個web前端展示系統,主要用于權限控制),可以采用java防盜鏈的方式來實現頁面權限。

    瀏覽器中直接輸入報表URL的時候,它的頭文件是空的,因此,可以在訪問的時候做兩個判斷:頭文件是否為空以及以什么頁面進行跳轉,如果不符合跳到錯誤頁面即可。

    什么是Referer?

    這里的 Referer 指的是HTTP頭部的一個字段,也稱為HTTP來源地址(HTTP Referer),用來表示從哪兒鏈接到目前的網頁,采用的格式是URL。換句話說,借著 HTTP Referer 頭部網頁可以檢查訪客從哪里而來,這也常被用來對付偽造的跨網站請求。


    什么是空Referer,什么時候會出現空Referer?

    首先,我們對空Referer的定義為,Referer 頭部的內容為空,或者,一個HTTP請求中根本不包含Referer頭部。

    那么什么時候HTTP請求會不包含Referer字段呢?根據Referer的定義,它的作用是指示一個請求是從哪里鏈接過來,那么當一個請求并不是由鏈接觸發產生的,那么自然也就不需要指定這個請求的鏈接來源。

    比如,直接在瀏覽器的地址欄中輸入一個資源的URL地址,那么這種請求是不會包含Referer字段的,因為這是一個“憑空產生”的HTTP請求,并不是從一個地方鏈接過去的。



    在防盜鏈設置中,允許空Referer和不允許空Referer有什么區別?

    在防盜鏈中,如果允許包含空的Referer,那么通過瀏覽器地址欄直接訪問該資源URL是可以訪問到的;

    但如果不允許包含空的Referer,那么通過瀏覽器直接訪問也是被禁止的。

    操作步驟

    1、添加class文件

    編寫一個類文件,用來判斷頭文件是否為空,代碼如下:

    package com.fr.test;

    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;

    public  class Dodo implements Filter {
        
    public void destroy() {
            
    // TODO Auto-generated method stub

        }


        
    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");
        
    //下面的IP地址是正常頁面請求
        if(null != referer && (referer.trim().startsWith("http://localhost:8033")||referer.trim().startsWith("http://www.finereporthelp.com/test/hello.html"))){
             System.out.println(
    "正常頁面請求"+referer);
             chain.doFilter(req, resp);
       
    //下面的就是出現不是正常頁面請求的時候跳轉
        }
    else{
             System.out.println(
    "盜鏈"+referer);
             req.getRequestDispatcher(
    "/LdapLogin.jsp").forward(req, resp);
        }

    }

        
    public void init(FilterConfig arg0) throws ServletException {
            
    // TODO Auto-generated method stub

        }

    }
     



    將Dodo.java編譯成class文件,并放在%TOMCAT_HOME%\WebReport\WEB-INF\classes\com\fr\test目錄下。


    2、修改web.xml文件

    打開%TOMCAT_HOME%\webapps\WebReport\WEB-INF下的web.xml文件,配置一個過濾filter,在出現ReportServer的時候執行過濾,代碼如下:

     

    <filter>
    <filter-name>AuthFilter</filter-name>
    <filter-class>com.fr.test.Dodo</filter-class></filter>
    <filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>/ReportServer</url-pattern>
    </filter-mapping>




    兩步就可以搞定,如果屬于盜鏈,則跳轉至上述的LdapLogin錯誤頁面,這里沒有LdapLoign頁面,所以直接跳轉404。如果還想實現數據權限,則可以通過單點登錄或者session注入的方式。

    效果測試

    準備兩個html文件

    假設hello.html是正確的網址

     

    <html>
    <body>
    <p>測試</p>

    <a href="http://localhost:8033/WebReport/ReportServer?reportlet=demo%2Fnewchart%2Fothers%2FL
    <html>
    <body>
    <p>測試,錯誤的鏈接地址</p>

    <a href="http://localhost:8033/WebReport/ReportServer?reportlet=demo%2Fnewchart%2Fothers%2FLogarithmic_axis.cpt&op=write">防盜鏈測試</a>
    </body>
    </html> 
    ogarithmic_axis.cpt&op=write
    ">防盜鏈測試</a>
    </body>
    <html> 


     

    假設steal.html是盜鏈的網址

    情況一

    通過hello.html跳轉,跳轉鏈接正確,即referer不為空且正確


    情況二

     

    通過steal.html跳轉,跳轉鏈接錯誤,即referer不為空且錯誤


    情況三

     

    直接訪問URL地址,即referer為空




    posted on 2016-06-14 15:30 喝水居然長肉 閱讀(111) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 免费无遮挡无码视频网站| 日本一道在线日本一道高清不卡免费| 免费国产在线观看| 亚洲av日韩aⅴ无码色老头| 成人免费毛片观看| 亚洲人成网亚洲欧洲无码| 日本不卡在线观看免费v| 成人婷婷网色偷偷亚洲男人的天堂 | 吃奶摸下高潮60分钟免费视频| 亚洲第一se情网站| 亚洲色偷拍区另类无码专区| 人妻在线日韩免费视频| 亚洲av无码乱码国产精品fc2| 免费无码VA一区二区三区| 亚洲资源最新版在线观看| 日韩免费无码一区二区视频| 男人扒开添女人下部免费视频| 精品亚洲视频在线观看 | 特级aaaaaaaaa毛片免费视频| 亚洲精品岛国片在线观看| 中文在线免费看视频| 亚洲国产成人综合| 国产精品免费综合一区视频| 九九免费精品视频在这里| 久久精品国产亚洲av麻| 国产成人免费爽爽爽视频| 色吊丝性永久免费看码 | 五月婷婷在线免费观看| 亚洲人成网站999久久久综合| 国产精品亚洲产品一区二区三区 | 久久免费观看国产精品88av| 亚洲毛片一级带毛片基地| 国产伦精品一区二区三区免费迷 | 成人免费大片免费观看网站| 美女18一级毛片免费看| 亚洲电影免费在线观看| 最近免费中文字幕视频高清在线看 | 毛片免费全部播放一级| 91成人免费观看在线观看| 亚洲一区动漫卡通在线播放| 中文亚洲成a人片在线观看|