5.3 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.3.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
|
|