4.2 Règles de sécurité et droits d'accès au serveur MySQL
4 Administration du serveur
Manuel de Référence MySQL 4.1 : Version Française
. Instructions générales de sécurité . Comment protéger MySQL contre les pirates . Options de démarrage qui concernent la sécurité ->Problèmes de sécurité avec LOAD DATA LOCAL . Rôle du système de privilèges . Comment fonctionne le système de droits . Droits fournis par MySQL . Se connecter au serveur MySQL . Contrôle d'accès, étape 1 : Vérification de la connexion . Contrôle d'accès, étape 2 : Vérification de la requête . Causes des erreurs Access denied
|
4.2.4 Problèmes de sécurité avec LOAD DATA LOCAL
Depuis MySQL 3.23.49 et MySQL 4.0.2, nous avons ajouté de nouvelles options
pour traiter les problèmes de sécurité liés à
LOAD DATA 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 patché qui pourrait lire n'importe
quel fichier sur 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).
Il y a deux protections distinctes pour ces problèmes :
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
.
Par défaut, tous les clients MySQL et les librairies sont compilés avec
--enable-local-infile
, pour être compatible avec MySQL 3.23.48 plus
ancien.
Vous pouvez désactiver toutes les commandes
LOAD DATA LOCAL
du serveur MySQL
en démarrant
mysqld
avec
--local-infile=0
.
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
|
|