1. 程式人生 > >jeecms無法修改子欄目順序,引出的原始碼漏洞

jeecms無法修改子欄目順序,引出的原始碼漏洞

老哥最近正在做一個cms的小專案(www.uni-orange.com),驗收前期,逐一解決系統bug,直到一個bug的出現,害得老哥老老實實地坐了一天!!

簡單介紹一下使用的cms框架:jeecms,國內開源的cms框架,其商業版jeecms並不開源,作為網際網路產品,至今已經迭代到v8.1版本,這個數字說明:即使是一個產品,它仍然是存在問題,需要不斷完善優化的。

相信多數使用過jeecms的開發或者網管在使用過程中多多少少都會遇到一些問題,jeecms官方提供了技術論壇去幫助使用者解決問題,但是大多數問題普通使用者是無許可權檢視的。

其商業版jeecms是提供原始碼的,在使用及二次開發中,通過其產生的問題作為驅動,查閱其原始碼,有了一點點了解,確實可以為解決問題提供幫助,不得不說,其底層實體類資料結構的設計確實很好(當然這與其選擇hibernate框架是分不開的,這裡並不是說hibernate框架有多好)。早前帶過一個社科院的資料處理專案(資料結構偏複雜),現在回想起當初的資料結構設計......,這就是閱讀原始碼的好處,取其糟粕,去其精華。沒毛病。

不廢話,上BUG:


修改排列順序並儲存,系統報錯“系統發生了一點小故障”,好,開始解決這個問題:

1.查詢日誌,但並未發現其異常資訊

2.本地debug,其日誌級別配置在logback.xml中

將其改為“DEBUG”級別,便於除錯,但是本地除錯過程中,上述操作正常執行,問題並沒有重現;

3.修改伺服器上cms的日誌級別,重啟cms應用,遠端除錯tomcat,跟蹤日誌,發現異常:


NPE空指標異常,智者千慮必有一失,且不論這個問題是否是由於使用不當或是資料有誤引起,出現空指標異常,就一定是程式碼有問題,至少是有漏洞的。

4.找到原始碼:


5.解決問題的方法已經明瞭:只需增加不為空判斷即可(它這塊的邏輯判斷確實是存在疏忽的)

6.如果想找到問題產生的具體原因,就需要更加深入的跟蹤程式碼,瞭解其資料處理的邏輯了

其實無論是生活還是工作中,都會遇到很多問題,不要慌,你要相信“世上無難事,只要肯放棄”。

不管是解決什麼問題,首先要確認的就是解決思路,這會讓你事半功倍。