Struts简介
一.簡介
Apache Struts 2最初被稱為WebWork 2,它是一個簡潔的、可擴展的框架,可用于創建企業級Java web應用程序。設計這個框架是為了從構建、部署、到應用程序維護方面來簡化整個開發周期。
二。曾經的安全問題
在2013年6月底發布的Struts 2.3.15版本被曝出存在重要的安全漏洞?,主要問題如下:
1.可遠程執行服務器腳本代碼?
用戶可以構造http://host/struts2-blank/example/X.action?action:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}鏈接,command goes here可以換成是破壞腳本的路徑和參數,比如fdisk -f等,造成破環系統無法運行的目的。
2.重定向漏洞?
用戶可以構造如知名網站淘寶的重定向連接,形如<a href="http://www.淘寶.com/item00001.html?redirect:http://黑客/getyourPassword">打折新款</a>,引導用戶點擊后進入釣魚網站,在界面上讓其進行登陸用以獲取用戶的密碼。
造成的影響
蘋果、中國移動、中國聯通、百度、騰訊、淘寶、京東、Sohu、民生銀行等大型企業的網站均遭毒手,運維 工程師苦不堪言。
應對措施
Apache團隊緊急發布了Struts 2.3.15.1安全更新版本,可升級到此版本來解決上述問題。
?
三.Struts2 架構
從一個高水平角度看,Struts2 是一個MVC拉動的(或MVC2)框架,Struts2 的模型-視圖-控制器模式是通過以下五個核心部分進行實現的:
?
- 操作(Actions)
- 攔截器(Interceptors)
- 值棧(Value Stack)/OGNL
- 結果(Result)/結果類型
- 視圖技術
請求生命周期
通過上述圖片的描述,我們可以依照下面幾點解釋在Struts2 中用戶的請求生命周期:- 用戶發送一個資源需求的請求到服務器(例如:頁面)。
- 核心控制器查看請求后確定適當的動作。
- 使用驗證、文件上傳等配置攔截器功能。
- 執行選擇的動作來完成請求的操作。
- 另外,如果需要的話,配置的攔截器可做任何后期處理。
- 最后,由視圖顯示結果并返回給用戶。
?
?
轉載于:https://www.cnblogs.com/lukelook/p/11124626.html
總結
- 上一篇: C语言-main方法的两个参数是干什么的
- 下一篇: HTTP协议 -- TCP/IP通信传输