<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)航:
     
    主站蜘蛛池模板: 在线播放国产不卡免费视频| 亚洲伊人色一综合网| fc2成年免费共享视频网站| 免费在线观看一级毛片| 免费毛片毛片网址| 久久久精品国产亚洲成人满18免费网站 | 亚洲国产成人精品无码一区二区 | 久久亚洲国产精品123区| 精品国产污污免费网站入口| 亚洲色成人中文字幕网站| 暖暖日本免费中文字幕| 亚洲视频免费在线播放| 成人免费在线观看网站| 老子影院午夜伦不卡亚洲| 色噜噜AV亚洲色一区二区| 日本免费污片中国特一级| 亚洲精品视频免费看| 免费国产黄线在线观看| 日韩精品亚洲专区在线影视| 亚洲视频在线一区二区| 久久青草免费91观看| 亚洲妇女熟BBW| 一本色道久久88亚洲综合| 成全在线观看免费观看大全| 亚洲成人动漫在线观看| 又色又污又黄无遮挡的免费视| 久久免费国产精品一区二区| 亚洲短视频在线观看| 四虎免费永久在线播放| 免费91麻豆精品国产自产在线观看 | 亚欧在线精品免费观看一区| 亚洲成a人无码亚洲成www牛牛| 中文字幕精品亚洲无线码一区 | 亚洲图片激情小说| 免费一级毛片免费播放| 久久免费的精品国产V∧| 国内成人精品亚洲日本语音| 亚洲AV成人精品网站在线播放 | 曰批全过程免费视频网址| 含羞草国产亚洲精品岁国产精品| 国产AV无码专区亚洲Av|