Detalhes de Segurança com LOAD DATA LOCAL
No MariaDB 3.23.49 e MariaDB 4.0.2 (4.0.13 no Windows), adicionamos algumas novas opções para lidar com possíveis detalhes de segurança junto ao LOAD DATA LOCAL
.
Exstem dois problemas possíveis com o suporte a este comando:
Como a leitura deste arquivo é iniciada por um servidor, pode-se teoricamente criar um servidor MariaDB corrigido que poderia ler qualquer arquivo na máquina cliente na qual o usuário atual tenha acesso, quando o cliente envia uma consulta a tabela.
Em um ambiente web onde os clientes estão conectados a um servidor web, um usuário poderia usar LOAD DATA LOCAL
para ler qualquer arquivo no qual o processo do servidor web tenha acesso de leitura (assumindo que um usuário poderia executar qualquer comando no servidor SQL).
Existem dois arquivos separados para isto:
Se você não configurar o MariaDB com --enable-local-infile
, então LOAD DATA LOCAL
será disabilitado por todos os clientes, a menos que se chame mysql_options(... MYSQL_OPT_LOCAL_INFILE, 0)
no cliente. Leia "mysql_options()
".
Para o cliente de linha de comando MariaDB
, LOAD DATA LOCAL
pode ser habilitado especificado a opção --local-infile[=1]
, ou disabilitando com --local-infile=0
.
Por padrão, todos os clientes e bibliotacas MariaDB são compilados com --enable-local-infile
, para ser compatível com o MariaDB 3.23.48 e anterior.
Pode se desabilitar todos os comandos LOAD DATA LOCAL
no servidor MariaDB iniciando o mysqld
com --local-infile=0
.
No caso em que LOAD DATA LOCAL INFILE
está disabilitado no servidor ou no cliente, você receberá a seguinte mensagem de erro (1148):