PIXNET Logo登入

大笨鳥的私房菜

跳到主文

大笨鳥於程設這條不歸路上遇到的各式問題與心得

部落格全站分類:不設分類

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 9月 17 週五 201010:50
  • Struts 2.1 以上版本,在 xml 配置檔的 include tag 已經可以用萬用字元了

最近打算將 Struts 2.0.x 版本直接升到 2.2.1,但如此一來之前為 Struts 2.0.x 所寫的一些能讓 XML 配置檔的 include tag 使用萬用字元的 Class 就無法運作了。
為了讓 Struts 2.2.1 XML 配置檔的 include tag 也能使用萬用字元,所以我又回頭去追原始碼,打算像之前 Struts 2.0.x 版一樣自己來寫一個,但是在追原始碼的過程中,我發現 Struts 2.2.1 本身已經有支援 include tag 使用萬用字元了,於是我在往前回溯到之前一度用過的 Struts 2.1.6,發現在 2.1.6 其實就已經有支援了,雖然我沒有再往前追查 2.1 最早的版本,但我相信 2.1 應該就已經支援了,而且不論如何,至少 2.1.6 確定是有支援配置檔的 include tag 使用萬用字元。
Struts 2 有關讀入並解析 XML 配置檔的程式是在 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider 類別,其中的 loadConfigurationFiles() 方法內可以看到解析 include tag 萬用字元的程式碼。
(繼續閱讀...)
文章標籤

大笨鳥 發表在 痞客邦 留言(0) 人氣(134)

  • 個人分類:死踹死2.x
▲top
  • 8月 30 週一 201016:05
  • [重要] 低於 2.2 版的 Struts2 的重大安全性漏洞之後續 - OGNL 篇

會有這個後續篇,主要是因為笨鳥對於用來攻擊的 OGNL 語法不甚了解,於是想研究看看,再加上在找相關資料的過程中,看到了這篇文章「Struts2 與 Webwork 遠程命令執行漏洞分析」裏提到,光只過濾「\u0023」仍無法堵住這個漏洞,因此在土法鍊鋼的反覆測試與參考上述文章後,有了些心得可以記錄下來。
因為是土法鍊鋼,所以有些地方笨鳥就只能針對觀察到的現象加以描述,而無法用什麼理論來驗證,這個可能要先說在前頭了。
首先就先從 OGNL 談起好了。(本來想一口氣寫完,不過後來發現我沒那麼有毅力,所以還是分兩篇好了)
由於 OGNL 本身就是一個龐大的東西,因此這裏不會講解整個 OGNL,有興趣的請自行上官網看文件,此處只針對攻擊用的語法「Expression Evaluation」,也就是攻擊語法中的圓括弧用法。
(繼續閱讀...)
文章標籤

大笨鳥 發表在 痞客邦 留言(0) 人氣(411)

  • 個人分類:死踹死2.x
▲top
  • 8月 20 週五 201015:23
  • [重要] 低於 2.2 版的 Struts2 的重大安全性漏洞

剛國鏈傳來一個訊息,是有關 Struts 2 的一個重大漏洞,這個漏洞的嚴重性能讓有心人藉由傳遞 URL 的參數來亂搞整台 Server 。
相關文章請參考以下的連結:

.(原文) Struts2/XWork < 2.2.0 Remote Command Execution Vulnerability
.(英文) http://blog.o0o.nu/2010/07/cve-2010-1870-struts2xwork-remote.html
.(英文) http://sebug.net/exploit/19954/
.(簡中) http://www.javaeye.com/topic/720209
(繼續閱讀...)
文章標籤

大笨鳥 發表在 痞客邦 留言(0) 人氣(1,761)

  • 個人分類:死踹死2.x
▲top
  • 7月 27 週二 201022:49
  • 在 <jsp:include> 或 <s:include> 之後使用 <s:xxx>,ComponentTagSupport.doStartTag 會丟出 NullPointerException 的問題

版本:
  Struts 2.0.14
 
問題描述:
  當開放 Struts2 的 Filter 能服務 INCLUDE 轉來的需求時,即
    <filter> 
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>REQUEST</dispatcher> 
        <dispatcher>ERROR</dispatcher>
        <dispatcher>INCLUDE</dispatcher> 
    </filter-mapping>
 
  此時,若在 JSP 的頁面上有任何與 include 相關的運作,如:<jsp:include>、<s:include> 甚至是 <tiles:insertAttribute>,則在之後若再使用任何一種 Struts2 的 Tag 時,都會導致ComponentTagSupport  類別內的 doStartTag() 方法中,取得 Container 的程式碼 (Dispatcher.getInstance().getContainer()) 丟出 NullPointerException。
 
(繼續閱讀...)
文章標籤

大笨鳥 發表在 痞客邦 留言(0) 人氣(333)

  • 個人分類:死踹死2.x
▲top
  • 7月 22 週四 201001:59
  • CookieInterceptor 丟出 No object in the CompoundRoot has a publicly accessible property named 'Cookie 名稱' (no setter could be found) 的問題

問題描述:
  在 struts2 讀取 Cookie 可以使用 CookieInterceptor 與 Action 實作 CookiesAware 介面的方式,讓 CookieInterceptor 將 Cookie 裏的值放入 Map 並丟入 Action 中。但此次在實作時,CookieInterceptor 竟然會丟出『No object in the CompoundRoot has a publicly accessible property named 'Cookie 名稱' (no setter could be found) 』的錯誤並中斷程式的執行。
 
