| 5.4 Sécurité générale du serveur
 5 Administration du serveur
 Manuel de Référence MySQL 4.1 : Version Française
 
 . Guide de sécurité
 . Protéger MySQL contre les attaques
 . Options de démarrage qui concernent la sécurité
 ->Problèmes de sécurité avec LOAD DATA LOCAL
 
 
 | 
  5.4.4 Problèmes de sécurité avec LOAD DATA LOCAL La commande  
LOAD DATA
  peut lire des données sur le serveur hôte, ou bien
charger un fichier sur le client, avec l'option  
LOCAL
 .
 
 
Il existe deux problèmes particuliers pour le support de cette commande :
 
Comme la lecture du fichier est réalisée depuis le serveur, il est possible
théoriquement de créer un serveur MySQL modifié qui pourrait lire n'importe
quel fichier de la machine cliente, qui serait accessible à l'utilisateur.
Dans un environnement web, où les clients se connectent depuis un serveur
web, un utilisateur peut se servir de la commande  
LOAD DATA LOCAL
  pour lire
les fichiers qui sont sur le serveur web, et auquel ce dernier a accès (en
supposant qu'un utilisateur peut exécuter n'importe quelle commande sur le
serveur). 
Pour traiter ces problèmes, nous avons changé la gestion des commandes
 
LOAD DATA LOCAL
  depuis MySQL version 3.23.49 et MySQL version 4.0.2 
(4.0.13 pour Windows) :
 
Par défaut, tous les clients MySQL et les bibliothèques des distributions binaires
sont compilées avec l'option  
--enable-local-infile
 , pour être compatible
avec MySQL 3.23.48 et plus ancien.
Si vous ne configurez pas MySQL avec l'option  
--enable-local-infile
 , 
alors  
LOAD DATA LOCAL
  sera désactivé par tous les clients, à moins que
l'option  
mysql_options(... MYSQL_OPT_LOCAL_INFILE, 0)
  soit activée dans le
client.  
mysql_options()
 .
Pour le client en ligne de commande  
mysql
 ,  
LOAD DATA LOCAL
  peut être
activé en spécifiant l'option  
--local-infile[=1]
 , ou désactivé avec
 
--local-infile=0
 .
Vous pouvez désactiver toutes les commandes  
LOAD DATA LOCAL
  du serveur MySQL
en démarrant  
mysqld
  avec  
--local-infile=0
 . Similairement, pour 
 
mysqlimport
 , les options  
--local
  et  
-L
  active le chargement distant
de fichiers. Dans ce cas, il faut que le serveur accepte aussi cette configuration
pour que l'opération fonctionne.
Au cas où  
LOAD DATA LOCAL INFILE
  est désactivé sur le serveur ou le 
client, vous obtiendrez le message d'erreur (1148) : 
| 
The used command is not allowed with this MySQL version
 | 
 |