<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鷹翔宇空

    學(xué)習(xí)和生活

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks
    原文引自:http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/4OffAppBlocConfSecuCons.mspx

    Offline Application Block 配置和安全注意事項(xiàng)

    發(fā)布日期: 8/19/2004 | 更新日期: 8/19/2004

    Microsoft Corporation

    內(nèi)容:第 4 章提供了成功部署的步驟和重要的安全威脅以及需要考慮的對(duì)策。

    *
    本頁(yè)內(nèi)容
    部署要求 部署要求
    配置 配置
    ConnectionManagerProviders ConnectionManagerProviders
    QueueManagerProviders QueueManagerProviders
    CryptographicSettings CryptographicSettings
    CacheManagerSettings CacheManagerSettings
    異常管理 異常管理
    安全注意事項(xiàng) 安全注意事項(xiàng)
    小結(jié) 小結(jié)

    在開發(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)

    返回頁(yè)首返回頁(yè)首

    配置

    提供程序是在您在 Microsoft Visual Studio_ .NET 部署系統(tǒng)項(xiàng)目中創(chuàng)建的 App.config 文件中定義的。在該文件中,每個(gè)類型的提供程序都對(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ǔ)消息的提供程序(包括 MSMQQueueStorageProviderMSDEQueueStorageProviderIsolatedStorageQueueStorageProviderInMemoryQueueStorageProvider)的配置信息。

    ?

    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

    提供程序的好記的名稱。

    無(wú)

    type

    與提供程序相對(duì)應(yīng)的類的完全限定類型名稱。

    無(wú)

    enabled

    指定啟用配置文件中的哪個(gè)提供程序。您只能將這些提供程序的其中一個(gè)設(shè)置為 true,以便脫機(jī)功能正常工作。

    False

    每個(gè)提供程序所需的自定義屬性被表示為子元素。

    返回頁(yè)首返回頁(yè)首

    ConnectionManagerProviders

    以下配置文件摘錄顯示了 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

    指定提供程序的名稱。

    無(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)檢測(cè)與網(wǎng)絡(luò)的連接性。

    返回頁(yè)首返回頁(yè)首

    QueueManagerProviders

    下列提供程序可用于隊(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ì)列的名稱,并且它將嘗試打開具有該名稱的隊(duì)列。如果它無(wú)法打開該隊(duì)列,就會(huì)嘗試以給定的名稱創(chuàng)建一個(gè)專用隊(duì)列。在部署基于該塊的應(yīng)用程序的過(guò)程中,您應(yīng)通過(guò)管理手段(使用 Microsoft 管理控制臺(tái) [MMC] 單元)手動(dòng)創(chuàng)建消息隊(duì)列,以便其安全權(quán)限能夠正確配置。請(qǐng)注意,該塊假設(shè)所使用的消息隊(duì)列是專用隊(duì)列。自定義屬性 queueName 定義該隊(duì)列的名稱。

    ?

    IsolatedStorageQueueStorageProvider – 該提供程序存儲(chǔ)一個(gè)用戶的隊(duì)列數(shù)據(jù),并防止其他用戶對(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

    指定提供程序的名稱。

    無(wú)

    enabled

    指定啟用配置文件中的哪個(gè)提供程序。可接受的值為 true 或 false。您只能將這些提供程序的其中一個(gè)設(shè)置為 true,以便脫機(jī)功能正常工作。

    false

    type

    指定提供程序的完全限定名。

    無(wú)

    encrypted

    指定是否在寫入數(shù)據(jù)前對(duì)其進(jìn)行加密,以及是否在讀取數(shù)據(jù)前對(duì)其進(jìn)行解密。

    false

    signed

    指定是否在寫入數(shù)據(jù)前對(duì)其進(jìn)行簽名,以及是否在讀取數(shù)據(jù)前對(duì)其進(jìn)行驗(yàn)證。

    無(wú)

    cryptoProvider

    設(shè)置提供程序的名稱。在此例中,加密提供程序設(shè)置為 default。

    默認(rèn)提供程序

    cryptoProvider 特性將在下面的“加密設(shè)置”部分中進(jìn)行更全面地討論。

    返回頁(yè)首返回頁(yè)首

    CryptographicSettings

    配置文件中隊(duì)列存儲(chǔ)提供程序的每個(gè)提供程序節(jié)點(diǎn)都具有一個(gè)與之關(guān)聯(lián)的 cryptoProvider 特性,該特性指定要使用的 cryptoProvider。配置文件中還有另一個(gè)名為 crytpographicSettings 的區(qū)段,其中可以定義許多不同的加密提供程序,實(shí)現(xiàn)不同的加密算法和公鑰。每個(gè)加密提供程序都由一個(gè)名稱標(biāo)識(shí),并且每個(gè) QueueStorageProviders 元素中的 cryptoProvider 特性標(biāo)識(shí)要用于該 QueueStorageProvider 的加密提供程序。

    要點(diǎn) 經(jīng)常更改密鑰以防止惡意訪問(wèn)、或未經(jīng)授權(quán)的用戶獲得對(duì)該密鑰的訪問(wèn)權(quán)以及通向您網(wǎng)絡(luò)的非法入口是非常重要的。

    生成自己的對(duì)稱密鑰

    1.

    在 Visual Studio .NET 2003 中打開 ValidationKeyGeneration.sln。該密鑰包含在脫機(jī)解決方案和快速入門中,它位于 <安裝位置>\Offline\QuickStarts\Utility\ValidationKeyGeneration。此外,您還可以按以下方式訪問(wèn)“Validation Key Generation”:依次單擊 StartAll ProgramsMicrosoft Application Blocks for .NETOffline,然后單擊 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ì)列提供程序來(lái)協(xié)助確保數(shù)據(jù)的安全

    使用隊(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)理賠快速入門的 App.config 文件。

    返回頁(yè)首返回頁(yè)首

    CacheManagerSettings

    Offline Application Block 使用四個(gè)緩存提供程序:IsolatedStorageCacheStorage(由 Offline Application Block 提供)、SingletonCacheStorageSQLServerCacheStorage(由 MSDE 提供)和 MmfCacheStorage

    在 <CacheManagerSettings> 區(qū)段下的 <StorageInfo> 元素中,您必須指定獨(dú)立存儲(chǔ)提供程序的以下兩個(gè)特性:

    ?

    AssemblyName – 程序集的名稱,其中提供程序類的位置是:Microsoft.ApplicationBlocks.Offline.Providers

    ?

    ClassName – 類名,它對(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) SingletonCacheStorageSQLServerCacheStorage (MSDE) 和 MmfCacheStorage 的詳細(xì)信息,請(qǐng)參閱 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/CachingBlock.asp 上的 Caching Application Block 文檔。

    返回頁(yè)首返回頁(yè)首

    異常管理

    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。

    返回頁(yè)首返回頁(yè)首

    安全注意事項(xiàng)

    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ù)

    ?

    用戶憑據(jù)

    ?

    通過(guò)網(wǎng)絡(luò)傳輸?shù)挠脩魯?shù)據(jù)

    ?

    部署的程序集

    此外,運(yùn)行智能客戶端應(yīng)用程序的系統(tǒng)及其使用的所有 Web 服務(wù)也很容易受到攻擊。三種最常見(jiàn)的攻擊類型是欺騙、引誘和重播。

    欺騙攻擊

    欺騙攻擊有幾種形式。通常,攻擊者會(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)偽裝成受信任用戶時(shí),就會(huì)發(fā)生這種攻擊。此外,如果攻擊者可以訪問(wèn) IP 安全 (IPSec) 的安全參數(shù),就可以偽裝成經(jīng)授權(quán)可以連接到公司網(wǎng)絡(luò)的遠(yuǎn)程用戶。欺騙攻擊的其他示例包括:傳輸控制協(xié)議 (TCP) 欺騙 — 通過(guò)偽造的地址發(fā)送 Internet 數(shù)據(jù)包;域名服務(wù)器 (DNS) 欺騙 — 攻擊者偽造有關(guān)哪些計(jì)算機(jī)名與哪些網(wǎng)絡(luò)地址相對(duì)應(yīng)的信息。

    引誘攻擊

    引誘攻擊是非法的權(quán)限提升。此類攻擊可欺騙受信任的代碼對(duì)攻擊代碼進(jìn)行調(diào)用,之后此攻擊代碼將獲得合法代碼的權(quán)限。例如,您可能會(huì)通過(guò)電子郵件接收一個(gè)不信任的程序。由于您懷疑該程序的來(lái)源,您在計(jì)算機(jī)中添加了一個(gè)新的本地帳戶,它具有普通、受限的用戶權(quán)限而不是您自己的高級(jí)別權(quán)限。然后,使用二級(jí)登錄服務(wù)在受限帳戶下運(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í)際用戶是以更多權(quán)限進(jìn)行登錄的。通過(guò)調(diào)用 User32.dll 中的一些函數(shù),它可模擬一個(gè)實(shí)際用戶,欺騙 Windows 資源管理器啟動(dòng)新的程序副本。當(dāng)新程序啟動(dòng)后,它就繼承了 Windows 資源管理器標(biāo)記的副本。由于用戶是以較高權(quán)限登錄的,因此該程序會(huì)繼承這些權(quán)限,并可能危及文件、電子郵件以及操作系統(tǒng)的安全。

    重播攻擊

    重播攻擊是通過(guò)記錄和重播先前發(fā)送的有效消息(或部分消息)來(lái)欺騙身份驗(yàn)證系統(tǒng)。可以記錄任何固定的身份驗(yàn)證信息(例如密碼),并在以后用于偽造受信任的消息。

    威脅和對(duì)策

    下表列出了針對(duì) Offline Application Block 項(xiàng)目、運(yùn)行智能客戶端應(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)。

    緩存中的用戶數(shù)據(jù)

    危及敏感用戶數(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)用戶。

    使用 DPAPI 或等效 API 來(lái)存儲(chǔ)敏感信息。

    攻擊者獲得對(duì)用戶憑據(jù)的訪問(wèn)權(quán)。

    存儲(chǔ)在客戶端應(yīng)用程序中的用戶憑據(jù)

    當(dāng)應(yīng)用程序遇到錯(cuò)誤并將錯(cuò)誤記錄到日志中,或者當(dāng)計(jì)算機(jī)受到攻擊時(shí),可能會(huì)危及用戶憑據(jù)的安全。

    計(jì)算機(jī)受到攻擊后,用戶憑據(jù)會(huì)作為錯(cuò)誤報(bào)告的一部分存儲(chǔ)在日志中,而特權(quán)用戶可以對(duì)該日志進(jìn)行訪問(wèn)。

    使用 .NET framework 中的 CredentialCache 類來(lái)存儲(chǔ)憑據(jù),即使在內(nèi)存中也是如此。

    攻擊者欺騙業(yè)務(wù)功能服務(wù)。

    用戶和應(yīng)用程序數(shù)據(jù)

    可能會(huì)危及發(fā)送到應(yīng)用程序的用戶和應(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)使用受信任的第三方證書服務(wù),如 VeriSign。要防止部署服務(wù)器上的惡意程序集,請(qǐng)加密并數(shù)字簽名存儲(chǔ)在那里的程序集,并在客戶端下載時(shí)驗(yàn)證程序集。

    攻擊者在客戶端上部署惡意程序集。

    系統(tǒng)和用戶數(shù)據(jù)

    可能會(huì)危及用戶數(shù)據(jù)和運(yùn)行該應(yīng)用程序的系統(tǒng)的安全。

    在客戶端上部署惡意程序集。

    公開地應(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)創(chuàng)建類實(shí)例。

    系統(tǒng)和用戶數(shù)據(jù)

    特權(quán)代碼可能會(huì)被惡意程序集運(yùn)行,從而危及系統(tǒng)和用戶數(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)和用戶數(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)寫入日志,除非組件同時(shí)支持讀取和寫入;不提供更新或刪除日志的權(quán)限;將日志配置為在滿載時(shí)發(fā)出錯(cuò)誤,而不是覆蓋它本身。

    攻擊者使用引誘攻擊。

    系統(tǒng)和用戶數(shù)據(jù)

    可能會(huì)危及系統(tǒng)和用戶數(shù)據(jù)的安全。

    惡意程序集調(diào)用受信任的程序集來(lái)代表它執(zhí)行操作。

    使用 StrongNameIdentityPermissionSecurityAction.FullDemand 來(lái)確保調(diào)用堆棧中的所有程序集都來(lái)自簽名方。

    返回頁(yè)首返回頁(yè)首

    小結(jié)

    要部署 Offline Application Block,請(qǐng)配置您的提供程序并確定您要實(shí)施的安全措施。使用 App.config 文件來(lái)配置連接檢測(cè)提供程序、隊(duì)列管理器提供程序、加密設(shè)置以及緩存設(shè)置。檢查本章中概述的安全注意事項(xiàng),并確定適用于您環(huán)境的對(duì)策。最后,測(cè)試應(yīng)用程序的部署,以確保它符合您環(huán)境的安全和性能要求。

    轉(zhuǎn)到原英文頁(yè)面

    posted on 2006-02-10 15:05 TrampEagle 閱讀(535) 評(píng)論(0)  編輯  收藏 所屬分類: 技術(shù)文摘
    主站蜘蛛池模板: 亚洲欧美日韩中文高清www777| 亚洲国产理论片在线播放| 亚洲激情视频在线观看| 亚洲自偷精品视频自拍| 亚洲人成www在线播放| 国产精品亚洲av色欲三区| v片免费在线观看| 日韩免费在线观看视频| 午夜福利不卡片在线播放免费| 特级淫片国产免费高清视频| 亚洲人成电影在线播放| 亚洲国产精品婷婷久久| 国产精品高清视亚洲一区二区 | 亚洲综合激情九月婷婷 | 亚洲依依成人精品| 九九精品国产亚洲AV日韩| 国产一级高青免费| 日韩吃奶摸下AA片免费观看| 亚洲AV无码乱码在线观看性色扶| 亚洲av无码专区在线播放| 亚洲综合精品伊人久久| 国产精品无码免费专区午夜 | 美女视频黄免费亚洲| 免费在线一级毛片| 久久精品国产亚洲av日韩| 视频一区二区三区免费观看| 久久久久久久久久国产精品免费| 大香人蕉免费视频75| 在线A亚洲老鸭窝天堂| 亚洲日韩AV一区二区三区中文| 成年免费a级毛片免费看无码 | 99久久99久久精品免费观看| 国产国产人免费人成免费视频| 亚洲成人激情在线| 麻豆69堂免费视频| a拍拍男女免费看全片| 亚洲一区二区三区无码中文字幕| 久久狠狠爱亚洲综合影院 | 色吊丝免费观看网站| 97视频免费在线| 亚洲精品乱码久久久久久久久久久久 |