ASP.NET應用程式結構及安全規劃

來源:互聯網
上載者:User
asp.net|安全|程式|規劃 通過上一篇文章《規劃基本 ASP.NET 應用程式》的學習,有了基本的目的和為解決方案開發的使用者方案列表後,您需要開始籌劃整體的體繫結構。主要目標是標識應用程式的邏輯方面和物理方面,即如何將應用程式拆分為各種有用的部分。在本節中還添加了安全性方面的內容。安全是在規劃的“一開始”您就需要考慮的問題,而不是在開發週期中“最後添加”的內容。我們稍後會在本節中詳細討論這個問題。

邏輯體繫結構

從邏輯上講,您需要規劃解決方案以標識資料存放區、資料訪問、商務規則、使用者介面等之間的“邊界”。通常,Web 開發人員會選擇一個兩階段模型,並用 Web Form儲存用於訪問現有資料存放區系統(例如 Microsoft SQL Server)的所有代碼。一個更有效方法是建立一個位於 Web Form使用者介面與 SQL Server 資料存放區系統之間的中介層組件庫。這種三層方法(Web Form、組件、資料庫)通常是大多數應用程式所需的。但是,在某些情況下,可能需要一個其他層來處理伺服器之間傳輸的資料。這個傳輸層可以使用獨立於平台的協議(例如 XML-SOAP)來實現。但是,如果您從頭到尾都使用 Microsoft .NET 技術,則可以使用 .NET 遠程協議的二進位版來完成這一任務,而且速度比使用 XML-SOAP 要快得多。

對於我們的樣本,我們將定義三個邏輯邊界:使用者介面(Web Form)、中介層(一個 .NET 組件程式集)和資料層(SQL Server 資料庫)。圖 1 顯示了如偽硎菊庖荒諶蕁?



圖 1:三層圖

現在我們有一個簡單的邏輯模型。它是如何起作用的?它有助於我們考慮各個邏輯組之間的邊界。每個邏輯層應盡量與其他層獨立。理想的情況是,圖層中的更改應該對整體產生最小的影響。例如,如果將資料存放區從 SQL Server 更改到 XML 資料檔案,唯一受到影響的圖層應是中介層圖層。使用者介面應該根本無需考慮更改。這會使您進行思考:如何?解決方案的實際編碼以實現此原則。

另外,邏輯層有助於我們考慮安全問題。各個圖層之間的邊界都存在潛在的安全性漏洞。而且,各個圖層可能有自己特定的安全措施(SQL Server 許可權、.NET 運行時許可權、ASP.NET 安全等)。同樣,我們稍後會在本節中詳細討論這個問題。

物理體繫結構

確定邏輯層後,考慮物理層也很重要。例如,您可以在同時安裝有 SQL Server、Internet Information Server、ASP.NET 和 .NET 運行時的單個實際電腦上實現這個應用程式。這將是一個物理層。但更可靠且可擴充的方法是:在由三個 Web 服務器組成的簇上部署 Web Form,在兩個應用伺服器上部署 .NET 組件程式集,在兩個故障復原模式的 SQL Server 上部署資料庫。這樣產生的物理體繫結構將七個 Windows 伺服器包含在三個主要組中:Web 簇、組件簇和資料庫簇。如果您瞭解系統的不同邏輯組件可以位於不同的電腦上,您可能會實現不同的代碼。

對於我們的樣本,我們採用一個有效且強大的兩層模型:Web 服務器託管使用者介面和組件,資料庫伺服器託管 SQL Server 資料存放區。如果通訊量非常大,這個模型使我們可以靈活地在簇中添加更多的伺服器,並使其保持足夠的簡潔以便於處理。下面的映像顯示了此物理體繫結構與前面定義的邏輯體繫結構之間的映射關係。



圖 2:物理體繫結構與三層體繫結構之間的映射關係

正如您看到的那樣,邏輯體繫結構和物理體繫結構不必相同。在規劃階段還要考慮一項內容:安全。

安全規劃

Microsoft 有一個關於安全性與軟體這一主題的歌訣:“Secure by design, secure by default, and secure by deployment(設計安全,預設安全和部署安全)”。即,在安全中設計,期待系統在預設情況下是安全的,以及建立可以在安全環境中成功部署的解決方案。安全始終是重要的。既然越來越多的軟體要在公用的 Internet 上“生存”,編寫安全的軟體就更加關鍵。對於我們而言,幸運的是,.NET 運行時和 Windows 作業系統提供廣泛的安全選項和功能,我們可以輕鬆地將其包含在我們的應用程式中。無需過分注重標識和消除聯機解決方案中安全性漏洞的細節,我們可以指出其中一些最常見的漏洞並指出我們的應用程式規劃如何進行處理。


緩衝區溢位

這可能是已編譯應用程式中最常見的安全性漏洞。由於我們將使用 .NET 運行時,而它是設計用來在記憶體中安全啟動並執行,因此不太可能發生緩衝區溢位。此外,我們使用 Microsoft Visual Basic® .NET 對解決方案進行編碼,而 Microsoft Visual Basic® .NET 不像 C 或 C++ 那樣容易受到緩衝區溢位問題的影響。但是,即使我們打算用 C++ 建立組件,我們還可以使用編譯器的特殊功能,GS 轉換,來保護我們免受大多數緩衝區溢位的攻擊。

資料庫攻擊

另一種常見的安全性漏洞可能會使惡意使用者獲得訪問儲存在資料庫中的未經處理資料的許可權。為了防止駭客獲得資料的控制權,我們僅使用 SQL Server 預存程序,而不使用“內聯查詢”。這樣可以大大減少試圖在輸入資料流中插入其他 SQL 命令的攻擊。我們還在程式中多個位置處使用輸入驗證,以確保所有輸入僅包含有效字元。

交叉網站指令碼攻擊

對 Web 應用程式進行的常見攻擊還有一種,它涉及到使用者在輸入資料流中添加客戶方指令碼,這類攻擊將執行附加的對話並誘騙使用者將個人資料發送到駭客自己的 Web 網站。要解決這個問題,我們使用 ASP.NET 1.1 的一個新功能,過濾出這種惡意代碼的所有輸入,防止將它置入系統中。顯示螢幕上還包含附加代碼,它將自動禁用任何指令碼或顯示可能會插入到資料存放區中的標記。

至此,我們已獲得了應用程式的邏輯模型和物理模型,以及確保實現方案包含的安全功能清單。擁有了這些以及目標聲明和使用者方案,我們可以開始這次“編碼前”探險的最後一部分了。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.