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

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

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

    wuxiren123

    Java防盜鏈在報表中的應(yīng)用實(shí)例

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

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

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

    什么是Referer?

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


    什么是空Referer,什么時候會出現(xiàn)空Referer?

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

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

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



    在防盜鏈設(shè)置中,允許空Referer和不允許空Referer有什么區(qū)別?

    在防盜鏈中,如果允許包含空的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);
       
    //下面的就是出現(xiàn)不是正常頁面請求的時候跳轉(zhuǎn)
        }
    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,在出現(xiàn)ReportServer的時候執(zhí)行過濾,代碼如下:

     

    <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>




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

    效果測試

    準(zhǔn)備兩個html文件

    假設(shè)hello.html是正確的網(wǎng)址

     

    <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> 


     

    假設(shè)steal.html是盜鏈的網(wǎng)址

    情況一

    通過hello.html跳轉(zhuǎn),跳轉(zhuǎn)鏈接正確,即referer不為空且正確


    情況二

     

    通過steal.html跳轉(zhuǎn),跳轉(zhuǎn)鏈接錯誤,即referer不為空且錯誤


    情況三

     

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




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


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 99亚洲精品高清一二区| 亚洲av午夜电影在线观看| 亚洲免费一级视频| 亚洲heyzo专区无码综合| 久久国产成人亚洲精品影院| 久久中文字幕免费视频| 亚洲日本VA午夜在线电影| 久久久久噜噜噜亚洲熟女综合 | 成人福利免费视频| 污网站在线免费观看| 亚洲美女免费视频| 免费一区二区三区四区五区| 亚洲午夜免费视频| 美女黄频免费网站| 337p欧洲亚洲大胆艺术| 免费人成年激情视频在线观看| 99久久99这里只有免费的精品| 亚洲国产精品综合久久网各| 亚洲国产精品一区二区第一页免 | 成人性生交视频免费观看| a级毛片免费在线观看| 亚洲精品色播一区二区| 亚洲精品二区国产综合野狼| 日本特黄特色免费大片| 日韩精品无码专区免费播放| 麻豆亚洲AV成人无码久久精品 | 国产亚洲中文日本不卡二区| 中文字幕在亚洲第一在线 | 亚洲人色婷婷成人网站在线观看 | 亚洲精品二区国产综合野狼| 日韩在线免费播放| 亚洲视频免费观看| 两个人日本WWW免费版| 含羞草国产亚洲精品岁国产精品 | 久久精品a亚洲国产v高清不卡| 国产午夜鲁丝片AV无码免费| 成年人网站免费视频| 久久黄色免费网站| WWW免费视频在线观看播放| 久久亚洲精品成人无码| 亚洲男人天堂2022|