2010-07-15 26 views
2

我熟悉上下文對象設計模式的使用 - 這是一種圍繞層之間傳遞的對象的輕量級上下文封裝。如何使用「上下文對象」設計模式來增強安全性?

如果要使用上下文對象來跟蹤污點(不可信用戶輸入)或原始層,我可以看到接收層如何動態地過濾,編碼或驗證相應。

例如: 用戶發送最終將作爲文件存儲在系統中的「HTTP/HTML」上下文數據。文件保存方法可以檢測上下文並解碼HTML實體,爲文件上傳分配隨機標識符,並將用戶操作和文件名關聯到數據庫中。

我的問題是:如何比默認應用所有過濾,編碼和驗證更聰明?在知道原始語境的情況下,哪些情況存在可以提高安全性而不僅僅是良好的輸入驗證/編碼?

我正在使用Java/J2EE/Struts,但這可以推廣到其他語言和框架。

參考文獻:

http://www.corej2eepatterns.com/Patterns2ndEd/ContextObject.htm

http://www.cs.wustl.edu/~schmidt/PDF/Context-Object-Pattern.pdf

http://www.owasp.org/index.php/Category:OWASP_Security_Analysis_of_Core_J2EE_Design_Patterns_Project

隨着我的感謝,

-Ben

回答

1

我不知道污點之間的跟蹤應用程序層是上下文對象模式的最佳應用程序。據我所知,上下文對象是一個對象,它停留在單層中,併爲通過該層的多條消息提供服務。

在哪裏我可以看到這是一個安全機制的使用是在您的應用程序內創建一個明確的安全層。想象一下,當每個用戶對您的系統進行身份驗證時,會在該用戶的安全層內創建一個安全上下文對象。安全上下文對象包含所有用戶權限的列表。從任何用戶進入系統的每個請求都必須首先通過安全層,並根據用戶的安全上下文對象進行評估。

如果請求被允許,安全層將其傳遞到更高層進行處理。如果請求被拒絕,安全層會向用戶返回一個錯誤,而應用程序的其餘部分則不明智。集中安全層內的安全問題可以防止安全檢查散佈到整個業務層和服務層。

在這種情況下,安全上下文對象實現上下文對象模式。上下文對象是長期存在的,爲多個用戶請求提供上下文,但對於請求堆棧中的上層或下層不可見。

+0

您可以直接在這裏頂撞OWASP指導: http://www.owasp.org/index.php/Category:OWASP_Security_Analysis_of_Core_J2EE_Design_Patterns_Project/PresentationTier#tab=Context_Object 不過,你完全回答我的問題: 「存在哪些情況下,瞭解起源上下文可以提高安全性,而不僅僅是良好的輸入驗證/編碼? – 2010-07-21 17:11:16

相關問題