SpringMVC vs Struts2S
性能
開發效率/體驗
提高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對於中小型互聯網公司來說是一顆驚雷)