SpringMVC vs Struts2 原

SpringMVC vs Struts2S

性能

輸入圖片說明

MVC框架性能比較幾篇文章: Link Link

開發效率/體驗

輸入圖片說明

提高springmvc可讀性的一個建議:規定Controller的 package 路徑和 URL 路徑一致; 如 “/shop/wed/shopList”頁面對應Controller的包名爲:com.dianping.web.mvc.shop.wed.ShopController

漏洞大事件

輸入圖片說明

1、京東12G: 2016-12-10晚間,京東被媒體爆料有12G的數據遭泄漏,外泄數據包括用戶名、密碼、郵箱、QQ號、電話號碼、身份證等多種信息。京東集團迴應稱初步判斷該數據源於2013年Struts2的安全漏洞問題;

官方回覆:京東信息安全部門答覆,該數據源於2013年Struts 2的安全漏洞問題,當時國內幾乎所有互聯網公司及大量銀行、政府機構都受到了影響,導致大量數據泄露。

2、淘寶“拖庫門”: 2013年7月22日傳出來的消息,淘寶的數據庫因爲Strust2漏洞被拖。

官方微博答覆:淘寶網已於當天第一時間對該漏洞進行修復,並確認此漏洞並沒有被成功利用,用戶的數據安全和賬號數據未見任何異常。

3、 “烏雲知識庫查詢-烏雲公開漏洞”,基本是一年之前的歷史漏洞;因爲“SJJY-白帽子事件”之後,烏雲網已經基本關閉了。

漏洞攻擊工具

輸入圖片說明

網絡上流傳着許多針對struts2流行漏洞的共計工具,攻擊成本非常低。

官方紕漏漏洞

輸入圖片說明

ONGL漏洞淺析

struts2參數賦值原理:
1、struts採用值棧存儲請求和響應的數據:ValueStack ;
2、值棧通過ONGL存取數據:OgnlValueStack;
3、值棧中存取數據時會執行表達式:com.opensymphony.xwork2.ognl.OgnlUtil#compile
4、 ParametersInterceptor爲每個參數聲明一個ONGL語句,並通過對象圖導航調用getter/setter方法 

如參數:?city.name=beijing,ONGL語句爲:action.getCity().setName(“beijing”),執行後完整參數賦值。

1、OGNL(對象圖導航語言): 所謂對象圖,即以任意一個對象爲根,通過OGNL可以訪問與這個對象關聯的其它對象。 對象圖的導航,必須通過getters方法進行導航;主要的功能就是賦值與取值;

2、比較而言,springmvc通過參數解析器是將request對象內容進行解析成方法形參;(method 形參反射)

問題來了:假如參數中包含攻擊代碼如“rm -rf /*”呢? (ParametersInterceptor可以攔截部分非法參數,但是將參數轉碼爲unicode可繞過)

輸入圖片說明

感興趣的同學參照以下代碼體驗一下OGNL語句; 輸入圖片說明

迭代、文檔資料

輸入圖片說明

趨勢、社區

1、spring boot:開箱即用,庫的集合;
2、spring cloud:基於Spring Boot的一整套實現微服務的框架。他提供了微服務開發所需的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分佈式會話和集羣狀態管理等組件。 
    a、 spring-cloud-config:對標Lion
    b、 Spring Cloud Netflix:對標Pigeon (註冊中心/網關/負載均衡/監控/熔斷器)
    c、 Spring Cloud Bus:對標Swollow
    d、… … 
    ( spring cloud對於中小型互聯網公司來說是一顆驚雷)

輸入圖片說明

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章