程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> Jsp標簽_簡單標簽_防盜鏈和轉義標簽的實現

Jsp標簽_簡單標簽_防盜鏈和轉義標簽的實現

編輯:關於JSP

Jsp標簽_簡單標簽_防盜鏈和轉義標簽的實現


一概念   1防盜鏈     在HTTP協議中,有一個表頭字段叫referer,采用URL的格式來表示從哪兒鏈接到當前的網頁或文件,通過referer,網站可以檢測目標網頁訪問的來源網頁。有了referer跟蹤來源就好辦了,這時就可以通過技術手段來進行處理,一旦檢測到來源不是本站即進行阻止或者返回指定的頁面。   2頁面中的轉義字符     在HTML中,定義轉義字符串的原因有兩個:第一個原因是像“<”和“>”這類符號已經用來表示HTML標簽,因此就不能直接當作文本中的符號來使用。為了在HTML文檔中使用這些符號,就需要定義它的轉義字符串。   字符 轉義字符 " &quot; & &amp; < &lt; > &gt; 空格 &nbsp; -------------------------------------------------------------------------------------------------------   2.1防盜鏈的實現     1.tld約束   復制代碼 <tag>     <name>referer</name>     <tag-class>com.tag.RefererTag</tag-class>     <body-content>empty</body-content>     <attribute>             <name>site</name>             <required>true</required>     </attribute>     <attribute>             <name>page</name>             <required>true</required>     </attribute> </tag> 復制代碼    2.實現了簡單Tag接口的自定義Tag處理類   復制代碼 package com.tag;   import java.io.IOException;   import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.SkipPageException; import javax.servlet.jsp.tagext.SimpleTagSupport;   public class RefererTag extends SimpleTagSupport{     private String site;     private String page;     public void setSite(String site) {         this.site = site;     }     public void setPage(String page) {         this.page = page;     }       @Override     public void doTag() throws JspException, IOException {                  PageContext context = (PageContext)this.getJspContext();         HttpServletRequest request = (HttpServletRequest)context.getRequest();         HttpServletResponse response = (HttpServletResponse)context.getResponse();         String referer = request.getHeader("referer");         String path = request.getContextPath();         if(referer==null||referer.startsWith(site)){             if(page.startsWith(path))                 response.sendRedirect(page);             else if(page.startsWith("/"))                 response.sendRedirect(path+page);             else                 response.sendRedirect(path+"/"+page);         //    throw new SkipPageException(); 不執行        //    執行則是jsp片段invoke         }                   }  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved