程式中在何處進行資料驗證

來源:互聯網
上載者:User

從使用者輸入資料到資料被轉化處理,往往經過很多層函數傳遞。在每個函數中都進行合法性檢查必然是謹慎的,但是這樣做無疑是對資源和效能的極大損耗。

一種做法是把所有函數分為安全和非安全區域,把一些介面選定為安全區域的邊界。對穿越安全區域邊界的資料進行合法性檢查。非安全區域的函數只能調用隔離帶的函數,當隔離帶驗證了資料有效性以後,才將資料送給安全區域的函數,安全區域的函數將不再進行資料有效性檢查。

在類的層次也會採用這種方法,類的公開方法可以假設資料是不安全的,它們要負責對資料進行檢查。

另一種方案是,僅在資料最終將被實際使用時才進行合法性檢查。

在分布式架構中,我們考慮的更多。

左圖傳遞的是未經處理資料,我們需要在介面層編寫一部分商務邏輯,在資料訪問層再編寫一部分商務邏輯,需要時刻保持兩者的統一。

右圖解釋了移動對象概念,不在傳遞未經處理資料,而是傳遞業務對象,使介面控制碼可以使用與資料存取碼一樣的商務邏輯,這是最理想的方法,因為他提供了代碼重用、低維護成本以及高效能。

綜上所述,最簡單的方法是在得到資料時立即進行驗證,不過往往資料要經過一層以上的驗證,因此多層次的資料驗證也是需要的。

從使用者輸入資料到資料被轉化處理,往往經過很多層函數傳遞。在每個函數中都進行合法性檢查必然是謹慎的,但是這樣做無疑是對資源和效能的極大損耗。

一種做法是把所有函數分為安全和非安全區域,把一些介面選定為安全區域的邊界。對穿越安全區域邊界的資料進行合法性檢查。非安全區域的函數只能調用隔離帶的函數,當隔離帶驗證了資料有效性以後,才將資料送給安全區域的函數,安全區域的函數將不再進行資料有效性檢查。

在類的層次也會採用這種方法,類的公開方法可以假設資料是不安全的,它們要負責對資料進行檢查。

另一種方案是,僅在資料最終將被實際使用時才進行合法性檢查。

在分布式架構中,我們考慮的更多。

左圖傳遞的是未經處理資料,我們需要在介面層編寫一部分商務邏輯,在資料訪問層再編寫一部分商務邏輯,需要時刻保持兩者的統一。

右圖解釋了移動對象概念,不在傳遞未經處理資料,而是傳遞業務對象,使介面控制碼可以使用與資料存取碼一樣的商務邏輯,這是最理想的方法,因為他提供了代碼重用、低維護成本以及高效能。

綜上所述,最簡單的方法是在得到資料時立即進行驗證,不過往往資料要經過一層以上的驗證,因此多層次的資料驗證也是需要的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.