追查程式的結果,發現 CookieInterceptor 不但會將 cookie 值包成 Map 丟入 Action,還會透過 Ognl 試著找出 set'Cookie名稱'(String value) 來將值塞入 Action 中,因此,如果 Action 中沒有相對應的 set 方法,就會丟出 Exception。
解決方法:
  方法有二種
  1. 在 Action 內加入 set'Cookie名稱'(String value) 的方法。
  2. 在 struts.xml 中,將 struts.devMode 設成 false。(建議使用)
   <constant name="struts.devMode" value="true" /> 
(繼續閱讀...)
文章標籤

大笨鳥 發表在 痞客邦 留言(0) 人氣(276)

  • 個人分類:死踹死2.x
▲top
  • 7月 28 週二 200900:15
  • Struts 2.0 與 Struts 2.1 差異之處 (陸續更新…)

以下將陸續整理出發現到的 Struts 2.0 與 Struts 2.1 不同之處,提供程式設計師從 Struts 2.0.X 轉換到 Struts 2.1.X 時一個注意清單。
Struts 2.1 預設是無法使用 Ognl 呼叫 class 中的 static method,必須在 struts.xml 或 struts.properties 中,將 struts.ognl.allowStaticMethodAccess 設成 true 才可作用。
請參考「Struts 2.1.2 以上,Ognl 無法呼叫靜態方法的解決之法」文章。
 Struts 2.1 在 struts-default.xml 中已經將 CookieInterceptor 的宣告拿掉。
因此若有需要使用 CookiesAware 機制者,需另行宣告 CookieInterceptor。
 
(繼續閱讀...)
文章標籤

大笨鳥 發表在 痞客邦 留言(0) 人氣(45)

  • 個人分類:死踹死2.x
▲top
  • 7月 18 週六 200902:18
  • Struts 2.1.2 以上,Ognl 無法呼叫靜態方法的解決之法

小弟最近將 Struts 2.0.11 提升到 2.1.6 之後,發現了一個問題,那就是使用 Ognl 呼叫類別中的靜態方法時,吐出來的值竟然空空如也,連錯誤訊息也沒有。
 
    <s:property value="@java.util.Locale@getDefault()" />
  
一開始我還以為是我寫錯了,搞了老半天最後也只能求助於古狗大神。很快的我找到二篇相關的文章,才發現原來在 struts 2.1.2 之後,如果要讓 Ognl 能夠呼叫類別中的靜態方法,還需要額外設定…真是一整個昏倒。
(繼續閱讀...)
文章標籤

大笨鳥 發表在 痞客邦 留言(0) 人氣(123)

  • 個人分類:死踹死2.x
▲top
1

熱門文章

  • (21,686)Oracle 好用 Fuction 介紹 - ROW_NUMBER
  • (7,981)鎖!滑鼠右鍵、功能鍵、組合鍵……
  • (3,609)取代 eval 的方式
  • (2,818)如化在宣告List 與 Map 類別時順便初始化?
  • (1,981)使用 createElement 插入 text 元件到 form 的陷阱
  • (1,272)任意竄改別人的網頁(適用IE與FireFox)
  • (1,193)使用JSP輸出Excel檔常見問題
  • (523)這擺洗 firefox:消失的輸入框游標
  • (321)Oracle 好用 Fuction 介紹 - RANK
  • (291)Tomcat + DBCP 在連線閒置一段時間後,會丟出 No operation allowed after connection closed 問題的解決方式

文章分類

toggle WebService (1)
  • Axis (3)
toggle DHTML (3)
  • YUI3 (1)
  • 吸A死A死 (2)
  • 吃肉是鬼 (32)
toggle Java (2)
  • 吃肉韋伯 (3)
  • 吃肉 (5)
toggle 架構 (3)
  • 死踹死1.x (1)
  • 史匹靈(Spring) (2)
  • 死踹死2.x (7)
toggle 資料庫 (2)
  • SQL (1)
  • Oracle (4)
  • 未分類文章 (1)

最新文章

  • 各瀏覽器的 navigator.userAgent 傳回來的值
  • 在使用 Spring 的 Web 專案中的一般類別,如何取得由 Spring 實例化出來的物件
  • 一鍵下載 - Chrome 限定
  • Test Geolocation API
  • DOM element 屬性 scroll、client 與 offset 的差異(以 width 為例)
  • YUI Builder 簡介與安裝
  • 當 Html Tag 被包在 <a> 之中時,使用 innerHTML 在 Firefox 上的詭異現象與解決方式
  • Struts 2.1 以上版本,在 xml 配置檔的 include tag 已經可以用萬用字元了
  • 解決使用 AXIS Client 呼叫 AXIS2 Web Service 傳檔案時發生的錯誤
  • WebService 的傳遞檔案方式 -- DataHandler (範例使用 AXIS)

最新留言

  • [19/08/27] 訪客 於文章「Oracle 好用 Fuction 介紹...」留言:
    感謝您...
  • [15/06/22] Jacqueline 於文章「各瀏覽器的 navigator.user...」留言:
    sexy babes cam to cam phone se...
  • [14/03/07] dominikaz 於文章「各瀏覽器的 navigator.user...」留言:
    A mature person free webcams e...
  • [14/02/27] Ivonna 於文章「各瀏覽器的 navigator.user...」留言:
    http://www.hugcams.com/live-se...
  • [12/11/01] aaa 於文章「Test Geolocation API...」留言:
    你好可以請問一下 你那個Geolocation 的按鈕...
  • [10/10/08] somebaby 於文章「測試 SyntaxHighlighter...」留言:
    謝謝你 我測試成功了...
  • [10/10/04] somebabyTina 於文章「測試 SyntaxHighlighter...」留言:
    請問如何在Pixnet 上使用 syntaxhighligh...

文章精選

文章搜尋

誰來我家

參觀人氣

  • 本日人氣:
  • 累積人氣: