一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

保護您的 Silverlight 應(yīng)用程序的安全

      作為一名 Microsoft 服務(wù)顧問,我定期與客戶和合作伙伴一起進行應(yīng)用程序安全性討論。 在本文中,我將介紹一些在這些討論中提出的主題。 特別是,我將重點介紹編程人員在嘗試保護 Silverlight 應(yīng)用程序的安全時所面臨的新挑戰(zhàn),而且我將考慮開發(fā)團隊應(yīng)該將其資源集中于哪些方面。

本文提到了許多技術(shù)概念,您可以在其他位置(包括本雜志)找到這些概念的更多詳細信息。 因此,我就不在技術(shù)層面更加深入地討論這些主題。 本文的目標是“理清頭緒”并介紹如何利用這些概念保護您的應(yīng)用程序的安全。

      當規(guī)劃應(yīng)用程序的安全性時,考慮三個 A 非常有用:身份驗證 (Authentication)、授權(quán) (Authorization) 和審核 (Audit)。

身份驗證是確認用戶身份的行為。 我們通常使用用戶名和密碼執(zhí)行此操作。

授權(quán)是指在進行身份驗證之后,確認用戶實際上具有執(zhí)行特定操作或訪問特定資源的適當權(quán)限的過程。

審核是維護活動記錄,以便用戶無法拒絕對系統(tǒng)執(zhí)行的操作和請求的行為。

      在 Silverlight 應(yīng)用程序上下文中,我將重點介紹前兩項(身份驗證和授權(quán))。 由于這是一個富 InterNET 應(yīng)用程序 (RIA),因此本文中描述的大多數(shù)概念同樣適用于異步 JavaScript 和 XML (AJAX) 或其他 RIA 方法。 我還將討論如何防止對您的 Silverlight 應(yīng)用程序文件進行不必要的訪問。

      拓撲

      Silverlight 是一種跨瀏覽器插件,其利用 Windows Presentation Foundation (WPF) 率先采用的許多圖形概念,使 Web 開發(fā)人員能夠創(chuàng)建豐富的用戶體驗,這些用戶體驗將超出僅使用 HTML 和 JavaScript 創(chuàng)建的體驗。

      ASP.NET 不同的是,Silverlight 是一種客戶端技術(shù),它在用戶的計算機上運行。 因此,Silverlight 開發(fā)無疑與 Windows 窗體或 WPF 有許多共同之處,而與 ASP.NET 的共同之處相對較少。 在許多方面,這是 Silverlight 的最大優(yōu)勢之一,因為它消除了 Web 應(yīng)用程序的無狀態(tài)性所導(dǎo)致的許多問題。 不過,由于所有 UI 代碼都是在客戶端計算機上運行的,因此您不能再相信它。

      服務(wù)

      與 Windows 窗體不同的是,Silverlight 在瀏覽器沙盒內(nèi)運行且擁有的功能減少,因此它所提供的安全程度提高(盡管在 Silverlight 4 中,用戶可以將某些應(yīng)用程序標識為可信并將程序的權(quán)限提升為允許 COM 互操作)。 正因為如此,Silverlight 不能直接連接到數(shù)據(jù)庫,您必須創(chuàng)建一個可提供對您的數(shù)據(jù)和業(yè)務(wù)邏輯的訪問的服務(wù)層。

      例如,您通常會將這些服務(wù)承載于您的 Web 服務(wù)器上,就像使用 ASP.NET Web 窗體一樣。 假定 Silverlight 代碼運行于服務(wù)器與現(xiàn)實世界之間的信任邊界的可信度較差的一側(cè)(參見圖 1),您的團隊的工作重點應(yīng)始終是保護服務(wù)的安全。

圖 1 Silverlight 運行于信任邊界的可信度較差的一側(cè)

      在您的 Silverlight 代碼內(nèi)實現(xiàn)嚴格的安全檢查幾乎沒有意義。 畢竟,攻擊者可以很容易就完全擺脫 Silverlight 應(yīng)用程序并直接調(diào)用您的服務(wù),從而避開您實現(xiàn)的任何安全措施。 此外,惡意人員可以使用像 Silverlight Spy或 Debugging Tools for Windows 這樣的實用程序更改您的應(yīng)用程序在運行時的行為。

