Partager via


Considérations relatives à la sécurité du chargement en bloc (SQLXML 4.0)

Voici les instructions de sécurité relatives à l’utilisation du chargement en bloc XML :

  • Lorsque vous spécifiez que l’opération de chargement en bloc doit être effectuée en tant que transaction, vous utilisez la TempFilePath propriété pour spécifier un dossier dans lequel créer les fichiers temporaires.

    Le processus de chargement en bloc crée ces fichiers temporaires avec les autorisations suivantes :

    • L’accès en lecture/écriture/suppression est accordé au processus de chargement en bloc.

    • l’autorisation Lecture est accordé à tous les utilisateurs, car le compte sous lequel Microsoft SQL Server accède à ces fichiers est inconnu. Vous pouvez restreindre l’accès à ces fichiers temporaires en définissant les autorisations appropriées sur le dossier qui les contient.

  • Le chargement en bloc XML n’a pas lui-même de paramètres d’autorisation. Il est supposé que la base de données est configurée correctement et que le contexte utilisateur (autrement dit, la connexion utilisée par le chargement en bloc) dispose d’autorisations appropriées.

  • En mode non transactionnel, si une erreur se produit pendant le processus de chargement en bloc, les données peuvent être laissées dans un état partiellement chargé. Le chargement en bloc s’arrête simplement au moment où cela se produit. Le mode transactionnel peut être utilisé pour atténuer ce problème.

  • Lorsque des erreurs de chargement en bloc se produisent, elles peuvent inclure des informations sur la base de données. Par exemple, ils peuvent inclure le nom d’une table ou d’une colonne ou des informations de type de colonne. Lorsque vous utilisez le chargement en bloc, vous devez prendre soin d’intercepter les erreurs du processus de chargement en bloc et de retourner un message d’erreur générique, plutôt que d’exposer des erreurs directement aux utilisateurs.

  • Le chargement en bloc ne définit aucune limite sur la quantité de données sur laquelle elle fonctionne. Le chargement en bloc ne vérifie pas la taille des données à charger. Il incombe à l’utilisateur d’exécuter le chargement en bloc pour s’assurer qu’il y a suffisamment de mémoire pour traiter le fichier spécifié et qu’il y a suffisamment de place dans la base de données pour stocker les données chargées.

  • Le chargement en bloc ne tente pas d’utiliser les données qu’il reçoit en tant que code. L’entrée de données n’est jamais exécutée de manière quelconque. Tout code ou commande dans les données d’entrée est traité comme des données normales et ne sera pas exécuté.

  • Le chargement en bloc peut apporter des modifications de mise en forme aux données données données en fonction des différences entre les modèles de données XML et SQL Server. Par exemple, le format de spécification d’une heure est différent. Le chargement en bloc tente de résoudre ces différences. Par conséquent, certaines informations de précision peuvent être perdues.

  • Le chargement en bloc ne définit aucune limite quant au temps nécessaire pour traiter les données. Le traitement se poursuit jusqu’à ce que le traitement soit terminé ou qu’une erreur se produise.

  • Le chargement en bloc peut créer et supprimer des tables temporaires dans la base de données et a besoin des autorisations nécessaires. Les autorisations accordées à ces tables sont accordées à l’utilisateur qui se connecte à la base de données pour le processus de chargement en bloc.

  • Le chargement en bloc peut créer et supprimer des fichiers temporaires utilisés pendant le traitement du mode transactionnel et a besoin d’autorisations pour le faire. Ces fichiers sont créés avec les mêmes autorisations que l’utilisateur actuel du thread dans lequel le chargement en bloc est en cours d’exécution.

  • Si l’utilisateur définit un fichier journal d’erreurs dans lequel SQLXML doit écrire des erreurs, chaque fois que le chargement en bloc est exécuté, le fichier est remplacé par les données du dernier processus de chargement en bloc.

Voir aussi

Exécution d’une charge en bloc de données XML (SQLXML 4.0)