Fonctionnalités de conception de 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 et versions ultérieures.

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 la déployer sur les clients. De cette façon, vous pouvez vous assurer que vous êtes conscient des éventuels 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.

Fenêtre 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 des choix :

  • Si l’utilisateur approuve le site, le fait de cliquer sur OK permet à tout code sûr 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) de s’exécuter dans la fenêtre du navigateur.

  • Si l’utilisateur ne fait pas confiance au site, le fait de cliquer sur Annuler bloque l’exécution du code ADO pour l’accès aux données dans son intégralité.

Code accessible sur disque maintenant limité 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é davantage restreintes à des fins de sécurité lors de l’exécution sur Internet Explorer :

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 zone Sites de confiance, 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 de zone Sites de confiance, le code est bloqué et l’accès aux fichiers locaux est refusé.

    Notes

    Dans ADO 2.8 et versions ultérieures, l’utilisateur n’est pas alerté ou conseillé d’ajouter des sites à la liste de zone Sites de confiance. Par conséquent, la gestion de la liste de sites de confiance est de la responsabilité de ceux qui déploient ou prennent en charge des applications web basées sur des sites web qui nécessitent un 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 objet Recordset actif et retourne une erreur. L’erreur se produit, que la page provienne ou nom d’un site web inscrit dans la liste de sites de confiance.

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, 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 peuvent potentiellement 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, une sécurité intégrée.

Pour les pages web chargées à partir de sites répertoriés dans la liste de zone Sites de confiance, 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 IE pour l’authentification utilisateur et l’ouverture de session Le fournisseur prend en charge la « sécurité intégrée », et l’UID et le 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 », qui est définie sur SSPI (aucun UID/PWD n’est spécifié)
Ouverture de session automatique avec le nom d’utilisateur et le mot de passe actuels Autoriser la connexion Autoriser la connexion Autoriser la connexion
Demande de nom d’utilisateur et de mot de passe Autoriser la connexion Faire échouer la connexion Faire échouer la connexion
Connexion automatique uniquement dans la zone Intranet Autoriser la connexion Afficher à l’utilisateur un avertissement de sécurité Afficher à l’utilisateur un avertissement de sécurité
Ouverture de session anonyme Autoriser la connexion Faire échouer la connexion Faire échouer la connexion

Dans le cas où un avertissement de sécurité s’affiche maintenant, la fenêtre 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.

Notes

Pour les sites non approuvés (autrement dit, les sites non répertoriés dans la liste de zone Sites de confiance), si le fournisseur n’est pas approuvé (comme décrit précédemment dans cette section), l’utilisateur peut voir deux avertissements de sécurité à la suite, 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, le code de comportement de réponse et les paramètres d’Internet Explorer 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 Connection ADO, les événements suivants se produisent :

  1. 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.

  2. Selon le paramètre du fournisseur OLE DB de la propriété DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, les mots de passe sont inclus avec d’autres informations de chaîne de connexion retournées.

Par exemple, si la propriété dynamique de connexion ADO Persist Security Info a la valeur 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 (autrement dit, 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 appareils autres que des fichiers lors du chargement et de l’enregistrement de recordsets ou de flux

Pour ADO 2.7 et versions antérieures, les opérations d’entrée/sortie de fichiers comme Open et Save 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.

Pour ADO 2.8 et versions ultérieures, cette fonctionnalité a été mise à jour. Pour ouvrir et enregistrer des 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.

Notes

La vérification de type de fichier comme décrit dans cette section s’applique uniquement à Windows 2000 et versions ultérieures. Elle ne s’applique pas aux situations où ADO 2.8 ou version ultérieure s’exécute sous des versions antérieures de Windows, comme Windows 98.