我們要認識到的重要一點是:服務(wù)無法確切地知道哪個應(yīng)用程序正在調(diào)用它或者該應(yīng)用程序在某些方面尚未被修改。 因此,您的服務(wù)必須確保:

  • 調(diào)用方已經(jīng)過適當?shù)纳矸蒡炞C
  • 調(diào)用方已獲授權(quán)執(zhí)行所請求的操作

      鑒于上述原因,本文的大部分內(nèi)容重點介紹如何采用與 Silverlight 兼容的方式保護服務(wù)的安全。 特別是,我將考慮通過 ASP.NET 在 Microsoft IIS 中承載兩種不同類型的服務(wù)。 第一種類型是使用 Windows Communication Foundation (WCF)創(chuàng)建的服務(wù),它為構(gòu)建服務(wù)提供一種統(tǒng)一的編程模型。 第二種類型是 WCF 數(shù)據(jù)服務(wù)(以前稱為“ADO.NET 數(shù)據(jù)服務(wù)”),其構(gòu)建于 WCF 之上,允許您使用標準 HTTP 謂詞(一種稱為“具象狀態(tài)傳輸”(REST)的方法)快速公開數(shù)據(jù)。

      通常,如果擔(dān)心安全性,則加密客戶端和服務(wù)器之間的任何通信始終是明智之舉。 建議使用 HTTPS/SSL 加密,且本文內(nèi)假定使用此加密方法。

      目前,Web 開發(fā)人員在 Microsoft 平臺上最常用的兩種身份驗證方法是 Windows 身份驗證和窗體身份驗證。

      Windows 身份驗證

      Windows 身份驗證利用本地安全機構(gòu)或 Active Directory驗證用戶憑據(jù)。 這在許多方案中都是一大優(yōu)勢;它意味著您可以使用系統(tǒng)管理員已經(jīng)熟悉的工具集中管理用戶。 Windows 身份驗證可以使用 IIS 支持的任何方案,包括基本身份驗證、摘要式身份驗證、集成身份驗證(NTLM/Kerberos)和證書。

      在使用 Windows 身份驗證時,通常都會選擇集成方案,因為用戶無需再次提供其用戶名和密碼。 用戶在登錄到 Windows 之后,瀏覽器可采用用于確認個人身份的令牌或握手形式轉(zhuǎn)發(fā)憑據(jù)。 但是由于客戶端和服務(wù)器需要了解用戶的域,使用集成身份驗證有許多缺點。 因此,集成身份驗證最適用于 IntraNET 方案。 此外,盡管它自動與 Microsoft InterNET Explorer 一起使用,但其他瀏覽器(如 Mozilla Firefox)需要進行額外配置。

      通常,基本身份驗證和摘要式身份驗證需要用戶在啟動與您的網(wǎng)站的會話時,重新輸入其用戶名和密碼。 但是,由于這兩種身份驗證都屬于 HTTP 規(guī)范,因此它們在大多數(shù)瀏覽器中均可正常使用,即使是從組織外部進行訪問也是如此。

      Silverlight 利用瀏覽器進行通信,因此使用剛才討論的任何 IIS 身份驗證方法,均可輕松實現(xiàn) Windows 身份驗證。 有關(guān)如何實現(xiàn)的詳細說明,建議閱讀分步指南“如何:在 Windows 窗體中,使用 WCF 中的 basicHttpBinding 進行 Windows 身份驗證并使用 TransportCredentialOnly”(網(wǎng)址為:msdn.microsoft.com/library/cc949012)。 此示例實際上使用 Windows 窗體測試客戶端,但相同的方法也適用于 Silverlight。

      窗體身份驗證

      窗體身份驗證是一種為 ASP.NET 中的自定義身份驗證提供簡單支持的機制。 因此,它特定于 HTTP,這意味著它也可在 Silverlight 中輕松使用。

