構建安全 ASP.NET 應用程式的簡介

來源:互聯網
上載者:User
asp.net|安全|程式

在本章中

構建安全的分布式Web應用程式是一項極具挑戰性的任務。使用者應用程式的安全程度受應用程式中最薄弱環節的制約,而分布式應用程式會擁有許多環節。使用者必須具備行之有效知識,掌握多種產品和技術,令一個分布式應用程式的所有組成部分能夠以某種安全方式進行聯合工作。

本章描述了構建安全的分布式Web應用程式的基礎知識:authentication, authorization, and secure communications.身分識別驗證、授權和安全通訊。本章還介紹了一組關鍵的安全原則,使用者在建立分布式 Web 應用程式時應當重點注意。

目標

使用本章能夠:

理解本指南的上下文中術語身分識別驗證、授權和安全通訊的意義。

理解高層ASP.NET Web 應用程式的整體體繫結構。這意味著要理解構成體繫結構的技術以及每種技術所提供的身分識別驗證、授權和安全通訊選項。

理解構成本指南其餘部分基礎的關鍵安全原則。

適用於:

本章適用於下列產品和技術:

Microsoft_ Windows_ XP 或 Windows 2000 Server 及後續作業系統

.NET 架構的1.0版本及後續版本

ASP.NET 1.0

如何使用本章

為從本章獲得最大的收益:

使用者必須熟悉微軟的產品和技術,其中包括 Windows、Microsoft SQL Server™ 2000、Internet Information Services、.NET 架構及企業級服務 (COM+) 。

使用者必須擁有開發 ASP.NET Web 應用程式的經曆。

本頁內容
互連環境基礎知識與技術的配合 設計原則小結

互連環境

如果您已經知道如何建立安全應用程式,那麼在您建立.NET Web 應用程式時能夠應用所掌握的知識嗎?在目前基於 Web 的公布式應用程式環境中,Web 服務將公司與公司連到一起,將公司與客戶連到一起,而且應用程式會有不同程式的顯露,比如顯露給 Intranet、Extranet 及 Internet 上的使用者,對於這些,您能在這種應用環境中應用所掌握的知識嗎?

請考慮一下這種互連環境的幾點基本特性:

Web 服務使用的標準包括簡易物件存取通訊協定 (SOAP)(Simple Object Access Protocol,SOAP)、可延伸標記語言 (XML)(Extensible Markup Language,XML)和超文字傳輸通訊協定 (HTTP)(Hypertext Transport Protocol,HTTP)等標準,但是,它們基本使用純文字傳遞潛在的機密資訊。

Internet B2C應用程式通過Web傳遞機密資料。

Extranet B2B應用程式模糊了信任界線,允許夥伴公司中的其他應用程式調用應用程式。

在維護工資表和人力資源(HR)應用程式的機密性方面,Intranet 應用程式也存在風險。此類應用程式尤其容易因管理員不負責任和某些員工心懷不滿而遭受到攻擊。

返回頁首

基礎知識

任何成功應用程式的安全性策略都是建立在可靠方法之上的,需要將身分識別驗證、授權與安全通訊聯合起來才能夠提供機密資料的保密與完整。在繼續介紹之前,對這些核心概念進行定義是非常重要的。在“ 身分識別驗證與授權”章中,我們將介紹如何將各種身分識別驗證與授權機制結合起來,提供可靠的安全設計。

身分識別驗證

身分識別驗證明確識別應用程式的用戶端,用戶端可能包括終端使用者、服務、進程或電腦。在安全用語中,首先要指出的就是經過身分識別驗證的客戶。

身分識別驗證在一個分布式 Web 應用程式的層間進行。終端使用者最初由 Web 應用程式進行身分識別驗證,一般需要提供使用者名稱和口令。隨後,當中介層的應用程式伺服器(如果使用者的體繫結構中有這一層的話)和資料庫伺服器在處理終端使用者的請求時,它們要執行身分識別驗證,從而確認並處理請求。

在許多應用程式中,下遊伺服器和組件不對終端使用者進行身分識別驗證。它們只對作為上遊應用程式的實體進行身分識別驗證,信任該應用程式進行正確的身分識別驗證並在轉寄請求之前進行授權。

適用於 ASP.NET 應用程式開發的許多身分識別驗證機制將在“ 適用於 ASP .NET 應用程式的安全模型”一章中進行進一步的討論。

授權

授權過程管理經過身分識別驗證了的客戶所允許進行訪問的資源與操作。資源套件括檔案、資料庫、表、行等,還包括系統級資源,如登錄機碼和配置資料。

首先,對於可度量和易管理的資源,許多 Web 應用程式通過方法、而不是直接對這些資源的操作進行授權訪問。也即,對於系統級資源而言,使用平台級的安全,諸如 Windows ACL等,仍是必需的。許多最常見的應用程式級授權方案使用角色來對應用程式內部共用相同許可權的使用者組進行分類。

適用於 ASP.NET 應用程式開發人員的各種授權選項與閘道管理員將在“ 適用於 ASP .NET 應用程式的安全模式”一章中進行進一步的討論。

安全通訊

