從使用者輸入資料到資料被轉化處理,往往經過很多層函數傳遞。在每個函數中都進行合法性檢查必然是謹慎的,但是這樣做無疑是對資源和效能的極大損耗。
一種做法是把所有函數分為安全和非安全區域,把一些介面選定為安全區域的邊界。對穿越安全區域邊界的資料進行合法性檢查。非安全區域的函數只能調用隔離帶的函數,當隔離帶驗證了資料有效性以後,才將資料送給安全區域的函數,安全區域的函數將不再進行資料有效性檢查。
在類的層次也會採用這種方法,類的公開方法可以假設資料是不安全的,它們要負責對資料進行檢查。
另一種方案是,僅在資料最終將被實際使用時才進行合法性檢查。
在分布式架構中,我們考慮的更多。
左圖傳遞的是未經處理資料,我們需要在介面層編寫一部分商務邏輯,在資料訪問層再編寫一部分商務邏輯,需要時刻保持兩者的統一。
右圖解釋了移動對象概念,不在傳遞未經處理資料,而是傳遞業務對象,使介面控制碼可以使用與資料存取碼一樣的商務邏輯,這是最理想的方法,因為他提供了代碼重用、低維護成本以及高效能。
綜上所述,最簡單的方法是在得到資料時立即進行驗證,不過往往資料要經過一層以上的驗證,因此多層次的資料驗證也是需要的。
從使用者輸入資料到資料被轉化處理,往往經過很多層函數傳遞。在每個函數中都進行合法性檢查必然是謹慎的,但是這樣做無疑是對資源和效能的極大損耗。
一種做法是把所有函數分為安全和非安全區域,把一些介面選定為安全區域的邊界。對穿越安全區域邊界的資料進行合法性檢查。非安全區域的函數只能調用隔離帶的函數,當隔離帶驗證了資料有效性以後,才將資料送給安全區域的函數,安全區域的函數將不再進行資料有效性檢查。
在類的層次也會採用這種方法,類的公開方法可以假設資料是不安全的,它們要負責對資料進行檢查。
另一種方案是,僅在資料最終將被實際使用時才進行合法性檢查。
在分布式架構中,我們考慮的更多。
左圖傳遞的是未經處理資料,我們需要在介面層編寫一部分商務邏輯,在資料訪問層再編寫一部分商務邏輯,需要時刻保持兩者的統一。
右圖解釋了移動對象概念,不在傳遞未經處理資料,而是傳遞業務對象,使介面控制碼可以使用與資料存取碼一樣的商務邏輯,這是最理想的方法,因為他提供了代碼重用、低維護成本以及高效能。
綜上所述,最簡單的方法是在得到資料時立即進行驗證,不過往往資料要經過一層以上的驗證,因此多層次的資料驗證也是需要的。