如何才能使用戶可以訪問您的應用程序數據,又不會將您的實體 bean 直接暴露給 Web 層,從而不會使您的應用程序面臨安全性威脅?Brett McLaughlin 提供了一個解決方案,它可使您的實體 bean 很安全,并且使您的整個應用程序有效率地運行。
EnterPRise javaBeans 技術一般分成三種核心類型的 bean:會話 bean、消息驅動 bean 和實體 bean。bean 還可以分成充當業務對象的 bean 和充當數據對象的 bean。會話 bean 和消息驅動 bean 是業務對象;實體 bean 是數據對象。大多數情況下,只需要將業務對象暴露給 Web 層(有時稱為應用層),因為業務對象可以使用數據對象來處理數據存儲。但在有些情況下,有必要答應用戶直接訪問和操作數據對象,這意味著要將實體 bean 暴露給 Web 層。這會使您的應用程序面臨安全性威脅,而且隨著您的應用程序的發展,還會導致雜亂無章的代碼。
在這篇EJB最佳實踐的文章中,我們將討論為什么絕對不可以將實體 bean 暴露給應用程序的 Web 層,以及為什么這是難以避免的。接著我將向您演示一個變通方法,它既能使您的實體 bean 更安全,又能使您的整個應用程序更有效率。
暴露的風險
實體bean揭示了大量有關數據庫底層結構的信息。因為每個bean都包含用于數據庫中的各個字段的取值(accessor)和賦值(mutator)方法(即,getxxx() 和 setxxx()),而且因為方法名稱通常與字段名稱連在一起(User bean 中的 getFirstName() 通常訪問 Users表中的firstName字段),所以從應用程序的實體bean推斷這個應用程序的整個數據庫結構是可能的。盡管在單個應用程序中這可能不是什么大問題,但您的bean經常會暴露給其它網絡上另外的應用程序。在 Web 服務系統中尤其會發生這種情況,其中應用程序都是跨多個網絡鏈接的。
暴露的 bean:一個工作示例
新聞熱點
疑難解答