許多應用程式在應用程式層之間、從資料庫伺服器向瀏覽器、或者從瀏覽器向資料庫伺服器傳遞機密資料機密資料的樣本包括有銀行帳戶的詳細資料、信用卡號、工資資料,等等。此外,應用程式在網路間穿行時,必須保護登入憑據。

安全通訊提供了下列兩種特性:

隱私.隱私的概念是與資料保持私人和保密相聯絡的,不能被裝備了網路監視軟體的竊聽者查看。隱私通常由加密機制提供。

完整性.安全通訊通道還要保護資料在傳輸時不會被意外地或故意地(懷有惡意地)修改。完整性通常要使用資訊評鑑碼(Message Authentication Code,MAC)來提供。

同時在防火牆的內外使用安全通訊是非常重要的,因為許多有害的資訊顯露和安全後門會出現在公司網路的內部。

安全通訊及各種適用的方法將在“ 通訊安全”一章中進行進一步地討論。

返回頁首

與技術的配合

ASP.NET Web 應用程式可以使用多種不同的技術和產品進行開發。在應用程式的多個層次上都需要使用各種身分識別驗證、授權和安全通訊的方法來確保具備深度安全性原則上的防護。

圖1總結了各種技術以及每種技術所提供的基本驗證和授權方法。


圖1. .NET Web 應用程式的安全性

返回頁首

設計原則

有若干重要原則適用於後面各章中提供的指導說明。您應當學會這些原則並在自己的應用程式設計中予以應用:

採用最少許可權的原則.運行指令碼或執行代碼的進程應當儘可能用許可權最少的帳戶運行,從而在危及進程安全時限制可能造成的破壞。如果惡意使用者設法將代碼注入某個伺服器處理序,那麼授予該進程的許可權會在很大程度上決定該使用者可執行檔操作類型。應當將需要更多信任(和更高許可權)的代碼分別隔離在不同的進程內。

ASP.NET 小組有意識地決定運行擁有最少許可權的 ASP.NET 帳戶(使用 ASPNET 帳戶)這一修改在 .NET 架構的最初版本中得以實現。但在 .NET 架構的測試版中,ASP.NET 作為SYSTEM運行,從本質上來說是一種較不安全的設定。

使用縱深防禦。在應用程式的每一層和每個子系統中設定檢查點。檢查點是閘道管理員,它們確保只有經過身分識別驗證和授權的使用者能夠訪問下一個下遊層。

不要信任使用者輸入。應用程式應當徹底地驗證所有使用者輸入,然後再根據使用者輸入執行操作。驗證可能包括篩選特殊字元。針對使用者意外地錯誤使用和某些人通過在系統中注入惡意命令蓄意進行攻擊的情況,這種預防性措施對應用程式起到了保護作用。常見的例子包括 SQL 插入式攻擊、指令碼注入和緩衝區溢位。

使用預設安全設定。開發人員往往僅僅為了使應用程式運行而使用安全性較低的設定。如果應用程式所需的功能使您不得不減小預設安全設定或更改這些預設的安全設定,請在更改前測試更改所帶來的後果並瞭解可能帶來的隱患。

不要通過隱藏來保障安全。嘗試使用讓人迷惑的變數名來隱藏機密資訊或將它們儲存在不常用的檔案位置,這些方法都不能提供安全保障。在“捉迷藏”遊戲中,最好使用平台功能或使用已被證實可行的技術來保護資料。

在關口進行檢查。您不必總是將使用者的安全上下文傳遞到後端進行授權檢查。通常,這種做法在分布式系統中並不是最佳選擇。在關口檢查用戶端意思是在第一個身分識別驗證點(例如,Web 服務器上的 Web 應用程式內)授予使用者權限,並確定允許使用者訪問的資源和操作(可能由下遊服務提供)。

如果在關口設計可靠的身分識別驗證和授權策略,就不必將原調用方的安全上下文一路委派到應用程式資料層。

假定外部系統是不安全的系統。如果外部系統不歸您所有,不要假定有人為您保證安全。

減小表面地區。避免公開不需要公開的資訊。如果公開這些資訊,就可能進一步引起漏洞。同時,處理錯誤的方式一定要適當。向終端使用者返回錯誤訊息時,不要公開任何不需要公開的資訊。

以安全的方式顯示錯誤訊息。如果應用程式失敗,一定要保護好機密資料。同時,不要在錯誤訊息中提供過於詳細的資料,也就是不要提供任何有助於攻擊者發現應用程式漏洞的詳細資料。詳細的錯誤資訊應寫入 Windows 事件記錄。

不要忘記您的安全程式受最薄弱環節制約。考慮安全性時,應該將應用程式所有層的安全性都考慮在內。

禁用不使用的內容。您可以通過禁用應用程式不需要的模組和組件來去除一些潛在的攻擊點。例如,如果應用程式不使用輸出緩衝,則應禁用 ASP.NET 輸出緩衝模組。這樣,即使以後在該模組中發現安全性漏洞,應用程式也不會受到威脅。

返回頁首

小結

本章提供了一些基本資料,通過瞭解這些資訊,您可以為閱讀本指南的其餘部分做好準備。由於後面各章中將廣泛地使用和參考本章介紹的核心術語和原則,因此您一定要熟悉這些概念和原則。



聯繫我們

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