天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

保護您的 Silverlight 應用程序的安全

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

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

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

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

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

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

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

      拓撲

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

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

      服務

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

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

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

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

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

  • 調用方已經過適當的身份驗證
  • 調用方已獲授權執行所請求的操作

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

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

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

      Windows 身份驗證

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

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

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

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

      窗體身份驗證

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

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

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

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

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

      ASP.NET 授權

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

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

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

NET技術保護您的 Silverlight 應用程序的安全,轉載需保留來源!

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

主站蜘蛛池模板: JIZJIZJIZ 日本老师水多 | 黄色三级三级免费看 | 亚洲AV国产精品无码精 | 国产亚洲欧美日韩综合综合二区 | 男女疯狂一边摸一边做羞羞视频 | 王小军怎么了最新消息 | 免费xxx成年大片 | 亚洲AV无码专区国产乱码网站 | 为什么丈夫插我我却喜欢被打着插 | 久久99re2在线视频精品 | 午夜免费体验30分 | 青柠在线观看视频在线高清完整 | 日本红怡院亚洲红怡院最新 | 免费精品国偷自产在线 | 欧美午夜不卡在线观看 | 99久酒店在线精品2019 | 办公室沙发口爆12P 办公室日本肉丝OL在线 | 一本道久在线综合色姐 | 9277在线观看资源 | 国产传媒在线播放 | 私密按摩师在线观看 百度网盘 | 一边啪啪的一边呻吟声口述 | 欧美肥胖女人bbwbbw视频 | 女子叉开腿让男子桶免费软件 | 午夜天堂AV久久久噜噜噜 | 99久久精品互换人妻AV | 秋霞网在线伦理影片 | 97国产成人精品免费视频 | 一区二区三区国产亚洲网站 | 久久日本片精品AAAAA国产 | 亚洲日韩视频免费观看 | 国产麻豆精品人妻无码A片 国产麻豆精品久久一二三 国产麻豆精品传媒AV国产在线 | 视频一区二区中文字幕 | 被送到黑人性奴俱乐部 | 免费被靠视频动漫 | 9277高清在线观看视频 | 精品国产午夜福利在线观看蜜月 | 在线色av| 国产精品免费观看视频 | 乌克兰黄色录像 | 国产婷婷色综合AV蜜臀AV |