Java Web應用安全之URL地址重寫-UrlRewriteFilter

寫在前面

在實際項目中,我們將訪問與後臺約定的url地址進行訪問系統,比如:http://localhost:9090/index.jsp、http://localhost:9090/idcAccessRoom/launchApplication 等。但在有的情況下,比如http://localhost:9090/idcAccessRoom/launchApplication這個請求提供給"他人"訪問,“他人”覺得這個url地址"不好看"、“太長”、"太醜"等各種不使用這個URL,又或者說,這個url地址是我們業務上安全度非常高的,不允許把該地址暴露給外人。在不改現有代碼的情況下,提供一個“他人”喜歡用的URL呢?使用“UrlRewriteFilter”,官網:http://tuckey.org/urlrewrite/

注:參考博文:Java 之Filter 應用實例–強大的UrlRewriteFilter

UrlRewriteFilter

適用於任何兼容的Web應用程序服務器(如Tomcat, JBoss, Jetty或 Resin)的Java Web Filter ,它允許您在訪問代碼之前重寫URL。它就像Apache的mod_rewrite一樣非常強大。
https://github.com/paultuckey/urlrewritefilter
http://tuckey.org/urlrewrite/

基本使用

  1. 添加urlrewritefilter-4.0.4.jarWEB-INF/lib或者添加maven依賴:
<dependency>
    <groupId>org.tuckey</groupId>
    <artifactId>urlrewritefilter</artifactId>
    <version>4.0.4</version>
</dependency>
  1. WEB-INF/web.xml中配置過濾器:
	<!-- urlRewrite即地址重寫,用戶得到的全部都是經過處理後的URL地址。將我們的動態網頁地址轉化爲靜態的地址,如html、shtml,還可以隱藏網頁的真正路徑。此外還可以用來做地址映射。 -->
	<filter>
		<filter-name>UrlRewriteFilter</filter-name>
		<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>UrlRewriteFilter</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
	</filter-mapping>
  1. 增加urlrewrite.xmlWEB-INF/中,並定義規則:
    注: maven項目增加到src/main/webapp/WEB-INF/
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite
        PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
        "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
	<rule>
		<note>登錄重寫地址,其中form爲訪問地址,to爲實際隱藏地址</note>
		<from>/lg</from>
		<to>/pwb/pwb-henan/bdf/jsf/login.xhtml</to>
	</rule>
	<rule>
		<note>登錄後主界面重寫地址,其中form爲訪問地址,to爲實際隱藏地址</note>
		<from>/main</from>
		<to>/pwb/pwb-henan/idcHome/welcome.jsp</to>
	</rule>
</urlrewrite>
  1. 重新啓動應用
    可以訪問:http://127.0.0.1:8080/rewrite-status (或您本地Web應用程序和上下文的任何地址)查看重定向規則輸出。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章