Share via


Considérations de base relatives à la sécurité SQLXML

S’applique à :SQL ServerAzure SQL Database

Vous trouverez ci-après des instructions de sécurité relatives à l'utilisation de SQLXML pour l'accès aux données.

  • Le fournisseur SQLXMLOLEDB expose une propriété StreamFlags qui vous permet de définir des indicateurs indiquant quelle fonctionnalité SQLXML doit être activée ou désactivée pour chaque instance spécifique. Vous pouvez utiliser cette propriété pour personnaliser votre utilisation de SQLXML et vous assurer que seuls les composants de votre choix sont activés. Pour plus d’informations, consultez Fournisseur SQLXMLOLEDB (SQLXML 4.0).

  • Lorsque des erreurs SQLXML se produisent et sont retournées, elles peuvent contenir des informations sur le schéma de base de données, notamment des noms de table, des noms de colonne ou des informations de type. Vous devez faire attention lors de la gestion de ces erreurs afin que les informations sur votre installation SQL Server ne soient pas facilement détectables par les utilisateurs là où elles ne sont pas prévues ou nécessaires.

  • Lorsqu’il est utilisé pour interroger ou envoyer des mises à jour à SQL Server, SQLXML ne définit aucune limite sur la quantité de données pouvant être échangées et ne vérifie pas la taille des données dans une charge utile SQLXML avant de tenter de les traiter. Lorsque vous développez votre application à l'aide de SQLXML, c'est à vous qu'il incombe de vérifier que le système dispose de suffisamment de mémoire pour traiter les données. Par exemple, lorsque vous interrogez des données du serveur, vous devez vérifier que le client dispose de suffisamment de place en mémoire pour les recevoir. De même, si vous chargez des données sur le serveur, vous devez vérifier que le serveur dispose d'une quantité suffisante de mémoire et d'espace de stockage sur disque pour traiter et stocker les données.

  • SQLXML génère dynamiquement des requêtes Transact-SQL et des commandes de mise à jour et les envoie à SQL Server pour exécution. SQLXML ne peut procéder autrement pour interroger et mettre à jour le serveur. Les résultats seront reçus en tant que flux (de données XML) ou en tant qu'ensemble de lignes.

  • Lors de la réception des résultats de la requête, SQLXML n'exécute aucune action sur la base du contenu des données reçues. Aucun traitement supplémentaire n'est effectué en fonction du type ou du contenu des données. Les données ne sont jamais traitées sous forme de code servant à exécuter des actions.

  • Lors de l’exécution de modèles XML, SQLXML traduit les requêtes XPath et DBObject contenues dans le modèle soumis en commandes Transact-SQL qui sont ensuite exécutées sur SQL Server. Ces commandes affectent uniquement les données existantes. Les commandes générées par SQLXML ne modifient jamais la structure de la base de données. Les utilisateurs doivent émettre des commandes explicites pour modifier la structure de la base de données, Par exemple, en les incluant dans un bloc sql:query d’un modèle.

  • Lors de l'exécution de requêtes DBObject et d'instructions XPath sur des fichiers de mappage, SQLXML ne modifie en aucune façon les données dans la base de données.

  • SQLXML peut apporter des modifications de mise en forme aux données données en fonction des différences entre les modèles de données XML et SQL Server. Par exemple, le format pour spécifier une heure est différent. SQLXML tente de résoudre ces différences. En conséquence, une perte de certaines informations de précision est envisageable.

  • SQLXML n'impose aucune limite sur la durée nécessaire pour traiter les données. Le traitement se poursuit jusqu’à ce qu’une erreur se produise ou que le traitement soit terminé.

  • SQLXML n'écrit pas dans le système de fichiers. Si les utilisateurs souhaitent enregistrer les données qu'ils extraient de la base de données, ils doivent le faire dans leur code.

  • SQLXML permet aux utilisateurs d'exécuter toute requête SQL sur la base de données. Étant donné que cette fonctionnalité ouvre essentiellement la base de données SQL sans provision à tous les utilisateurs, elle ne doit jamais être exposée à une source non sécurisée ou non contrôlée.

  • Lors de l’exécution de updategrams, SQLXML traduit les blocs updg:sync en commandes DELETE, UPDATE et INSERT par rapport au SQL Server instance. Ces commandes affectent uniquement les données existantes. Les commandes générées par SQLXML ne modifient jamais la base de données. Les utilisateurs doivent émettre des commandes explicites pour modifier la structure de la base de données, Par exemple, en les incluant dans un bloc sql:query d’un modèle.

  • Lors de l’exécution de DiffGrams, SQLXML convertit le DiffGram en commandes DELETE, UPDATE et INSERT par rapport au SQL Server instance. Ces commandes affectent uniquement les données existantes. Les commandes générées par SQLXML ne modifient jamais la base de données. Les utilisateurs doivent émettre des commandes explicites pour modifier la structure de la base de données, Par exemple, en les incluant dans un bloc sql:query d’un modèle.

Voir aussi

Considérations relatives à la sécurité SQLXML 4.0