Fonctionnalités de conception de la sécurité ADO
Les sections suivantes décrivent les fonctionnalités de conception de sécurité dans ActiveX Data Objects (ADO) 2.8 et versions ultérieures. Ces modifications ont été apportées dans ADO 2.8 pour améliorer la sécurité. ADO 6.0, inclus dans Windows DAC 6.0 dans Windows Vista, équivaut fonctionnellement à ADO 2.8, qui a été inclus dans MDAC 2.8 dans Windows XP et Windows Server 2003. Cette rubrique fournit des informations sur la meilleure sécurisation de vos applications dans ADO 2.8 ou version ultérieure.
Important
Si vous mettez à jour votre application à partir d’une version antérieure d’ADO, il est recommandé de tester votre application mise à jour sur un ordinateur hors production avant de le déployer sur les clients. De cette façon, vous pouvez vous assurer que vous êtes conscient des problèmes de compatibilité avant de déployer votre application mise à jour.
Scénarios d’accès aux fichiers Internet Explorer
Les fonctionnalités suivantes ont un effet sur le fonctionnement d’ADO 2.8 et versions ultérieures lorsqu’il est utilisé dans des pages Web scriptées dans Internet Explorer.
Boîte de message d’avertissement de sécurité révisée et améliorée maintenant utilisée pour alerter les utilisateurs
Pour ADO 2.7 et versions antérieures, le message d’avertissement suivant s’affiche lorsqu’une page Web scriptée tente d’exécuter du code ADO à partir d’un fournisseur non approuvé :
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.
Pour ADO 2.8 et versions ultérieures, le message précédent n’apparaît plus. Au lieu de cela, le message suivant s’affiche dans ce contexte :
This Website uses a data provider that may be unsafe. If you trust the
Website, click OK, otherwise click Cancel.
Le message précédent permet à l’utilisateur de prendre une décision éclairée, tout en sachant les conséquences de l’un ou l’autre choix :
Si l'utilisateur a confiance dans le site, cliquer sur OK autorisera l'exécution dans la fenêtre du navigateur de tout le code sécurisé pour le disque (toutes les méthodes et propriétés ADO à l'exception des API accessibles sur disque décrites plus loin dans cette rubrique).
Si l’utilisateur n’a pas confiance en le site, cliquer sur Annuler empêche le code ADO pour l’accès aux données de s'exécuter entièrement.
Code accessible sur disque limité maintenant aux sites approuvés
Des modifications de conception supplémentaires ont été apportées dans ADO 2.8 qui limitent spécifiquement la capacité d’un ensemble limité d’API, ce qui peut exposer le risque de lire ou d’écrire dans des fichiers sur l’ordinateur local. Voici les méthodes d’API qui ont été plus restreintes pour la sécurité lors de l’exécution d’Internet Explorer :
Pour l’objet Stream ADO, si les méthodes LoadFromFile ou SaveToFile sont utilisées.
Pour l’objet Recordset ADO, si la méthode Save ou la méthode Open, par exemple lorsque l’option adCmdFile est définie ou si l’option Fournisseur de persistance Microsoft OLE DB (MSPersist) est utilisée.
Pour ces ensembles limités de fonctions potentiellement accessibles sur disque, le comportement suivant se produit pour ADO 2.8 et versions ultérieures, si un code qui utilise ces méthodes est exécuté dans Internet Explorer :
Si le site qui a fourni le code a été ajouté précédemment à la liste de zones Sites approuvés, le code s’exécute dans le navigateur et l’accès est accordé aux fichiers locaux.
Si le site n’apparaît pas dans la liste des zones Sites approuvés, le code est bloqué et l’accès aux fichiers locaux est refusé.
Note
Dans ADO 2.8 et versions ultérieures, l’utilisateur n’est pas averti ni conseillé d’ajouter des sites à la liste des zones Sites approuvés. Par conséquent, la gestion de la liste sites approuvés est la responsabilité de ceux qui déploient ou prennent en charge des applications web basées sur des sites web qui nécessitent l’accès au système de fichiers local.
Accès bloqué à la propriété ActiveCommand sur les objets Recordset
Lors de l’exécution dans Internet Explorer, ADO 2.8 bloque désormais l’accès à la propriété ActiveCommand pour un Recordset actif et retourne une erreur. L’erreur se produit, que la page provienne ou non d’un site Web inscrit dans la liste des sites approuvés.
Modifications apportées à la gestion des fournisseurs OLE DB et à la sécurité intégrée
Lors de l’examen d’ADO 2.7 et des versions antérieures pour les problèmes de sécurité potentiels et les préoccupations, le scénario suivant a été découvert :
Dans certains cas, les fournisseurs OLE DB qui prennent en charge la propriété de sécurité intégrée DBPROP_AUTH_INTEGRATED pourraient autoriser les pages Web scriptées à réutiliser l’objet connexion ADO pour se connecter involontairement à d’autres serveurs à l’aide des informations d’identification de connexion actuelles des utilisateurs. Pour éviter cela, ADO 2.8 et versions ultérieures gèrent les fournisseurs OLE DB en fonction de la façon dont ils ont choisi de fournir, ou non, pour la sécurité intégrée.
Pour les pages web chargées à partir de sites répertoriés dans la liste des zones Sites approuvés, le tableau suivant fournit une répartition de la façon dont ADO 2.8 et les versions ultérieures gèrent les connexions ADO dans chaque cas.
Paramètres Internet Explorer pour l’authentification utilisateur, ouverture de session | Le fournisseur prend en charge la sécurité intégrée et l’UID et PWD sont spécifiés (SQLOLEDB) | Le fournisseur ne prend pas en charge la « sécurité intégrée » (JOLT, MSDASQL, MSPersist) | Le fournisseur prend en charge la "sécurité intégrée" et est défini sur SSPI (aucun UID/PWD n'est spécifié) |
---|---|---|---|
Ouverture de session automatique avec nom d’utilisateur et mot de passe actuels | Autoriser la connexion | Autoriser la connexion | Autoriser la connexion |
Demander le nom d’utilisateur et le mot de passe | Autoriser la connexion | Échec de la connexion | Échec de la connexion |
Ouverture de session automatique uniquement dans la zone Intranet | Autoriser la connexion | Demander à l’utilisateur d’afficher un avertissement de sécurité | Demander à l’utilisateur d’afficher un avertissement de sécurité |
Ouverture de session anonyme | Autoriser la connexion | Échec de la connexion | Échec de la connexion |
Dans le cas où un avertissement de sécurité s’affiche maintenant, la boîte de message informe les utilisateurs :
This Website is using your identity to access a data source. If you trust this Website, click OK, otherwise click Cancel.
Le message précédent permet à l’utilisateur de prendre une décision plus éclairée et de continuer en conséquence.
Note
Pour les sites non approuvés (autrement dit, les sites non répertoriés dans la liste des zones Sites approuvés), si le fournisseur n’est pas approuvé (comme indiqué précédemment dans cette section), l’utilisateur peut voir deux avertissements de sécurité dans une ligne, un avertissement sur le fournisseur non sécurisé et un deuxième avertissement sur la tentative d’utilisation de son identité. Si l’utilisateur clique sur OK pour le premier avertissement, les paramètres d’Internet Explorer et le code de comportement de réponse décrits dans le tableau précédent sont exécutés.
Contrôler si le texte du mot de passe est retourné dans les chaînes de connexion ADO
Lorsque vous essayez d’obtenir la valeur de la propriété ConnectionString sur un objet ADO Connection, les événements suivants se produisent :
Si la connexion est ouverte, un appel d’initialisation est ensuite effectué au fournisseur OLE DB sous-jacent pour obtenir la chaîne de connexion.
Selon le paramètre de la propriété DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO du fournisseur OLE DB, les mots de passe sont inclus avec les autres informations de la chaîne de connexion restituées.
Par exemple, si la propriété dynamique connexion ADO Persist Security Info est définie sur True, les informations de mot de passe sont incluses dans la chaîne de connexion retournée. Sinon, si le fournisseur sous-jacent a défini la propriété sur False (par exemple avec le fournisseur SQLOLEDB), les informations de mot de passe sont omises dans la chaîne de connexion retournée.
Si vous utilisez des fournisseurs OLE DB tiers (c’est-à-dire non Microsoft) avec votre code d’application ADO, vous pouvez vérifier comment la propriété DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO est implémentée pour déterminer si l’inclusion d’informations de mot de passe avec des chaînes de connexion ADO est autorisée.
Vérification des périphériques non-basés sur des fichiers lors du chargement et de l'enregistrement des ensembles d'enregistrements ou de flux
Pour ADO 2.7 et versions antérieures, les opérations d’entrée/sortie de fichier telles que Ouvrir et Enregistrer utilisées pour lire et écrire des données basées sur des fichiers peuvent, dans certains cas, autoriser l’utilisation d’une URL ou d’un nom de fichier qui a spécifié un type de fichier non basé sur disque. Par exemple, LPT1, COM2, PRN.TXT, AUX peuvent être utilisés comme alias pour l’entrée/sortie entre les imprimantes et les périphériques auxiliaires sur le système à l’aide de certains dispositifs.
Pour ADO 2.8 et versions ultérieures, cette fonctionnalité a été mise à jour. Pour ouvrir et enregistrer les objets Recordset et Stream, ADO effectue désormais une vérification de type de fichier pour s’assurer que l'appareil d’entrée ou de sortie spécifié dans une URL ou un nom de fichier est un fichier réel.
Note
La vérification du type de fichier décrite dans cette section s’applique uniquement à Windows 2000 et versions ultérieures. Il ne s’applique pas aux situations où ADO 2.8 ou version ultérieure s’exécute sous des versions antérieures de Windows, telles que Windows 98.