安全性考量
建議您採取下列步驟,協助保護以 Sync Framework 為基礎的資料庫應用程式安全。如需有關資料庫安全性的詳細資訊,請參閱《SQL Server Compact 線上叢書》和《SQL Server 線上叢書》。
使用最低權限的原則。切勿授予超過執行特定工作所需要的權限。例如,不要授予參與僅下載同步處理之伺服器資料庫資料表的 INSERT 權限。同步處理作業需要下列權限:
Sync Framework 用來讀取和寫入中繼資料資料表和基底資料表之所有預存程序的 EXECUTE 權限。
將在同步處理工作階段期間更新之中繼資料表和任何基底資料表的 SELECT、INSERT、UPDATE 和 DELETE 權限。
當您佈建使用 SqlSyncProvider 的 SQL Server 資料庫時,請注意下列佈建權限需求:
可建立中繼資料資料表的 CREATE TABLE 權限:
scope_info
和scope_config
,以及針對每個基底資料表所建立的追蹤資料表。可將觸發程序加入至基底資料表的 ALTER TABLE。
可建立 Sync Framework 所需之程序的 CREATE PROCEDURE 權限。
scope_info
和scope_config
資料表的 SELECT 和 INSERT 權限。基底資料表的 SELECT 權限。
Sync Framework 不會驗證定義要同步處理之資料表集合 (含選擇性篩選) 的範圍內容。請在您的應用程式中加入邏輯,以便確認所傳送的範圍對應於應該要位於該範圍內的資料表,而且已經套用預期的篩選。
設定伺服器和伺服器資料庫,只公開最小的可攻擊介面區。例如,如果您使用 Internet Information Services (IIS) 伺服器做為 N 層式架構的一部分,除非其他使用伺服器的應用程式需要,否則不要啟用檔案傳輸通訊協定 (FTP) 服務。
加密或以密碼保護磁碟上以及傳輸中的敏感性資料,Sync Framework 不提供連接加密作業。加密是以多項技術在傳輸層提供使用。這些技術包括下列業界標準技術:Windows Communication Foundation (WCF)、虛擬私人網路 (VPN)、安全通訊端層 (SSL) 和網際網路通訊協定安全性 (IPsec)。建議對同步處理期間進行的連接使用這些加密方法中的一種。如需如何加密的詳細資訊,請參閱 Windows 和 SQL Server Compact 的文件,以及您所使用伺服器或對等資料庫的文件。
使用預存程序,查詢伺服器資料庫,而不要使用內嵌 SQL。預存程序有以下兩種方式可以協助保障應用程式安全:
管理員可以使用預存程序,定義一組已知的資料庫進入點。使用者可獲派預存程序的存取權,而不獲派基礎資料表的存取權。
使用預存程序也支持使用參數,而不是以動態方式建立查詢。這使得更難以執行 SQL 插入式攻擊。
應用程式遭到破壞時,資料存取邏輯並不一定會遭到破壞。
在同步處理期間驗證資料傳送。使用在同步處理期間引發的事件,於套用變更至目的資料庫之前驗證變更。如需事件的詳細資訊,請參閱 HOW TO:使用事件和程式商務邏輯。
在 N-Tier 架構中的本機組件與遠端組件之間建立信任。在 N 層式案例中,本機組件與遠端組件應該在彼此之間建立信任。建立信任關係的機制是在 Sync Framework API 的範圍之外,且必須由您的應用程式進行處理。
如果您將 Windows Communication Foundation (WCF) 用於 N 層式應用程式,請依照下列指導方針進行:
請針對您的服務使用的 WCF 命名空間設定適當的權限。建立新的命名空間,或是確定預設的命名空間已設定適當的權限。
使用專用帳戶來執行 WCF 服務,該帳戶應該僅具有存取同步處理相關資料庫時所需的必要權限;在批次同步處理變更的案例中,該帳戶還需具有多工緩衝處理檔案的存取權限。
請將專用的應用程式集區用於 WCF 服務,將同步處理與中間層伺服器上執行的任何其他服務隔離。
使用 WCF 節流,避免 Web 服務遭到阻斷服務攻擊 (DOS)。節流會控制服務的使用者可以耗用的資源。
將預設的 WCF URL 保留取代成限制的保留。如需詳細資訊,請參閱這份 Microsoft 文件 (機器翻譯)。
如需詳細資訊,請參閱 WCF 文件。
如果您使用追蹤,請注意追蹤檔案可以包含有關伺服器和用戶端電腦、應用程式資料和登入的資訊 (密碼不會寫入追蹤檔案中)。如果已啟用詳細資訊追蹤,資料庫每個變更的資料列都會寫入追蹤檔案中。使用適當的存取控制清單,協助保護追蹤檔案。如需追蹤的詳細資訊,請參閱 HOW TO:追蹤同步處理程序。
對於用戶端與伺服器同步處理,可能的話,在用戶端應用程式中明確設定 ClientId 屬性。如果未設定該屬性,識別碼就會由 Sync Framework 指派。在此情況下,用戶端應用程式必須能夠存取伺服器上的下列登錄區:HK_CURRENT_USER\Software\Microsoft\Microsoft SQL Server Compact Edition\v3.5。存取登錄區需要管理員權限。我們並不建議這種作法。
如果您要針對同步處理的資料表定義篩選,請記住下列問題:
Sync Framework 不會驗證針對範圍篩選所指定的 SQL 字串。開發人員應該遵守抵禦惡意字串特有的最佳作法。如需詳細資訊,請參閱這份 MSDN 文件 (英文)。
請勿依賴篩選來提供安全性。根據用戶端或使用者識別碼來篩選資料的功能並非安全性功能。換句話說,這個方法不能用來防止某個用戶端或對等讀取屬於另一個用戶端或對等的資料。這種篩選僅有助於分割資料及減少同步處理的資料量。