共用方式為


ADO 安全性設計功能

下列各節說明 ActiveX Data Objects (ADO) 2.8 和更新版本中的安全性設計功能。 這些變更是在 ADO 2.8 中進行的,以改善安全性。 Windows Vista 隨附於 Windows DAC 6.0 中的 ADO 6.0 功能相當於 WINDOWS XP 和 Windows Server 2003 中 MDAC 2.8 中包含的 ADO 2.8。 本主題提供有關如何在 ADO 2.8 或更新版本中保護應用程式的相關信息。

重要

如果您要從舊版 ADO 更新應用程式,建議您先在非生產計算機上測試更新的應用程式,再將它部署到客戶。 如此一來,您就可以在部署更新的應用程式之前,確定您知道任何相容性問題。

Internet Explorer 檔案存取案例

下列功能會影響 ADO 2.8 和更新版本在 Internet Explorer 的腳本網頁中使用時的運作方式。

已修訂並改善的安全性警告消息框,現在用來警示使用者

若為 ADO 2.7 和更早版本,當腳本網頁嘗試從不受信任的提供者執行 ADO 程式代碼時,會出現下列警告訊息:

This page accesses data on another domain. Do you want to allow this? To
avoid this message in Internet Explorer, you can add a secure Web site to
your Trusted Sites zone on the Security tab of the Internet Options dialog
box.

針對 ADO 2.8 和更新版本,上述訊息不再出現。 相反地,下列訊息會出現在此內容中:

This Website uses a data provider that may be unsafe. If you trust the
Website, click OK, otherwise click Cancel.

上述訊息可讓使用者做出明智的決策,同時知道任一選擇的後果:

  • 如果使用者信任網站,按兩下 [確定] 會允許所有磁碟安全程序代碼 (所有 ADO 方法和屬性,但本主題稍後所述的可存取磁碟 API 除外)在瀏覽器視窗中執行和執行。

  • 如果使用者不信任該網站,按一下 [取消],會封鎖 ADO 程式碼,使資料存取無法執行。

磁碟可存取的程式代碼現在受限於信任的網站

ADO 2.8 中做了其他設計變更,特別限制一組有限的 API 的能力,這可能會暴露在本機計算機上讀取或寫入檔案的可能性。 以下是在執行 Internet Explorer 時進一步限制安全性的 API 方法:

針對這些有限的可能可存取磁碟的函式集,如果在 Internet Explorer 中執行任何使用這些方法的程式碼,ADO 2.8 和更新版本會發生以下行為:

  • 如果先前提供程式碼的網站已新增至 [信任的網站] 區域清單,程式代碼會在瀏覽器中執行,並授與本機檔案的存取權。

  • 如果網站未出現在 [信任的網站] 區域清單中,則會封鎖程式代碼並拒絕存取本機檔案。

    注意

    在 ADO 2.8 和更新版本中,使用者不會收到警示或建議將網站新增至 [信任的網站] 區域清單。 因此,信任的網站清單管理是部署或支援需要存取本機檔系統的網站型應用程式的人員的責任。

在 Recordset 對象上封鎖 ActiveCommand 屬性的存取

在 Internet Explorer 中執行時,ADO 2.8 現在會封鎖對於使用中 Recordset 物件之 ActiveCommand 屬性的存取,並傳回錯誤。 不論頁面是否來自 [信任的網站] 列表中註冊的網站,都會發生此錯誤。

OLE DB 提供者和整合式安全性處理方式的變更

在檢閱 ADO 2.7 和舊版中是否有潛在的安全性問題和疑慮時,發現下列案例:

在某些情況下,支援整合式安全性 DBPROP_AUTH_INTEGRATED 屬性的 OLE DB 提供者,可能會允許腳本化的網頁無意中使用使用者當前的登入憑證來重複使用 ADO Connection 物件,從而意外連接到其他伺服器。 為避免這種情況,ADO 2.8 和更新版本會根據他們選擇如何提供或未提供整合式安全性來處理 OLE DB 提供者。

針對從 [信任的網站] 區域清單中所列的網站載入的網頁,下表提供 ADO 2.8 和更新版本在每個案例中如何管理 ADO 連線的細目。

用戶驗證、登入的 IE 設定 提供者支援「整合式安全性」,且指定了 UID 和 PWD(SQLOLEDB) 提供者不支援「整合式安全性」(JOLT、MSDASQL、MSPersist) 提供者支援「整合式安全性」,且設定為 SSPI(未指定 UID/PWD)
使用目前的使用者名稱和密碼自動登入 允許連線 允許連線 允許連線
提示輸入使用者名稱和密碼 允許連線 線上失敗 線上失敗
只在內部網路區域中自動登入 允許連線 向使用者顯示安全性警告 提示使用者安全性警告
匿名登入 允許連線 線上失敗 線上失敗

在安全性警告現在出現的情況下,消息框會通知使用者:

This Website is using your identity to access a data source. If you trust this Website, click OK, otherwise click Cancel.

上述訊息可讓使用者做出更明智的決策,並據以繼續。

注意

針對不受信任的網站(也就是未列在 [信任的網站] 區域清單中),如果提供者也不受信任(如本節稍早所述),使用者可能會看到兩個連續的安全警告,首先是關於不安全提供者的警告,然後是嘗試使用其身份的警告。 如果使用者按兩下第一個警告的 [確定],則會執行上表所述的Internet Explorer 設定和響應行為代碼。

控制是否在 ADO 連接字串中傳回密碼文字

當您嘗試在 ADO Connection 物件上取得 ConnectionString 屬性值時,會發生下列事件:

  1. 如果連接已開啟,則會對基礎 OLE DB 提供者進行初始化呼叫,以取得連接字串。

  2. 根據 OLE DB 提供者中 DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO 屬性的設定,密碼和其他一起回傳的連接字串資訊會被包含。

例如,如果 ADO Connection 動態屬性 Persist Security Info 設定為 True,則會在傳回的連接字串中包含密碼資訊。 否則,如果基礎提供者已將 屬性設定為 False (例如 SQLOLEDB 提供者),則會在傳回的連接字串中省略密碼資訊。

如果您使用第三方 (也就是非Microsoft) OLE DB 提供者搭配 ADO 應用程式程式代碼,您可以檢查如何實作 DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO 屬性,以判斷是否允許使用 ADO 連接字串包含密碼資訊。

載入和儲存記錄集或數據流時檢查非檔案裝置

若為 ADO 2.7 和更早版本,例如 OpenSave 這類檔案輸入/輸出作業可用來讀取和寫入檔案型數據,在某些情況下可能會允許使用指定非磁碟型檔類型的 URL 或檔名。 例如,LPT1、COM2、PRN.TXT、AUX 可用來作為系統上使用特定印表機和輔助裝置之間的輸入/輸出別名

針對 ADO 2.8 和更新版本,此功能已更新。 若要開啟和儲存 RecordsetStream 物件,ADO 現在會執行檔類型檢查,以確保 URL 或檔名中指定的輸入或輸出裝置是實際的檔案。

注意

本節所述的文件類型檢查僅適用於 Windows 2000 和更新版本。 不適用於 ADO 2.8 或更新版本在舊版 Windows 版本下執行的情況,例如 Windows 98。