直播中
Microsoft Corporation
內(nèi)容:第 4 章提供了成功部署的步驟和重要的安全威脅以及需要考慮的對(duì)策。
在開(kāi)發(fā)和測(cè)試基于 Offline Application Block 的應(yīng)用程序后,就可以在產(chǎn)品環(huán)境中部署該應(yīng)用程序了。本章討論如何通過(guò)為各種提供程序配置應(yīng)用程序來(lái)部署應(yīng)用程序。本章還討論了在產(chǎn)品環(huán)境中部署應(yīng)用程序時(shí)需要考慮的安全威脅和對(duì)策。
在部署使用 Offline Application Block 的應(yīng)用程序之前,請(qǐng)確保目標(biāo)計(jì)算機(jī)安裝了下列軟件組件:
• |
Microsoft_ Windows_ XP Professional 操作系統(tǒng) |
• |
Microsoft .NET Framework 1.1 版 |
此外,如果您要使用 Offline Application Block 隨附的提供程序,則必須安裝下列軟件:
• |
用于隊(duì)列存儲(chǔ)提供程序的 Microsoft 消息隊(duì)列 (MSMQ) |
• |
用于隊(duì)列/緩存存儲(chǔ)提供程序的 Microsoft SQL Server™ 桌面引擎 (MSDE) |
提供程序是在您在 Microsoft Visual Studio_ .NET 部署系統(tǒng)項(xiàng)目中創(chuàng)建的 App.config 文件中定義的。在該文件中,每個(gè)類(lèi)型的提供程序都對(duì)應(yīng)于一個(gè)區(qū)段。
• |
ConnectionManagerProviders – 此區(qū)段包含用于檢測(cè)應(yīng)用程序物理連接狀態(tài)的策略的配置信息。該應(yīng)用程序塊隨附的連接檢測(cè)提供程序使用 Windows 網(wǎng)絡(luò) API (WinInet) 來(lái)檢測(cè)網(wǎng)絡(luò)連接是否存在。 |
• |
QueueManagerProviders – 此區(qū)段包含用于存儲(chǔ)消息的提供程序(包括 MSMQQueueStorageProvider、MSDEQueueStorageProvider、IsolatedStorageQueueStorageProvider 和 InMemoryQueueStorageProvider)的配置信息。 |
• |
CryptographicSettings – 此區(qū)段包含用于加密提供程序設(shè)置的配置信息。 |
• |
CacheManagerSettings – 此區(qū)段包含用于 Caching Application Block 的配置信息。有關(guān) Caching Application Block 的詳細(xì)信息,請(qǐng)參閱 Caching Application Block 文檔。Offline Application Block 將獨(dú)立存儲(chǔ)緩存提供程序作為用于緩存的附加提供程序。 |
“ConnectionManagerProviders”和“QueueManagerProviders”區(qū)段都具有一個(gè)名為 <providers> 的元素,它包含“連接管理”和“消息數(shù)據(jù)管理”子系統(tǒng)的策略。每個(gè)策略或提供程序都在 <providers> 區(qū)段下有一個(gè)相應(yīng)的子元素。表 4.1 中列出了每個(gè)提供程序所具有的公共特性集。
表 4.1 提供程序的公共特性
特性名 | 說(shuō)明 | 是否必需 | 默認(rèn)值 |
name |
提供程序的好記的名稱(chēng)。 |
是 |
無(wú) |
type |
與提供程序相對(duì)應(yīng)的類(lèi)的完全限定類(lèi)型名稱(chēng)。 |
是 |
無(wú) |
enabled |
指定啟用配置文件中的哪個(gè)提供程序。您只能將這些提供程序的其中一個(gè)設(shè)置為 true,以便脫機(jī)功能正常工作。 |
否 |
False |
每個(gè)提供程序所需的自定義屬性被表示為子元素。
以下配置文件摘錄顯示了 ConnectionManagersProviders 區(qū)段是如何在 App.config 中定義的:
... <configuration> <configSections> <section name="ConnectionManagerProviders" type="Microsoft.ApplicationBlocks.SmartClient.Offline.MultiProviderConfigHandler,Microsoft.ApplicationBlocks.SmartClient.Offline,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" /> </configSections> </configuration> ...
以下配置文件摘錄顯示了 ConnectionManagerProviders 區(qū)段的詳細(xì)內(nèi)容:
... <ConnectionManagerProviders> <provider name="connectionDetectionStrategy" enabled="true" type= "Microsoft.ApplicationBlocks.SmartClient.Offline.WinINetDetectionStrategy, Microsoft.ApplicationBlocks.SmartClient.Offline.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"> <pollingInterval>2</pollingInterval> </provider> </ConnectionManagerProviders> ...
表 4.2 按照 ConnectionManagerProviders 特性在配置文件中的顯示順序說(shuō)明它們的設(shè)置。
表4.2:ConnectionManagerProviders 特性的默認(rèn)設(shè)置
特性/子元素 | 說(shuō)明 | 默認(rèn)值 |
name |
指定提供程序的名稱(chēng)。 |
無(wú) |
enabled |
指定啟用配置文件中的哪個(gè)提供程序??山邮艿闹禐?true 或 false。您只能將這些提供程序的其中一個(gè)設(shè)置為 true,以便脫機(jī)功能正常工作。 |
false |
type |
指定提供程序的完全限定名。 |
無(wú) |
pollingInterval |
指定“連接管理器”檢測(cè)連接狀態(tài)的頻率。必須設(shè)置此特性。建議設(shè)置為 2 秒鐘。 |
無(wú) |
Offline Application Block 提供了 ConnectionDetectionStratergy,后者使用 Windows API WinINetDetectionStrategy 類(lèi)來(lái)檢測(cè)與網(wǎng)絡(luò)的連接性。
下列提供程序可用于隊(duì)列存儲(chǔ):
• |
InMemoryQueueStorageProvider – 該提供程序?qū)㈥?duì)列數(shù)據(jù)存儲(chǔ)在內(nèi)存數(shù)據(jù)結(jié)構(gòu)中。因?yàn)楫?dāng)應(yīng)用程序關(guān)閉時(shí)存儲(chǔ)的數(shù)據(jù)會(huì)丟失,所以該提供程序不適于存儲(chǔ)持久性數(shù)據(jù)。 |
• |
MSDEQueueStorageProvider – 該提供程序?qū)㈥?duì)列數(shù)據(jù)存儲(chǔ)在“桌面引擎”中。自定義屬性 ConnectionString 定義了用于連接到 MSDE 數(shù)據(jù)庫(kù)的連接字符串。 |
• |
MSMQQueueStorageProvider – 該提供程序?qū)㈥?duì)列數(shù)據(jù)存儲(chǔ)在“消息隊(duì)列”中。該提供程序允許在配置文件中指定消息隊(duì)列的名稱(chēng),并且它將嘗試打開(kāi)具有該名稱(chēng)的隊(duì)列。如果它無(wú)法打開(kāi)該隊(duì)列,就會(huì)嘗試以給定的名稱(chēng)創(chuàng)建一個(gè)專(zhuān)用隊(duì)列。在部署基于該塊的應(yīng)用程序的過(guò)程中,您應(yīng)通過(guò)管理手段(使用 Microsoft 管理控制臺(tái) [MMC] 單元)手動(dòng)創(chuàng)建消息隊(duì)列,以便其安全權(quán)限能夠正確配置。請(qǐng)注意,該塊假設(shè)所使用的消息隊(duì)列是專(zhuān)用隊(duì)列。自定義屬性 queueName 定義該隊(duì)列的名稱(chēng)。 |
• |
IsolatedStorageQueueStorageProvider – 該提供程序存儲(chǔ)一個(gè)用戶(hù)的隊(duì)列數(shù)據(jù),并防止其他用戶(hù)對(duì)該數(shù)據(jù)進(jìn)行訪問(wèn)。 |
以下配置文件摘錄顯示了 QueueManagerProviders 區(qū)段是如何在 App.config 文件中定義的:
... <configuration> <configSections> <section name="QueueManagerProviders" type="Microsoft.ApplicationBlocks.SmartClient.Offline.MultiProviderConfigHandler,Microsoft.ApplicationBlocks.SmartClient.Offline,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" /> </configSections> </configuration>
以下配置文件摘錄顯示了 QueueManagerProviders 區(qū)段的詳細(xì)內(nèi)容:
... <QueueManagerProviders> <provider name="queueManagerStorageProvider" enabled="false" type="Microsoft.ApplicationBlocks.SmartClient.Offline.IsolatedStorageQueueStorageProvider,Microsoft.ApplicationBlocks.SmartClient.Offline.Providers,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" encrypted="false" signed="false" cryptoProvider="default" /> <provider name="queueManagerStorageProvider" enabled="true" type="Microsoft.ApplicationBlocks.SmartClient.Offline.InMemoryQueueStorageProvider,Microsoft.ApplicationBlocks.SmartClient.Offline.Providers,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" encrypted="false" signed="false" cryptoProvider="default"/> <provider name="queueManagerStorageProvider" enabled="false" type="Microsoft.ApplicationBlocks.SmartClient.Offline.MSMQQueueStorageProvider,Microsoft.ApplicationBlocks.SmartClient.Offline.Providers,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" encrypted="false" signed="false" cryptoProvider="default"> <queueName>InsuranceClaimsClientQueue</queueName> </provider> <provider name="queueManagerStorageProvider" enabled="false" type="Microsoft.ApplicationBlocks.SmartClient.Offline.MSDEQueueStorageProvider,Microsoft.ApplicationBlocks.SmartClient.Offline.Providers,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" encrypted="false" signed="false" cryptoProvider="default"> <applicationName>Insurance Claims Client</applicationName> <connectionString>Initial Catalog=QueueDatabase;Data Source=[MsdeServerName]\[MsdeInstanceName];Integrated security=true</connectionString> </provider> </QueueManagerProviders> ...
表 4.3 按照 QueueManagerProviders 特性在配置文件中的顯示順序說(shuō)明它們的設(shè)置。
表 4.3:QueueManagerProviders 特性的默認(rèn)設(shè)置
特性/子元素 | 說(shuō)明 | 默認(rèn)值 |
Name |
指定提供程序的名稱(chēng)。 |
無(wú) |
enabled |
指定啟用配置文件中的哪個(gè)提供程序??山邮艿闹禐?true 或 false。您只能將這些提供程序的其中一個(gè)設(shè)置為 true,以便脫機(jī)功能正常工作。 |
false |
type |
指定提供程序的完全限定名。 |
無(wú) |
encrypted |
指定是否在寫(xiě)入數(shù)據(jù)前對(duì)其進(jìn)行加密,以及是否在讀取數(shù)據(jù)前對(duì)其進(jìn)行解密。 |
false |
signed |
指定是否在寫(xiě)入數(shù)據(jù)前對(duì)其進(jìn)行簽名,以及是否在讀取數(shù)據(jù)前對(duì)其進(jìn)行驗(yàn)證。 |
無(wú) |
cryptoProvider |
設(shè)置提供程序的名稱(chēng)。在此例中,加密提供程序設(shè)置為 default。 |
默認(rèn)提供程序 |
cryptoProvider 特性將在下面的“加密設(shè)置”部分中進(jìn)行更全面地討論。
配置文件中隊(duì)列存儲(chǔ)提供程序的每個(gè)提供程序節(jié)點(diǎn)都具有一個(gè)與之關(guān)聯(lián)的 cryptoProvider 特性,該特性指定要使用的 cryptoProvider。配置文件中還有另一個(gè)名為 crytpographicSettings 的區(qū)段,其中可以定義許多不同的加密提供程序,實(shí)現(xiàn)不同的加密算法和公鑰。每個(gè)加密提供程序都由一個(gè)名稱(chēng)標(biāo)識(shí),并且每個(gè) QueueStorageProviders 元素中的 cryptoProvider 特性標(biāo)識(shí)要用于該 QueueStorageProvider 的加密提供程序。
要點(diǎn) 經(jīng)常更改密鑰以防止惡意訪問(wèn)、或未經(jīng)授權(quán)的用戶(hù)獲得對(duì)該密鑰的訪問(wèn)權(quán)以及通向您網(wǎng)絡(luò)的非法入口是非常重要的。
1. |
在 Visual Studio .NET 2003 中打開(kāi) ValidationKeyGeneration.sln。該密鑰包含在脫機(jī)解決方案和快速入門(mén)中,它位于 <安裝位置>\Offline\QuickStarts\Utility\ValidationKeyGeneration。此外,您還可以按以下方式訪問(wèn)“Validation Key Generation”:依次單擊 Start、All Programs、Microsoft Application Blocks for .NET、Offline,然后單擊 Validation Key Generation。 |
2. |
構(gòu)建解決方案。 |
3. |
運(yùn)行 ValidationKeyGeneration.exe。 |
4. |
單擊 Generate 按鈕。一個(gè)新密鑰將出現(xiàn)在文本框中。 |
5. |
從文本框中復(fù)制該密鑰,并將其用于配置文件中。 |
有關(guān)加密的詳細(xì)信息,請(qǐng)參閱下列文章:
• |
Cryptography,位于 Microsoft Research Web 站點(diǎn) (http://research.microsoft.com/crypto/) |
• |
Cryptography and Secure Communications,位于 TechNet Web 站點(diǎn) (http://www.microsoft.com/technet/security/topics/crypto/default.mspx) |
• |
Cryptography ,位于 MSDN Web 站點(diǎn) (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/security/security/cryptography_portal.asp) |
使用隊(duì)列提供程序有助于您更安全地存儲(chǔ)數(shù)據(jù)。以下配置文件摘錄顯示了 CryptographicSettings 區(qū)段是如何在 App.config 文件中定義的:
... <configuration> <configSections> <section name="crytpographicSettings" type="Microsoft.ApplicationBlocks.Common.Crypto.CryptographicConfigurationHandler, Microsoft.ApplicationBlocks.Common,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" />... </configSections> </configuration>
以下配置文件摘錄顯示了 QueueManagerProviders 區(qū)段的詳細(xì)內(nèi)容:
... <crytpographicSettings> <cryptographicInfo name="default" type="Microsoft.ApplicationBlocks.Common.Crypto.DPAPIProvider, Microsoft.ApplicationBlocks.Common, Version=1.0.0.0 Culture=neutral, PublicKeyToken=null" validationKey= "Create a new validation key using the validation key generation utility and place here" validation="SHA1"/> </crytpographicSettings>...
有關(guān)配置文件及其設(shè)置的詳細(xì)信息,請(qǐng)參閱 MSDN (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/cmab.asp) 上的“Configuration Management Application Block”。
注 要獲得完整的配置設(shè)置,請(qǐng)參閱保險(xiǎn)理賠快速入門(mén)的 App.config 文件。
Offline Application Block 使用四個(gè)緩存提供程序:IsolatedStorageCacheStorage(由 Offline Application Block 提供)、SingletonCacheStorage、SQLServerCacheStorage(由 MSDE 提供)和 MmfCacheStorage。
在 <CacheManagerSettings> 區(qū)段下的 <StorageInfo> 元素中,您必須指定獨(dú)立存儲(chǔ)提供程序的以下兩個(gè)特性:
• |
AssemblyName – 程序集的名稱(chēng),其中提供程序類(lèi)的位置是:Microsoft.ApplicationBlocks.Offline.Providers。 |
• |
ClassName – 類(lèi)名,它對(duì)應(yīng)的提供程序是:Microsoft.ApplicationBlocks.Offline.Providers.IsolatedStorageCache。 |
以下配置文件摘錄顯示了 CacheManagerSettings 區(qū)段是如何在 App.config 文件中定義的:
... <configuration> <configSections> <section name="CacheManagerSettings" type="Microsoft.ApplicationBlocks.Cache.CacheConfigurationHandler, Microsoft.ApplicationBlocks.Cache,Version=1.0.0.0,Culture=neutral, PublicKeyToken= null" />... </configSections> </configuration>
以下配置文件摘錄顯示了 CacheManagerSettings 區(qū)段的詳細(xì)內(nèi)容:
... <CacheManagerSettings> <DataProtectionInfo AssemblyName="Microsoft.ApplicationBlocks.Cache, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" ClassName="Microsoft.ApplicationBlocks.Cache.DataProtection.DefaultDataProtection" ValidationKey="Create a new validation key using the validation key generation utility and place here" Validation="SHA1" /> <StorageInfo AssemblyName="Microsoft.ApplicationBlocks.SmartClient.Offline.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" ClassName="Microsoft.ApplicationBlocks.SmartClient.Offline.IsolatedStorageCacheStorage" Mode="InProc" Validated="false" Encrypted="false" /> <ScavengingInfo AssemblyName="Microsoft.ApplicationBlocks.Cache, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" ClassName="Microsoft.ApplicationBlocks.Cache.Scavenging.LruScavenging" MemoryPollingPeriod="60" UtilizationForScavenging="80" MaximumSize="100" /> </CacheManagerSettings> ...
有關(guān) SingletonCacheStorage、SQLServerCacheStorage (MSDE) 和 MmfCacheStorage 的詳細(xì)信息,請(qǐng)參閱 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/CachingBlock.asp 上的 Caching Application Block 文檔。
Offline Application Block 中的異常是使用 Exception Management Application Block (EMAB) 來(lái)記錄的。事件記錄在 Windows 事件日志中,它是 EMAB 記錄所有日志事件的默認(rèn)位置。如果要將事件記錄到其他存儲(chǔ)區(qū)(例如 SQL Server、消息隊(duì)列或 Windows 管理規(guī)范 (WMI)),您可以使用 Logging Application Block,它提供了更可靠、更具可擴(kuò)展性的模式進(jìn)行記錄。有關(guān)詳細(xì)信息,請(qǐng)參閱 MSDN (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/Logging.asp?frame=true) 上的 Logging Application Block。
Offline Application Block 有許多項(xiàng)目需要進(jìn)行保護(hù),以防止未經(jīng)授權(quán)的訪問(wèn)或惡意攻擊。這些資產(chǎn)包括:
• |
緩存的數(shù)據(jù) |
• |
排入隊(duì)列的數(shù)據(jù) |
• |
用于訪問(wèn)緩存和隊(duì)列的憑據(jù) |
• |
用戶(hù)憑據(jù) |
• |
通過(guò)網(wǎng)絡(luò)傳輸?shù)挠脩?hù)數(shù)據(jù) |
• |
部署的程序集 |
此外,運(yùn)行智能客戶(hù)端應(yīng)用程序的系統(tǒng)及其使用的所有 Web 服務(wù)也很容易受到攻擊。三種最常見(jiàn)的攻擊類(lèi)型是欺騙、引誘和重播。
欺騙攻擊有幾種形式。通常,攻擊者會(huì)創(chuàng)建一個(gè)虛假狀況來(lái)欺騙目標(biāo)泄露敏感信息。欺騙攻擊的一個(gè)示例是 IP 欺騙。當(dāng)網(wǎng)絡(luò)外的攻擊者通過(guò)使用位于網(wǎng)絡(luò) IP 地址范圍內(nèi)的 IP 地址,或者受信任的外部 IP 地址(可以訪問(wèn)網(wǎng)絡(luò)上的特定資源)來(lái)偽裝成受信任用戶(hù)時(shí),就會(huì)發(fā)生這種攻擊。此外,如果攻擊者可以訪問(wèn) IP 安全 (IPSec) 的安全參數(shù),就可以偽裝成經(jīng)授權(quán)可以連接到公司網(wǎng)絡(luò)的遠(yuǎn)程用戶(hù)。欺騙攻擊的其他示例包括:傳輸控制協(xié)議 (TCP) 欺騙 — 通過(guò)偽造的地址發(fā)送 Internet 數(shù)據(jù)包;域名服務(wù)器 (DNS) 欺騙 — 攻擊者偽造有關(guān)哪些計(jì)算機(jī)名與哪些網(wǎng)絡(luò)地址相對(duì)應(yīng)的信息。
引誘攻擊是非法的權(quán)限提升。此類(lèi)攻擊可欺騙受信任的代碼對(duì)攻擊代碼進(jìn)行調(diào)用,之后此攻擊代碼將獲得合法代碼的權(quán)限。例如,您可能會(huì)通過(guò)電子郵件接收一個(gè)不信任的程序。由于您懷疑該程序的來(lái)源,您在計(jì)算機(jī)中添加了一個(gè)新的本地帳戶(hù),它具有普通、受限的用戶(hù)權(quán)限而不是您自己的高級(jí)別權(quán)限。然后,使用二級(jí)登錄服務(wù)在受限帳戶(hù)下運(yùn)行該程序。執(zhí)行代碼沒(méi)有任何問(wèn)題,因此您就認(rèn)為它是合法的。
第二天,您收到很多電子郵件,抱怨您向他們發(fā)送了垃圾郵件。還有幾個(gè)新文件添加到了 System32 目錄中。這就是引誘攻擊的結(jié)果,它是由您認(rèn)為安全的程序?qū)е碌?。?dāng)該程序啟動(dòng)時(shí),它會(huì)檢查是否運(yùn)行在特權(quán)安全上下文中。如果發(fā)現(xiàn)它未處于特權(quán)安全上下文中,就認(rèn)為實(shí)際用戶(hù)是以更多權(quán)限進(jìn)行登錄的。通過(guò)調(diào)用 User32.dll 中的一些函數(shù),它可模擬一個(gè)實(shí)際用戶(hù),欺騙 Windows 資源管理器啟動(dòng)新的程序副本。當(dāng)新程序啟動(dòng)后,它就繼承了 Windows 資源管理器標(biāo)記的副本。由于用戶(hù)是以較高權(quán)限登錄的,因此該程序會(huì)繼承這些權(quán)限,并可能危及文件、電子郵件以及操作系統(tǒng)的安全。
重播攻擊是通過(guò)記錄和重播先前發(fā)送的有效消息(或部分消息)來(lái)欺騙身份驗(yàn)證系統(tǒng)??梢杂涗浫魏喂潭ǖ纳矸蒡?yàn)證信息(例如密碼),并在以后用于偽造受信任的消息。
下表列出了針對(duì) Offline Application Block 項(xiàng)目、運(yùn)行智能客戶(hù)端應(yīng)用程序的系統(tǒng),以及使用 Offline Application Block 的應(yīng)用程序所使用的 Web 服務(wù)的可能安全威脅和相關(guān)的對(duì)策。有關(guān)威脅和對(duì)策的詳細(xì)信息,請(qǐng)參閱 MSDN (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/ThreatCounter.asp) 上的 Improving Web Application Security: Threats and Countermeasures。
表 4.4:安全威脅和對(duì)策
威脅 | 目標(biāo) | 風(fēng)險(xiǎn) | 攻擊技術(shù) | 對(duì)策 |
攻擊者獲得對(duì)緩存的訪問(wèn)權(quán)。 |
緩存中的用戶(hù)數(shù)據(jù) |
危及敏感用戶(hù)數(shù)據(jù)的安全。 |
攻擊者直接繞過(guò)脫機(jī)塊的基礎(chǔ)結(jié)構(gòu),對(duì)緩存數(shù)據(jù)進(jìn)行訪問(wèn)。 |
加密數(shù)據(jù)并保護(hù)訪問(wèn)該緩存所需的憑據(jù)。 |
攻擊者獲得對(duì)隊(duì)列的訪問(wèn)權(quán),并將消息填充在其中。 |
隊(duì)列 |
消息中可能會(huì)包含能夠中斷甚至終止服務(wù)的惡意數(shù)據(jù)。 |
攻擊者繞過(guò)脫機(jī)塊的基礎(chǔ)結(jié)構(gòu),直接填充隊(duì)列。 |
確保通過(guò)適當(dāng)?shù)膽{據(jù)對(duì)隊(duì)列的訪問(wèn)權(quán)進(jìn)行限制,同時(shí)也保護(hù)該憑據(jù),最好使用數(shù)據(jù)保護(hù)應(yīng)用程序接口 (DPAPI)。 |
攻擊者獲得對(duì)用于訪問(wèn)隊(duì)列和緩存的憑據(jù)的訪問(wèn)權(quán)。 |
隊(duì)列和緩存的憑據(jù) |
可能會(huì)危及憑據(jù)的安全。 |
如果存儲(chǔ)在配置中的數(shù)據(jù)未加密,則可用于特權(quán)用戶(hù)。 |
使用 DPAPI 或等效 API 來(lái)存儲(chǔ)敏感信息。 |
攻擊者獲得對(duì)用戶(hù)憑據(jù)的訪問(wèn)權(quán)。 |
存儲(chǔ)在客戶(hù)端應(yīng)用程序中的用戶(hù)憑據(jù) |
當(dāng)應(yīng)用程序遇到錯(cuò)誤并將錯(cuò)誤記錄到日志中,或者當(dāng)計(jì)算機(jī)受到攻擊時(shí),可能會(huì)危及用戶(hù)憑據(jù)的安全。 |
計(jì)算機(jī)受到攻擊后,用戶(hù)憑據(jù)會(huì)作為錯(cuò)誤報(bào)告的一部分存儲(chǔ)在日志中,而特權(quán)用戶(hù)可以對(duì)該日志進(jìn)行訪問(wèn)。 |
使用 .NET framework 中的 CredentialCache 類(lèi)來(lái)存儲(chǔ)憑據(jù),即使在內(nèi)存中也是如此。 |
攻擊者欺騙業(yè)務(wù)功能服務(wù)。 |
用戶(hù)和應(yīng)用程序數(shù)據(jù) |
可能會(huì)危及發(fā)送到應(yīng)用程序的用戶(hù)和應(yīng)用程序數(shù)據(jù)的安全。 |
網(wǎng)絡(luò)探測(cè) |
驗(yàn)證為服務(wù)生成的代理具有有效終結(jié)點(diǎn)。 |
攻擊者在數(shù)據(jù)傳輸?shù)?Web 服務(wù)的過(guò)程中獲得對(duì)數(shù)據(jù)的訪問(wèn)權(quán)。 |
數(shù)據(jù) |
可能會(huì)危及數(shù)據(jù)的安全。 |
網(wǎng)絡(luò)探測(cè) |
使用安全傳輸(例如 SSL 或 IPSec),并在通過(guò)網(wǎng)絡(luò)發(fā)送數(shù)據(jù)前對(duì)其進(jìn)行加密。 |
攻擊者欺騙下載程序集或部署惡意程序集。 |
系統(tǒng) |
可能會(huì)危及運(yùn)行該應(yīng)用程序的系統(tǒng)的安全。 |
可能的攻擊包括欺騙程序集和部署服務(wù)器中的惡意程序集。 |
要防止欺騙程序集,請(qǐng)使用受信任的第三方證書(shū)服務(wù),如 VeriSign。要防止部署服務(wù)器上的惡意程序集,請(qǐng)加密并數(shù)字簽名存儲(chǔ)在那里的程序集,并在客戶(hù)端下載時(shí)驗(yàn)證程序集。 |
攻擊者在客戶(hù)端上部署惡意程序集。 |
系統(tǒng)和用戶(hù)數(shù)據(jù) |
可能會(huì)危及用戶(hù)數(shù)據(jù)和運(yùn)行該應(yīng)用程序的系統(tǒng)的安全。 |
在客戶(hù)端上部署惡意程序集。 |
公開(kāi)地應(yīng)用到組成應(yīng)用程序的所有程序集,并使用 SecurityAction.FullDemand,這樣調(diào)用堆棧中的所有程序集都將驗(yàn)證公鑰 StrongNameIdentityPermission(SecurityAction.FullDemand, PublicKey="")。 |
攻擊者訪問(wèn)非托管資源 |
系統(tǒng) |
可能會(huì)危及運(yùn)行該應(yīng)用程序的系統(tǒng)的安全 |
如果使用非托管資源的代碼具有所需的權(quán)限,則可能會(huì)受到引誘攻擊。 |
要求 SecurityPermission 訪問(wèn)與非托管資源進(jìn)行交互的類(lèi)中的非托管資源。 |
攻擊者使用反射來(lái)創(chuàng)建類(lèi)實(shí)例。 |
系統(tǒng)和用戶(hù)數(shù)據(jù) |
特權(quán)代碼可能會(huì)被惡意程序集運(yùn)行,從而危及系統(tǒng)和用戶(hù)數(shù)據(jù)的安全。 |
引誘攻擊 |
要求在使用反射的所有代碼上使用 ReflectionPermission。 |
攻擊者使用重播攻擊。 |
提供業(yè)務(wù)功能的服務(wù) |
可能會(huì)危及業(yè)務(wù)功能的安全。 |
在傳輸數(shù)據(jù)的過(guò)程中對(duì)其進(jìn)行探測(cè)。 |
使用安全傳輸(例如 SSL 或 IPSec),并對(duì)消息使用加密和數(shù)字簽名。 |
攻擊者獲得對(duì)事件日志的訪問(wèn)權(quán)。 |
系統(tǒng)和用戶(hù)數(shù)據(jù) |
可能的風(fēng)險(xiǎn)包括:攻擊者可能使用惡意日志消息終止系統(tǒng);大量錯(cuò)誤消息可能會(huì)屏蔽審核跟蹤,因?yàn)槿罩咎蠖鵁o(wú)法進(jìn)行分析;根據(jù)日志的配置,可能會(huì)覆蓋有效數(shù)據(jù)。 |
使用錯(cuò)誤記錄的基礎(chǔ)結(jié)構(gòu),攻擊者可以將大量消息記錄到日志中。 |
可能的對(duì)策包括:在訪問(wèn)日志以執(zhí)行讀取或?qū)懭氩僮鲿r(shí)要求正確的權(quán)限;對(duì)于 Windows 事件日志,請(qǐng)僅使用 EventLogPermission 來(lái)寫(xiě)入日志,除非組件同時(shí)支持讀取和寫(xiě)入;不提供更新或刪除日志的權(quán)限;將日志配置為在滿(mǎn)載時(shí)發(fā)出錯(cuò)誤,而不是覆蓋它本身。 |
攻擊者使用引誘攻擊。 |
系統(tǒng)和用戶(hù)數(shù)據(jù) |
可能會(huì)危及系統(tǒng)和用戶(hù)數(shù)據(jù)的安全。 |
惡意程序集調(diào)用受信任的程序集來(lái)代表它執(zhí)行操作。 |
使用 StrongNameIdentityPermission 和 SecurityAction.FullDemand 來(lái)確保調(diào)用堆棧中的所有程序集都來(lái)自簽名方。 |