• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

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

    發布: 2007-6-11 13:21 | 作者: 網絡轉載 | 來源: 網絡 | 查看: 26次 | 進入軟件測試論壇討論

    領測軟件測試網
    過上一篇文章《規劃基本 ASP.NET 應用程序》的學習,有了基本的目的和為解決方案開發的用戶方案列表后,您需要開始籌劃整體的體系結構。主要目標是標識應用程序的邏輯方面和物理方面,即如何將應用程序拆分為各種有用的部分。在本節中還添加了安全性方面的內容。安全是在規劃的“一開始”您就需要考慮的問題,而不是在開發周期中“最后添加”的內容。我們稍后會在本節中詳細討論這個問題。

    邏輯體系結構

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

    對于我們的示例,我們將定義三個邏輯邊界:用戶界面(Web 窗體)、中間層(一個 .NET 組件程序集)和數據層(SQL Server 數據庫)。圖 1 顯示了如何表示這一內容。



    圖 1:三層圖


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

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

    物理體系結構

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

    對于我們的示例,我們采用一個有效且強大的兩層模型:Web 服務器托管用戶界面和組件,數據庫服務器托管 SQL Server 數據存儲。如果通信量非常大,這個模型使我們可以靈活地在簇中添加更多的服務器,并使其保持足夠的簡潔以便于處理。下面的圖像顯示了此物理體系結構與前面定義的邏輯體系結構之間的映射關系。



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


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

    安全規劃

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

    注意:有關可用選項的詳細信息,請參閱 Microsoft Security Developer Center。

    緩沖區溢出

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

    數據庫攻擊

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

    交叉站點腳本攻擊

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

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

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: asp net 程序 結構 應用 安全規劃


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>