用戶輸入用戶名和密碼組合,此信息將提交給服務(wù)器進行驗證。 服務(wù)器根據(jù)可信的數(shù)據(jù)源(通常是用戶數(shù)據(jù)庫)檢查憑據(jù),如果憑據(jù)正確,則返回一個 FormsAuthentication Cookie。 然后,客戶端在隨后的請求中提供此 Cookie。 Cookie 經(jīng)過簽名和加密,因此只有服務(wù)器才能解密,惡意用戶既無法解密,也無法篡改。

      調(diào)用窗體身份驗證的確切方式因登錄屏幕的實現(xiàn)方式而異。 例如,如果在驗證了用戶的憑據(jù)后,使用重定向到您的 Silverlight 應(yīng)用程序的 ASP.NET Web 窗體,您可能不再需要執(zhí)行身份驗證工作。 Cookie 已發(fā)送到瀏覽器,且每當請求該域時,您的 Silverlight 應(yīng)用程序都將繼續(xù)使用該 Cookie。

不過,如果您希望在 Silverlight 應(yīng)用程序內(nèi)實現(xiàn)登錄屏幕,您將需要創(chuàng)建一個公開您的身份驗證方法并發(fā)送相應(yīng) Cookie 的服務(wù)。 但幸運的是,ASP.NET 已經(jīng)提供了您所需要的身份驗證服務(wù), 您只需在您的應(yīng)用程序中啟用它即可。 有關(guān)詳細指南,建議閱讀“如何:使用 ASP.NET 身份驗證服務(wù)通過 Silverlight 應(yīng)用程序登錄”(網(wǎng)址為:msdn.microsoft.com/library/dd560704(VS.96))。

      ASP.NET 身份驗證的另一項強大的功能是其可擴展性。 成員資格提供程序描述了用于驗證用戶名和密碼的機制。 幸運的是,ASP.NET 附帶了許多成員資格提供程序,包括一個可使用 SQL Server 數(shù)據(jù)庫的成員資格提供程序,還有一個使用 Active Directory的成員資格提供程序。 然而,如果沒有符合您要求的提供程序,可直接創(chuàng)建一個自定義實現(xiàn)。

      ASP.NET 授權(quán)

      在您的用戶通過身份驗證后,請務(wù)必確保只有他們才能嘗試調(diào)用服務(wù)。 ASP.NET 應(yīng)用程序中,普通 WCF 服務(wù)和 WCF 數(shù)據(jù)服務(wù)均以.svc 文件表示。 本示例中,將在 IIS 中通過 ASP.NET 來承載服務(wù),我將演示如何使用文件夾確保對服務(wù)的安全訪問。

      采用這種方式保護.svc 文件的安全有點令人迷惑不解,因為默認情況下,對此類文件的請求實際上會跳過大多數(shù) ASP.NET 管道,從而繞過授權(quán)模塊。 因此,為了能夠利用許多 ASP.NET 功能,您必須啟用 ASP.NET 兼容性模式。 在任何情況下,WCF 數(shù)據(jù)服務(wù)都會強制要求您啟用它。 在您的配置文件內(nèi)進行簡單的切換即可完成任務(wù): 

<system.serviceModel>	<serviceHostingEnvironment ASPNETCompatibilityEnabled="true"/></system.serviceModel><system.web>	<authorization>		<deny users="?"/>	</authorization></system.web>

NET技術(shù)保護您的 Silverlight 應(yīng)用程序的安全,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 在线综合亚洲欧美网站天堂 | 国产一区二区三区在线看 | 爽爽影院色黄网站在线观看 | 91国内视频 | 国产精品亚洲二区在线 | 成人精品在线观看 | 欧美专区一区 | 国产精品自在线拍国产 | 激情视频小说图片 | 国产一区二区在线免费观看 | 免费永久在线观看污污的网站 | 亚洲区欧美区小说区图片区 | 成人网欧美亚洲影视图片 | 日韩香蕉网 | 四色最新网址 | 久久精品久久精品久久精品 | 丁香六月婷婷激情 | 成人夜夜 | 99自拍视频在线观看 | 女人笫一次一级毛片 | 成人在线视频网 | 国产成人精品第一区二区 | 午夜视频在线观看免费视频 | 麻豆视频导航 | 日韩色视 | 久久精品无码一区二区日韩av | h片视频在线观看 | 91免费永久国产在线观看 | 在线观看成人小视频 | 男人插女人视频网站 | 狠狠亚洲婷婷综合色香 | www.日本高清视频 | 婷婷色视频 | 欧美福利视频 | 国产精品午夜国产小视频 | 久久国产偷 | 欧美美女视频网站 | 69精品免费视频 | 扒开双腿猛进入无遮挡软件 | 久久免费久久 | 一区二区三区伦理高清 |