4.2. Общие проблемы безопасности и система привилегий доступа MySQL
4.2.4. Вопросы безопасности, относящиеся к команде LOAD DATA LOCAL
Чтобы решить проблемы безопасности, которые могут возникнуть при использовании команды LOAD DATA LOCAL ,в MySQL 3.23.49 и MySQL 4.0.2 были добавлены новые опции.
При поддержке этой команды могут возникнуть две проблемы:
Первая: поскольку чтение файла инициируется сервером, теоретически имеется возможность создать "доработанный" при помощи патча сервер MySQL, способный читать любые файлы на клиентской машине, к которой текущий пользователь имеет доступ для чтения, в то время, когда клиент направляет запрос к таблице.
Вторая: в веб-среде, в которой подсоединение клиентов осуществляется с веб-сервера, пользователь может использовать команду LOAD DATA LOCAL для чтения любых файлов, к которым процесс веб-сервера имеет доступ для чтения (если предположить, что пользователь может выполнять на сервере SQL любые команды).
Эти проблемы решаются с помощью двух следующих исправлений:
Если вы конфигурируете MySQL без опции --enable-local-infile , то команда LOAD DATA LOCAL будет запрещена для всех клиентов, если, конечно, они не будут вызывать mysql_options (... MYSQL_OPT_LOCAL_INFILE, 0) . Обратитесь к разделу See Раздел 8.4.3.39, «mysql_options() ».
В случае клиента mysql, LOAD DATA LOCAL может быть разблокирована заданием опции --local-infile[=1] или заблокирована с помощью опции --local-infile=0 .
По умолчанию все MySQL-клиенты и библиотеки компилируются с опцией --enable-local-infile для обеспечения совместимости с MySQL 3.23.48 и более старыми версиями.
Блокировку всех команд LOAD DATA LOCAL на MySQL-сервере можно осуществить путем запуска mysqld с опцией --local-infile=0 .
В случае, если команда LOAD DATA LOCAL INFILE заблокирована на сервере или клиенте, вы получите следующее сообщение об ошибке (1148):
The used command is not allowed with this MySQL version
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|