posts - 23,comments - 66,trackbacks - 0
          應用Struts框架的一個安全隱患及解決方案
          from: http://www.javaresearch.org/article/showarticle.jsp?column=23&thread=7621

          重要提示:根據lironghai的評論,經驗證,發現在WebLogic下由于安全限制不能使用本文所推薦的目錄安排。為了保證系統的可移植性,不建議大家采用本文的方式。

          問題

          使用Struts框架時,權限通常控制在Action級(比如將權限驗證放在Action的基類中,這樣新的Action都繼承于這個Action基類,所有Action就可以專注于業務邏輯,而不需要重復地進行權限控制了),這也符合MVC中的角色劃分。然而,這會產生一個安全隱患。因為權限控制在 Action中,所以,頁面也就沒有安全屏障了。一般的新增數據、更新數據不會有什么問題,因為這些數據必須通過HTML的Form提交到Struts的中心控制器,最終由相應的Action來處理,所以Action中就可以驗證該用戶的權限了。然而,對于一些不需要Action進行數據存取,或者有的頁面沒有嚴格按照MVC的角色劃分而在頁面中有獲取數據的代碼,那么這個頁面就危險了。比如,顯示一張通知頁面,通常可以通過配置權限,使部分授權的用戶才可以看到該級別的通知。這個通知頁面是不需要從數據庫中獲取數據的。所以,可以不通過Action的調用來顯示,而是直接敲入顯示該通知的頁面的鏈接就可以看到了。甚至不需要登錄系統,不用管是否有查看該通知的權限!
          比如下圖中,請求1:
          http://.../showannouncement.do
          是通過正常的途徑訪問的,需要經過權限驗證。而請求2:
          ????http://.../announcementshow.jsp
          則完全繞過了權限檢查,任何人,不需要登錄系統就可以訪問到該信息了。

          ?

          解決方案

          解決的辦法也不是沒有,非常簡單。大家都知道JSP?Web容器會對應用的WEB-INF目錄下的所有文件加以保護的,任何用戶都不能直接通過瀏覽器訪問 WEB-INF目錄(包括子目錄)下的任何資源,然而這些資源可以被JSP?Web容器訪問。所以,解決辦法已經出來了??梢园涯愕腏SP頁面放到WEB -INF目錄下,在struts-config.xml的action的配置中注意要把轉向的頁面指向類似:/WEB- INF/pages/announcementshow.jsp。這樣就保證了所有數據的安全了。
          使用本文的方法,甚至可以對靜態的頁面,比如html的頁面進行保護,設置權限以限制訪問。
          posted on 2006-03-23 23:06 rd2pm 閱讀(387) 評論(2)  編輯  收藏

          FeedBack:
          # re: 應用Struts框架的一個安全隱患及解決方案
          2006-04-14 14:35 | swell
          yes.  回復  更多評論
            
          # re: 應用Struts框架的一個安全隱患及解決方案
          2006-05-04 11:02 | 倪森
          暈倒,不用這么麻煩把.用filter解決不是更好.而且是容器提供的功能.把*.jsp頁放在:/WEB-INF/下面是j2EE標準么?并不是所有的Web容器都支持把.
            回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          主站蜘蛛池模板: 冷水江市| 兴山县| 竹溪县| 鸡西市| 桦南县| 前郭尔| 上饶市| 丹棱县| 广安市| 崇明县| 南召县| 资中县| 曲水县| 沙雅县| 吉木乃县| 三明市| 宾阳县| 仙桃市| 阳东县| 南岸区| 武冈市| 自贡市| 鄱阳县| 沁源县| 昌江| 屯昌县| 新丰县| 吉林市| 蒲江县| 额济纳旗| 新龙县| 广饶县| 曲麻莱县| 德庆县| 双城市| 微山县| 西安市| 托克托县| 霍邱县| 平塘县| 皋兰县|